]> git.saurik.com Git - wxWidgets.git/commitdiff
Styles now sorted alphabetically
authorJulian Smart <julian@anthemion.co.uk>
Sun, 26 Nov 2006 12:47:53 +0000 (12:47 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Sun, 26 Nov 2006 12:47:53 +0000 (12:47 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43652 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/richtext/richtextstyles.h
src/richtext/richtextstyles.cpp

index b15ee9f94a793a1598d1c296389b68d9af943e65..8be842cc7493a4c3d31e91a8bdcf0c0d8aff6d9d 100644 (file)
@@ -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;
 };
 
 /*!
index 37ac00b4fc48d998077be821661bf87bf67647b1..fdefed82df072bb4fa8b163178dc46c744e9b471 100644 (file)
@@ -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