00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026 #ifndef _CEGUIMenuBase_h_
00027 #define _CEGUIMenuBase_h_
00028
00029 #include "CEGUIBase.h"
00030 #include "CEGUIWindow.h"
00031 #include "elements/CEGUIMenuBaseProperties.h"
00032 #include "elements/CEGUIItemListBase.h"
00033
00034
00035 #if defined(_MSC_VER)
00036 # pragma warning(push)
00037 # pragma warning(disable : 4251)
00038 #endif
00039
00040
00041
00042 namespace CEGUI
00043 {
00044
00049 class CEGUIEXPORT MenuBase : public ItemListBase
00050 {
00051 public:
00052 static const String EventNamespace;
00053
00054
00055
00056
00057 static const colour DefaultBackgroundColour;
00058
00059
00060
00061
00062
00063
00064 static const String EventPopupOpened;
00065 static const String EventPopupClosed;
00066
00067
00068
00069
00070
00078 float getItemSpacing(void) const {return d_itemSpacing;}
00079
00080
00088 float getHorzPadding(void) const {return d_horzPadding;}
00089
00090
00098 float getVertPadding(void) const {return d_vertPadding;}
00099
00100
00108 float getBorderWidth(void) const {return d_borderWidth;}
00109
00110
00118 const ColourRect& getBackgroundColours(void) const {return d_backgroundColours;}
00119
00120
00128 bool isMultiplePopupsAllowed(void) const {return d_allowMultiplePopups;}
00129
00130
00138 MenuItem* getPopupMenuItem(void) const {return d_popup;}
00139
00140
00141
00142
00143
00148 void setItemSpacing(float spacing) {d_itemSpacing=spacing;handleUpdatedItemData();}
00149
00150
00155 void setHorzPadding(float padding) {d_horzPadding=padding;handleUpdatedItemData();}
00156
00157
00162 void setVertPadding(float padding) {d_vertPadding=padding;handleUpdatedItemData();}
00163
00164
00169 void setBorderWidth(float border) {d_borderWidth=border;handleUpdatedItemData();}
00170
00171
00176 void setBackgroundColours(const ColourRect& cr) {d_backgroundColours=cr;}
00177
00178
00186 void changePopupMenuItem(MenuItem* item);
00187
00188
00193 void setAllowMultiplePopups(bool setting) {d_allowMultiplePopups=setting;}
00194
00195
00196
00197
00198
00203 MenuBase(const String& type, const String& name);
00204
00205
00210 virtual ~MenuBase(void);
00211
00212
00213 protected:
00214
00215
00216
00221 virtual void onPopupOpened(WindowEventArgs& e);
00222
00223
00228 virtual void onPopupClosed(WindowEventArgs& e);
00229
00230
00231
00232
00233
00238 void addMenuBaseEvents(void);
00239
00240
00251 virtual bool testClassName_impl(const String& class_name) const
00252 {
00253 if (class_name==(const utf8*)"MenuBase") return true;
00254 return ItemListBase::testClassName_impl(class_name);
00255 }
00256
00257
00258
00259
00260
00261 float d_itemSpacing;
00262 float d_horzPadding;
00263 float d_vertPadding;
00264 float d_borderWidth;
00265
00266 ColourRect d_backgroundColours;
00267
00268 MenuItem* d_popup;
00269 bool d_allowMultiplePopups;
00270
00271
00272 private:
00273
00274
00275
00276 static MenuBaseProperties::ItemSpacing d_itemSpacingProperty;
00277 static MenuBaseProperties::HorzPadding d_horzPaddingProperty;
00278 static MenuBaseProperties::VertPadding d_vertPaddingProperty;
00279 static MenuBaseProperties::BorderWidth d_borderWidthProperty;
00280 static MenuBaseProperties::BackgroundColours d_backgroundColoursProperty;
00281 static MenuBaseProperties::AllowMultiplePopups d_allowMultiplePopupsProperty;
00282
00283
00284
00285
00286 void addMenuBaseProperties(void);
00287 };
00288
00289 }
00290
00291
00292 #if defined(_MSC_VER)
00293 # pragma warning(pop)
00294 #endif
00295
00296 #endif // end of guard _CEGUIMenuBase_h_