From: Julian Smart Date: Sun, 26 Nov 2006 12:47:53 +0000 (+0000) Subject: Styles now sorted alphabetically X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/486dd03abbd8115d0c7e6af618b88bd08f3d0c1f Styles now sorted alphabetically git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43652 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/richtext/richtextstyles.h b/include/wx/richtext/richtextstyles.h index b15ee9f94a..8be842cc74 100644 --- a/include/wx/richtext/richtextstyles.h +++ b/include/wx/richtext/richtextstyles.h @@ -482,6 +482,7 @@ private: bool m_applyOnSelection; // if true, applies style on selection wxRichTextStyleType m_styleType; // style type to display bool m_autoSetSelection; + wxArrayString m_styleNames; }; /*! diff --git a/src/richtext/richtextstyles.cpp b/src/richtext/richtextstyles.cpp index 37ac00b4fc..fdefed82df 100644 --- a/src/richtext/richtextstyles.cpp +++ b/src/richtext/richtextstyles.cpp @@ -508,33 +508,11 @@ wxRichTextStyleDefinition* wxRichTextStyleListBox::GetStyle(size_t i) const { if (!GetStyleSheet()) return NULL; + + if (i >= m_styleNames.GetCount() || i < 0) + return NULL; - if (GetStyleType() == wxRICHTEXT_STYLE_ALL) - { - // First paragraph styles, then character, then list - if (i < GetStyleSheet()->GetParagraphStyleCount()) - return GetStyleSheet()->GetParagraphStyle(i); - - if ((i - GetStyleSheet()->GetParagraphStyleCount()) < GetStyleSheet()->GetCharacterStyleCount()) - return GetStyleSheet()->GetCharacterStyle(i - GetStyleSheet()->GetParagraphStyleCount()); - - if ((i - GetStyleSheet()->GetParagraphStyleCount() - GetStyleSheet()->GetCharacterStyleCount()) < GetStyleSheet()->GetListStyleCount()) - return GetStyleSheet()->GetListStyle(i - GetStyleSheet()->GetParagraphStyleCount() - GetStyleSheet()->GetCharacterStyleCount()); - } - else if ((GetStyleType() == wxRICHTEXT_STYLE_PARAGRAPH) && (i < GetStyleSheet()->GetParagraphStyleCount())) - { - return GetStyleSheet()->GetParagraphStyle(i); - } - else if ((GetStyleType() == wxRICHTEXT_STYLE_CHARACTER) && (i < GetStyleSheet()->GetCharacterStyleCount())) - { - return GetStyleSheet()->GetCharacterStyle(i); - } - else if ((GetStyleType() == wxRICHTEXT_STYLE_LIST) && (i < GetStyleSheet()->GetListStyleCount())) - { - return GetStyleSheet()->GetListStyle(i); - } - - return NULL; + return GetStyleSheet()->FindStyle(m_styleNames[i]); } /// Updates the list @@ -543,15 +521,28 @@ void wxRichTextStyleListBox::UpdateStyles() if (GetStyleSheet()) { SetSelection(wxNOT_FOUND); - - if (GetStyleType() == wxRICHTEXT_STYLE_ALL) - SetItemCount(GetStyleSheet()->GetParagraphStyleCount()+GetStyleSheet()->GetCharacterStyleCount()+GetStyleSheet()->GetListStyleCount()); - else if (GetStyleType() == wxRICHTEXT_STYLE_PARAGRAPH) - SetItemCount(GetStyleSheet()->GetParagraphStyleCount()); - else if (GetStyleType() == wxRICHTEXT_STYLE_CHARACTER) - SetItemCount(GetStyleSheet()->GetCharacterStyleCount()); - else if (GetStyleType() == wxRICHTEXT_STYLE_LIST) - SetItemCount(GetStyleSheet()->GetListStyleCount()); + + m_styleNames.Clear(); + + size_t i; + if (GetStyleType() == wxRICHTEXT_STYLE_ALL || GetStyleType() == wxRICHTEXT_STYLE_PARAGRAPH) + { + for (i = 0; i < GetStyleSheet()->GetParagraphStyleCount(); i++) + m_styleNames.Add(GetStyleSheet()->GetParagraphStyle(i)->GetName()); + } + if (GetStyleType() == wxRICHTEXT_STYLE_ALL || GetStyleType() == wxRICHTEXT_STYLE_CHARACTER) + { + for (i = 0; i < GetStyleSheet()->GetCharacterStyleCount(); i++) + m_styleNames.Add(GetStyleSheet()->GetCharacterStyle(i)->GetName()); + } + if (GetStyleType() == wxRICHTEXT_STYLE_ALL || GetStyleType() == wxRICHTEXT_STYLE_LIST) + { + for (i = 0; i < GetStyleSheet()->GetListStyleCount(); i++) + m_styleNames.Add(GetStyleSheet()->GetListStyle(i)->GetName()); + } + + m_styleNames.Sort(); + SetItemCount(m_styleNames.GetCount()); Refresh(); @@ -566,19 +557,7 @@ void wxRichTextStyleListBox::UpdateStyles() // Get index for style name int wxRichTextStyleListBox::GetIndexForStyle(const wxString& name) const { - if (GetStyleSheet()) - { - int count = GetItemCount(); - - int i; - for (i = 0; i < (int) count; i++) - { - wxRichTextStyleDefinition* def = GetStyle(i); - if (def->GetName() == name) - return i; - } - } - return -1; + return m_styleNames.Index(name); } /// Set selection for string