void ColoursAndFontsManager::LoadOldXmls(const std::vector<wxXmlDocument*>& xmlFiles, bool userLexers) { // Each XMl represents a single lexer (the old format) for(size_t i = 0; i < xmlFiles.size(); ++i) { wxXmlDocument* doc = xmlFiles.at(i); DoAddLexer(doc->GetRoot()); } }
void ColoursAndFontsManager::LoadJSON(const wxFileName& path) { if(!path.FileExists()) return; JSONRoot root(path); JSONElement arr = root.toElement(); int arrSize = arr.arraySize(); CL_DEBUG("Loading JSON file: %s (contains %d lexers)", path.GetFullPath(), arrSize); for(int i = 0; i < arrSize; ++i) { JSONElement json = arr.arrayItem(i); DoAddLexer(json); } CL_DEBUG("Loading JSON file...done"); }
LexerConf::Ptr_t ColoursAndFontsManager::CopyTheme(const wxString& lexerName, const wxString& themeName, const wxString& sourceTheme) { LexerConf::Ptr_t sourceLexer = GetLexer(lexerName, sourceTheme); CHECK_PTR_RET_NULL(sourceLexer); JSONElement json = sourceLexer->ToJSON(); LexerConf::Ptr_t newLexer(new LexerConf()); newLexer->FromJSON(json); // Update the theme name newLexer->SetThemeName(themeName); // Add it return DoAddLexer(newLexer->ToJSON()); }
LexerConf::Ptr_t ColoursAndFontsManager::CopyTheme(const wxString& lexerName, const wxString& themeName, const wxString& sourceTheme) { LexerConf::Ptr_t sourceLexer = GetLexer(lexerName, sourceTheme); CHECK_PTR_RET_NULL(sourceLexer); wxXmlNode* sourceLexerXml = sourceLexer->ToXml(); LexerConf::Ptr_t newLexer(new LexerConf()); newLexer->FromXml(sourceLexerXml); // Update the theme name newLexer->SetThemeName(themeName); // Add it return DoAddLexer(newLexer->ToXml()); }
void ColoursAndFontsManager::LoadNewXmls(const wxString& path) { // load all XML files wxArrayString files; CL_DEBUG("Loading lexers"); CL_DEBUG("Scanning for lexer files"); wxDir::GetAllFiles(path, &files, "lexer_*.xml"); CL_DEBUG("Scanning for lexer files...done"); // Each XMl represents a single lexer for(size_t i = 0; i < files.GetCount(); ++i) { wxXmlDocument doc; if(!doc.Load(files.Item(i))) { continue; } DoAddLexer(doc.GetRoot()); } CL_DEBUG("Loading lexers...done"); }
void ColoursAndFontsManager::LoadOldXmls(const wxString& path) { // Convert the old XML format to a per lexer format wxArrayString files; wxDir::GetAllFiles(path, &files, "lexers_*.xml"); wxString activeTheme = EditorConfigST::Get()->GetString("LexerTheme", "Default"); // Each XMl represents a single lexer for(size_t i = 0; i < files.GetCount(); ++i) { wxXmlDocument doc; if(!doc.Load(files.Item(i))) continue; wxXmlNode* lexers = doc.GetRoot(); wxXmlNode* child = lexers->GetChildren(); wxString themeName = XmlUtils::ReadString(lexers, "Theme", "Default"); themeName = themeName.Capitalize(); while(child) { if(child->GetName() == "Lexer") { // Assign theme to this lexer child->AddAttribute("Theme", themeName); child->AddAttribute("IsActive", themeName == activeTheme ? "Yes" : "No"); DoAddLexer(child); } child = child->GetNext(); } } for(size_t i = 0; i < files.GetCount(); ++i) { wxLogNull nl; ::wxRenameFile(files.Item(i), files.Item(i) + ".back"); } // Since we just created the lexers, store them (migrating from old format) Save(); }
void ColoursAndFontsManager::AddLexer(LexerConf::Ptr_t lexer) { CHECK_PTR_RET(lexer); DoAddLexer(lexer->ToJSON()); }