diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/public/vgui_controls/WizardPanel.h | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/public/vgui_controls/WizardPanel.h')
| -rw-r--r-- | mp/src/public/vgui_controls/WizardPanel.h | 127 |
1 files changed, 127 insertions, 0 deletions
diff --git a/mp/src/public/vgui_controls/WizardPanel.h b/mp/src/public/vgui_controls/WizardPanel.h new file mode 100644 index 00000000..1c902995 --- /dev/null +++ b/mp/src/public/vgui_controls/WizardPanel.h @@ -0,0 +1,127 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef WIZARDPANEL_H
+#define WIZARDPANEL_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include <vgui_controls/Frame.h>
+
+namespace vgui
+{
+
+class WizardSubPanel;
+
+//-----------------------------------------------------------------------------
+// Purpose: Type of dialog that supports moving back and forth through a series
+// of sub-dialogs, WizardSubPanels
+//-----------------------------------------------------------------------------
+class WizardPanel : public Frame
+{
+ DECLARE_CLASS_SIMPLE( WizardPanel, Frame );
+
+public:
+ WizardPanel(Panel *parent, const char *panelName);
+ ~WizardPanel();
+
+ // Start the wizard, starting with the startPanel
+ virtual void Run(WizardSubPanel *startPanel);
+
+ // Called when the buttons are pressed
+ // WizardSubPanels can also call these functions to simulate a button being pressed
+ MESSAGE_FUNC( OnNextButton, "NextButton" );
+ MESSAGE_FUNC( OnPrevButton, "PrevButton" );
+ MESSAGE_FUNC( OnFinishButton, "FinishButton" );
+ MESSAGE_FUNC( OnCancelButton, "CancelButton" );
+
+ // sets whether or not a button is enabled
+ // this state is managed, and will be reset whenever going to a new page
+ virtual void SetNextButtonEnabled(bool state);
+ virtual void SetPrevButtonEnabled(bool state);
+ virtual void SetFinishButtonEnabled(bool state);
+ virtual void SetCancelButtonEnabled(bool state);
+
+ // sets whether or not a button is visible
+ // this state is unmanaged, the user needs to ensure that the buttons state
+ // is correct when going both back and prev through the wizard
+ virtual void SetNextButtonVisible(bool state);
+ virtual void SetPrevButtonVisible(bool state);
+ virtual void SetFinishButtonVisible(bool state);
+ virtual void SetCancelButtonVisible(bool state);
+
+ // sets the text for a button
+ // setting the text to be NULL resets the text to it's default state
+ // this state is unmanaged, the user needs to ensure that the buttons state
+ // is correct when going both back and prev through the wizard
+ virtual void SetNextButtonText(const char *text);
+ virtual void SetPrevButtonText(const char *text);
+ virtual void SetFinishButtonText(const char *text);
+ virtual void SetCancelButtonText(const char *text);
+
+ // general wizard state for all the subpanels to access
+ virtual KeyValues *GetWizardData();
+
+ // recalculates where the key focus should be in the wizard
+ virtual void ResetKeyFocus();
+ virtual void ResetDefaultButton();
+
+ // resets the sub panel history for the control
+ virtual void ResetHistory();
+
+ // returns a page by name
+ virtual WizardSubPanel *GetSubPanelByName(const char *pageName);
+
+ virtual void ShowButtons(bool state);
+ virtual void GetClientArea(int &x, int &y, int &wide, int &tall);
+
+protected:
+ MESSAGE_FUNC_PTR( InternalActivateNextSubPanel, "ActivateNextSubPanel", panel )
+ {
+ ActivateNextSubPanel( (WizardSubPanel *)panel );
+ }
+
+ virtual void ActivateNextSubPanel(WizardSubPanel *subPanel);
+ virtual void ActivatePrevSubPanel();
+ virtual void CreateButtons();
+ virtual void RecalculateTabOrdering();
+ virtual vgui::WizardSubPanel *GetCurrentSubPanel() { return _currentSubPanel; }
+
+ // overrides
+ virtual void PerformLayout();
+ virtual void ApplySchemeSettings(IScheme *pScheme);
+
+ // reroute build messages to the currently active sub panel
+ virtual void ActivateBuildMode();
+
+ // close maps to the cancel button
+ virtual void OnClose();
+ virtual void OnCommand(const char *command);
+ virtual void OnCloseFrameButtonPressed();
+
+private:
+ WizardSubPanel *FindNextValidSubPanel(WizardSubPanel *currentPanel);
+
+ Button *_prevButton;
+ Button *_nextButton;
+ Button *_cancelButton;
+ Button *_finishButton;
+
+ WizardSubPanel *_currentSubPanel;
+ KeyValues *_currentData;
+
+ Dar<WizardSubPanel *> _subPanelStack; // contains a list of all the subpanels (not including the current one)
+
+ bool _showButtons;
+};
+
+} // namespace vgui
+
+
+#endif // WIZARDPANEL_H
|