1 /* 2 GWEN 3 Copyright (c) 2010 Facepunch Studios 4 See license in Gwen.h 5 */ 6 7 #pragma once 8 #ifndef GWEN_CONTROLS_MENUITEM_H 9 #define GWEN_CONTROLS_MENUITEM_H 10 11 #include "Gwen/BaseRender.h" 12 #include "Gwen/Controls/Base.h" 13 #include "Gwen/Controls/Button.h" 14 #include "Gwen/Controls/Menu.h" 15 #include "Gwen/Controls/Symbol.h" 16 17 namespace Gwen 18 { 19 namespace Controls 20 { 21 class Menu; 22 23 class GWEN_EXPORT MenuItem : public Button 24 { 25 public: 26 GWEN_CONTROL(MenuItem, Button); 27 28 virtual ~MenuItem(); 29 30 virtual void Render(Skin::Base* skin); 31 virtual void Layout(Skin::Base* skin); 32 33 virtual void OnPress(); 34 35 Menu* GetMenu(); 36 37 bool IsMenuOpen(); 38 void OpenMenu(); 39 void CloseMenu(); 40 void ToggleMenu(); 41 SetOnStrip(bool b)42 void SetOnStrip(bool b) { m_bOnStrip = b; } OnStrip()43 bool OnStrip() { return m_bOnStrip; } 44 SetCheckable(bool bCheck)45 virtual void SetCheckable(bool bCheck) { m_bCheckable = bCheck; } 46 virtual void SetCheck(bool bCheck); GetChecked()47 virtual bool GetChecked() { return m_bChecked; } 48 49 Gwen::Event::Caller onMenuItemSelected; 50 Gwen::Event::Caller onChecked; 51 Gwen::Event::Caller onUnChecked; 52 Gwen::Event::Caller onCheckChange; 53 54 private: 55 Menu* m_Menu; 56 bool m_bOnStrip; 57 bool m_bCheckable; 58 bool m_bChecked; 59 60 Symbol::Arrow* m_SubmenuArrow; 61 }; 62 } // namespace Controls 63 64 } // namespace Gwen 65 #endif 66