MyGUI  3.2.1
MyGUI_WidgetInput.h
Go to the documentation of this file.
00001 /*
00002  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
00003  * Distributed under the MIT License
00004  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
00005  */
00006 
00007 #ifndef __MYGUI_WIDGET_INPUT_H__
00008 #define __MYGUI_WIDGET_INPUT_H__
00009 
00010 #include "MyGUI_Prerequest.h"
00011 #include "MyGUI_Macros.h"
00012 #include "MyGUI_WidgetDefines.h"
00013 #include "MyGUI_WidgetToolTip.h"
00014 #include "MyGUI_MouseButton.h"
00015 #include "MyGUI_KeyCode.h"
00016 #include "MyGUI_MaskPickInfo.h"
00017 #include "MyGUI_Delegate.h"
00018 #include "MyGUI_EventPair.h"
00019 
00020 namespace MyGUI
00021 {
00022 
00047     // делегаты для событий виджета
00048     typedef delegates::CMultiDelegate1<Widget*> EventHandle_WidgetVoid;
00049     typedef delegates::CMultiDelegate2<Widget*, Widget*> EventHandle_WidgetWidget;
00050     typedef delegates::CMultiDelegate2<Widget*, bool> EventHandle_WidgetBool;
00051     typedef delegates::CMultiDelegate2<Widget*, int> EventHandle_WidgetInt;
00052     typedef delegates::CMultiDelegate2<Widget*, size_t> EventHandle_WidgetSizeT;
00053     typedef delegates::CMultiDelegate3<Widget*, int, int> EventHandle_WidgetIntInt;
00054     typedef delegates::CMultiDelegate4<Widget*, int, int, MouseButton> EventHandle_WidgetIntIntButton;
00055     typedef delegates::CMultiDelegate2<Widget*, KeyCode> EventHandle_WidgetKeyCode;
00056     typedef delegates::CMultiDelegate3<Widget*, KeyCode, Char> EventHandle_WidgetKeyCodeChar;
00057     typedef delegates::CMultiDelegate2<Widget*, const ToolTipInfo& > EventHandle_WidgetToolTip;
00058 
00059     class MYGUI_EXPORT WidgetInput
00060     {
00061     public:
00062         WidgetInput();
00063         virtual ~WidgetInput();
00064 
00066         void setNeedToolTip(bool _value);
00068         bool getNeedToolTip() const;
00069 
00071         void setPointer(const std::string& _value);
00073         const std::string& getPointer() const;
00074 
00076         void setNeedKeyFocus(bool _value);
00081         bool getNeedKeyFocus() const;
00082 
00084         void setNeedMouseFocus(bool _value);
00089         bool getNeedMouseFocus() const;
00090 
00096         void setInheritsPick(bool _value);
00098         bool getInheritsPick() const;
00099 
00101         void setMaskPick(const std::string& _filename);
00103         void setMaskPick(const MaskPickInfo& _info);
00104 
00105         bool isMaskPickInside(const IntPoint& _point, const IntCoord& _coord) const;
00106 
00107         bool getRootMouseFocus() const;
00108         bool getRootKeyFocus() const;
00109 
00115         EventHandle_WidgetWidget eventMouseLostFocus;
00116 
00122         EventHandle_WidgetWidget eventMouseSetFocus;
00123 
00130         EventPairAddParameter<EventHandle_WidgetIntInt, EventHandle_WidgetIntIntButton> eventMouseDrag;
00131 
00138         EventHandle_WidgetIntInt eventMouseMove;
00139 
00145         EventHandle_WidgetInt eventMouseWheel;
00146 
00154         EventHandle_WidgetIntIntButton eventMouseButtonPressed;
00155 
00163         EventHandle_WidgetIntIntButton eventMouseButtonReleased;
00164 
00169         EventHandle_WidgetVoid eventMouseButtonClick;
00170 
00175         EventHandle_WidgetVoid eventMouseButtonDoubleClick;
00176 
00182         EventHandle_WidgetWidget eventKeyLostFocus;
00183 
00189         EventHandle_WidgetWidget eventKeySetFocus;
00190 
00197         EventHandle_WidgetKeyCodeChar eventKeyButtonPressed;
00198 
00204         EventHandle_WidgetKeyCode eventKeyButtonReleased;
00205 
00212         EventHandle_WidgetBool eventRootMouseChangeFocus;
00213 
00220         EventHandle_WidgetBool eventRootKeyChangeFocus;
00221 
00227         EventHandle_WidgetToolTip eventToolTip;
00228 
00229         /*internal:*/
00230         void _riseMouseLostFocus(Widget* _new);
00231         void _riseMouseSetFocus(Widget* _old);
00232         void _riseMouseDrag(int _left, int _top, MouseButton _id);
00233         void _riseMouseMove(int _left, int _top);
00234         void _riseMouseWheel(int _rel);
00235         void _riseMouseButtonPressed(int _left, int _top, MouseButton _id);
00236         void _riseMouseButtonReleased(int _left, int _top, MouseButton _id);
00237         void _riseMouseButtonClick();
00238         void _riseMouseButtonDoubleClick();
00239         void _riseKeyLostFocus(Widget* _new);
00240         void _riseKeySetFocus(Widget* _old);
00241         void _riseKeyButtonPressed(KeyCode _key, Char _char);
00242         void _riseKeyButtonReleased(KeyCode _key);
00243         void _riseMouseChangeRootFocus(bool _focus);
00244         void _riseKeyChangeRootFocus(bool _focus);
00245 
00246         void _setRootMouseFocus(bool _value);
00247         void _setRootKeyFocus(bool _value);
00248 
00249     protected:
00250         virtual void onMouseLostFocus(Widget* _new);
00251         virtual void onMouseSetFocus(Widget* _old);
00252         virtual void onMouseDrag(int _left, int _top, MouseButton _id);
00253         virtual void onMouseMove(int _left, int _top);
00254         virtual void onMouseWheel(int _rel);
00255         virtual void onMouseButtonPressed(int _left, int _top, MouseButton _id);
00256         virtual void onMouseButtonReleased(int _left, int _top, MouseButton _id);
00257         virtual void onMouseButtonClick();
00258         virtual void onMouseButtonDoubleClick();
00259         virtual void onKeyLostFocus(Widget* _new);
00260         virtual void onKeySetFocus(Widget* _old);
00261         virtual void onKeyButtonPressed(KeyCode _key, Char _char);
00262         virtual void onKeyButtonReleased(KeyCode _key);
00263         virtual void onMouseChangeRootFocus(bool _focus);
00264         virtual void onKeyChangeRootFocus(bool _focus);
00265 
00266     private:
00267         std::string mPointer;
00268         MaskPickInfo mOwnMaskPickInfo;
00269 
00270         bool mNeedToolTip;
00271         bool mInheritsPick;
00272         bool mNeedKeyFocus;
00273         bool mNeedMouseFocus;
00274 
00275         bool mRootMouseFocus;
00276         bool mRootKeyFocus;
00277     };
00278 
00279 } // namespace MyGUI
00280 
00281 #endif // __MYGUI_WIDGET_INPUT_H__