diff options
Diffstat (limited to 'public/panorama/controls/contextmenu.h')
| -rw-r--r-- | public/panorama/controls/contextmenu.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/public/panorama/controls/contextmenu.h b/public/panorama/controls/contextmenu.h new file mode 100644 index 0000000..bbb5451 --- /dev/null +++ b/public/panorama/controls/contextmenu.h @@ -0,0 +1,78 @@ +//=========== Copyright Valve Corporation, All rights reserved. ===============// +// +// Purpose: +//=============================================================================// + +#ifndef CONTEXTMENU_H +#define CONTEXTMENU_H + +#ifdef _WIN32 +#pragma once +#endif + +#include "panorama/controls/panel2d.h" + +DECLARE_PANEL_EVENT1( ContextMenuEvent, const char * ) +DECLARE_PANEL_EVENT1( ContextMenuEventDirect, panorama::IUIEvent * ); + +namespace panorama +{ + +//----------------------------------------------------------------------------- +// Purpose: Helper class to derive from for creating context menus +//----------------------------------------------------------------------------- +class CContextMenu : public panorama::CPanel2D +{ + DECLARE_PANEL2D( CContextMenu, panorama::CPanel2D ); + +public: + CContextMenu( CPanel2D *pParent, const char *pchName, CPanel2D *pEventParent ); + CContextMenu( IUIWindow *pParent, const char *pchName, CPanel2D *pEventParent ); + virtual ~CContextMenu(); + virtual bool OnClick( IUIPanel *pPanel, const panorama::MouseData_t &code ); + + void SetMenuTarget( const CPanelPtr< IUIPanel >& targetPanelPtr ); + + void CalculatePosition() { m_bReposition = true; InvalidateSizeAndPosition(); } + +protected: + CPanel2D *GetEventParent() { return m_pEventParent; } + +private: + void Initialize( CPanel2D *pEventParent ); + + void OnLayoutTraverse( float flFinalWidth, float flFinalHeight ); + + bool OnFireEvent( const panorama::CPanelPtr< panorama::IUIPanel > &ptrPanel, const char *pchEventText ); + bool OnFireEvent( const panorama::CPanelPtr< panorama::IUIPanel > &ptrPanel, IUIEvent *pEvent ); + bool OnCancelled( const panorama::CPanelPtr< panorama::IUIPanel > &pPanel, panorama::EPanelEventSource_t eSource ); + + CPanel2D *m_pEventParent; + CPanelPtr< IUIPanel > m_pMenuTarget; + double m_flCreateTime; + bool m_bReposition; +}; + + +//----------------------------------------------------------------------------- +// Purpose: Helper class for simple context menus that doesn't require derivation +//----------------------------------------------------------------------------- +class CSimpleContextMenu : public panorama::CContextMenu +{ + DECLARE_PANEL2D( CSimpleContextMenu, panorama::CContextMenu ); + +public: + CSimpleContextMenu( CPanel2D *pParent, const char *pchName, CPanel2D *pEventParent ); + CSimpleContextMenu( IUIWindow *pParent, const char *pchName, CPanel2D *pEventParent ); + virtual ~CSimpleContextMenu(); + + void AddMenuItem( const char *pchLabelText, const char *pchEventText ); + void AddMenuItemEvent( const char *pchLabel, IUIEvent *pEvent ); + +private: + +}; + +} // namespace panorama + +#endif // CONTEXTMENU_H
\ No newline at end of file |