void SyntaxHighlightDlg::LoadLexers(const wxString& theme) { #ifdef __WXMSW__ wxWindowUpdateLocker locker(this); #endif // get the current open editor's lexer name wxString currentLexer; LEditor *editor = clMainFrame::Get()->GetMainBook()->GetActiveEditor(); if(editor) { currentLexer = editor->GetContext()->GetName(); currentLexer.MakeLower(); } //remove old lexers if (m_lexersBook->GetPageCount() > 0) { m_lexersBook->DeleteAllPages(); } //update the theme name EditorConfigST::Get()->SaveStringValue(wxT("LexerTheme"), theme); //load all lexers EditorConfigST::Get()->LoadLexers(false); std::map<wxString, LexerConfPtr>::const_iterator iter = EditorConfigST::Get()->LexerBegin(); for (; iter != EditorConfigST::Get()->LexerEnd(); iter++) { LexerConfPtr lexer = iter->second; wxString lexName = lexer->GetName(); lexName.Trim().Trim(false); if(lexName.IsEmpty()) continue; // get the parent node for this lexer wxString firstChar = lexName.Mid(0, 1).MakeUpper(); size_t parentIndex(wxString::npos); for(size_t i=0; i<m_lexersBook->GetPageCount(); i++) { wxString pageText = m_lexersBook->GetPageText(i); pageText.MakeUpper(); if( pageText.StartsWith(firstChar) ) { parentIndex = i; break; } } if(parentIndex == wxString::npos) { // add parent node m_lexersBook->AddPage(CreateLexerPage(m_lexersBook, lexer), lexer->GetName(), currentLexer == iter->second->GetName()); } else { m_lexersBook->InsertPage(parentIndex, CreateLexerPage(m_lexersBook, lexer), lexer->GetName(), currentLexer == iter->second->GetName()); } } // The outputview colours are global to all a theme's lexors, so are dealt with separately m_colourPickerOutputPanesFgColour->SetColour(wxColour(EditorConfigST::Get()->GetCurrentOutputviewFgColour())); m_colourPickerOutputPanesBgColour->SetColour(wxColour(EditorConfigST::Get()->GetCurrentOutputviewBgColour())); }
void SyntaxHighlightDlg::LoadLexer(const wxString& themeName) { wxWindowUpdateLocker locker(this); Clear(); wxString lexer = m_listBox->GetStringSelection(); if(lexer.IsEmpty()) return; if(lexer == CXX_AND_JAVASCRIPT) { lexer = "c++"; } m_lexer = ColoursAndFontsManager::Get().GetLexer(lexer, themeName); CreateLexerPage(); m_isModified = false; }
wxPanel *OptionsDlg::CreateSyntaxHighlightPage() { wxPanel *page = new wxPanel( m_book, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL ); wxBoxSizer *sz = new wxBoxSizer(wxVERTICAL); page->SetSizer(sz); long style = wxFNB_FF2 | wxFNB_NO_NAV_BUTTONS | wxFNB_DROPDOWN_TABS_LIST | wxFNB_NO_X_BUTTON; m_lexersBook = new wxFlatNotebook(page, wxID_ANY, wxDefaultPosition, wxDefaultSize, style); sz->Add(m_lexersBook, 1, wxEXPAND | wxALL, 5); m_lexersBook->SetBackgroundColour(wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)); bool selected = true; EditorConfig::ConstIterator iter = EditorConfigST::Get()->LexerBegin(); for(; iter != EditorConfigST::Get()->LexerEnd(); iter++){ LexerConfPtr lexer = iter->second; m_lexersBook->AddPage(CreateLexerPage(m_lexersBook, lexer), lexer->GetName(), selected); selected = false; } return page; }