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()); } } }
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; }