X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1f65137f8de90aba96242d5e44b00dfd0efa4b67..0af07cc24519a07e1948169568c979fea7465ce2:/src/richtext/richtextxml.cpp diff --git a/src/richtext/richtextxml.cpp b/src/richtext/richtextxml.cpp index 26189e93ec..e1d42d4647 100644 --- a/src/richtext/richtextxml.cpp +++ b/src/richtext/richtextxml.cpp @@ -101,7 +101,7 @@ bool wxRichTextXMLHandler::ImportXML(wxRichTextBuffer* buffer, wxXmlNode* node) if (name == wxT("paragraphlayout")) { - wxString partial = node->GetPropVal(wxT("partialparagraph"), wxEmptyString); + wxString partial = node->GetAttribute(wxT("partialparagraph"), wxEmptyString); if (partial == wxT("true")) buffer->SetPartialParagraph(true); } @@ -161,7 +161,7 @@ bool wxRichTextXMLHandler::ImportXML(wxRichTextBuffer* buffer, wxXmlNode* node) } textChild = textChild->GetNext(); } - + wxString actualText; actualText << (wxChar) wxAtoi(text); @@ -173,7 +173,7 @@ bool wxRichTextXMLHandler::ImportXML(wxRichTextBuffer* buffer, wxXmlNode* node) else if (childName == wxT("image")) { int imageType = wxBITMAP_TYPE_PNG; - wxString value = node->GetPropVal(wxT("imagetype"), wxEmptyString); + wxString value = node->GetAttribute(wxT("imagetype"), wxEmptyString); if (!value.empty()) imageType = wxAtoi(value); @@ -200,6 +200,7 @@ bool wxRichTextXMLHandler::ImportXML(wxRichTextBuffer* buffer, wxXmlNode* node) if (!data.empty()) { wxRichTextImage* imageObj = new wxRichTextImage(para); + GetStyle(imageObj->GetAttributes(), child, false); para->AppendChild(imageObj); wxStringInputStream strStream(data); @@ -217,19 +218,19 @@ bool wxRichTextXMLHandler::ImportXML(wxRichTextBuffer* buffer, wxXmlNode* node) if (GetFlags() & wxRICHTEXT_HANDLER_INCLUDE_STYLESHEET) { wxRichTextStyleSheet* sheet = new wxRichTextStyleSheet; - wxString sheetName = node->GetPropVal(wxT("name"), wxEmptyString); - wxString sheetDescription = node->GetPropVal(wxT("description"), wxEmptyString); + wxString sheetName = node->GetAttribute(wxT("name"), wxEmptyString); + wxString sheetDescription = node->GetAttribute(wxT("description"), wxEmptyString); sheet->SetName(sheetName); sheet->SetDescription(sheetDescription); - + wxXmlNode* child = node->GetChildren(); while (child) { ImportStyleDefinition(sheet, child); - + child = child->GetNext(); } - + // Notify that styles have changed. If this is vetoed by the app, // the new sheet will be deleted. If it is not vetoed, the // old sheet will be deleted and replaced with the new one. @@ -253,13 +254,13 @@ bool wxRichTextXMLHandler::ImportXML(wxRichTextBuffer* buffer, wxXmlNode* node) bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wxXmlNode* node) { - wxString styleType = node->GetName(); - wxString styleName = node->GetPropVal(wxT("name"), wxEmptyString); - wxString baseStyleName = node->GetPropVal(wxT("basestyle"), wxEmptyString); - + wxString styleType = node->GetName(); + wxString styleName = node->GetAttribute(wxT("name"), wxEmptyString); + wxString baseStyleName = node->GetAttribute(wxT("basestyle"), wxEmptyString); + if (styleName.IsEmpty()) return false; - + if (styleType == wxT("characterstyle")) { wxRichTextCharacterStyleDefinition* def = new wxRichTextCharacterStyleDefinition(styleName); @@ -270,20 +271,20 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx { if (child->GetName() == wxT("style")) { - wxTextAttrEx attr; + wxTextAttr attr; GetStyle(attr, child, false); def->SetStyle(attr); } child = child->GetNext(); } - + sheet->AddCharacterStyle(def); } else if (styleType == wxT("paragraphstyle")) { wxRichTextParagraphStyleDefinition* def = new wxRichTextParagraphStyleDefinition(styleName); - wxString nextStyleName = node->GetPropVal(wxT("nextstyle"), wxEmptyString); + wxString nextStyleName = node->GetAttribute(wxT("nextstyle"), wxEmptyString); def->SetNextStyle(nextStyleName); def->SetBaseStyle(baseStyleName); @@ -292,7 +293,7 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx { if (child->GetName() == wxT("style")) { - wxTextAttrEx attr; + wxTextAttr attr; GetStyle(attr, child, false); def->SetStyle(attr); } @@ -305,7 +306,7 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx { wxRichTextListStyleDefinition* def = new wxRichTextListStyleDefinition(styleName); - wxString nextStyleName = node->GetPropVal(wxT("nextstyle"), wxEmptyString); + wxString nextStyleName = node->GetAttribute(wxT("nextstyle"), wxEmptyString); def->SetNextStyle(nextStyleName); def->SetBaseStyle(baseStyleName); @@ -314,12 +315,12 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx { if (child->GetName() == wxT("style")) { - wxTextAttrEx attr; + wxTextAttr attr; GetStyle(attr, child, false); - wxString styleLevel = child->GetPropVal(wxT("level"), wxEmptyString); + wxString styleLevel = child->GetAttribute(wxT("level"), wxEmptyString); if (styleLevel.IsEmpty()) - { + { def->SetStyle(attr); } else @@ -336,7 +337,7 @@ bool wxRichTextXMLHandler::ImportStyleDefinition(wxRichTextStyleSheet* sheet, wx sheet->AddListStyle(def); } - + return true; } @@ -544,7 +545,10 @@ bool wxRichTextXMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& { if (m_encoding == wxT("")) { +#if wxUSE_INTL fileEncoding = wxLocale::GetSystemEncodingName(); + // if !wxUSE_INTL, we fall back to UTF-8 or ISO-8859-1 below +#endif } else { @@ -570,7 +574,7 @@ bool wxRichTextXMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& wxString s ; s.Printf(wxT("\n"), - (const wxChar*) version, (const wxChar*) fileEncoding ); + version, fileEncoding); OutputString(stream, s, NULL, NULL); OutputString(stream, wxT("") , NULL, NULL); @@ -612,7 +616,7 @@ bool wxRichTextXMLHandler::DoSaveFile(wxRichTextBuffer *buffer, wxOutputStream& bool success = ExportXML(stream, convMem, convFile, *buffer, level); - + OutputString(stream, wxT("\n") , NULL, NULL); OutputString(stream, wxT("\n"), NULL, NULL); @@ -636,15 +640,15 @@ bool wxRichTextXMLHandler::ExportXML(wxOutputStream& stream, wxMBConv* convMem, objectName = wxT("image"); else objectName = wxT("object"); - + bool terminateTag = true; if (obj.IsKindOf(CLASSINFO(wxRichTextPlainText))) { wxRichTextPlainText& textObj = (wxRichTextPlainText&) obj; - + wxString style = CreateStyle(obj.GetAttributes(), false); - + int i; int last = 0; const wxString& text = textObj.GetText(); @@ -672,22 +676,22 @@ bool wxRichTextXMLHandler::ExportXML(wxOutputStream& stream, wxMBConv* convMem, OutputStringEnt(stream, fragment, convMem, convFile); OutputString(stream, wxT(""), convMem, convFile); - } - + } + // Output this character as a number in a separate tag, because XML can't cope - // with entities below 32 except for 9, 10 and 13 + // with entities below 32 except for 9, 10 and 13 last = i + 1; OutputIndentation(stream, indent); OutputString(stream, wxT(""), convMem, convFile); - OutputString(stream, wxString::Format(wxT("%d"), c), convMem, convFile); + OutputString(stream, wxString::Format(wxT("%d"), c), convMem, convFile); OutputString(stream, wxT(""), convMem, convFile); } } - + wxString fragment; if (last == 0) fragment = text; @@ -717,6 +721,8 @@ bool wxRichTextXMLHandler::ExportXML(wxOutputStream& stream, wxMBConv* convMem, { wxRichTextImage& imageObj = (wxRichTextImage&) obj; + wxString style = CreateStyle(obj.GetAttributes(), false); + if (imageObj.GetImage().Ok() && !imageObj.GetImageBlock().Ok()) imageObj.MakeBlock(); @@ -725,11 +731,11 @@ bool wxRichTextXMLHandler::ExportXML(wxOutputStream& stream, wxMBConv* convMem, if (!imageObj.GetImageBlock().Ok()) { // No data - OutputString(stream, wxT(">"), convMem, convFile); + OutputString(stream, style + wxT(">"), convMem, convFile); } else { - OutputString(stream, wxString::Format(wxT(" imagetype=\"%d\">"), (int) imageObj.GetImageBlock().GetImageType())); + OutputString(stream, wxString::Format(wxT(" imagetype=\"%d\"") + style + wxT(">"), (int) imageObj.GetImageBlock().GetImageType())); } OutputIndentation(stream, indent+1); @@ -749,7 +755,7 @@ bool wxRichTextXMLHandler::ExportXML(wxOutputStream& stream, wxMBConv* convMem, isPara = true; wxString style = CreateStyle(obj.GetAttributes(), isPara); - + if (objectName == wxT("paragraphlayout") && ((wxRichTextParagraphLayoutBox&) obj).GetPartialParagraph()) style << wxT(" partialparagraph=\"true\""); @@ -775,32 +781,32 @@ bool wxRichTextXMLHandler::ExportXML(wxOutputStream& stream, wxMBConv* convMem, bool wxRichTextXMLHandler::ExportStyleDefinition(wxOutputStream& stream, wxMBConv* convMem, wxMBConv* convFile, wxRichTextStyleDefinition* def, int level) { - wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(def, wxRichTextCharacterStyleDefinition); + wxRichTextCharacterStyleDefinition* charDef = wxDynamicCast(def, wxRichTextCharacterStyleDefinition); wxRichTextParagraphStyleDefinition* paraDef = wxDynamicCast(def, wxRichTextParagraphStyleDefinition); wxRichTextListStyleDefinition* listDef = wxDynamicCast(def, wxRichTextListStyleDefinition); - + wxString baseStyle = def->GetBaseStyle(); wxString baseStyleProp; if (!baseStyle.IsEmpty()) baseStyleProp = wxT(" basestyle=\"") + baseStyle + wxT("\""); - + wxString descr = def->GetDescription(); wxString descrProp; if (!descr.IsEmpty()) descrProp = wxT(" description=\"") + descr + wxT("\""); - + if (charDef) { OutputIndentation(stream, level); OutputString(stream, wxT(""), convMem, convFile); - + level ++; wxString style = CreateStyle(def->GetStyle(), false); OutputIndentation(stream, level); OutputString(stream, wxT(""), convMem, convFile); @@ -812,26 +818,26 @@ bool wxRichTextXMLHandler::ExportStyleDefinition(wxOutputStream& stream, wxMBCon else if (listDef) { OutputIndentation(stream, level); - + if (!listDef->GetNextStyle().IsEmpty()) baseStyleProp << wxT(" basestyle=\"") << listDef->GetNextStyle() << wxT("\""); - + OutputString(stream, wxT(""), convMem, convFile); - + level ++; wxString style = CreateStyle(def->GetStyle(), false); OutputIndentation(stream, level); OutputString(stream, wxT(""), convMem, convFile); int i; for (i = 0; i < 10; i ++) { - wxRichTextAttr* levelAttr = listDef->GetLevelAttributes(i); + wxTextAttr* levelAttr = listDef->GetLevelAttributes(i); if (levelAttr) { wxString style = CreateStyle(def->GetStyle(), false); @@ -839,7 +845,7 @@ bool wxRichTextXMLHandler::ExportStyleDefinition(wxOutputStream& stream, wxMBCon OutputIndentation(stream, level); OutputString(stream, wxT(""), convMem, convFile); } @@ -853,22 +859,22 @@ bool wxRichTextXMLHandler::ExportStyleDefinition(wxOutputStream& stream, wxMBCon else if (paraDef) { OutputIndentation(stream, level); - - if (!listDef->GetNextStyle().IsEmpty()) - baseStyleProp << wxT(" basestyle=\"") << listDef->GetNextStyle() << wxT("\""); - + + if (!paraDef->GetNextStyle().IsEmpty()) + baseStyleProp << wxT(" basestyle=\"") << paraDef->GetNextStyle() << wxT("\""); + OutputString(stream, wxT(""), convMem, convFile); - + level ++; wxString style = CreateStyle(def->GetStyle(), false); OutputIndentation(stream, level); OutputString(stream, wxT(""), convMem, convFile); - + level --; OutputIndentation(stream, level); @@ -879,7 +885,7 @@ bool wxRichTextXMLHandler::ExportStyleDefinition(wxOutputStream& stream, wxMBCon } /// Create style parameters -wxString wxRichTextXMLHandler::CreateStyle(const wxTextAttrEx& attr, bool isPara) +wxString wxRichTextXMLHandler::CreateStyle(const wxTextAttr& attr, bool isPara) { wxString str; if (attr.HasTextColour() && attr.GetTextColour().Ok()) @@ -891,26 +897,23 @@ wxString wxRichTextXMLHandler::CreateStyle(const wxTextAttrEx& attr, bool isPara str << wxT(" bgcolor=\"#") << ColourToHexString(attr.GetBackgroundColour()) << wxT("\""); } - if (attr.GetFont().Ok()) - { - if (attr.HasSize()) - str << wxT(" fontsize=\"") << attr.GetFont().GetPointSize() << wxT("\""); - - //if (attr.HasFamily()) - // str << wxT(" fontfamily=\"") << attr.GetFont().GetFamily() << wxT("\""); + if (attr.HasFontSize()) + str << wxT(" fontsize=\"") << attr.GetFontSize() << wxT("\""); - if (attr.HasItalic()) - str << wxT(" fontstyle=\"") << attr.GetFont().GetStyle() << wxT("\""); + //if (attr.HasFontFamily()) + // str << wxT(" fontfamily=\"") << attr.GetFont().GetFamily() << wxT("\""); - if (attr.HasWeight()) - str << wxT(" fontweight=\"") << attr.GetFont().GetWeight() << wxT("\""); + if (attr.HasFontItalic()) + str << wxT(" fontstyle=\"") << attr.GetFontStyle() << wxT("\""); - if (attr.HasUnderlined()) - str << wxT(" fontunderlined=\"") << (int) attr.GetFont().GetUnderlined() << wxT("\""); + if (attr.HasFontWeight()) + str << wxT(" fontweight=\"") << attr.GetFontWeight() << wxT("\""); - if (attr.HasFaceName()) - str << wxT(" fontface=\"") << attr.GetFont().GetFaceName() << wxT("\""); - } + if (attr.HasFontUnderlined()) + str << wxT(" fontunderlined=\"") << (int) attr.GetFontUnderlined() << wxT("\""); + + if (attr.HasFontFaceName()) + str << wxT(" fontface=\"") << attr.GetFontFaceName() << wxT("\""); if (attr.HasTextEffects()) { @@ -926,6 +929,9 @@ wxString wxRichTextXMLHandler::CreateStyle(const wxTextAttrEx& attr, bool isPara if (!attr.GetCharacterStyleName().empty()) str << wxT(" characterstyle=\"") << wxString(attr.GetCharacterStyleName()) << wxT("\""); + if (attr.HasURL()) + str << wxT(" url=\"") << attr.GetURL() << wxT("\""); + if (isPara) { if (attr.HasAlignment()) @@ -963,22 +969,19 @@ wxString wxRichTextXMLHandler::CreateStyle(const wxTextAttrEx& attr, bool isPara str << wxT(" bulletsymbol=\"") << (int) (attr.GetBulletText()[0]) << wxT("\""); else str << wxT(" bullettext=\"") << attr.GetBulletText() << wxT("\""); - + str << wxT(" bulletfont=\"") << attr.GetBulletFont() << wxT("\""); } if (attr.HasBulletName()) str << wxT(" bulletname=\"") << attr.GetBulletName() << wxT("\""); - if (attr.HasURL()) - str << wxT(" url=\"") << attr.GetURL() << wxT("\""); - if (!attr.GetParagraphStyleName().empty()) str << wxT(" parstyle=\"") << wxString(attr.GetParagraphStyleName()) << wxT("\""); - + if (!attr.GetListStyleName().empty()) str << wxT(" liststyle=\"") << wxString(attr.GetListStyleName()) << wxT("\""); - + if (attr.HasTabs()) { str << wxT(" tabs=\""); @@ -989,76 +992,72 @@ wxString wxRichTextXMLHandler::CreateStyle(const wxTextAttrEx& attr, bool isPara str << wxT(","); str << attr.GetTabs()[i]; } - str << wxT("\""); + str << wxT("\""); } - + if (attr.HasPageBreak()) { str << wxT(" pagebreak=\"1\""); } + + if (attr.HasOutlineLevel()) + str << wxT(" outlinelevel=\"") << (int) attr.GetOutlineLevel() << wxT("\""); + } return str; } /// Get style parameters -bool wxRichTextXMLHandler::GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool isPara) +bool wxRichTextXMLHandler::GetStyle(wxTextAttr& attr, wxXmlNode* node, bool isPara) { wxString fontFacename; int fontSize = 12; - int fontFamily = wxDEFAULT; + // int fontFamily = wxDEFAULT; int fontWeight = wxNORMAL; int fontStyle = wxNORMAL; bool fontUnderlined = false; - - int fontFlags = 0; - fontFacename = node->GetPropVal(wxT("fontface"), wxEmptyString); + // int fontFlags = 0; + + fontFacename = node->GetAttribute(wxT("fontface"), wxEmptyString); if (!fontFacename.IsEmpty()) - fontFlags |= wxTEXT_ATTR_FONT_FACE; + attr.SetFontFaceName(fontFacename); wxString value; - //value = node->GetPropVal(wxT("fontfamily"), wxEmptyString); + //value = node->GetAttribute(wxT("fontfamily"), wxEmptyString); //if (!value.empty()) // fontFamily = wxAtoi(value); - value = node->GetPropVal(wxT("fontstyle"), wxEmptyString); + value = node->GetAttribute(wxT("fontstyle"), wxEmptyString); if (!value.empty()) { fontStyle = wxAtoi(value); - fontFlags |= wxTEXT_ATTR_FONT_ITALIC; + attr.SetFontStyle(fontStyle); } - value = node->GetPropVal(wxT("fontsize"), wxEmptyString); + value = node->GetAttribute(wxT("fontsize"), wxEmptyString); if (!value.empty()) { fontSize = wxAtoi(value); - fontFlags |= wxTEXT_ATTR_FONT_SIZE; + attr.SetFontSize(fontSize); } - value = node->GetPropVal(wxT("fontweight"), wxEmptyString); + value = node->GetAttribute(wxT("fontweight"), wxEmptyString); if (!value.empty()) { fontWeight = wxAtoi(value); - fontFlags |= wxTEXT_ATTR_FONT_WEIGHT; + attr.SetFontWeight(fontWeight); } - value = node->GetPropVal(wxT("fontunderlined"), wxEmptyString); + value = node->GetAttribute(wxT("fontunderlined"), wxEmptyString); if (!value.empty()) { fontUnderlined = wxAtoi(value) != 0; - fontFlags |= wxTEXT_ATTR_FONT_UNDERLINE; + attr.SetFontUnderlined(fontUnderlined); } - - attr.SetFlags(fontFlags); - - if (attr.HasFlag(wxTEXT_ATTR_FONT)) - attr.SetFont(* wxTheFontList->FindOrCreateFont(fontSize, fontFamily, fontStyle, fontWeight, fontUnderlined, fontFacename)); - - // Restore correct font flags - attr.SetFlags(fontFlags); - - value = node->GetPropVal(wxT("textcolor"), wxEmptyString); + + value = node->GetAttribute(wxT("textcolor"), wxEmptyString); if (!value.empty()) { if (value[0] == wxT('#')) @@ -1067,7 +1066,7 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool is attr.SetTextColour(value); } - value = node->GetPropVal(wxT("backgroundcolor"), wxEmptyString); + value = node->GetAttribute(wxT("bgcolor"), wxEmptyString); if (!value.empty()) { if (value[0] == wxT('#')) @@ -1076,41 +1075,45 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool is attr.SetBackgroundColour(value); } - value = node->GetPropVal(wxT("characterstyle"), wxEmptyString); + value = node->GetAttribute(wxT("characterstyle"), wxEmptyString); if (!value.empty()) attr.SetCharacterStyleName(value); - value = node->GetPropVal(wxT("texteffects"), wxEmptyString); + value = node->GetAttribute(wxT("texteffects"), wxEmptyString); if (!value.IsEmpty()) { attr.SetTextEffects(wxAtoi(value)); } - value = node->GetPropVal(wxT("texteffectflags"), wxEmptyString); + value = node->GetAttribute(wxT("texteffectflags"), wxEmptyString); if (!value.IsEmpty()) { attr.SetTextEffectFlags(wxAtoi(value)); } + value = node->GetAttribute(wxT("url"), wxEmptyString); + if (!value.empty()) + attr.SetURL(value); + // Set paragraph attributes if (isPara) { - value = node->GetPropVal(wxT("alignment"), wxEmptyString); + value = node->GetAttribute(wxT("alignment"), wxEmptyString); if (!value.empty()) attr.SetAlignment((wxTextAttrAlignment) wxAtoi(value)); int leftSubIndent = 0; int leftIndent = 0; bool hasLeftIndent = false; - - value = node->GetPropVal(wxT("leftindent"), wxEmptyString); + + value = node->GetAttribute(wxT("leftindent"), wxEmptyString); if (!value.empty()) { leftIndent = wxAtoi(value); hasLeftIndent = true; } - value = node->GetPropVal(wxT("leftsubindent"), wxEmptyString); + value = node->GetAttribute(wxT("leftsubindent"), wxEmptyString); if (!value.empty()) { leftSubIndent = wxAtoi(value); @@ -1120,31 +1123,31 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool is if (hasLeftIndent) attr.SetLeftIndent(leftIndent, leftSubIndent); - value = node->GetPropVal(wxT("rightindent"), wxEmptyString); + value = node->GetAttribute(wxT("rightindent"), wxEmptyString); if (!value.empty()) attr.SetRightIndent(wxAtoi(value)); - value = node->GetPropVal(wxT("parspacingbefore"), wxEmptyString); + value = node->GetAttribute(wxT("parspacingbefore"), wxEmptyString); if (!value.empty()) attr.SetParagraphSpacingBefore(wxAtoi(value)); - value = node->GetPropVal(wxT("parspacingafter"), wxEmptyString); + value = node->GetAttribute(wxT("parspacingafter"), wxEmptyString); if (!value.empty()) attr.SetParagraphSpacingAfter(wxAtoi(value)); - value = node->GetPropVal(wxT("linespacing"), wxEmptyString); + value = node->GetAttribute(wxT("linespacing"), wxEmptyString); if (!value.empty()) attr.SetLineSpacing(wxAtoi(value)); - value = node->GetPropVal(wxT("bulletstyle"), wxEmptyString); + value = node->GetAttribute(wxT("bulletstyle"), wxEmptyString); if (!value.empty()) attr.SetBulletStyle(wxAtoi(value)); - value = node->GetPropVal(wxT("bulletnumber"), wxEmptyString); + value = node->GetAttribute(wxT("bulletnumber"), wxEmptyString); if (!value.empty()) attr.SetBulletNumber(wxAtoi(value)); - value = node->GetPropVal(wxT("bulletsymbol"), wxEmptyString); + value = node->GetAttribute(wxT("bulletsymbol"), wxEmptyString); if (!value.empty()) { wxChar ch = wxAtoi(value); @@ -1153,31 +1156,27 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool is attr.SetBulletText(s); } - value = node->GetPropVal(wxT("bullettext"), wxEmptyString); + value = node->GetAttribute(wxT("bullettext"), wxEmptyString); if (!value.empty()) attr.SetBulletText(value); - value = node->GetPropVal(wxT("bulletfont"), wxEmptyString); + value = node->GetAttribute(wxT("bulletfont"), wxEmptyString); if (!value.empty()) attr.SetBulletFont(value); - value = node->GetPropVal(wxT("bulletname"), wxEmptyString); + value = node->GetAttribute(wxT("bulletname"), wxEmptyString); if (!value.empty()) attr.SetBulletName(value); - value = node->GetPropVal(wxT("url"), wxEmptyString); - if (!value.empty()) - attr.SetURL(value); - - value = node->GetPropVal(wxT("parstyle"), wxEmptyString); + value = node->GetAttribute(wxT("parstyle"), wxEmptyString); if (!value.empty()) attr.SetParagraphStyleName(value); - - value = node->GetPropVal(wxT("liststyle"), wxEmptyString); + + value = node->GetAttribute(wxT("liststyle"), wxEmptyString); if (!value.empty()) attr.SetListStyleName(value); - - value = node->GetPropVal(wxT("tabs"), wxEmptyString); + + value = node->GetAttribute(wxT("tabs"), wxEmptyString); if (!value.empty()) { wxArrayInt tabs; @@ -1189,12 +1188,18 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool is } attr.SetTabs(tabs); } - - value = node->GetPropVal(wxT("pagebreak"), wxEmptyString); + + value = node->GetAttribute(wxT("pagebreak"), wxEmptyString); if (!value.IsEmpty()) { attr.SetPageBreak(wxAtoi(value) != 0); } + + value = node->GetAttribute(wxT("outlinelevel"), wxEmptyString); + if (!value.IsEmpty()) + { + attr.SetOutlineLevel(wxAtoi(value)); + } } return true;