22 #ifndef __MYGUI_MENU_CONTROL_H__
23 #define __MYGUI_MENU_CONTROL_H__
85 virtual void setVisible(
bool _value);
88 void setVisibleSmooth(
bool _value);
94 size_t getItemCount()
const;
105 void removeItemAt(
size_t _index);
110 void removeAllItems();
117 size_t getItemIndex(
MenuItem* _item);
120 size_t findItemIndex(
MenuItem* _item);
129 void setItemDataAt(
size_t _index,
Any _data);
134 void clearItemDataAt(
size_t _index);
136 void clearItemData(
MenuItem* _item);
139 template <
typename ValueType>
143 return mItemsInfo[_index].data.castType<ValueType>(_throw);
146 template <
typename ValueType>
149 return getItemDataAt<ValueType>(getItemIndex(_item), _throw);
153 void setItemIdAt(
size_t _index,
const std::string& _id);
155 void setItemId(
MenuItem* _item,
const std::string& _id);
158 const std::string& getItemIdAt(
size_t _index);
160 const std::string& getItemId(
MenuItem* _item);
163 MenuItem* getItemById(
const std::string& _id);
166 MenuItem* findItemById(
const std::string& _id,
bool _recursive =
false);
169 size_t getItemIndexById(
const std::string& _id);
174 void setItemNameAt(
size_t _index,
const UString& _name);
179 const UString& getItemNameAt(
size_t _index);
184 size_t findItemIndexWith(
const UString& _name);
187 void setItemChildVisibleAt(
size_t _index,
bool _visible);
189 void setItemChildVisible(
MenuItem* _item,
bool _visible);
195 template <
typename Type>
198 return static_cast<Type*
>(createItemChildByType(_index, Type::getClassTypeName()));
202 template <
typename Type>
205 return createItemChildTAt<Type>(getItemIndex(_item));
221 void removeItemChildAt(
size_t _index);
224 void removeItemChild(
MenuItem* _item);
239 void setPopupAccept(
bool _value);
241 bool getPopupAccept()
const;
247 void setVerticalAlignment(
bool _value);
249 bool getVerticalAlignment()
const;
270 void _notifyDeleteItem(
MenuItem* _item);
271 void _notifyDeletePopup(
MenuItem* _item);
272 void _notifyUpdateName(
MenuItem* _item);
276 virtual size_t _getItemCount();
278 virtual void _removeItemAt(
size_t _index);
279 virtual Widget* _getItemAt(
size_t _index);
280 virtual void _setItemNameAt(
size_t _index,
const UString& _name);
281 virtual const UString& _getItemNameAt(
size_t _index);
282 virtual void _setItemSelected(
IItem* _item);
284 void _updateItems(
size_t _index);
285 void _updateSizeForEmpty();
288 virtual void initialiseOverride();
289 virtual void shutdownOverride();
291 virtual void onKeyChangeRootFocus(
bool _focus);
293 virtual void onWidgetCreated(
Widget* _widget);
295 virtual void setPropertyOverride(
const std::string& _key,
const std::string& _value);
298 void notifyRootKeyChangeFocus(
Widget* _sender,
bool _focus);
299 void notifyMouseButtonClick(
Widget* _sender);
300 void notifyMouseSetFocus(
Widget* _sender,
Widget* _new);
302 const std::string& getSkinByType(
MenuItemType _type)
const;
303 std::string getIconIndexByType(
MenuItemType _type)
const;
307 MenuItemType getItemType(
bool _submenu,
bool _separator)
const;
309 void notifyMenuCtrlAccept(
MenuItem* _item);
311 Widget* createItemChildByType(
size_t _index,
const std::string& _type);
317 Widget* _getClientWidget();
319 void _setItemChildVisibleAt(
size_t _index,
bool _visible,
bool _smooth);
332 std::string mItemNormalSkin;
333 std::string mItemPopupSkin;
334 std::string mItemSeparatorSkin;
336 std::string mSubMenuSkin;
337 std::string mSubMenuLayer;
342 bool mVerticalAlignment;
348 bool mChangeChildSkin;
354 #endif // __MYGUI_MENU_CONTROL_H__
delegates::CMultiDelegate2< MenuControl *, MenuItem * > EventHandle_MenuCtrlPtrMenuItemPtr
#define MYGUI_RTTI_DERIVED(DerivedType)
delegates::CMultiDelegate1< MenuControl * > EventHandle_MenuCtrlPtr
#define MYGUI_ASSERT_RANGE(index, size, owner)
A UTF-16 string with implicit conversion to/from std::string and std::wstring.