MyGUI  3.2.2
MyGUI_LayoutManager.cpp
Go to the documentation of this file.
1 /*
2  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3  * Distributed under the MIT License
4  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5  */
6 
7 #include "MyGUI_Precompiled.h"
8 #include "MyGUI_LayoutManager.h"
10 #include "MyGUI_FactoryManager.h"
11 #include "MyGUI_WidgetManager.h"
12 
13 namespace MyGUI
14 {
15 
16  template <> LayoutManager* Singleton<LayoutManager>::msInstance = nullptr;
17  template <> const char* Singleton<LayoutManager>::mClassTypeName = "LayoutManager";
18 
20  mIsInitialise(false),
21  mXmlLayoutTagName("Layout")
22  {
23  }
24 
26  {
27  MYGUI_ASSERT(!mIsInitialise, getClassTypeName() << " initialised twice");
28  MYGUI_LOG(Info, "* Initialise: " << getClassTypeName());
29 
30  ResourceManager::getInstance().registerLoadXmlDelegate(mXmlLayoutTagName) = newDelegate(this, &LayoutManager::_load);
31 
32  std::string resourceCategory = ResourceManager::getInstance().getCategoryName();
34 
35  MYGUI_LOG(Info, getClassTypeName() << " successfully initialized");
36  mIsInitialise = true;
37  }
38 
40  {
41  MYGUI_ASSERT(mIsInitialise, getClassTypeName() << " is not initialised");
42  MYGUI_LOG(Info, "* Shutdown: " << getClassTypeName());
43 
45 
46  std::string resourceCategory = ResourceManager::getInstance().getCategoryName();
48 
49  MYGUI_LOG(Info, getClassTypeName() << " successfully shutdown");
50  mIsInitialise = false;
51  }
52 
53  void LayoutManager::_load(xml::ElementPtr _node, const std::string& _file, Version _version)
54  {
55  ResourceLayout* resource = new ResourceLayout(_node, _file);
57  }
58 
59  VectorWidgetPtr LayoutManager::loadLayout(const std::string& _file, const std::string& _prefix, Widget* _parent)
60  {
61  mCurrentLayoutName = _file;
62 
63  ResourceLayout* resource = getByName(_file, false);
64  if (!resource)
65  {
67  resource = getByName(_file, false);
68  }
69 
70  VectorWidgetPtr result;
71  if (resource)
72  result = resource->createLayout(_prefix, _parent);
73  else
74  MYGUI_LOG(Warning, "Layout '" << _file << "' couldn't be loaded");
75 
76  mCurrentLayoutName = "";
77 
78  return result;
79  }
80 
82  {
84  }
85 
86  ResourceLayout* LayoutManager::getByName(const std::string& _name, bool _throw) const
87  {
88  std::string skinName = BackwardCompatibility::getSkinRename(_name);
89  IResource* result = ResourceManager::getInstance().getByName(skinName, false);
90 
91  if (result != nullptr)
92  {
93  ResourceLayout* resource = result->castType<ResourceLayout>(false);
94  if (resource == nullptr)
95  {
96  MYGUI_ASSERT(!_throw, "Resource '" << skinName << "' is not ResourceLayout type");
97  }
98  return resource;
99  }
100 
101  MYGUI_ASSERT(!_throw, "ResourceLayout '" << skinName << "' not found");
102  return nullptr;
103  }
104 
105  const std::string& LayoutManager::getCurrentLayout() const
106  {
107  return mCurrentLayoutName;
108  }
109 
110  bool LayoutManager::isExist(const std::string& _name) const
111  {
112  return getByName(_name, false) != nullptr;
113  }
114 
115 } // namespace MyGUI
Widget properties. Widget_skin_childs Skin childs. Widget widget description should be here...
Definition: MyGUI_Widget.h:29
void unregisterLoadXmlDelegate(const std::string &_key)
bool isExist(const std::string &_name) const
VectorWidgetPtr loadLayout(const std::string &_file, const std::string &_prefix="", Widget *_parent=0)
LoadXmlDelegate & registerLoadXmlDelegate(const std::string &_key)
delegates::IDelegate0 * newDelegate(void(*_func)())
static ResourceManager & getInstance()
static const char * getClassTypeName()
ResourceLayout * getByName(const std::string &_name, bool _throw=true) const
void destroyWidgets(const VectorWidgetPtr &_widgets)
static std::string getSkinRename(const std::string &_skinName)
IResource * getByName(const std::string &_name, bool _throw=true) const
#define MYGUI_LOG(level, text)
VectorWidgetPtr createLayout(const std::string &_prefix="", Widget *_parent=0)
bool load(const std::string &_file)
std::vector< Widget * > VectorWidgetPtr
#define MYGUI_ASSERT(exp, dest)
void unloadLayout(VectorWidgetPtr &_widgets)
Type * castType(bool _throw=true)
Definition: MyGUI_IObject.h:18
void unregisterFactory(const std::string &_category, const std::string &_type)
const std::string & getCategoryName() const
void registerFactory(const std::string &_category, const std::string &_type, Delegate::IDelegate *_delegate)
void addResource(IResourcePtr _item)
const std::string & getCurrentLayout() const