MyGUI
3.2.1
|
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__