MyGUI 3.2.0

- Main Page
- Related Pages
- Namespaces
- Data Structures
- Files
- Examples

- File List
- Globals

MyGUI_MenuItem.cpp
Go to the documentation of this file.
1
6 /*
7 This file is part of MyGUI.
8
9 MyGUI is free software: you can redistribute it and/or modify
10 it under the terms of the GNU Lesser General Public License as published by
11 the Free Software Foundation, either version 3 of the License, or
12 (at your option) any later version.
13
14 MyGUI is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU Lesser General Public License for more details.
18
19 You should have received a copy of the GNU Lesser General Public License
20 along with MyGUI. If not, see <http://www.gnu.org/licenses/>.
21 */
22 #include "MyGUI_Precompiled.h"
23 #include "MyGUI_MenuItem.h"
24
25 namespace MyGUI
26 {
27
28 MenuItem::MenuItem() :
29 mOwner(nullptr),
30 mMinSize(10, 10),
31 mCheck(nullptr),
32 mCheckValue(false)
33 {
34 }
35
36 void MenuItem::initialiseOverride()
37 {
38 Base::initialiseOverride();
39
40 // FIXME проверить смену скина ибо должно один раз вызываться
41 Widget* parent = getParent();
42 MYGUI_ASSERT(parent, "MenuItem must have parent MenuControl");
43 if (!parent->isType<MenuControl>())
44 {
45 Widget* client = parent;
46 parent = client->getParent();
47 MYGUI_ASSERT(parent, "MenuItem must have parent MenuControl");
48 MYGUI_ASSERT(parent->getClientWidget() == client, "MenuItem must have parent MenuControl");
49 MYGUI_ASSERT(parent->isType<MenuControl>(), "MenuItem must have parent MenuControl");
50 }
51 mOwner = parent->castType<MenuControl>();
52
53 assignWidget(mCheck, "Check");
54
55 //if (isUserString("MinSize"))
56 // mMinSize = IntSize::parse(getUserString("MinSize"));
57
58 //FIXME нам нуженфокус клавы
59 setNeedKeyFocus(true);
60
61 updateCheck();
62 }
63
64 void MenuItem::shutdownOverride()
65 {
66 // FIXME проверить смену скина ибо должно один раз вызываться
67 mOwner->_notifyDeleteItem(this);
68
69 Base::shutdownOverride();
70 }
71
72 void MenuItem::onWidgetCreated(Widget* _widget)
73 {
74 Base::onWidgetCreated(_widget);
75
76 MenuControl* child = _widget->castType<MenuControl>(false);
77 if (child != nullptr)
78 {
79 mOwner->_wrapItemChild(this, child);
80 }
81 }
82
83 void MenuItem::setCaption(const UString& _value)
84 {
85 Button::setCaption(_value);
86 mOwner->_notifyUpdateName(this);
87 }
88
89 const UString& MenuItem::getItemName()
90 {
91 return mOwner->getItemName(this);
92 }
93
94 void MenuItem::setItemName(const UString& _value)
95 {
96 mOwner->setItemName(this, _value);
97 }
98
99 void MenuItem::setItemData(Any _data)
100 {
101 mOwner->setItemData(this, _data);
102 }
103
104 void MenuItem::removeItem()
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
119 size_t MenuItem::getItemIndex()
120 {
121 return mOwner->getItemIndex(this);
122 }
123
124 MenuControl* MenuItem::createItemChild()
125 {
126 return mOwner->createItemChild(this);
127 }
128
129 void MenuItem::setItemType(MenuItemType _type)
130 {
131 mOwner->setItemType(this, _type);
132 }
133
134 MenuItemType MenuItem::getItemType()
135 {
136 return mOwner->getItemType(this);
137 }
138
139 void MenuItem::setItemChildVisible(bool _visible)
140 {
141 mOwner->setItemChildVisible(this, _visible);
142 }
143
144 MenuControl* MenuItem::getItemChild()
145 {
146 return mOwner->getItemChild(this);
147 }
148
149 void MenuItem::setPropertyOverride(const std::string& _key, const std::string& _value)
150 {
151 if (_key == "MenuItemId")
152 setItemId(_value);
153 else if (_key == "MenuItemType")
154 setItemType(utility::parseValue<MenuItemType>(_value));
155 else if (_key == "MenuItemChecked")
156 setItemChecked(utility::parseValue<bool>(_value));
157 else
158 {
159 Base::setPropertyOverride(_key, _value);
160 return;
161 }
162 eventChangeProperty(this, _key, _value);
163 }
164
165 MenuControl* MenuItem::getMenuCtrlParent()
166 {
167 return mOwner;
168 }
169
170 IItemContainer* MenuItem::_getItemContainer()
171 {
172 return mOwner;
173 }
174
175 IntSize MenuItem::_getContentSize()
176 {
177 ISubWidgetText* text = getSubWidgetText();
178 if (text == nullptr)
179 return mMinSize;
180
181 return text->getTextSize() + (getSize() - text->getSize());
182 }
183
184 void MenuItem::updateCheck()
185 {
186 if (mCheck != nullptr)
187 mCheck->setVisible(mCheckValue);
188 }
189
190 bool MenuItem::getItemChecked() const
191 {
192 return mCheckValue;
193 }
194
195 void MenuItem::setItemChecked(bool _value)
196 {
197 mCheckValue = _value;
198 updateCheck();
199 }
200
201 } // namespace MyGUI
MyGUI::Widget
Definition: MyGUI_Widget.h:41
MyGUI::Button::setPropertyOverride
virtual void setPropertyOverride(const std::string &_key, const std::string &_value)
Definition: MyGUI_Button.cpp:189
MyGUI_Precompiled.h
MyGUI::Widget::getClientWidget
Widget * getClientWidget()
Definition: MyGUI_Widget.cpp:1260
MyGUI::types::TSize< int >
MyGUI::Widget::assignWidget
void assignWidget(T *&_widget, const std::string &_name)
Definition: MyGUI_Widget.h:324
MyGUI::Any
Definition: MyGUI_Any.h:81
MyGUI::Widget::setVisible
virtual void setVisible(bool _value)
Definition: MyGUI_Widget.cpp:965
MyGUI::TextBox::setCaption
virtual void setCaption(const UString &_value)
Definition: MyGUI_TextBox.cpp:92
nullptr
#define nullptr
Definition: MyGUI_Prerequest.h:47
MyGUI::IItemContainer
Definition: MyGUI_IItemContainer.h:33
MyGUI::SkinItem::getSubWidgetText
ISubWidgetText * getSubWidgetText()
Definition: MyGUI_SkinItem.cpp:169
MyGUI::Widget::eventChangeProperty
EventHandle_WidgetStringString eventChangeProperty
Definition: MyGUI_Widget.h:271
MyGUI::Button::shutdownOverride
virtual void shutdownOverride()
Definition: MyGUI_Button.cpp:47
MYGUI_ASSERT
#define MYGUI_ASSERT(exp, dest)
Definition: MyGUI_Diagnostic.h:58
MyGUI::Button::initialiseOverride
virtual void initialiseOverride()
Definition: MyGUI_Button.cpp:40
MyGUI::IObject::castType
Type * castType(bool _throw=true)
Definition: MyGUI_IObject.h:33
MyGUI::Widget::onWidgetCreated
virtual void onWidgetCreated(Widget *_widget)
Definition: MyGUI_Widget.cpp:1124
MyGUI::Widget::isType
virtual bool isType(const std::type_info &_type) const
Definition: MyGUI_Widget.h:53
MyGUI::Widget::getParent
Widget * getParent() const
Definition: MyGUI_Widget.cpp:1245
MyGUI::UString
A UTF-16 string with implicit conversion to/from std::string and std::wstring.
Definition: MyGUI_UString.h:169
MyGUI::ISubWidgetText
Definition: MyGUI_ISubWidgetText.h:32
MyGUI::WidgetInput::setNeedKeyFocus
void setNeedKeyFocus(bool _value)
Definition: MyGUI_WidgetInput.cpp:171
MyGUI::ISubWidgetText::getTextSize
virtual IntSize getTextSize()
Definition: MyGUI_ISubWidgetText.h:125
MyGUI::ICroppedRectangle::getSize
IntSize getSize() const
Definition: MyGUI_ICroppedRectangle.h:71