void SyntaxHighlightDlg::OnItemSelected(wxCommandEvent& event) { CHECK_PTR_RET(m_lexer); // update colour picker & font pickers wxString selectionString = event.GetString(); StyleProperty::List_t& properties = m_lexer->GetLexerProperties(); StyleProperty::List_t::iterator iter = properties.begin(); for(; iter != properties.end(); iter++) { if(iter->GetName() == selectionString) { // update font & color StyleProperty p = (*iter); wxString colour = p.GetFgColour(); wxString bgColour = p.GetBgColour(); wxFont font = wxNullFont; int size = p.GetFontSize(); wxString face = p.GetFaceName(); bool bold = p.IsBold(); font = wxFont(size, wxFONTFAMILY_TELETYPE, p.GetItalic() ? wxFONTSTYLE_ITALIC : wxFONTSTYLE_NORMAL, bold ? wxFONTWEIGHT_BOLD : wxFONTWEIGHT_NORMAL, p.GetUnderlined(), face); m_fontPicker->SetSelectedFont(font); m_bgColourPicker->SetColour(bgColour); m_colourPicker->SetColour(colour); m_eolFilled->SetValue(p.GetEolFilled()); } } }
ContextGeneric::ContextGeneric(LEditor *container, const wxString &name) : ContextBase(container) { //----------------------------------------------- // Load laguage settings from configuration file //----------------------------------------------- SetName(name); // Set the key words and the lexer wxString keyWords; std::list<StyleProperty> styles; LexerConfPtr lexPtr; // Read the configuration file if(EditorConfigST::Get()->IsOk()){ lexPtr = EditorConfigST::Get()->GetLexer(name); } // Update the control LEditor &rCtrl = GetCtrl(); rCtrl.SetLexer(lexPtr->GetLexerId()); rCtrl.SetKeyWords(0, lexPtr->GetKeyWords()); rCtrl.StyleClearAll(); styles = lexPtr->GetProperties(); std::list<StyleProperty>::iterator iter = styles.begin(); for(; iter != styles.end(); iter++) { StyleProperty st = (*iter); int size = st.GetFontSize(); wxString face = st.GetFaceName(); bool bold = st.IsBold(); wxFont font(size, wxFONTFAMILY_TELETYPE, wxNORMAL, bold ? wxBOLD : wxNORMAL, false, face); if(st.GetId() == 0){ //default rCtrl.StyleSetFont(wxSCI_STYLE_DEFAULT, font); rCtrl.StyleSetSize(wxSCI_STYLE_DEFAULT, (*iter).GetFontSize()); rCtrl.StyleSetForeground(wxSCI_STYLE_DEFAULT, (*iter).GetFgColour()); } rCtrl.StyleSetFont(st.GetId(), font); rCtrl.StyleSetSize(st.GetId(), (*iter).GetFontSize()); rCtrl.StyleSetForeground(st.GetId(), (*iter).GetFgColour()); } }
void SyntaxHighlightDlg::CreateLexerPage() { CHECK_PTR_RET(m_lexer); const StyleProperty::List_t& m_propertyList = m_lexer->GetLexerProperties(); std::list<StyleProperty>::const_iterator it = m_propertyList.begin(); StyleProperty selTextProperties; for(; it != m_propertyList.end(); it++) { if(it->GetId() != SEL_TEXT_ATTR_ID) { m_properties->Append((*it).GetName()); } else { selTextProperties = *it; } } if(m_properties->GetCount()) m_properties->SetSelection(0); wxString initialColor = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT).GetAsString(); wxString bgInitialColor = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW).GetAsString(); wxFont initialFont = wxNullFont; // bool initialEolFilled (false); bool initialStyleWithinPreProcessor(true); if(m_propertyList.empty() == false) { StyleProperty p; p = (*m_propertyList.begin()); initialColor = p.GetFgColour(); bgInitialColor = p.GetBgColour(); int size = p.GetFontSize(); wxString face = p.GetFaceName(); bool bold = p.IsBold(); initialFont = wxFont(size, wxFONTFAMILY_TELETYPE, wxFONTSTYLE_NORMAL, bold ? wxFONTWEIGHT_BOLD : wxFONTWEIGHT_NORMAL, false, face); } initialStyleWithinPreProcessor = m_lexer->GetStyleWithinPreProcessor(); m_fontPicker->SetSelectedFont(initialFont); m_colourPicker->SetColour(wxColour(initialColor)); m_bgColourPicker->SetColour(wxColour(bgInitialColor)); m_globalFontPicker->SetSelectedFont(initialFont); m_globalBgColourPicker->SetColour(wxColour(bgInitialColor)); m_fileSpec->ChangeValue(m_lexer->GetFileSpec()); m_styleWithinPreProcessor->SetValue(initialStyleWithinPreProcessor); // Update selected text properties m_colourPickerSelTextBgColour->SetColour(selTextProperties.GetBgColour()); m_colourPickerSelTextFgColour->SetColour(selTextProperties.GetFgColour()); m_checkBoxCustomSelectionFgColour->SetValue(m_lexer->IsUseCustomTextSelectionFgColour()); if(m_propertyList.empty()) { m_fontPicker->Enable(false); m_colourPicker->Enable(false); } // Fill the themes for this lexer m_choiceLexerThemes->Clear(); wxArrayString themes = ColoursAndFontsManager::Get().GetAvailableThemesForLexer(m_lexer->GetName()); int sel = themes.Index(m_lexer->GetThemeName()); if(sel == -1) { sel = 0; } m_choiceLexerThemes->Append(themes); if(!m_choiceLexerThemes->IsEmpty()) { m_choiceLexerThemes->SetSelection(sel); } }
wxXmlNode* LexerConf::ToXml() const { // convert the lexer back xml node wxXmlNode* node = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("Lexer")); // set the lexer name node->AddProperty(wxT("Name"), GetName()); node->AddProperty("Theme", GetThemeName()); node->AddProperty("IsActive", IsActive() ? "Yes" : "No"); node->AddAttribute("UseCustomTextSelFgColour", IsUseCustomTextSelectionFgColour() ? "Yes" : "No"); node->AddProperty(wxT("StylingWithinPreProcessor"), BoolToString(GetStyleWithinPreProcessor())); wxString strId; strId << GetLexerId(); node->AddProperty(wxT("Id"), strId); // set the keywords node wxXmlNode* keyWords0 = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("KeyWords0")); XmlUtils::SetNodeContent(keyWords0, GetKeyWords(0)); node->AddChild(keyWords0); wxXmlNode* keyWords1 = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("KeyWords1")); XmlUtils::SetNodeContent(keyWords1, GetKeyWords(1)); node->AddChild(keyWords1); wxXmlNode* keyWords2 = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("KeyWords2")); XmlUtils::SetNodeContent(keyWords2, GetKeyWords(2)); node->AddChild(keyWords2); wxXmlNode* keyWords3 = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("KeyWords3")); XmlUtils::SetNodeContent(keyWords3, GetKeyWords(3)); node->AddChild(keyWords3); wxXmlNode* keyWords4 = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("KeyWords4")); XmlUtils::SetNodeContent(keyWords4, GetKeyWords(4)); node->AddChild(keyWords4); // set the extensions node wxXmlNode* extesions = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("Extensions")); XmlUtils::SetNodeContent(extesions, GetFileSpec()); node->AddChild(extesions); // set the properties wxXmlNode* properties = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("Properties")); std::map<long, StyleProperty>::const_iterator iter = m_properties.begin(); for(; iter != m_properties.end(); ++iter) { StyleProperty p = iter->second; wxXmlNode* property = new wxXmlNode(NULL, wxXML_ELEMENT_NODE, wxT("Property")); strId.Clear(); strId << p.GetId(); property->AddProperty(wxT("Id"), strId); property->AddProperty(wxT("Name"), p.GetName()); property->AddProperty(wxT("Bold"), BoolToString(p.IsBold())); property->AddProperty(wxT("Face"), p.GetFaceName()); property->AddProperty(wxT("Colour"), p.GetFgColour()); property->AddProperty(wxT("BgColour"), p.GetBgColour()); property->AddProperty(wxT("Italic"), BoolToString(p.GetItalic())); property->AddProperty(wxT("Underline"), BoolToString(p.GetUnderlined())); property->AddProperty(wxT("EolFilled"), BoolToString(p.GetEolFilled())); strId.Clear(); strId << p.GetAlpha(); property->AddProperty(wxT("Alpha"), strId); wxString strSize; strSize << p.GetFontSize(); property->AddProperty(wxT("Size"), strSize); properties->AddChild(property); } node->AddChild(properties); return node; }