MyGUI  3.2.1
MyGUI_MenuItem.h
Go to the documentation of this file.
00001 /*
00002  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
00003  * Distributed under the MIT License
00004  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
00005  */
00006 
00007 #ifndef __MYGUI_MENU_ITEM_H__
00008 #define __MYGUI_MENU_ITEM_H__
00009 
00010 #include "MyGUI_Prerequest.h"
00011 #include "MyGUI_Button.h"
00012 #include "MyGUI_MenuControl.h"
00013 #include "MyGUI_IItem.h"
00014 
00015 namespace MyGUI
00016 {
00017 
00021     class MYGUI_EXPORT MenuItem :
00022         public Button,
00023         public IItem,
00024         public MemberObsolete<MenuItem>
00025     {
00026         MYGUI_RTTI_DERIVED( MenuItem )
00027 
00028     public:
00029         MenuItem();
00030 
00032         virtual void setCaption(const UString& _value);
00033 
00035         virtual void setFontName(const std::string& _value);
00036 
00038         virtual void setFontHeight(int _value);
00039 
00041         void setItemName(const UString& _value);
00043         const UString& getItemName();
00044 
00046         void setItemData(Any _value);
00047 
00049         template <typename ValueType>
00050         ValueType* getItemData(bool _throw = true)
00051         {
00052             return mOwner->getItemData<ValueType>(this, _throw);
00053         }
00054 
00056         void removeItem();
00057 
00059         void setItemId(const std::string& _value);
00061         const std::string& getItemId();
00062 
00064         size_t getItemIndex();
00065 
00067         MenuControl* createItemChild();
00068 
00070         template <typename Type>
00071         Type* createItemChildT()
00072         {
00073             return mOwner->createItemChildT<Type>(this);
00074         }
00075 
00077         void setItemType(MenuItemType _value);
00079         MenuItemType getItemType();
00080 
00082         void setItemChildVisible(bool _value);
00083 
00085         MenuControl* getMenuCtrlParent();
00086 
00088         MenuControl* getItemChild();
00089 
00090         bool getItemChecked() const;
00091         void setItemChecked(bool _value);
00092 
00093         /*internal:*/
00094         virtual IItemContainer* _getItemContainer();
00095         IntSize _getContentSize();
00096 
00097     protected:
00098         virtual void initialiseOverride();
00099         virtual void shutdownOverride();
00100 
00101         virtual void setPropertyOverride(const std::string& _key, const std::string& _value);
00102 
00103         virtual void onWidgetCreated(Widget* _widget);
00104 
00105     private:
00106         void updateCheck();
00107 
00108     private:
00109         MenuControl* mOwner;
00110         IntSize mMinSize;
00111         Widget* mCheck;
00112         bool mCheckValue;
00113     };
00114 
00115 } // namespace MyGUI
00116 
00117 #endif // __MYGUI_MENU_ITEM_H__