Crazy Eddie's GUI System  0.8.5
MenuBase.h
1 /***********************************************************************
2  created: 5/4/2005
3  author: Tomas Lindquist Olsen (based on code by Paul D Turner)
4 
5  purpose: Interface to base class for MenuBase widget
6 *************************************************************************/
7 /***************************************************************************
8  * Copyright (C) 2004 - 2006 Paul D Turner & The CEGUI Development Team
9  *
10  * Permission is hereby granted, free of charge, to any person obtaining
11  * a copy of this software and associated documentation files (the
12  * "Software"), to deal in the Software without restriction, including
13  * without limitation the rights to use, copy, modify, merge, publish,
14  * distribute, sublicense, and/or sell copies of the Software, and to
15  * permit persons to whom the Software is furnished to do so, subject to
16  * the following conditions:
17  *
18  * The above copyright notice and this permission notice shall be
19  * included in all copies or substantial portions of the Software.
20  *
21  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24  * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
25  * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
26  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
27  * OTHER DEALINGS IN THE SOFTWARE.
28  ***************************************************************************/
29 #ifndef _CEGUIMenuBase_h_
30 #define _CEGUIMenuBase_h_
31 
32 #include "../Base.h"
33 #include "../Window.h"
34 #include "./ItemListBase.h"
35 
36 
37 #if defined(_MSC_VER)
38 # pragma warning(push)
39 # pragma warning(disable : 4251)
40 #endif
41 
42 
43 // Start of CEGUI namespace section
44 namespace CEGUI
45 {
46 
51 class CEGUIEXPORT MenuBase : public ItemListBase
52 {
53 public:
54  static const String EventNamespace;
55 
56 
57  /*************************************************************************
58  Event name constants
59  *************************************************************************/
60  // generated internally by Window
65  static const String EventPopupOpened;
70  static const String EventPopupClosed;
71 
72 
73  /*************************************************************************
74  Accessor type functions
75  *************************************************************************/
83  float getItemSpacing(void) const
84  {
85  return d_itemSpacing;
86  }
87 
88 
96  bool isMultiplePopupsAllowed(void) const
97  {
98  return d_allowMultiplePopups;
99  }
100 
108  bool getAutoCloseNestedPopups(void) const
109  {
110  return d_autoCloseNestedPopups;
111  }
112 
121  {
122  return d_popupItem;
123  }
124 
125 
126  /*************************************************************************
127  Manipulators
128  *************************************************************************/
133  void setItemSpacing(float spacing)
134  {
135  d_itemSpacing = spacing;
136  handleUpdatedItemData();
137  }
138 
139 
147  void changePopupMenuItem(MenuItem* item);
148 
149 
154  void setAllowMultiplePopups(bool setting);
155 
160  void setAutoCloseNestedPopups(bool setting)
161  {
162  d_autoCloseNestedPopups = setting;
163  }
168  void setPopupMenuItemClosing();
169 
170 
171  /*************************************************************************
172  Construction and Destruction
173  *************************************************************************/
178  MenuBase(const String& type, const String& name);
179 
180 
185  virtual ~MenuBase(void);
186 
187 
188 protected:
189  /*************************************************************************
190  New Event Handlers
191  *************************************************************************/
196  virtual void onPopupOpened(WindowEventArgs& e);
197 
198 
203  virtual void onPopupClosed(WindowEventArgs& e);
204 
205  // overridden from base
206  virtual void onChildRemoved(ElementEventArgs& e);
207  virtual void onHidden(WindowEventArgs& e);
208 
209  /*************************************************************************
210  Implementation Data
211  *************************************************************************/
213 
217 
218 
219 private:
220  /*************************************************************************
221  Private methods
222  *************************************************************************/
223  void addMenuBaseProperties(void);
224 };
225 
226 } // End of CEGUI namespace section
227 
228 
229 #if defined(_MSC_VER)
230 # pragma warning(pop)
231 #endif
232 
233 #endif // end of guard _CEGUIMenuBase_h_
void setItemSpacing(float spacing)
Set the item spacing for this menu.
Definition: MenuBase.h:133
float d_itemSpacing
The spacing in pixels between items.
Definition: MenuBase.h:212
Main namespace for Crazy Eddie's GUI Library.
Definition: arch_overview.dox:1
bool getAutoCloseNestedPopups(void) const
Return whether this menu should close all its open child popups, when it gets hidden.
Definition: MenuBase.h:108
Abstract base class for menus.
Definition: MenuBase.h:51
MenuItem * getPopupMenuItem(void) const
Get currently opened MenuItem in this menu. Returns NULL if no menu item is open. ...
Definition: MenuBase.h:120
bool d_allowMultiplePopups
true if multiple popup menus are allowed simultaneously. false if not.
Definition: MenuBase.h:215
void setAutoCloseNestedPopups(bool setting)
Set whether the menu should close all its open child popups, when it gets hidden. ...
Definition: MenuBase.h:160
static const String EventPopupClosed
Definition: MenuBase.h:70
static const String EventNamespace
Namespace for global events.
Definition: MenuBase.h:54
float getItemSpacing(void) const
Get the item spacing for this menu.
Definition: MenuBase.h:83
bool d_autoCloseNestedPopups
true if the menu should close all its open child popups, when it gets hidden
Definition: MenuBase.h:216
EventArgs based class that is used for objects passed to handlers triggered for events concerning som...
Definition: Element.h:210
EventArgs based class that is used for objects passed to handlers triggered for events concerning som...
Definition: InputEvent.h:251
bool isMultiplePopupsAllowed(void) const
Return whether this menu allows multiple popup menus to open at the same time.
Definition: MenuBase.h:96
Base class for menu items.
Definition: widgets/MenuItem.h:49
static const String EventPopupOpened
Definition: MenuBase.h:65
Base class for item list widgets.
Definition: ItemListBase.h:78
MenuItem * d_popupItem
The currently open MenuItem. NULL if no item is open. If multiple popups are allowed, this means nothing.
Definition: MenuBase.h:214
String class used within the GUI system.
Definition: String.h:62