Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_GUI_MENUITEM_H__
00009 #define __SP_GUI_MENUITEM_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #ifdef SP_COMPILE_WITH_GUI
00015
00016
00017 #include "GUI/spGUIBaseObject.hpp"
00018
00019
00020 namespace sp
00021 {
00022 namespace gui
00023 {
00024
00025
00026 enum EMenuItemTypes
00027 {
00028 MENUITEM_ROOT,
00029 MENUITEM_TITLE,
00030 MENUITEM_ENTRY,
00031 MENUITEM_SEPARATOR,
00032 };
00033
00034
00035 class SP_EXPORT GUIMenuItem : public GUIBaseObject
00036 {
00037
00038 public:
00039
00040 GUIMenuItem(const EMenuItemTypes Type, const io::stringc &Text = "");
00041 ~GUIMenuItem();
00042
00043
00044
00045 bool update(const dim::point2di &Position);
00046 void draw();
00047
00048 void setText(const io::stringc &Text);
00049 void setParent(GUIMenuItem* Parent);
00050
00051 void addChild(GUIMenuItem* Child);
00052 void removeChild(GUIMenuItem* Child);
00053
00054 void setColor(const video::color &Color);
00055
00056
00057
00058 inline EMenuItemTypes getType() const
00059 {
00060 return Type_;
00061 }
00062 inline io::stringc getText() const
00063 {
00064 return Text_;
00065 }
00066 inline io::stringc getExText() const
00067 {
00068 return ExText_;
00069 }
00070 inline GUIMenuItem* getParent() const
00071 {
00072 return Parent_;
00073 }
00074
00075 inline void setExpand(bool isExpand)
00076 {
00077 isExpand_ = isExpand;
00078 }
00079 inline bool getExpand() const
00080 {
00081 return isExpand_;
00082 }
00083
00084 inline void setState(bool isChecked)
00085 {
00086 isChecked_ = isChecked;
00087 }
00088 inline bool getState() const
00089 {
00090 return isChecked_;
00091 }
00092
00093 private:
00094
00095
00096
00097 static const s32 MENUITEM_HEIGHT;
00098 static const s32 SEPARATOR_HEIGHT;
00099
00100 static const video::color ITEMPICK_COLOR_A;
00101 static const video::color ITEMPICK_COLOR_B;
00102
00103
00104
00105 void init();
00106 void clear();
00107
00108 void updateChildrenSize();
00109
00110 void closeExpansionChildren();
00111 void closeExpansionParent();
00112
00113 void setColorRecursive(const video::color &Color);
00114
00115 s32 getTextWidth() const;
00116 s32 getExTextWidth() const;
00117
00118 bool anyChildExpand() const;
00119
00120
00121
00122 EMenuItemTypes Type_;
00123 io::stringc Text_, ExText_;
00124
00125 dim::point2di Position_;
00126 dim::size2di Size_;
00127 s32 Space_, ExPos_;
00128
00129 GUIMenuItem* Parent_;
00130 std::list<GUIMenuItem*> Children_;
00131
00132 bool isExpand_;
00133 bool isMouseOver_;
00134 bool isChecked_;
00135
00136 };
00137
00138
00139 }
00140
00141 }
00142
00143
00144 #endif
00145
00146 #endif
00147
00148
00149
00150