MyGUI 3.4.3
MyGUI_Button.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_Button.h"
10#include "MyGUI_ImageBox.h"
11#include "MyGUI_InputManager.h"
12
13namespace MyGUI
14{
15
17 {
19
21 assignWidget(mImage, "Image");
22 }
23
25 {
26 mImage = nullptr;
27
29 }
30
32 {
33 _setKeyFocus(true);
34
36 }
37
39 {
40 _setKeyFocus(false);
41
43 }
44
46 {
47 _setMouseFocus(true);
48
50 }
51
53 {
54 _setMouseFocus(false);
55
57 }
58
60 {
62 {
63 mIsMousePressed = true;
64 updateButtonState();
65 }
66
68 }
69
71 {
73 {
74 mIsMousePressed = false;
75 updateButtonState();
76 }
77
79 }
80
81 void Button::updateButtonState()
82 {
83 if (mStateSelected)
84 {
86 {
87 if (!_setState("disabled_checked"))
88 _setState("disabled");
89 }
90 else if (mIsMousePressed)
91 {
92 if (!_setState("pushed_checked"))
93 _setState("pushed");
94 }
95 else if (mIsMouseFocus || mIsKeyFocus)
96 {
97 if (!_setState("highlighted_checked"))
98 _setState("pushed");
99 }
100 else
101 {
102 if (!_setState("normal_checked"))
103 _setState("pushed");
104 }
105 }
106 else
107 {
108 if (!getInheritedEnabled())
109 _setState("disabled");
110 else if (mIsMousePressed)
111 _setState("pushed");
112 else if (mIsMouseFocus || mIsKeyFocus)
113 _setState("highlighted");
114 else
115 _setState("normal");
116 }
117 }
118
120 {
121 if (mStateSelected == _check)
122 return;
123
124 mStateSelected = _check;
125 updateButtonState();
126 }
127
129 {
130 mIsKeyFocus = _focus;
131 updateButtonState();
132 }
133
135 {
136 mIsMouseFocus = _focus;
137 updateButtonState();
138 }
139
141 {
142 updateButtonState();
143 if (!getInheritedEnabled())
144 {
145 mIsKeyFocus = false;
146 mIsMouseFocus = false;
147 }
148 }
149
151 {
152 mModeImage = _value;
153 updateButtonState();
154 }
155
156 bool Button::_setState(std::string_view _value)
157 {
158 if (mModeImage)
159 {
160 if (mImage)
161 mImage->setItemName(_value);
162
164 return true;
165 }
166
167 return _setWidgetState(_value);
168 }
169
170 void Button::setImageResource(std::string_view _name)
171 {
172 if (mImage)
173 mImage->setItemResource(_name);
174 updateButtonState();
175 }
176
177 void Button::setImageGroup(std::string_view _name)
178 {
179 if (mImage)
180 mImage->setItemGroup(_name);
181 updateButtonState();
182 }
183
184 void Button::setImageName(std::string_view _name)
185 {
186 if (mImage)
187 mImage->setItemName(_name);
188 }
189
190 void Button::setPropertyOverride(std::string_view _key, std::string_view _value)
191 {
193 if (_key == "StateSelected")
194 setStateSelected(utility::parseValue<bool>(_value));
195
197 else if (_key == "ModeImage")
198 setModeImage(utility::parseValue<bool>(_value));
199
201 else if (_key == "ImageResource")
203
205 else if (_key == "ImageGroup")
207
209 else if (_key == "ImageName")
211
212 else
213 {
215 return;
216 }
217
219 }
220
222 {
223 return mStateSelected;
224 }
225
227 {
228 return mModeImage;
229 }
230
232 {
233 return mImage;
234 }
235
236} // namespace MyGUI
void onMouseSetFocus(Widget *_old) override
void _setMouseFocus(bool _focus)
bool _setState(std::string_view _value)
void onMouseButtonReleased(int _left, int _top, MouseButton _id) override
void onKeyLostFocus(Widget *_new) override
void onMouseButtonPressed(int _left, int _top, MouseButton _id) override
void setImageName(std::string_view _name)
void onKeySetFocus(Widget *_old) override
bool getStateSelected() const
Get buton selected.
bool getModeImage() const
ImageBox * _getImageBox() const
void setPropertyOverride(std::string_view _key, std::string_view _value) override
void shutdownOverride() override
void baseUpdateEnable() override
void setImageResource(std::string_view _name)
void setStateSelected(bool _check)
Set button selected state.
void initialiseOverride() override
void setModeImage(bool _value)
void onMouseLostFocus(Widget *_new) override
void setImageGroup(std::string_view _name)
void _setKeyFocus(bool _focus)
widget description should be here.
void setItemGroup(std::string_view _group)
bool setItemResource(std::string_view _name)
void setItemName(std::string_view _name)
widget description should be here.
bool getInheritedEnabled() const
EventHandle_WidgetStringString eventChangeProperty
bool _setWidgetState(std::string_view _state)
void assignWidget(T *&_widget, std::string_view _name)