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
00031 namespace MyGUI
00032 {
00033
00034
00035 typedef delegates::CDelegate1<WidgetPtr> EventHandle_WidgetVoid;
00036 typedef delegates::CDelegate2<WidgetPtr, WidgetPtr> EventHandle_WidgetWidget;
00037 typedef delegates::CDelegate2<WidgetPtr, bool> EventHandle_WidgetBool;
00038 typedef delegates::CDelegate2<WidgetPtr, int> EventHandle_WidgetInt;
00039 typedef delegates::CDelegate2<WidgetPtr, size_t> EventHandle_WidgetSizeT;
00040 typedef delegates::CDelegate3<WidgetPtr, int, int> EventHandle_WidgetIntInt;
00041 typedef delegates::CDelegate4<WidgetPtr, int, int, MouseButton> EventHandle_WidgetIntIntButton;
00042 typedef delegates::CDelegate2<WidgetPtr, KeyCode> EventHandle_WidgetKeyCode;
00043 typedef delegates::CDelegate3<WidgetPtr, KeyCode, Char> EventHandle_WidgetKeyCodeChar;
00044 typedef delegates::CDelegate3<WidgetPtr, const std::string&, const std::string&> EventHandle_WidgetStringString;
00045 typedef delegates::CDelegate3<WidgetPtr, WidgetPtr&, size_t &> EventHandle_WidgetRefWidgetRefSizeT;
00046 typedef delegates::CDelegate2<WidgetPtr, const ToolTipInfo& > EventHandle_WidgetToolTip;
00047
00072 class MYGUI_EXPORT WidgetEvent
00073 {
00074 friend class InputManager;
00075
00076 public:
00077 virtual ~WidgetEvent() { }
00078
00079 protected:
00080 WidgetEvent() :
00081 mWidgetEventSender(0),
00082 mRootMouseActive(false),
00083 mRootKeyActive(false)
00084 {
00085 }
00086
00087 public:
00088
00094 EventHandle_WidgetWidget eventMouseLostFocus;
00095
00101 EventHandle_WidgetWidget eventMouseSetFocus;
00102
00109 EventHandle_WidgetIntInt eventMouseDrag;
00110
00117 EventHandle_WidgetIntInt eventMouseMove;
00118
00124 EventHandle_WidgetInt eventMouseWheel;
00125
00133 EventHandle_WidgetIntIntButton eventMouseButtonPressed;
00134
00142 EventHandle_WidgetIntIntButton eventMouseButtonReleased;
00143
00148 EventHandle_WidgetVoid eventMouseButtonClick;
00149
00154 EventHandle_WidgetVoid eventMouseButtonDoubleClick;
00155
00161 EventHandle_WidgetWidget eventKeyLostFocus;
00162
00168 EventHandle_WidgetWidget eventKeySetFocus;
00169
00176 EventHandle_WidgetKeyCodeChar eventKeyButtonPressed;
00177
00183 EventHandle_WidgetKeyCode eventKeyButtonReleased;
00184
00191 EventHandle_WidgetBool eventRootMouseChangeFocus;
00192
00199 EventHandle_WidgetBool eventRootKeyChangeFocus;
00200
00206 EventHandle_WidgetToolTip eventToolTip;
00207
00214 EventHandle_WidgetStringString eventActionInfo;
00215
00222 EventHandle_WidgetRefWidgetRefSizeT _requestGetContainer;
00223
00224 protected:
00225
00226
00227 virtual void onMouseLostFocus(WidgetPtr _new)
00228 {
00229 eventMouseLostFocus(mWidgetEventSender, _new);
00230 }
00231
00232
00233 virtual void onMouseSetFocus(WidgetPtr _old)
00234 {
00235 eventMouseSetFocus(mWidgetEventSender, _old);
00236 }
00237
00238
00239 virtual void onMouseDrag(int _left, int _top)
00240 {
00241 eventMouseDrag(mWidgetEventSender, _left, _top);
00242 }
00243
00244
00245 virtual void onMouseMove(int _left, int _top)
00246 {
00247 eventMouseMove(mWidgetEventSender, _left, _top);
00248 }
00249
00250
00251 virtual void onMouseWheel(int _rel)
00252 {
00253 eventMouseWheel(mWidgetEventSender, _rel);
00254 }
00255
00256
00257 virtual void onMouseButtonPressed(int _left, int _top, MouseButton _id)
00258 {
00259 eventMouseButtonPressed(mWidgetEventSender, _left, _top, _id);
00260 }
00261
00262
00263 virtual void onMouseButtonReleased(int _left, int _top, MouseButton _id)
00264 {
00265 eventMouseButtonReleased(mWidgetEventSender, _left, _top, _id);
00266 }
00267
00268
00269 virtual void onMouseButtonClick()
00270 {
00271 eventMouseButtonClick(mWidgetEventSender);
00272 }
00273
00274
00275 virtual void onMouseButtonDoubleClick()
00276 {
00277 eventMouseButtonDoubleClick(mWidgetEventSender);
00278 }
00279
00280
00281 virtual void onKeyLostFocus(WidgetPtr _new)
00282 {
00283 eventKeyLostFocus(mWidgetEventSender, _new);
00284 }
00285
00286
00287 virtual void onKeySetFocus(WidgetPtr _old)
00288 {
00289 eventKeySetFocus(mWidgetEventSender, _old);
00290 }
00291
00292
00293 virtual void onKeyButtonPressed(KeyCode _key, Char _char)
00294 {
00295 eventKeyButtonPressed(mWidgetEventSender, _key, _char);
00296 }
00297
00298
00299 virtual void onKeyButtonReleased(KeyCode _key)
00300 {
00301 eventKeyButtonReleased(mWidgetEventSender, _key);
00302 }
00303
00304
00305 virtual void onMouseChangeRootFocus(bool _focus)
00306 {
00307 eventRootMouseChangeFocus(mWidgetEventSender, _focus);
00308 }
00309
00310
00311 virtual void onKeyChangeRootFocus(bool _focus)
00312 {
00313 eventRootKeyChangeFocus(mWidgetEventSender, _focus);
00314 }
00315
00316
00317 WidgetPtr mWidgetEventSender;
00318
00319 private:
00320 bool mRootMouseActive;
00321 bool mRootKeyActive;
00322 };
00323
00324 }
00325
00326 #endif // __MYGUI_WIDGET_EVENT_H__