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