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

MyGUI_WidgetEvent.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_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 } // namespace MyGUI
00325 
00326 #endif // __MYGUI_WIDGET_EVENT_H__

Generated on Sun Jan 30 2011 for MyGUI by  doxygen 1.7.1