MyGUI
3.2.0
|
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_MANAGER_H__ 00023 #define __MYGUI_WIDGET_MANAGER_H__ 00024 00025 #include "MyGUI_Prerequest.h" 00026 #include "MyGUI_Singleton.h" 00027 #include "MyGUI_IUnlinkWidget.h" 00028 #include "MyGUI_ICroppedRectangle.h" 00029 #include "MyGUI_Widget.h" 00030 #include <set> 00031 #include "MyGUI_BackwardCompatibility.h" 00032 00033 namespace MyGUI 00034 { 00035 class MYGUI_EXPORT WidgetManager : 00036 public Singleton<WidgetManager>, 00037 public MemberObsolete<WidgetManager> 00038 { 00039 public: 00040 WidgetManager(); 00041 00042 void initialise(); 00043 void shutdown(); 00044 00045 Widget* createWidget(WidgetStyle _style, const std::string& _type, const std::string& _skin, const IntCoord& _coord, Widget* _parent, ICroppedRectangle* _cropeedParent, const std::string& _name); 00046 00048 void destroyWidget(Widget* _widget); 00050 void destroyWidgets(const VectorWidgetPtr& _widgets); 00052 void destroyWidgets(EnumeratorWidgetPtr _widgets); 00053 00055 void registerUnlinker(IUnlinkWidget* _unlink); 00057 void unregisterUnlinker(IUnlinkWidget* _unlink); 00059 void unlinkFromUnlinkers(Widget* _widget); 00060 00062 bool isFactoryExist(const std::string& _type); 00063 00064 /*internal:*/ 00065 void _deleteWidget(Widget* _widget); 00066 void _deleteDelayWidgets(); 00067 00068 private: 00069 void notifyEventFrameStart(float _time); 00070 00071 private: 00072 bool mIsInitialise; 00073 00074 // список менеджеров для отписки при удалении 00075 VectorIUnlinkWidget mVectorIUnlinkWidget; 00076 00077 // список виджетов для удаления 00078 VectorWidgetPtr mDestroyWidgets; 00079 }; 00080 00081 } // namespace MyGUI 00082 00083 #endif // __MYGUI_WIDGET_MANAGER_H__