MyGUI  3.2.0
MyGUI_WidgetInput.h
Go to the documentation of this file.
00001 
00006 /*
00007     This file is part of MyGUI.
00008 
00009     MyGUI is free software: you can redistribute it and/or modify
00010     it under the terms of the GNU Lesser General Public License as published by
00011     the Free Software Foundation, either version 3 of the License, or
00012     (at your option) any later version.
00013 
00014     MyGUI is distributed in the hope that it will be useful,
00015     but WITHOUT ANY WARRANTY; without even the implied warranty of
00016     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00017     GNU Lesser General Public License for more details.
00018 
00019     You should have received a copy of the GNU Lesser General Public License
00020     along with MyGUI.  If not, see <http://www.gnu.org/licenses/>.
00021 */
00022 #ifndef __MYGUI_WIDGET_INPUT_H__
00023 #define __MYGUI_WIDGET_INPUT_H__
00024 
00025 #include "MyGUI_Prerequest.h"
00026 #include "MyGUI_Macros.h"
00027 #include "MyGUI_WidgetDefines.h"
00028 #include "MyGUI_WidgetToolTip.h"
00029 #include "MyGUI_MouseButton.h"
00030 #include "MyGUI_KeyCode.h"
00031 #include "MyGUI_MaskPickInfo.h"
00032 #include "MyGUI_Delegate.h"
00033 #include "MyGUI_EventPair.h"
00034 
00035 namespace MyGUI
00036 {
00037 
00062     // делегаты для событий виджета
00063     typedef delegates::CMultiDelegate1<Widget*> EventHandle_WidgetVoid;
00064     typedef delegates::CMultiDelegate2<Widget*, Widget*> EventHandle_WidgetWidget;
00065     typedef delegates::CMultiDelegate2<Widget*, bool> EventHandle_WidgetBool;
00066     typedef delegates::CMultiDelegate2<Widget*, int> EventHandle_WidgetInt;
00067     typedef delegates::CMultiDelegate2<Widget*, size_t> EventHandle_WidgetSizeT;
00068     typedef delegates::CMultiDelegate3<Widget*, int, int> EventHandle_WidgetIntInt;
00069     typedef delegates::CMultiDelegate4<Widget*, int, int, MouseButton> EventHandle_WidgetIntIntButton;
00070     typedef delegates::CMultiDelegate2<Widget*, KeyCode> EventHandle_WidgetKeyCode;
00071     typedef delegates::CMultiDelegate3<Widget*, KeyCode, Char> EventHandle_WidgetKeyCodeChar;
00072     typedef delegates::CMultiDelegate2<Widget*, const ToolTipInfo& > EventHandle_WidgetToolTip;
00073 
00074     class MYGUI_EXPORT WidgetInput
00075     {
00076     public:
00077         WidgetInput();
00078         virtual ~WidgetInput();
00079 
00081         void setNeedToolTip(bool _value);
00083         bool getNeedToolTip() const;
00084 
00086         void setPointer(const std::string& _value);
00088         const std::string& getPointer() const;
00089 
00091         void setNeedKeyFocus(bool _value);
00096         bool getNeedKeyFocus() const;
00097 
00099         void setNeedMouseFocus(bool _value);
00104         bool getNeedMouseFocus() const;
00105 
00111         void setInheritsPick(bool _value);
00113         bool getInheritsPick() const;
00114 
00116         void setMaskPick(const std::string& _filename);
00118         void setMaskPick(const MaskPickInfo& _info);
00119 
00120         bool isMaskPickInside(const IntPoint& _point, const IntCoord& _coord) const;
00121 
00122         bool getRootMouseFocus() const;
00123         bool getRootKeyFocus() const;
00124 
00130         EventHandle_WidgetWidget
00131             eventMouseLostFocus;
00132 
00138         EventHandle_WidgetWidget
00139             eventMouseSetFocus;
00140 
00147         EventPair3to4<EventHandle_WidgetIntInt, EventHandle_WidgetIntIntButton>
00148             eventMouseDrag;
00149 
00156         EventHandle_WidgetIntInt
00157             eventMouseMove;
00158 
00164         EventHandle_WidgetInt
00165             eventMouseWheel;
00166 
00174         EventHandle_WidgetIntIntButton
00175             eventMouseButtonPressed;
00176 
00184         EventHandle_WidgetIntIntButton
00185             eventMouseButtonReleased;
00186 
00191         EventHandle_WidgetVoid
00192             eventMouseButtonClick;
00193 
00198         EventHandle_WidgetVoid
00199             eventMouseButtonDoubleClick;
00200 
00206         EventHandle_WidgetWidget
00207             eventKeyLostFocus;
00208 
00214         EventHandle_WidgetWidget
00215             eventKeySetFocus;
00216 
00223         EventHandle_WidgetKeyCodeChar
00224             eventKeyButtonPressed;
00225 
00231         EventHandle_WidgetKeyCode
00232             eventKeyButtonReleased;
00233 
00240         EventHandle_WidgetBool
00241             eventRootMouseChangeFocus;
00242 
00249         EventHandle_WidgetBool
00250             eventRootKeyChangeFocus;
00251 
00257         EventHandle_WidgetToolTip
00258             eventToolTip;
00259 
00260     /*internal:*/
00261         void _riseMouseLostFocus(Widget* _new);
00262         void _riseMouseSetFocus(Widget* _old);
00263         void _riseMouseDrag(int _left, int _top, MouseButton _id);
00264         void _riseMouseMove(int _left, int _top);
00265         void _riseMouseWheel(int _rel);
00266         void _riseMouseButtonPressed(int _left, int _top, MouseButton _id);
00267         void _riseMouseButtonReleased(int _left, int _top, MouseButton _id);
00268         void _riseMouseButtonClick();
00269         void _riseMouseButtonDoubleClick();
00270         void _riseKeyLostFocus(Widget* _new);
00271         void _riseKeySetFocus(Widget* _old);
00272         void _riseKeyButtonPressed(KeyCode _key, Char _char);
00273         void _riseKeyButtonReleased(KeyCode _key);
00274         void _riseMouseChangeRootFocus(bool _focus);
00275         void _riseKeyChangeRootFocus(bool _focus);
00276 
00277         void _setRootMouseFocus(bool _value);
00278         void _setRootKeyFocus(bool _value);
00279 
00280     protected:
00281         virtual void onMouseLostFocus(Widget* _new);
00282         virtual void onMouseSetFocus(Widget* _old);
00283         virtual void onMouseDrag(int _left, int _top, MouseButton _id);
00284         virtual void onMouseMove(int _left, int _top);
00285         virtual void onMouseWheel(int _rel);
00286         virtual void onMouseButtonPressed(int _left, int _top, MouseButton _id);
00287         virtual void onMouseButtonReleased(int _left, int _top, MouseButton _id);
00288         virtual void onMouseButtonClick();
00289         virtual void onMouseButtonDoubleClick();
00290         virtual void onKeyLostFocus(Widget* _new);
00291         virtual void onKeySetFocus(Widget* _old);
00292         virtual void onKeyButtonPressed(KeyCode _key, Char _char);
00293         virtual void onKeyButtonReleased(KeyCode _key);
00294         virtual void onMouseChangeRootFocus(bool _focus);
00295         virtual void onKeyChangeRootFocus(bool _focus);
00296 
00297     private:
00298         std::string mPointer;
00299         MaskPickInfo mOwnMaskPickInfo;
00300 
00301         bool mNeedToolTip;
00302         bool mInheritsPick;
00303         bool mNeedKeyFocus;
00304         bool mNeedMouseFocus;
00305 
00306         bool mRootMouseFocus;
00307         bool mRootKeyFocus;
00308     };
00309 
00310 } // namespace MyGUI
00311 
00312 #endif // __MYGUI_WIDGET_INPUT_H__