• Main Page
  • Related Pages
  • Namespaces
  • Data Structures
  • Files
  • Examples
  • File List
  • Globals

MyGUI_DelegateManager.h

Go to the documentation of this file.
00001 
00007 /*
00008     This file is part of MyGUI.
00009     
00010     MyGUI is free software: you can redistribute it and/or modify
00011     it under the terms of the GNU Lesser General Public License as published by
00012     the Free Software Foundation, either version 3 of the License, or
00013     (at your option) any later version.
00014     
00015     MyGUI is distributed in the hope that it will be useful,
00016     but WITHOUT ANY WARRANTY; without even the implied warranty of
00017     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00018     GNU Lesser General Public License for more details.
00019     
00020     You should have received a copy of the GNU Lesser General Public License
00021     along with MyGUI.  If not, see <http://www.gnu.org/licenses/>.
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         /*void eventName(MyGUI::WidgetPtr _sender, [parameters])
00040         {
00041             callDelegate(_sender, _sender->getUserString("eventName"), "eventName");
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         //  signature : void method(MyGUI::WidgetPtr _sender, MyGUI::WidgetPtr _new)\n
00090         //  @param _new widget with keyboard focus or nullptr
00091         //*/
00092         //EventHandle_WidgetWidget eventKeyLostFocus;
00093 
00095         //  signature : void method(MyGUI::WidgetPtr _sender, MyGUI::WidgetPtr _old)\n
00096         //  @param _old widget with keyboard focus or nullptr
00097         //*/
00098         //EventHandle_WidgetWidget eventKeySetFocus;
00099 
00101         //  signature : void method(MyGUI::WidgetPtr _sender, MyGUI::KeyCode _key, MyGUI::Char _char)\n
00102         //  @param _key code
00103         //  @param _char of pressed symbol (for multilanguage applications)
00104         //*/
00105         //EventHandle_WidgetKeyCodeChar eventKeyButtonPressed;
00106 
00108         //  signature : void method(MyGUI::WidgetPtr _sender, MyGUI::KeyCode _key)\n
00109         //  @param _key code
00110         //*/
00111         //EventHandle_WidgetKeyCode eventKeyButtonReleased;
00112 
00114         //  info : this event sends only to root widget\n
00115         //  signature : void method(MyGUI::WidgetPtr _sender, bool _focus);
00116         //  @param _focus Is widget got mouse focus.
00117         //*/
00118         //EventHandle_WidgetBool  eventRootMouseChangeFocus;
00119 
00121         //  info : this event sends only to root widget\n
00122         //  signature : void method(MyGUI::WidgetPtr _sender, bool _focus);
00123         //  @param _focus Is widget got keyboard focus.
00124         //*/
00125         //EventHandle_WidgetBool eventRootKeyChangeFocus;
00126 
00128         //  signature : void method(MyGUI::WidgetPtr _sender, const std::string& _key, const std::string& _value);
00129         //*/
00132         //EventHandle_WidgetStringString eventActionInfo;
00133 
00136         //EventHandle_WidgetRefWidgetRefSizeT  _requestGetContainer;
00137 
00140         //EventHandle_WidgetVoid eventInvalideContainer;
00141 
00144         //EventHandle_WidgetCItemDropInfoRefBoolRef eventStartDrag;
00145 
00148         //EventHandle_WidgetCItemDropInfoRefBoolRef eventRequestDrop;
00149 
00152         //EventHandle_WidgetCItemDropInfoRefBool eventDropResult;
00153 
00156         //EventHandle_WidgetDropState eventChangeDDState;
00157 
00158         DELEGATE_MANAGER_EVENT1(eventToolTip, const MyGUI::ToolTipInfo& _info);
00159 
00160         MapDelegate mDelegates;
00161         HandleEvent mDefaultDelegate;
00162     };
00163 
00164 } // namespace MyGUI
00165 
00166 #endif // __MYGUI_DELEGATE_MANAGER_H__

Generated on Sun Jan 30 2011 for MyGUI by  doxygen 1.7.1