bool EditorWidgets::save(std::string _fileName) { std::string _instance = "Editor"; MyGUI::xml::xmlDocument doc; std::string file(MyGUI::helper::getResourcePath(_fileName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)); if (file.empty()) { file = _fileName; } doc.createInfo(); MyGUI::xml::xmlNodePtr root = doc.createRoot("MyGUI"); root->addAttributes("type", "Layout"); for (std::vector<WidgetContainer*>::iterator iter = widgets.begin(); iter != widgets.end(); ++iter) { // в корень только сирот if (null == (*iter)->widget->getParent()) serialiseWidget(*iter, root); } if (false == doc.save(file)) { LOGGING(LogSection, Error, _instance << " : " << doc.getLastError()); return false; } return true; }
bool EditorWidgets::load(std::string _fileName) { std::string _instance = "Editor"; MyGUI::xml::xmlDocument doc; std::string file(MyGUI::helper::getResourcePath(_fileName, Ogre::ResourceGroupManager::DEFAULT_RESOURCE_GROUP_NAME)); if (file.empty()) { if (false == doc.open(_fileName)) { LOGGING(LogSection, Error, _instance << " : '" << _fileName << "' not found"); return false; } } else if (false == doc.open(file)) { LOGGING(LogSection, Error, _instance << " : " << doc.getLastError()); return false; } MyGUI::xml::xmlNodePtr root = doc.getRoot(); if ( (null == root) || (root->getName() != "MyGUI") ) { LOGGING(LogSection, Error, _instance << " : '" << _fileName << "', tag 'MyGUI' not found"); return false; } std::string type; if (root->findAttribute("type", type)) { if (type == "Layout") { // берем детей и крутимся MyGUI::xml::xmlNodeIterator widget = root->getNodeIterator(); while (widget.nextNode("Widget")) parseWidget(widget, 0); } } return true; }