00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __MYGUI_DELEGATE_MANAGER_H__
00024 #define __MYGUI_DELEGATE_MANAGER_H__
00025
00026 #include "MyGUI_Prerequest.h"
00027 #include "MyGUI_Instance.h"
00028 #include "MyGUI_Common.h"
00029 #include "MyGUI_Widget.h"
00030
00031 namespace MyGUI
00032 {
00033
00034 #define DELEGATE_MANAGER_EVENT0(name) void name(MyGUI::WidgetPtr _sender){callDelegate(_sender, _sender->getUserString(#name), #name);}
00035 #define DELEGATE_MANAGER_EVENT1(name, param1) void name(MyGUI::WidgetPtr _sender, param1){callDelegate(_sender, _sender->getUserString(#name), #name);}
00036 #define DELEGATE_MANAGER_EVENT2(name, param1, param2) void name(MyGUI::WidgetPtr _sender, param1, param2){callDelegate(_sender, _sender->getUserString(#name), #name);}
00037 #define DELEGATE_MANAGER_EVENT3(name, param1, param2, param3) void name(MyGUI::WidgetPtr _sender, param1, param2, param3){callDelegate(_sender, _sender->getUserString(#name), #name);}
00038 #define DELEGATE_MANAGER_EVENT4(name, param1, param2, param3, param4) void name(MyGUI::WidgetPtr _sender, param1, param2, param3, param4){callDelegate(_sender, _sender->getUserString(#name), #name);}
00039
00040
00041
00042
00043
00046 class MYGUI_EXPORT DelegateManager
00047 {
00048 MYGUI_INSTANCE_HEADER(DelegateManager);
00049 public:
00050 typedef delegates::CDelegate3<WidgetPtr, const std::string&, const std::string&> HandleEvent;
00051 typedef std::map<std::string, HandleEvent> MapDelegate;
00052 public:
00053 void initialise();
00054 void shutdown();
00055
00065 void addDelegate(const std::string& _key, HandleEvent::IDelegate * _delegate);
00066
00068 void removeDelegate(const std::string& _key);
00069
00073 void addDefaultDelegate(HandleEvent::IDelegate * _delegate);
00074 private:
00075 void callDelegate(WidgetPtr _sender, const std::string& _key, const std::string& _event);
00076 public:
00077 DELEGATE_MANAGER_EVENT1(eventMouseLostFocus, MyGUI::WidgetPtr _new);
00078 DELEGATE_MANAGER_EVENT1(eventMouseSetFocus, MyGUI::WidgetPtr _new);
00079 DELEGATE_MANAGER_EVENT2(eventMouseDrag, int _left, int _top);
00080 DELEGATE_MANAGER_EVENT2(eventMouseMove, int _left, int _top);
00081 DELEGATE_MANAGER_EVENT1(eventMouseWheel, int _rel);
00082 DELEGATE_MANAGER_EVENT3(eventMouseButtonPressed, int _left, int _top, MyGUI::MouseButton _id);
00083 DELEGATE_MANAGER_EVENT3(eventMouseButtonReleased, int _left, int _top, MyGUI::MouseButton _id);
00084 DELEGATE_MANAGER_EVENT0(eventMouseButtonClick);
00085 DELEGATE_MANAGER_EVENT0(eventMouseButtonDoubleClick);
00086
00087
00089
00090
00091
00092
00093
00095
00096
00097
00098
00099
00101
00102
00103
00104
00105
00106
00108
00109
00110
00111
00112
00114
00115
00116
00117
00118
00119
00121
00122
00123
00124
00125
00126
00128
00129
00132
00133
00136
00137
00140
00141
00144
00145
00148
00149
00152
00153
00156
00157
00158 DELEGATE_MANAGER_EVENT1(eventToolTip, const MyGUI::ToolTipInfo& _info);
00159
00160 MapDelegate mDelegates;
00161 HandleEvent mDefaultDelegate;
00162 };
00163
00164 }
00165
00166 #endif // __MYGUI_DELEGATE_MANAGER_H__