summaryrefslogtreecommitdiff
path: root/public/vgui_controls/ProgressBox.h
diff options
context:
space:
mode:
Diffstat (limited to 'public/vgui_controls/ProgressBox.h')
-rw-r--r--public/vgui_controls/ProgressBox.h99
1 files changed, 99 insertions, 0 deletions
diff --git a/public/vgui_controls/ProgressBox.h b/public/vgui_controls/ProgressBox.h
new file mode 100644
index 0000000..d5c321a
--- /dev/null
+++ b/public/vgui_controls/ProgressBox.h
@@ -0,0 +1,99 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef PROGRESSBOX_H
+#define PROGRESSBOX_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui/VGUI.h>
+#include <vgui_controls/Frame.h>
+
+// prevent windows macros from messing with the class
+#ifdef ProgressBox
+#undef ProgressBox
+#endif
+
+namespace vgui
+{
+
+//-----------------------------------------------------------------------------
+// Purpose: Popup discardable message box
+//-----------------------------------------------------------------------------
+class ProgressBox : public Frame
+{
+ DECLARE_CLASS_SIMPLE( ProgressBox, Frame );
+
+public:
+ // title - Text to be displayed in the title bar of the window
+ // text - Text message in the message box
+ // parent - parent panel of the message box, by default it has no parent.
+ ProgressBox(const char *title, const char *text, const char *pszUnknownTimeString, Panel *parent = NULL);
+ ProgressBox(const wchar_t *wszTitle, const wchar_t *wszText, const wchar_t *wszUnknownTimeString, Panel *parent = NULL);
+ ~ProgressBox();
+
+ // Put the message box into a modal state
+ virtual void DoModal(Frame *pFrameOver = NULL);
+
+ // make the message box appear and in a modeless state
+ virtual void ShowWindow(Frame *pFrameOver = NULL);
+
+ // updates progress bar, range [0, 1]
+ virtual void SetProgress(float progress);
+
+ // sets the info text
+ virtual void SetText(const char *text);
+
+ // toggles visibility of the close box.
+ virtual void SetCancelButtonVisible(bool state);
+
+ // toggles the enabled state of the cancel button (for if it needs to be disabled part way through a process)
+ virtual void SetCancelButtonEnabled(bool state);
+
+ /* custom messages:
+
+ "ProgressBoxCancelled"
+ sent if the user pressed the cancel button (must be enabled & visible for this to happen)
+
+ */
+
+protected:
+ virtual void PerformLayout();
+ virtual void OnClose();
+ virtual void OnCloseFrameButtonPressed();
+ virtual void ApplySchemeSettings(IScheme *pScheme);
+ virtual void OnThink();
+ virtual void OnCommand(const char *command);
+ virtual void OnTick();
+
+ // called when the update has been cancelled
+ virtual void OnCancel();
+
+private:
+ MESSAGE_FUNC( OnShutdownRequest, "ShutdownRequest" );
+ void Init();
+ void UpdateTitle();
+
+ Label *m_pMessageLabel;
+ ProgressBar *m_pProgressBar;
+ Button *m_pCancelButton;
+
+ wchar_t m_wszTitleString[128];
+ wchar_t m_wcsInfoString[128];
+ wchar_t m_wszUnknownTimeString[128];
+
+ float m_flFirstProgressUpdate;
+ float m_flLastProgressUpdate;
+ float m_flCurrentProgress;
+};
+
+} // namespace vgui
+
+
+#endif // PROGRESSBOX_H