MyGUI
3.2.1
|
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_WIDGET_INPUT_H__ 00008 #define __MYGUI_WIDGET_INPUT_H__ 00009 00010 #include "MyGUI_Prerequest.h" 00011 #include "MyGUI_Macros.h" 00012 #include "MyGUI_WidgetDefines.h" 00013 #include "MyGUI_WidgetToolTip.h" 00014 #include "MyGUI_MouseButton.h" 00015 #include "MyGUI_KeyCode.h" 00016 #include "MyGUI_MaskPickInfo.h" 00017 #include "MyGUI_Delegate.h" 00018 #include "MyGUI_EventPair.h" 00019 00020 namespace MyGUI 00021 { 00022 00047 // делегаты для событий виджета 00048 typedef delegates::CMultiDelegate1<Widget*> EventHandle_WidgetVoid; 00049 typedef delegates::CMultiDelegate2<Widget*, Widget*> EventHandle_WidgetWidget; 00050 typedef delegates::CMultiDelegate2<Widget*, bool> EventHandle_WidgetBool; 00051 typedef delegates::CMultiDelegate2<Widget*, int> EventHandle_WidgetInt; 00052 typedef delegates::CMultiDelegate2<Widget*, size_t> EventHandle_WidgetSizeT; 00053 typedef delegates::CMultiDelegate3<Widget*, int, int> EventHandle_WidgetIntInt; 00054 typedef delegates::CMultiDelegate4<Widget*, int, int, MouseButton> EventHandle_WidgetIntIntButton; 00055 typedef delegates::CMultiDelegate2<Widget*, KeyCode> EventHandle_WidgetKeyCode; 00056 typedef delegates::CMultiDelegate3<Widget*, KeyCode, Char> EventHandle_WidgetKeyCodeChar; 00057 typedef delegates::CMultiDelegate2<Widget*, const ToolTipInfo& > EventHandle_WidgetToolTip; 00058 00059 class MYGUI_EXPORT WidgetInput 00060 { 00061 public: 00062 WidgetInput(); 00063 virtual ~WidgetInput(); 00064 00066 void setNeedToolTip(bool _value); 00068 bool getNeedToolTip() const; 00069 00071 void setPointer(const std::string& _value); 00073 const std::string& getPointer() const; 00074 00076 void setNeedKeyFocus(bool _value); 00081 bool getNeedKeyFocus() const; 00082 00084 void setNeedMouseFocus(bool _value); 00089 bool getNeedMouseFocus() const; 00090 00096 void setInheritsPick(bool _value); 00098 bool getInheritsPick() const; 00099 00101 void setMaskPick(const std::string& _filename); 00103 void setMaskPick(const MaskPickInfo& _info); 00104 00105 bool isMaskPickInside(const IntPoint& _point, const IntCoord& _coord) const; 00106 00107 bool getRootMouseFocus() const; 00108 bool getRootKeyFocus() const; 00109 00115 EventHandle_WidgetWidget eventMouseLostFocus; 00116 00122 EventHandle_WidgetWidget eventMouseSetFocus; 00123 00130 EventPairAddParameter<EventHandle_WidgetIntInt, EventHandle_WidgetIntIntButton> eventMouseDrag; 00131 00138 EventHandle_WidgetIntInt eventMouseMove; 00139 00145 EventHandle_WidgetInt eventMouseWheel; 00146 00154 EventHandle_WidgetIntIntButton eventMouseButtonPressed; 00155 00163 EventHandle_WidgetIntIntButton eventMouseButtonReleased; 00164 00169 EventHandle_WidgetVoid eventMouseButtonClick; 00170 00175 EventHandle_WidgetVoid eventMouseButtonDoubleClick; 00176 00182 EventHandle_WidgetWidget eventKeyLostFocus; 00183 00189 EventHandle_WidgetWidget eventKeySetFocus; 00190 00197 EventHandle_WidgetKeyCodeChar eventKeyButtonPressed; 00198 00204 EventHandle_WidgetKeyCode eventKeyButtonReleased; 00205 00212 EventHandle_WidgetBool eventRootMouseChangeFocus; 00213 00220 EventHandle_WidgetBool eventRootKeyChangeFocus; 00221 00227 EventHandle_WidgetToolTip eventToolTip; 00228 00229 /*internal:*/ 00230 void _riseMouseLostFocus(Widget* _new); 00231 void _riseMouseSetFocus(Widget* _old); 00232 void _riseMouseDrag(int _left, int _top, MouseButton _id); 00233 void _riseMouseMove(int _left, int _top); 00234 void _riseMouseWheel(int _rel); 00235 void _riseMouseButtonPressed(int _left, int _top, MouseButton _id); 00236 void _riseMouseButtonReleased(int _left, int _top, MouseButton _id); 00237 void _riseMouseButtonClick(); 00238 void _riseMouseButtonDoubleClick(); 00239 void _riseKeyLostFocus(Widget* _new); 00240 void _riseKeySetFocus(Widget* _old); 00241 void _riseKeyButtonPressed(KeyCode _key, Char _char); 00242 void _riseKeyButtonReleased(KeyCode _key); 00243 void _riseMouseChangeRootFocus(bool _focus); 00244 void _riseKeyChangeRootFocus(bool _focus); 00245 00246 void _setRootMouseFocus(bool _value); 00247 void _setRootKeyFocus(bool _value); 00248 00249 protected: 00250 virtual void onMouseLostFocus(Widget* _new); 00251 virtual void onMouseSetFocus(Widget* _old); 00252 virtual void onMouseDrag(int _left, int _top, MouseButton _id); 00253 virtual void onMouseMove(int _left, int _top); 00254 virtual void onMouseWheel(int _rel); 00255 virtual void onMouseButtonPressed(int _left, int _top, MouseButton _id); 00256 virtual void onMouseButtonReleased(int _left, int _top, MouseButton _id); 00257 virtual void onMouseButtonClick(); 00258 virtual void onMouseButtonDoubleClick(); 00259 virtual void onKeyLostFocus(Widget* _new); 00260 virtual void onKeySetFocus(Widget* _old); 00261 virtual void onKeyButtonPressed(KeyCode _key, Char _char); 00262 virtual void onKeyButtonReleased(KeyCode _key); 00263 virtual void onMouseChangeRootFocus(bool _focus); 00264 virtual void onKeyChangeRootFocus(bool _focus); 00265 00266 private: 00267 std::string mPointer; 00268 MaskPickInfo mOwnMaskPickInfo; 00269 00270 bool mNeedToolTip; 00271 bool mInheritsPick; 00272 bool mNeedKeyFocus; 00273 bool mNeedMouseFocus; 00274 00275 bool mRootMouseFocus; 00276 bool mRootKeyFocus; 00277 }; 00278 00279 } // namespace MyGUI 00280 00281 #endif // __MYGUI_WIDGET_INPUT_H__