00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __MYGUI_WIDGET_EVENT_H__
00024 #define __MYGUI_WIDGET_EVENT_H__
00025
00026 #include "MyGUI_Prerequest.h"
00027 #include "MyGUI_Macros.h"
00028 #include "MyGUI_WidgetDefines.h"
00029 #include "MyGUI_WidgetToolTip.h"
00030 #include "MyGUI_InputDefine.h"
00031
00032 namespace MyGUI
00033 {
00034
00035
00036 typedef delegates::CDelegate1<Widget*> EventHandle_WidgetVoid;
00037 typedef delegates::CDelegate2<Widget*, Widget*> EventHandle_WidgetWidget;
00038 typedef delegates::CDelegate2<Widget*, bool> EventHandle_WidgetBool;
00039 typedef delegates::CDelegate2<Widget*, int> EventHandle_WidgetInt;
00040 typedef delegates::CDelegate2<Widget*, size_t> EventHandle_WidgetSizeT;
00041 typedef delegates::CDelegate3<Widget*, int, int> EventHandle_WidgetIntInt;
00042 typedef delegates::CDelegate4<Widget*, int, int, MouseButton> EventHandle_WidgetIntIntButton;
00043 typedef delegates::CDelegate2<Widget*, KeyCode> EventHandle_WidgetKeyCode;
00044 typedef delegates::CDelegate3<Widget*, KeyCode, Char> EventHandle_WidgetKeyCodeChar;
00045 typedef delegates::CDelegate3<Widget*, const std::string&, const std::string&> EventHandle_WidgetStringString;
00046 typedef delegates::CDelegate3<Widget*, Widget*&, size_t &> EventHandle_WidgetRefWidgetRefSizeT;
00047 typedef delegates::CDelegate2<Widget*, const ToolTipInfo& > EventHandle_WidgetToolTip;
00048
00073 class MYGUI_EXPORT WidgetEvent
00074 {
00075 friend class InputManager;
00076
00077 public:
00078 virtual ~WidgetEvent() { }
00079
00080 protected:
00081 WidgetEvent() :
00082 mWidgetEventSender(0),
00083 mRootMouseActive(false),
00084 mRootKeyActive(false)
00085 {
00086 }
00087
00088 public:
00089
00095 EventHandle_WidgetWidget eventMouseLostFocus;
00096
00102 EventHandle_WidgetWidget eventMouseSetFocus;
00103
00110 EventHandle_WidgetIntInt eventMouseDrag;
00111
00118 EventHandle_WidgetIntInt eventMouseMove;
00119
00125 EventHandle_WidgetInt eventMouseWheel;
00126
00134 EventHandle_WidgetIntIntButton eventMouseButtonPressed;
00135
00143 EventHandle_WidgetIntIntButton eventMouseButtonReleased;
00144
00149 EventHandle_WidgetVoid eventMouseButtonClick;
00150
00155 EventHandle_WidgetVoid eventMouseButtonDoubleClick;
00156
00162 EventHandle_WidgetWidget eventKeyLostFocus;
00163
00169 EventHandle_WidgetWidget eventKeySetFocus;
00170
00177 EventHandle_WidgetKeyCodeChar eventKeyButtonPressed;
00178
00184 EventHandle_WidgetKeyCode eventKeyButtonReleased;
00185
00192 EventHandle_WidgetBool eventRootMouseChangeFocus;
00193
00200 EventHandle_WidgetBool eventRootKeyChangeFocus;
00201
00207 EventHandle_WidgetToolTip eventToolTip;
00208
00215 EventHandle_WidgetStringString eventActionInfo;
00216
00223 EventHandle_WidgetRefWidgetRefSizeT _requestGetContainer;
00224
00231 EventHandle_WidgetStringString eventChangeProperty;
00232
00233 protected:
00234
00235
00236 virtual void onMouseLostFocus(Widget* _new)
00237 {
00238 eventMouseLostFocus(mWidgetEventSender, _new);
00239 }
00240
00241
00242 virtual void onMouseSetFocus(Widget* _old)
00243 {
00244 eventMouseSetFocus(mWidgetEventSender, _old);
00245 }
00246
00247
00248 virtual void onMouseDrag(int _left, int _top)
00249 {
00250 eventMouseDrag(mWidgetEventSender, _left, _top);
00251 }
00252
00253
00254 virtual void onMouseMove(int _left, int _top)
00255 {
00256 eventMouseMove(mWidgetEventSender, _left, _top);
00257 }
00258
00259
00260 virtual void onMouseWheel(int _rel)
00261 {
00262 eventMouseWheel(mWidgetEventSender, _rel);
00263 }
00264
00265
00266 virtual void onMouseButtonPressed(int _left, int _top, MouseButton _id)
00267 {
00268 eventMouseButtonPressed(mWidgetEventSender, _left, _top, _id);
00269 }
00270
00271
00272 virtual void onMouseButtonReleased(int _left, int _top, MouseButton _id)
00273 {
00274 eventMouseButtonReleased(mWidgetEventSender, _left, _top, _id);
00275 }
00276
00277
00278 virtual void onMouseButtonClick()
00279 {
00280 eventMouseButtonClick(mWidgetEventSender);
00281 }
00282
00283
00284 virtual void onMouseButtonDoubleClick()
00285 {
00286 eventMouseButtonDoubleClick(mWidgetEventSender);
00287 }
00288
00289
00290 virtual void onKeyLostFocus(Widget* _new)
00291 {
00292 eventKeyLostFocus(mWidgetEventSender, _new);
00293 }
00294
00295
00296 virtual void onKeySetFocus(Widget* _old)
00297 {
00298 eventKeySetFocus(mWidgetEventSender, _old);
00299 }
00300
00301
00302 virtual void onKeyButtonPressed(KeyCode _key, Char _char)
00303 {
00304 eventKeyButtonPressed(mWidgetEventSender, _key, _char);
00305 }
00306
00307
00308 virtual void onKeyButtonReleased(KeyCode _key)
00309 {
00310 eventKeyButtonReleased(mWidgetEventSender, _key);
00311 }
00312
00313
00314 virtual void onMouseChangeRootFocus(bool _focus)
00315 {
00316 eventRootMouseChangeFocus(mWidgetEventSender, _focus);
00317 }
00318
00319
00320 virtual void onKeyChangeRootFocus(bool _focus)
00321 {
00322 eventRootKeyChangeFocus(mWidgetEventSender, _focus);
00323 }
00324
00325
00326 Widget* mWidgetEventSender;
00327
00328 private:
00329 bool mRootMouseActive;
00330 bool mRootKeyActive;
00331 };
00332
00333 }
00334
00335 #endif // __MYGUI_WIDGET_EVENT_H__