aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/others/irrlicht-1.8.1/source/Irrlicht/CGUIContextMenu.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/others/irrlicht-1.8.1/source/Irrlicht/CGUIContextMenu.h')
-rw-r--r--src/others/irrlicht-1.8.1/source/Irrlicht/CGUIContextMenu.h174
1 files changed, 174 insertions, 0 deletions
diff --git a/src/others/irrlicht-1.8.1/source/Irrlicht/CGUIContextMenu.h b/src/others/irrlicht-1.8.1/source/Irrlicht/CGUIContextMenu.h
new file mode 100644
index 0000000..843b2b7
--- /dev/null
+++ b/src/others/irrlicht-1.8.1/source/Irrlicht/CGUIContextMenu.h
@@ -0,0 +1,174 @@
1// Copyright (C) 2002-2012 Nikolaus Gebhardt
2// This file is part of the "Irrlicht Engine".
3// For conditions of distribution and use, see copyright notice in irrlicht.h
4
5#ifndef __C_GUI_CONTEXT_MENU_H_INCLUDED__
6#define __C_GUI_CONTEXT_MENU_H_INCLUDED__
7
8#include "IrrCompileConfig.h"
9#ifdef _IRR_COMPILE_WITH_GUI_
10
11#include "IGUIContextMenu.h"
12#include "irrString.h"
13#include "irrArray.h"
14#include "IGUIFont.h"
15
16namespace irr
17{
18namespace gui
19{
20
21 //! GUI Context menu interface.
22 class CGUIContextMenu : public IGUIContextMenu
23 {
24 public:
25
26 //! constructor
27 CGUIContextMenu(IGUIEnvironment* environment,
28 IGUIElement* parent, s32 id, core::rect<s32> rectangle,
29 bool getFocus = true, bool allowFocus = true);
30
31 //! destructor
32 virtual ~CGUIContextMenu();
33
34 //! set behavior when menus are closed
35 virtual void setCloseHandling(ECONTEXT_MENU_CLOSE onClose);
36
37 //! get current behavior when the menue will be closed
38 virtual ECONTEXT_MENU_CLOSE getCloseHandling() const;
39
40 //! Returns amount of menu items
41 virtual u32 getItemCount() const;
42
43 //! Adds a menu item.
44 virtual u32 addItem(const wchar_t* text, s32 commandid,
45 bool enabled, bool hasSubMenu, bool checked, bool autoChecking);
46
47 //! Insert a menu item at specified position.
48 virtual u32 insertItem(u32 idx, const wchar_t* text, s32 commandId, bool enabled,
49 bool hasSubMenu, bool checked, bool autoChecking);
50
51 //! Find a item which has the given CommandId starting from given index
52 virtual s32 findItemWithCommandId(s32 commandId, u32 idxStartSearch) const;
53
54 //! Adds a separator item to the menu
55 virtual void addSeparator();
56
57 //! Returns text of the menu item.
58 virtual const wchar_t* getItemText(u32 idx) const;
59
60 //! Sets text of the menu item.
61 virtual void setItemText(u32 idx, const wchar_t* text);
62
63 //! Returns if a menu item is enabled
64 virtual bool isItemEnabled(u32 idx) const;
65
66 //! Sets if the menu item should be enabled.
67 virtual void setItemEnabled(u32 idx, bool enabled);
68
69 //! Returns if a menu item is checked
70 virtual bool isItemChecked(u32 idx) const;
71
72 //! Sets if the menu item should be checked.
73 virtual void setItemChecked(u32 idx, bool enabled);
74
75 //! Removes a menu item
76 virtual void removeItem(u32 idx);
77
78 //! Removes all menu items
79 virtual void removeAllItems();
80
81 //! called if an event happened.
82 virtual bool OnEvent(const SEvent& event);
83
84 //! draws the element and its children
85 virtual void draw();
86
87 //! Returns the selected item in the menu
88 virtual s32 getSelectedItem() const;
89
90 //! Returns a pointer to the submenu of an item.
91 //! \return Pointer to the submenu of an item.
92 virtual IGUIContextMenu* getSubMenu(u32 idx) const;
93
94 //! Sets the visible state of this element.
95 virtual void setVisible(bool visible);
96
97 //! should the element change the checked status on clicking
98 virtual void setItemAutoChecking(u32 idx, bool autoChecking);
99
100 //! does the element change the checked status on clicking
101 virtual bool getItemAutoChecking(u32 idx) const;
102
103 //! Returns command id of a menu item
104 virtual s32 getItemCommandId(u32 idx) const;
105
106 //! Sets the command id of a menu item
107 virtual void setItemCommandId(u32 idx, s32 id);
108
109 //! Adds a sub menu from an element that already exists.
110 virtual void setSubMenu(u32 index, CGUIContextMenu* menu);
111
112 //! When an eventparent is set it receives events instead of the usual parent element
113 virtual void setEventParent(IGUIElement *parent);
114
115 //! Writes attributes of the element.
116 virtual void serializeAttributes(io::IAttributes* out, io::SAttributeReadWriteOptions* options) const;
117
118 //! Reads attributes of the element
119 virtual void deserializeAttributes(io::IAttributes* in, io::SAttributeReadWriteOptions* options);
120
121 protected:
122
123 void closeAllSubMenus();
124 bool hasOpenSubMenu() const;
125
126 struct SItem
127 {
128 core::stringw Text;
129 bool IsSeparator;
130 bool Enabled;
131 bool Checked;
132 bool AutoChecking;
133 core::dimension2d<u32> Dim;
134 s32 PosY;
135 CGUIContextMenu* SubMenu;
136 s32 CommandId;
137 };
138
139 virtual void recalculateSize();
140
141 //! returns true, if an element was highlighted
142 virtual bool highlight(const core::position2d<s32>& p, bool canOpenSubMenu);
143
144 //! sends a click Returns:
145 //! 0 if click went outside of the element,
146 //! 1 if a valid button was clicked,
147 //! 2 if a nonclickable element was clicked
148 virtual u32 sendClick(const core::position2d<s32>& p);
149
150 //! returns the item highlight-area
151 virtual core::rect<s32> getHRect(const SItem& i, const core::rect<s32>& absolute) const;
152
153 //! Gets drawing rect of Item
154 virtual core::rect<s32> getRect(const SItem& i, const core::rect<s32>& absolute) const;
155
156
157 core::array<SItem> Items;
158 core::position2d<s32> Pos;
159 IGUIElement* EventParent;
160 IGUIFont *LastFont;
161 ECONTEXT_MENU_CLOSE CloseHandling;
162 s32 HighLighted;
163 u32 ChangeTime;
164 bool AllowFocus;
165 };
166
167
168} // end namespace gui
169} // end namespace irr
170
171#endif // _IRR_COMPILE_WITH_GUI_
172
173#endif // __C_GUI_CONTEXT_MENU_H_INCLUDED__
174