bool ConfigManager::Read(const wxString& name, ISerializable* object) { wxString str; wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlHandle parentHandle(e); TiXmlText *t = (TiXmlText *) parentHandle.FirstChild(cbU2C(key)).FirstChild("obj").FirstChild().Node(); if(t) { str.assign(cbC2U(t->Value())); object->SerializeIn(wxBase64::Decode(str)); } return wxEmptyString; }
void ConfigManager::Read(const wxString& name, wxArrayString *arrayString) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlHandle parentHandle(e); TiXmlNode *asNode = parentHandle.FirstChild(cbU2C(key)).FirstChild("astr").Node(); TiXmlNode *curr = 0; if(asNode) { while((curr = asNode->IterateChildren("s", curr))) { arrayString->Add(cbC2U(curr->FirstChild()->ToText()->Value())); } } }
void ConfigManager::Write(const wxString& name, const ConfigManagerContainer::SerializableObjectMap* map) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlElement *leaf = GetUniqElement(e, key); TiXmlElement *mNode; mNode = GetUniqElement(leaf, _T("objmap")); leaf->RemoveChild(mNode); mNode = GetUniqElement(leaf, _T("objmap")); for (ConfigManagerContainer::SerializableObjectMap::const_iterator it = map->begin(); it != map->end(); ++it) { TiXmlElement s(cbU2C(it->first)); s.InsertEndChild(TiXmlText(cbU2C(wxBase64::Encode(it->second->SerializeOut())))); mNode->InsertEndChild(s); } }
void ConfigManager::Read(const wxString& name, ConfigManagerContainer::IntToStringMap* map) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlHandle parentHandle(e); TiXmlNode *mNode = parentHandle.FirstChild(cbU2C(key)).FirstChild("ismap").Node(); TiXmlNode *curr = nullptr; long tmp; if (mNode) { while ((curr = mNode->IterateChildren(curr))) { cbC2U(curr->Value()).Mid(1).ToLong(&tmp); (*map)[tmp] = cbC2U(curr->FirstChild()->ToText()->Value()); } } }
bool ConfigManager::Read(const wxString& name, wxColour* ret) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlHandle parentHandle(e); TiXmlElement *c = (TiXmlElement *) parentHandle.FirstChild(cbU2C(key)).FirstChild("colour").Element(); if (c) { int r, g, b; if (c->QueryIntAttribute("r", &r) == TIXML_SUCCESS && c->QueryIntAttribute("g", &g) == TIXML_SUCCESS && c->QueryIntAttribute("b", &b) == TIXML_SUCCESS) ret->Set(r, g, b); return true; } return false; }
void ConfigManager::Write(const wxString& name, const wxColour& c) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlElement *leaf = GetUniqElement(e, key); TiXmlElement *s = GetUniqElement(leaf, _T("colour")); if (c == wxNullColour) { s->SetAttribute("null", "true"); s->SetAttribute("r", 0); s->SetAttribute("g", 0); s->SetAttribute("b", 0); } else { s->SetAttribute("r", c.Red()); s->SetAttribute("g", c.Green()); s->SetAttribute("b", c.Blue()); } }
wxArrayString ConfigManager::EnumerateKeys(const wxString& path) { wxString key(path + _T('/')); // the trailing slash hack is required because AssertPath expects a key name TiXmlNode* e = AssertPath(key); wxArrayString ret; TiXmlElement *curr = nullptr; if (e) { while (e->IterateChildren(curr) && (curr = e->IterateChildren(curr)->ToElement())) { #if wxCHECK_VERSION(2, 9, 0) wxUniChar c = cbC2U(curr->Value())[0]; #else wxChar c = *(cbC2U(curr->Value())); #endif if (c >= _T('A') && c <= _T('Z')) // opposite of the above ret.Add(cbC2U(curr->Value())); } } return ret; }
wxArrayString ConfigManager::EnumerateSubPaths(const wxString& path) { wxString key(path + _T('/')); // the trailing slash hack is required because AssertPath expects a key name TiXmlNode* e = AssertPath(key); wxArrayString ret; TiXmlElement *curr = nullptr; if (e) { while (e->IterateChildren(curr) && (curr = e->IterateChildren(curr)->ToElement())) { #if wxCHECK_VERSION(2, 9, 0) wxUniChar c = cbC2U(curr->Value())[0]; #else wxChar c = *(cbC2U(curr->Value())); #endif if (c < _T('A') || c > _T('Z')) // first char must be a letter, uppercase letters are key names ret.Add(cbC2U(curr->Value())); } } return ret; }
void ConfigManager::Write(const wxString& name, const ConfigManagerContainer::StringSet& set) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlElement *leaf = GetUniqElement(e, key); TiXmlElement *mNode; mNode = GetUniqElement(leaf, _T("sset")); leaf->RemoveChild(mNode); mNode = GetUniqElement(leaf, _T("sset")); for (ConfigManagerContainer::StringSet::const_iterator it = set.begin(); it != set.end(); ++it) { TiXmlElement s("s"); TiXmlText t(cbU2C(*it)); t.SetCDATA(true); s.InsertEndChild(t); mNode->InsertEndChild(s); } }
void ConfigManager::Write(const wxString& name, const ConfigManagerContainer::StringToStringMap& map) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlElement *leaf = GetUniqElement(e, key); TiXmlElement *mNode; mNode = GetUniqElement(leaf, _T("ssmap")); leaf->RemoveChild(mNode); mNode = GetUniqElement(leaf, _T("ssmap")); for (ConfigManagerContainer::StringToStringMap::const_iterator it = map.begin(); it != map.end(); ++it) { TiXmlElement s(cbU2C(it->first)); TiXmlText t(cbU2C(it->second)); t.SetCDATA(true); s.InsertEndChild(t); mNode->InsertEndChild(s); } }
void ConfigManager::Write(const wxString& name, const wxArrayString& arrayString) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlElement *leaf = GetUniqElement(e, key); TiXmlElement *as; as = GetUniqElement(leaf, _T("astr")); leaf->RemoveChild(as); as = GetUniqElement(leaf, _T("astr")); for (unsigned int i = 0; i < arrayString.GetCount(); ++i) { TiXmlElement s("s"); TiXmlText t(arrayString[i].mb_str(wxConvUTF8)); t.SetCDATA(true); s.InsertEndChild(t); as->InsertEndChild(s); } }
void ConfigManager::SetPath(const wxString& path) { wxString p(path + _T('/')); pathNode = AssertPath(p); }
void ConfigManager::Set(const wxString& name) { wxString key(name); TiXmlElement* e = AssertPath(key); GetUniqElement(e, key); }