source-engine/public/vgui_controls/WizardSubPanel.h

92 lines
2.9 KiB
C
Raw Normal View History

2020-04-22 16:56:21 +00:00
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef WIZARDSUBPANEL_H
#define WIZARDSUBPANEL_H
#ifdef _WIN32
#pragma once
#endif
#include <vgui_controls/EditablePanel.h>
namespace vgui
{
//-----------------------------------------------------------------------------
// Purpose: Base panel for use in Wizards and in property sheets
//-----------------------------------------------------------------------------
class WizardSubPanel : public EditablePanel
{
DECLARE_CLASS_SIMPLE( WizardSubPanel, EditablePanel );
public:
// constructor
WizardSubPanel(Panel *parent, const char *panelName);
~WizardSubPanel();
// called when the subpanel is displayed
// All controls & data should be reinitialized at this time
virtual void OnDisplayAsNext() {}
// called anytime the panel is first displayed, whether the user is moving forward or back
// called immediately after OnDisplayAsNext/OnDisplayAsPrev
virtual void OnDisplay() {}
// called when displayed as previous
virtual void OnDisplayAsPrev() {}
// called when one of the wizard buttons are pressed
// returns true if the wizard should advance, false otherwise
virtual bool OnNextButton() { return true; }
virtual bool OnPrevButton() { return true; }
virtual bool OnFinishButton() { return true; }
virtual bool OnCancelButton() { return true; }
// returns true if this panel should be displayed, or if we should just skip over it
virtual bool ShouldDisplayPanel() { return true; }
// return true if this subpanel doesn't need the next/prev/finish/cancel buttons or will do it itself
virtual bool isNonWizardPanel() { return false; }
// returns a pointer to the next subpanel that should be displayed
virtual WizardSubPanel *GetNextSubPanel() = 0;
// returns a pointer to the panel to return to
// it must be a panel that is already in the wizards panel history
// returning NULL tells it to use the immediate previous panel in the history
virtual WizardSubPanel *GetPrevSubPanel() { return NULL; }
virtual WizardPanel *GetWizardPanel() { return _wizardPanel; }
virtual void SetWizardPanel(WizardPanel *wizardPanel) { _wizardPanel = wizardPanel; }
// returns a pointer to the wizard's doc
virtual KeyValues *GetWizardData();
// returns a pointer
virtual WizardSubPanel *GetSiblingSubPanelByName(const char *pageName);
// gets the size this subpanel would like the wizard to be
// returns true if it has a desired size
virtual bool GetDesiredSize(int &wide, int &tall);
protected:
virtual void ApplySettings(KeyValues *inResourceData);
virtual void GetSettings( KeyValues *outResourceData );
virtual void ApplySchemeSettings(IScheme *pScheme);
virtual const char *GetDescription();
private:
WizardPanel *_wizardPanel;
int m_iDesiredWide, m_iDesiredTall;
};
} // namespace vgui
#endif // WIZARDSUBPANEL_H