64 MenuItem(
const std::string& str,
int id,
bool disable,
bool check);
76 template <
class T1,
class T2>
77 MenuItem(
const std::string& str,
int id,
bool disable,
bool check,
void (T1::* slot)(
int), T2* obj);
81 template <
class T1,
class T2>
82 MenuItem(
const std::string& str,
int id,
bool disable,
bool check,
void (T1::* slot)(), T2* obj);
100 struct SetFontAction;
101 struct SetTextColorAction;
132 MenuBar(
X x,
Y y,
X w,
const boost::shared_ptr<Font>& font,
Clr text_color = CLR_WHITE,
Clr color = CLR_BLACK,
Clr interior = CLR_SHADOW);
133 MenuBar(
X x,
Y y,
X w,
const boost::shared_ptr<Font>& font,
const MenuItem& m,
Clr text_color = CLR_WHITE,
Clr color = CLR_BLACK,
Clr interior = CLR_SHADOW);
137 virtual Pt MinUsableSize()
const;
140 bool ContainsMenu(
const std::string& str)
const;
141 std::size_t NumMenus()
const;
144 const MenuItem& GetMenu(
const std::string& str)
const;
146 const MenuItem& GetMenu(std::size_t n)
const;
148 Clr BorderColor()
const;
149 Clr InteriorColor()
const;
150 Clr TextColor()
const;
151 Clr HiliteColor()
const;
152 Clr SelectedTextColor()
const;
158 virtual void Render();
161 virtual void MouseLeave();
163 virtual void SizeMove(
const Pt& ul,
const Pt& lr);
169 MenuItem& GetMenu(
const std::string& str);
174 void SetBorderColor(
Clr clr);
175 void SetInteriorColor(
Clr clr);
176 void SetTextColor(
Clr clr);
177 void SetHiliteColor(
Clr clr);
178 void SetSelectedTextColor(
Clr clr);
181 static const std::size_t INVALID_CARET;
189 const boost::shared_ptr<Font>& GetFont()
const;
190 const std::vector<TextControl*>& MenuLabels()
const;
191 std::size_t Caret()
const;
197 void AdjustLayout(
bool reset =
false);
199 boost::shared_ptr<Font> m_font;
204 Clr m_sel_text_color;
207 std::vector<TextControl*> m_menu_labels;
210 friend struct SetFontAction;
211 friend struct SetTextColorAction;
241 PopupMenu(
X x,
Y y,
const boost::shared_ptr<Font>& font,
const MenuItem& m,
Clr text_color = CLR_WHITE,
Clr color = CLR_BLACK,
Clr interior = CLR_SHADOW);
245 virtual Pt ClientUpperLeft()
const;
248 Clr BorderColor()
const;
249 Clr InteriorColor()
const;
250 Clr TextColor()
const;
251 Clr HiliteColor()
const;
252 Clr SelectedTextColor()
const;
258 virtual void Render();
268 void SetBorderColor(
Clr clr);
269 void SetInteriorColor(
Clr clr);
270 void SetTextColor(
Clr clr);
271 void SetHiliteColor(
Clr clr);
272 void SetSelectedTextColor(
Clr clr);
275 static const std::size_t INVALID_CARET;
279 const boost::shared_ptr<Font>& GetFont()
const;
281 const std::vector<Rect>& OpenLevels()
const;
282 const std::vector<std::size_t>& Caret()
const;
283 const MenuItem* ItemSelected()
const;
287 boost::shared_ptr<Font>
293 Clr m_sel_text_color;
297 std::vector<Rect> m_open_levels;
298 std::vector<std::size_t>
308 template <
class T1,
class T2>
318 template <
class T1,
class T2>