diff options
Diffstat (limited to 'public/panorama/controls/button.h')
| -rw-r--r-- | public/panorama/controls/button.h | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/public/panorama/controls/button.h b/public/panorama/controls/button.h new file mode 100644 index 0000000..8710698 --- /dev/null +++ b/public/panorama/controls/button.h @@ -0,0 +1,113 @@ +//=========== Copyright Valve Corporation, All rights reserved. ===============// +// +// Purpose: +//=============================================================================// + +#ifndef PANORAMA_BUTTON_H +#define PANORAMA_BUTTON_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "panel2d.h" +#include "label.h" + +namespace panorama +{ + +class CLabel; + +//----------------------------------------------------------------------------- +// Purpose: Button +//----------------------------------------------------------------------------- +class CButton : public CPanel2D +{ + DECLARE_PANEL2D( CButton, CPanel2D ); + +public: + CButton( CPanel2D *parent, const char * pchPanelID ); + virtual ~CButton(); + + // clone + virtual bool IsClonable() { return AreChildrenClonable(); } + virtual CPanel2D *Clone(); + + // events + bool EventActivated( const CPanelPtr< IUIPanel > &pPanel, EPanelEventSource_t eSource ); + +protected: + virtual void InitClonedPanel( CPanel2D *pPanel ); +}; + + +//----------------------------------------------------------------------------- +// Purpose: ToggleButton +//----------------------------------------------------------------------------- +class CToggleButton : public CButton +{ + DECLARE_PANEL2D( CToggleButton, CButton ); + +public: + CToggleButton( CPanel2D *parent, const char * pchPanelID ); + virtual ~CToggleButton(); + + void SetSelected( bool bSelected ); + void SetText( const char *pchText ); + virtual bool OnKeyTyped( const KeyData_t &unichar ); + + // events + virtual bool EventActivated( const CPanelPtr< IUIPanel > &pPanel, EPanelEventSource_t eSource ); + + virtual void SetupJavascriptObjectTemplate() OVERRIDE; + + virtual const char *PchGetText() const { return m_pLabel ? m_pLabel->PchGetText() : ""; } + +protected: + virtual bool BSetProperties( const CUtlVector< ParsedPanelProperty_t > &vecProperties ); + + CPanel2D *m_pButton; + CLabel *m_pLabel; + CLabel::ETextType m_eTextType; +}; + + +//----------------------------------------------------------------------------- +// Purpose: RadioButton +//----------------------------------------------------------------------------- +class CRadioButton : public CButton +{ + DECLARE_PANEL2D( CRadioButton, CButton ); + +public: + void SetSelected( bool bSelected ); + void SetText( const char *pchText ); + const char *GetGroup() { return m_sGroup.String(); } + void SetGroup( const char *pchGroup ) { m_sGroup = pchGroup; } + + virtual bool BSetProperties( const CUtlVector< ParsedPanelProperty_t > &vecProperties ); + +public: + CRadioButton( CPanel2D *parent, const char * pchPanelID ); + virtual ~CRadioButton(); + + // events: + + // i have been activated + bool EventActivated( const CPanelPtr< IUIPanel > &pPanel, EPanelEventSource_t eSource ); + + // the specified radio, member of the specified group, has been activated (broadcast) + bool EventOtherActivated( const CPanelPtr< IUIPanel > &pPanel, const char *szGroup ); + +protected: + void FireSelectionEvent(); + + CPanel2D *m_pButton; + CLabel *m_pLabel; + CLabel::ETextType m_eTextType; + CUtlString m_sGroup; +}; + +} // namespace panorama + +#endif // PANORAMA_BUTTON_H |