MyGUI  3.0.1
MyGUI_IWidgetCreator.h
Go to the documentation of this file.
1 
7 /*
8  This file is part of MyGUI.
9 
10  MyGUI is free software: you can redistribute it and/or modify
11  it under the terms of the GNU Lesser General Public License as published by
12  the Free Software Foundation, either version 3 of the License, or
13  (at your option) any later version.
14 
15  MyGUI is distributed in the hope that it will be useful,
16  but WITHOUT ANY WARRANTY; without even the implied warranty of
17  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  GNU Lesser General Public License for more details.
19 
20  You should have received a copy of the GNU Lesser General Public License
21  along with MyGUI. If not, see <http://www.gnu.org/licenses/>.
22 */
23 #ifndef __MYGUI_WIDGET_CREATOR_H__
24 #define __MYGUI_WIDGET_CREATOR_H__
25 
26 #include "MyGUI_Prerequest.h"
27 #include "MyGUI_Types.h"
28 #include "MyGUI_WidgetStyle.h"
29 
30 namespace MyGUI
31 {
32 
34  {
35  friend class WidgetManager;
36 
37  public:
38  virtual ~IWidgetCreator() { }
39 
40  protected:
41  virtual Widget* baseCreateWidget(WidgetStyle _style, const std::string& _type, const std::string& _skin, const IntCoord& _coord, Align _align, const std::string& _layer, const std::string& _name) = 0;
42 
43  // удяляет неудачника
44  virtual void _destroyChildWidget(Widget* _widget) = 0;
45 
46  // удаляет всех детей
47  virtual void _destroyAllChildWidget() = 0;
48 
49  // удаляет виджет с закрытым конструктором
50  void _deleteWidget(Widget* _widget);
51 
52  public:
53  // добавляет в список виджет
54  // имплементировать только для рутовых креаторов
55  virtual void _linkChildWidget(Widget* _widget) { }
56  // удаляет из списка
57  // имплементировать только для рутовых креаторов
58  virtual void _unlinkChildWidget(Widget* _widget) { }
59 
60  };
61 
62 } // namespace MyGUI
63 
64 #endif // __MYGUI_WIDGET_CREATOR_H__