MyGUI
3.2.0
|
00001 00006 /* 00007 This file is part of MyGUI. 00008 00009 MyGUI is free software: you can redistribute it and/or modify 00010 it under the terms of the GNU Lesser General Public License as published by 00011 the Free Software Foundation, either version 3 of the License, or 00012 (at your option) any later version. 00013 00014 MyGUI is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU Lesser General Public License for more details. 00018 00019 You should have received a copy of the GNU Lesser General Public License 00020 along with MyGUI. If not, see <http://www.gnu.org/licenses/>. 00021 */ 00022 #ifndef __MYGUI_WIDGET_INPUT_H__ 00023 #define __MYGUI_WIDGET_INPUT_H__ 00024 00025 #include "MyGUI_Prerequest.h" 00026 #include "MyGUI_Macros.h" 00027 #include "MyGUI_WidgetDefines.h" 00028 #include "MyGUI_WidgetToolTip.h" 00029 #include "MyGUI_MouseButton.h" 00030 #include "MyGUI_KeyCode.h" 00031 #include "MyGUI_MaskPickInfo.h" 00032 #include "MyGUI_Delegate.h" 00033 #include "MyGUI_EventPair.h" 00034 00035 namespace MyGUI 00036 { 00037 00062 // делегаты для событий виджета 00063 typedef delegates::CMultiDelegate1<Widget*> EventHandle_WidgetVoid; 00064 typedef delegates::CMultiDelegate2<Widget*, Widget*> EventHandle_WidgetWidget; 00065 typedef delegates::CMultiDelegate2<Widget*, bool> EventHandle_WidgetBool; 00066 typedef delegates::CMultiDelegate2<Widget*, int> EventHandle_WidgetInt; 00067 typedef delegates::CMultiDelegate2<Widget*, size_t> EventHandle_WidgetSizeT; 00068 typedef delegates::CMultiDelegate3<Widget*, int, int> EventHandle_WidgetIntInt; 00069 typedef delegates::CMultiDelegate4<Widget*, int, int, MouseButton> EventHandle_WidgetIntIntButton; 00070 typedef delegates::CMultiDelegate2<Widget*, KeyCode> EventHandle_WidgetKeyCode; 00071 typedef delegates::CMultiDelegate3<Widget*, KeyCode, Char> EventHandle_WidgetKeyCodeChar; 00072 typedef delegates::CMultiDelegate2<Widget*, const ToolTipInfo& > EventHandle_WidgetToolTip; 00073 00074 class MYGUI_EXPORT WidgetInput 00075 { 00076 public: 00077 WidgetInput(); 00078 virtual ~WidgetInput(); 00079 00081 void setNeedToolTip(bool _value); 00083 bool getNeedToolTip() const; 00084 00086 void setPointer(const std::string& _value); 00088 const std::string& getPointer() const; 00089 00091 void setNeedKeyFocus(bool _value); 00096 bool getNeedKeyFocus() const; 00097 00099 void setNeedMouseFocus(bool _value); 00104 bool getNeedMouseFocus() const; 00105 00111 void setInheritsPick(bool _value); 00113 bool getInheritsPick() const; 00114 00116 void setMaskPick(const std::string& _filename); 00118 void setMaskPick(const MaskPickInfo& _info); 00119 00120 bool isMaskPickInside(const IntPoint& _point, const IntCoord& _coord) const; 00121 00122 bool getRootMouseFocus() const; 00123 bool getRootKeyFocus() const; 00124 00130 EventHandle_WidgetWidget 00131 eventMouseLostFocus; 00132 00138 EventHandle_WidgetWidget 00139 eventMouseSetFocus; 00140 00147 EventPair3to4<EventHandle_WidgetIntInt, EventHandle_WidgetIntIntButton> 00148 eventMouseDrag; 00149 00156 EventHandle_WidgetIntInt 00157 eventMouseMove; 00158 00164 EventHandle_WidgetInt 00165 eventMouseWheel; 00166 00174 EventHandle_WidgetIntIntButton 00175 eventMouseButtonPressed; 00176 00184 EventHandle_WidgetIntIntButton 00185 eventMouseButtonReleased; 00186 00191 EventHandle_WidgetVoid 00192 eventMouseButtonClick; 00193 00198 EventHandle_WidgetVoid 00199 eventMouseButtonDoubleClick; 00200 00206 EventHandle_WidgetWidget 00207 eventKeyLostFocus; 00208 00214 EventHandle_WidgetWidget 00215 eventKeySetFocus; 00216 00223 EventHandle_WidgetKeyCodeChar 00224 eventKeyButtonPressed; 00225 00231 EventHandle_WidgetKeyCode 00232 eventKeyButtonReleased; 00233 00240 EventHandle_WidgetBool 00241 eventRootMouseChangeFocus; 00242 00249 EventHandle_WidgetBool 00250 eventRootKeyChangeFocus; 00251 00257 EventHandle_WidgetToolTip 00258 eventToolTip; 00259 00260 /*internal:*/ 00261 void _riseMouseLostFocus(Widget* _new); 00262 void _riseMouseSetFocus(Widget* _old); 00263 void _riseMouseDrag(int _left, int _top, MouseButton _id); 00264 void _riseMouseMove(int _left, int _top); 00265 void _riseMouseWheel(int _rel); 00266 void _riseMouseButtonPressed(int _left, int _top, MouseButton _id); 00267 void _riseMouseButtonReleased(int _left, int _top, MouseButton _id); 00268 void _riseMouseButtonClick(); 00269 void _riseMouseButtonDoubleClick(); 00270 void _riseKeyLostFocus(Widget* _new); 00271 void _riseKeySetFocus(Widget* _old); 00272 void _riseKeyButtonPressed(KeyCode _key, Char _char); 00273 void _riseKeyButtonReleased(KeyCode _key); 00274 void _riseMouseChangeRootFocus(bool _focus); 00275 void _riseKeyChangeRootFocus(bool _focus); 00276 00277 void _setRootMouseFocus(bool _value); 00278 void _setRootKeyFocus(bool _value); 00279 00280 protected: 00281 virtual void onMouseLostFocus(Widget* _new); 00282 virtual void onMouseSetFocus(Widget* _old); 00283 virtual void onMouseDrag(int _left, int _top, MouseButton _id); 00284 virtual void onMouseMove(int _left, int _top); 00285 virtual void onMouseWheel(int _rel); 00286 virtual void onMouseButtonPressed(int _left, int _top, MouseButton _id); 00287 virtual void onMouseButtonReleased(int _left, int _top, MouseButton _id); 00288 virtual void onMouseButtonClick(); 00289 virtual void onMouseButtonDoubleClick(); 00290 virtual void onKeyLostFocus(Widget* _new); 00291 virtual void onKeySetFocus(Widget* _old); 00292 virtual void onKeyButtonPressed(KeyCode _key, Char _char); 00293 virtual void onKeyButtonReleased(KeyCode _key); 00294 virtual void onMouseChangeRootFocus(bool _focus); 00295 virtual void onKeyChangeRootFocus(bool _focus); 00296 00297 private: 00298 std::string mPointer; 00299 MaskPickInfo mOwnMaskPickInfo; 00300 00301 bool mNeedToolTip; 00302 bool mInheritsPick; 00303 bool mNeedKeyFocus; 00304 bool mNeedMouseFocus; 00305 00306 bool mRootMouseFocus; 00307 bool mRootKeyFocus; 00308 }; 00309 00310 } // namespace MyGUI 00311 00312 #endif // __MYGUI_WIDGET_INPUT_H__