void SettingsManager::saveSettings(const MyGUI::UString& _fileName) { std::string _instance = "Editor"; MyGUI::xml::Document doc; doc.createDeclaration(); MyGUI::xml::ElementPtr root = doc.createRoot("MyGUI"); root->addAttribute("type", "Settings"); saveSectors(root); if (!doc.save(_fileName)) { MYGUI_LOGGING(LogSection, Error, _instance << " : " << doc.getLastError()); return; } }
void EditorState::saveSettings(const MyGUI::UString& _fileName) { std::string _instance = "Editor"; MyGUI::xml::Document doc; doc.createDeclaration(); MyGUI::xml::ElementPtr root = doc.createRoot("MyGUI"); root->addAttribute("type", "Settings"); mPropertiesPanelView->save(root); mSettingsWindow->save(root); mWidgetsWindow->save(root); mMetaSolutionWindow->save(root); // cleanup for duplicates std::reverse(recentFiles.begin(), recentFiles.end()); for (size_t i = 0; i < recentFiles.size(); ++i) recentFiles.erase(std::remove(recentFiles.begin() + i + 1, recentFiles.end(), recentFiles[i]), recentFiles.end()); // remove old files while (recentFiles.size() > MAX_RECENT_FILES) recentFiles.pop_back(); std::reverse(recentFiles.begin(), recentFiles.end()); for (std::vector<MyGUI::UString>::iterator iter = recentFiles.begin(); iter != recentFiles.end(); ++iter) { MyGUI::xml::ElementPtr nodeProp = root->createChild("RecentFile"); nodeProp->addAttribute("name", *iter); } for (std::vector<MyGUI::UString>::iterator iter = additionalPaths.begin(); iter != additionalPaths.end(); ++iter) { MyGUI::xml::ElementPtr nodeProp = root->createChild("AdditionalPath"); nodeProp->addAttribute("name", *iter); } if (!doc.save(_fileName)) { MYGUI_LOGGING(LogSection, Error, _instance << " : " << doc.getLastError()); return; } }
//=================================================================================== void EditorState::loadSettings(const MyGUI::UString& _fileName, bool _internal) { std::string _instance = "Editor"; MyGUI::xml::Document doc; if (_internal) { MyGUI::IDataStream* data = MyGUI::DataManager::getInstance().getData(_fileName); if (data) { PtrHolder<MyGUI::IDataStream> holder = PtrHolder<MyGUI::IDataStream>(data); if (!doc.open(data)) { MYGUI_LOGGING(LogSection, Error, _instance << " : " << doc.getLastError()); return; } } } else { if (!doc.open(_fileName)) { MYGUI_LOGGING(LogSection, Error, _instance << " : " << doc.getLastError()); return; } } MyGUI::xml::ElementPtr root = doc.getRoot(); if (!root || (root->getName() != "MyGUI")) { MYGUI_LOGGING(LogSection, Error, _instance << " : '" << _fileName << "', tag 'MyGUI' not found"); return; } std::string type; if (root->findAttribute("type", type)) { if (type == "Settings") { // берем детей и крутимс¤ MyGUI::xml::ElementEnumerator field = root->getElementEnumerator(); while (field.next()) { if (field->getName() == "PropertiesPanelView") mPropertiesPanelView->load(field); else if (field->getName() == "SettingsWindow") mSettingsWindow->load(field); else if (field->getName() == "WidgetsWindow") mWidgetsWindow->load(field); else if (field->getName() == "MetaSolutionWindow") { if (isNeedSolutionLoad(field)) { clearWidgetWindow(); mMetaSolutionWindow->load(field); } } else if (field->getName() == "RecentFile") { std::string name; if (!field->findAttribute("name", name)) continue; recentFiles.push_back(name); } else if (field->getName() == "AdditionalPath") { std::string name; if (!field->findAttribute("name", name)) continue; additionalPaths.push_back(name); } } } } }