MyGUI  3.4.0
MyGUI_MenuItem.cpp
Go to the documentation of this file.
1 /*
2  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3  * Distributed under the MIT License
4  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5  */
6 
7 #include "MyGUI_Precompiled.h"
8 #include "MyGUI_MenuItem.h"
9 
10 namespace MyGUI
11 {
12 
14  mOwner(nullptr),
15  mMinSize(10, 10),
16  mCheck(nullptr),
17  mCheckValue(false)
18  {
19  }
20 
22  {
24 
25  // FIXME проверить смену скина ибо должно один раз вызываться
26  Widget* parent = getParent();
27  MYGUI_ASSERT(parent, "MenuItem must have parent MenuControl");
28  if (!parent->isType<MenuControl>())
29  {
30  Widget* client = parent;
31  parent = client->getParent();
32  MYGUI_ASSERT(parent, "MenuItem must have parent MenuControl");
33  MYGUI_ASSERT(parent->getClientWidget() == client, "MenuItem must have parent MenuControl");
34  MYGUI_ASSERT(parent->isType<MenuControl>(), "MenuItem must have parent MenuControl");
35  }
36  mOwner = parent->castType<MenuControl>();
37 
39  assignWidget(mCheck, "Check");
40 
41  //if (isUserString("MinSize"))
42  // mMinSize = IntSize::parse(getUserString("MinSize"));
43 
44  //FIXME нам нужен фокус клавы
45  setNeedKeyFocus(true);
46 
47  updateCheck();
48  }
49 
51  {
52  // FIXME проверить смену скина ибо должно один раз вызываться
53  mOwner->_notifyDeleteItem(this);
54 
56  }
57 
59  {
60  Base::onWidgetCreated(_widget);
61 
62  MenuControl* child = _widget->castType<MenuControl>(false);
63  if (child != nullptr)
64  {
65  mOwner->_wrapItemChild(this, child);
66  }
67  }
68 
69  void MenuItem::setCaption(const UString& _value)
70  {
71  Button::setCaption(_value);
72  mOwner->_notifyUpdateName(this);
73  }
74 
75  void MenuItem::setFontName(const std::string& _value)
76  {
77  Button::setFontName(_value);
78  if (!getCaption().empty())
79  mOwner->_notifyUpdateName(this);
80  }
81 
82  void MenuItem::setFontHeight(int _value)
83  {
84  Button::setFontHeight(_value);
85  if (!getCaption().empty())
86  mOwner->_notifyUpdateName(this);
87  }
88 
90  {
91  return mOwner->getItemName(this);
92  }
93 
94  void MenuItem::setItemName(const UString& _value)
95  {
96  mOwner->setItemName(this, _value);
97  }
98 
100  {
101  mOwner->setItemData(this, _data);
102  }
103 
105  {
106  mOwner->removeItem(this);
107  }
108 
109  void MenuItem::setItemId(const std::string& _id)
110  {
111  mOwner->setItemId(this, _id);
112  }
113 
114  const std::string& MenuItem::getItemId()
115  {
116  return mOwner->getItemId(this);
117  }
118 
120  {
121  return mOwner->getItemIndex(this);
122  }
123 
125  {
126  return mOwner->createItemChild(this);
127  }
128 
130  {
131  mOwner->setItemType(this, _type);
132  }
133 
135  {
136  return mOwner->getItemType(this);
137  }
138 
139  void MenuItem::setItemChildVisible(bool _visible)
140  {
141  mOwner->setItemChildVisible(this, _visible);
142  }
143 
145  {
146  return mOwner->getItemChild(this);
147  }
148 
149  void MenuItem::setPropertyOverride(const std::string& _key, const std::string& _value)
150  {
152  if (_key == "MenuItemId")
153  setItemId(_value);
154 
156  else if (_key == "MenuItemType")
157  setItemType(utility::parseValue<MenuItemType>(_value));
158 
160  else if (_key == "MenuItemChecked")
161  setItemChecked(utility::parseValue<bool>(_value));
162 
163  else
164  {
165  Base::setPropertyOverride(_key, _value);
166  return;
167  }
168 
169  eventChangeProperty(this, _key, _value);
170  }
171 
173  {
174  return mOwner;
175  }
176 
178  {
179  return mOwner;
180  }
181 
183  {
185  if (text == nullptr)
186  return mMinSize;
187 
188  return text->getTextSize() + (getSize() - text->getSize());
189  }
190 
191  void MenuItem::updateCheck()
192  {
193  if (mCheck != nullptr)
194  mCheck->setVisible(mCheckValue);
195  }
196 
198  {
199  return mCheckValue;
200  }
201 
202  void MenuItem::setItemChecked(bool _value)
203  {
204  mCheckValue = _value;
205  updateCheck();
206  }
207 
208 } // namespace MyGUI
MyGUI::WidgetInput::setNeedKeyFocus
void setNeedKeyFocus(bool _value)
Definition: MyGUI_WidgetInput.cpp:152
MyGUI::MenuControl::setItemData
void setItemData(MenuItem *_item, Any _data)
Replace an item data.
Definition: MyGUI_MenuControl.cpp:690
MyGUI::IItemContainer
Definition: MyGUI_IItemContainer.h:19
MyGUI::Widget::getParent
Widget * getParent() const
Definition: MyGUI_Widget.cpp:1274
MyGUI::MenuControl::createItemChild
MenuControl * createItemChild(MenuItem *_item)
Definition: MyGUI_MenuControl.cpp:740
MyGUI::ISubWidgetText
Definition: MyGUI_ISubWidgetText.h:20
MyGUI::MenuControl::getItemChild
MenuControl * getItemChild(MenuItem *_item)
Definition: MyGUI_MenuControl.cpp:730
MyGUI::Button::shutdownOverride
void shutdownOverride() override
Definition: MyGUI_Button.cpp:34
MyGUI_MenuItem.h
MyGUI::Button::initialiseOverride
void initialiseOverride() override
Definition: MyGUI_Button.cpp:26
MyGUI::MenuItem::getItemChecked
bool getItemChecked() const
Definition: MyGUI_MenuItem.cpp:197
MyGUI::MenuItem::shutdownOverride
void shutdownOverride() override
Definition: MyGUI_MenuItem.cpp:50
MyGUI::MenuItem::getItemType
MenuItemType getItemType()
Definition: MyGUI_MenuItem.cpp:134
MyGUI::MenuItem::setItemChildVisible
void setItemChildVisible(bool _value)
Definition: MyGUI_MenuItem.cpp:139
MyGUI::MenuItem::initialiseOverride
void initialiseOverride() override
Definition: MyGUI_MenuItem.cpp:21
MyGUI::MenuItem::setItemName
void setItemName(const UString &_value)
Replace an item name.
Definition: MyGUI_MenuItem.cpp:94
MyGUI::Widget::onWidgetCreated
virtual void onWidgetCreated(Widget *_widget)
Definition: MyGUI_Widget.cpp:1119
MyGUI::MenuItem::_getContentSize
IntSize _getContentSize()
Definition: MyGUI_MenuItem.cpp:182
MyGUI::MenuItem::setItemType
void setItemType(MenuItemType _value)
Definition: MyGUI_MenuItem.cpp:129
MyGUI::MenuControl::_notifyDeleteItem
void _notifyDeleteItem(MenuItem *_item)
Definition: MyGUI_MenuControl.cpp:250
MyGUI::MenuItem::getItemChild
MenuControl * getItemChild()
Definition: MyGUI_MenuItem.cpp:144
MyGUI::Widget::eventChangeProperty
EventHandle_WidgetStringString eventChangeProperty
Definition: MyGUI_Widget.h:267
MyGUI::MenuControl::setItemId
void setItemId(MenuItem *_item, const std::string &_id)
Replace an item id.
Definition: MyGUI_MenuControl.cpp:705
MyGUI::Widget
Widget properties. Skin childs. Widget widget description should be here.
Definition: MyGUI_Widget.h:37
MyGUI::MenuControl::getItemName
const UString & getItemName(MenuItem *_item)
Get item from specified position.
Definition: MyGUI_MenuControl.cpp:720
MyGUI::MenuControl::setItemName
void setItemName(MenuItem *_item, const UString &_name)
Replace an item name.
Definition: MyGUI_MenuControl.cpp:715
MyGUI::MenuItem::MenuItem
MenuItem()
Definition: MyGUI_MenuItem.cpp:13
MyGUI::Any
Definition: MyGUI_Any.h:64
MyGUI::MenuItem::setItemId
void setItemId(const std::string &_value)
Replace an item id at a specified position.
Definition: MyGUI_MenuItem.cpp:109
MyGUI::MenuItem::setPropertyOverride
void setPropertyOverride(const std::string &_key, const std::string &_value) override
Definition: MyGUI_MenuItem.cpp:149
MyGUI::MenuControl::removeItem
void removeItem(MenuItem *_item)
Remove item.
Definition: MyGUI_MenuControl.cpp:597
MyGUI::SkinItem::getSubWidgetText
ISubWidgetText * getSubWidgetText()
Definition: MyGUI_SkinItem.cpp:155
MyGUI::ISubWidgetText::getTextSize
virtual IntSize getTextSize()
Definition: MyGUI_ISubWidgetText.h:109
MyGUI::UString
A UTF-16 string with implicit conversion to/from std::string and std::wstring.
Definition: MyGUI_UString.h:168
MyGUI_Precompiled.h
MyGUI::MenuControl::setItemChildVisible
void setItemChildVisible(MenuItem *_item, bool _visible)
Definition: MyGUI_MenuControl.cpp:725
MyGUI::TextBox::setFontName
virtual void setFontName(const std::string &_value)
Definition: MyGUI_TextBox.cpp:53
MyGUI::MenuControl::setItemType
void setItemType(MenuItem *_item, MenuItemType _type)
Definition: MyGUI_MenuControl.cpp:755
MyGUI::Widget::setVisible
virtual void setVisible(bool _value)
Definition: MyGUI_Widget.cpp:957
MyGUI::Button::setPropertyOverride
void setPropertyOverride(const std::string &_key, const std::string &_value) override
Definition: MyGUI_Button.cpp:197
MyGUI::MenuControl::getItemIndex
size_t getItemIndex(MenuItem *_item)
Get item index.
Definition: MyGUI_MenuControl.cpp:608
MYGUI_ASSERT
#define MYGUI_ASSERT(exp, dest)
Definition: MyGUI_Diagnostic.h:34
MyGUI::IObject::castType
Type * castType(bool _throw=true)
Definition: MyGUI_IObject.h:18
MyGUI::MenuItem::getItemId
const std::string & getItemId()
Get item id from specified position.
Definition: MyGUI_MenuItem.cpp:114
MyGUI::MenuItem::getItemIndex
size_t getItemIndex()
Get item index.
Definition: MyGUI_MenuItem.cpp:119
MyGUI::Widget::isType
virtual bool isType(const std::type_info &_type) const override
Definition: MyGUI_Widget.h:41
MyGUI::MenuItem::getMenuCtrlParent
MenuControl * getMenuCtrlParent()
Definition: MyGUI_MenuItem.cpp:172
MyGUI::TextBox::setCaption
virtual void setCaption(const UString &_value)
Definition: MyGUI_TextBox.cpp:77
MyGUI::MenuControl::getItemType
MenuItemType getItemType(MenuItem *_item)
Definition: MyGUI_MenuControl.cpp:750
MyGUI::types::TSize< int >
MyGUI::MenuControl::_wrapItemChild
void _wrapItemChild(MenuItem *_item, MenuControl *_widget)
Definition: MyGUI_MenuControl.cpp:485
MyGUI::Widget::assignWidget
void assignWidget(T *&_widget, const std::string &_name)
Definition: MyGUI_Widget.h:329
MyGUI::MenuItem::setCaption
void setCaption(const UString &_value) override
Definition: MyGUI_MenuItem.cpp:69
MyGUI::MenuItem::removeItem
void removeItem()
Remove item.
Definition: MyGUI_MenuItem.cpp:104
MyGUI::TextBox::getCaption
virtual const UString & getCaption()
Definition: MyGUI_TextBox.cpp:83
MyGUI::Widget::getClientWidget
Widget * getClientWidget()
Definition: MyGUI_Widget.cpp:1289
MyGUI::MenuControl
MenuControl properties. Skin childs. MenuControl widget description should be here.
Definition: MyGUI_MenuControl.h:34
MyGUI::TextBox::setFontHeight
virtual void setFontHeight(int _value)
Definition: MyGUI_TextBox.cpp:66
MyGUI::MenuItem::setItemChecked
void setItemChecked(bool _value)
Definition: MyGUI_MenuItem.cpp:202
MyGUI::MenuItem::onWidgetCreated
void onWidgetCreated(Widget *_widget) override
Definition: MyGUI_MenuItem.cpp:58
MyGUI::MenuControl::getItemId
const std::string & getItemId(MenuItem *_item)
Get item id.
Definition: MyGUI_MenuControl.cpp:710
MyGUI::MenuItem::setFontHeight
void setFontHeight(int _value) override
Definition: MyGUI_MenuItem.cpp:82
MyGUI::MenuItemType
Definition: MyGUI_MenuItemType.h:16
MyGUI::MenuItem::setFontName
void setFontName(const std::string &_value) override
Definition: MyGUI_MenuItem.cpp:75
MyGUI::MenuItem::createItemChild
MenuControl * createItemChild()
Definition: MyGUI_MenuItem.cpp:124
MyGUI
Definition: MyGUI_ActionController.h:15
MyGUI::MenuItem::setItemData
void setItemData(Any _value)
Replace an item name.
Definition: MyGUI_MenuItem.cpp:99
MyGUI::MenuItem::getItemName
const UString & getItemName()
Get item name.
Definition: MyGUI_MenuItem.cpp:89
MyGUI::MenuItem::_getItemContainer
IItemContainer * _getItemContainer() override
Definition: MyGUI_MenuItem.cpp:177
MyGUI::ICroppedRectangle::getSize
IntSize getSize() const
Definition: MyGUI_ICroppedRectangle.h:56
MyGUI::MenuControl::_notifyUpdateName
void _notifyUpdateName(MenuItem *_item)
Definition: MyGUI_MenuControl.cpp:271