MyGUI  3.2.1
MyGUI_Window.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_WINDOW_H__
00008 #define __MYGUI_WINDOW_H__
00009 
00010 #include "MyGUI_Prerequest.h"
00011 #include "MyGUI_TextBox.h"
00012 #include "MyGUI_EventPair.h"
00013 #include "MyGUI_ControllerFadeAlpha.h"
00014 
00015 namespace MyGUI
00016 {
00017 
00018     // OBSOLETE
00019     typedef delegates::CMultiDelegate2<Widget*, const std::string&> EventHandle_WidgetString;
00020 
00021     typedef delegates::CMultiDelegate2<Window*, const std::string&> EventHandle_WindowPtrCStringRef;
00022     typedef delegates::CMultiDelegate1<Window*> EventHandle_WindowPtr;
00023 
00027     class MYGUI_EXPORT Window :
00028         public TextBox, // FIXME пока для кэпшена вместо виджета текст (Bug #190)
00029         public MemberObsolete<Window>
00030     {
00031         MYGUI_RTTI_DERIVED( Window )
00032 
00033     public:
00034         Window();
00035 
00037         virtual void setVisible(bool _value);
00038 
00040         void setVisibleSmooth(bool _value);
00042         void destroySmooth();
00043 
00045         void setAutoAlpha(bool _value);
00047         bool getAutoAlpha() const;
00048 
00050         virtual void setCaption(const UString& _value);
00052         virtual const UString& getCaption();
00053 
00055         TextBox* getCaptionWidget();
00056 
00058         void setMinSize(const IntSize& _value);
00060         void setMinSize(int _width, int _height);
00062         IntSize getMinSize();
00063 
00065         void setMaxSize(const IntSize& _value);
00067         void setMaxSize(int _width, int _height);
00069         IntSize getMaxSize();
00070 
00072         virtual void setPosition(const IntPoint& _value);
00074         virtual void setSize(const IntSize& _value);
00076         virtual void setCoord(const IntCoord& _value);
00077 
00079         void setPosition(int _left, int _top);
00081         void setSize(int _width, int _height);
00083         void setCoord(int _left, int _top, int _width, int _height);
00084 
00086         void setSnap(bool _value);
00088         bool getSnap() const;
00089 
00091         const IntCoord& getActionScale() const;
00092 
00094         void setMovable(bool _value);
00096         bool getMovable() const;
00097 
00098         /*events:*/
00104         EventPair<EventHandle_WidgetString, EventHandle_WindowPtrCStringRef> eventWindowButtonPressed;
00105 
00110         EventPair<EventHandle_WidgetVoid, EventHandle_WindowPtr> eventWindowChangeCoord;
00111 
00112     protected:
00113         virtual void initialiseOverride();
00114         virtual void shutdownOverride();
00115 
00116         void onMouseChangeRootFocus(bool _focus);
00117         void onKeyChangeRootFocus(bool _focus);
00118         void onMouseDrag(int _left, int _top, MouseButton _id);
00119         void onMouseButtonPressed(int _left, int _top, MouseButton _id);
00120         void onMouseButtonReleased(int _left, int _top, MouseButton _id);
00121 
00122         void notifyMousePressed(MyGUI::Widget* _sender, int _left, int _top, MouseButton _id);
00123         void notifyMouseReleased(MyGUI::Widget* _sender, int _left, int _top, MouseButton _id);
00124         void notifyPressedButtonEvent(MyGUI::Widget* _sender);
00125         void notifyMouseDrag(MyGUI::Widget* _sender, int _left, int _top, MouseButton _id);
00126         void notifyMouseWheel(MyGUI::Widget* _sender, int _rel);
00127 
00128         // просто обновляет альфу взависимости от флагов
00129         void updateAlpha();
00130 
00131         void animateStop(Widget* _widget, ControllerItem* _controller);
00132 
00133         virtual void setPropertyOverride(const std::string& _key, const std::string& _value);
00134 
00135     private:
00136         float getAlphaVisible() const;
00137         void getSnappedCoord(IntCoord& _coord);
00138         IntCoord _getActionScale(Widget* _widget);
00139 
00140         ControllerFadeAlpha* createControllerFadeAlpha(float _alpha, float _coef, bool _enable);
00141 
00142     private:
00143         TextBox* mWidgetCaption;
00144 
00145         // размеры окна перед началом его изменений
00146         IntCoord mPreActionCoord;
00147 
00148         // наши главные фокусы
00149         bool mMouseRootFocus;
00150         bool mKeyRootFocus;
00151 
00152         // автоматическое или ручное управление альфой
00153         bool mIsAutoAlpha;
00154 
00155         // минимальные и максимальные размеры окна
00156         IntRect mMinmax;
00157 
00158         bool mSnap; // прилеплять ли к краям
00159 
00160         IntCoord mCurrentActionScale;
00161         bool mAnimateSmooth;
00162 
00163         Widget* mClient;
00164         bool mMovable;
00165     };
00166 
00167 } // namespace MyGUI
00168 
00169 #endif // __MYGUI_WINDOW_H__