]> git.saurik.com Git - wxWidgets.git/commitdiff
Added outline level
authorJulian Smart <julian@anthemion.co.uk>
Fri, 10 Nov 2006 15:48:46 +0000 (15:48 +0000)
committerJulian Smart <julian@anthemion.co.uk>
Fri, 10 Nov 2006 15:48:46 +0000 (15:48 +0000)
Removed unnecessary wxRichTextAttr::CopyTo

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@43277 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/latex/wx/richtextattr.tex
docs/latex/wx/textattrex.tex
include/wx/richtext/richtextbuffer.h
include/wx/richtext/richtextindentspage.h
src/richtext/richtextbuffer.cpp
src/richtext/richtextdialogs.pjd
src/richtext/richtextindentspage.cpp
src/richtext/richtextxml.cpp

index 2c3631d44a2c4892d80f4cc19dea49e4818408e1..2f1bcbdfe688d1f7513340a78d0c294259c2ab05 100644 (file)
@@ -80,6 +80,7 @@ for a text control.
 #define wxTEXT_ATTR_URL                     0x00200000
 #define wxTEXT_ATTR_PAGE_BREAK              0x00400000
 #define wxTEXT_ATTR_EFFECTS                 0x00800000
+#define wxTEXT_ATTR_OUTLINE_LEVEL           0x01000000
 \end{verbatim}
 }
 
@@ -297,6 +298,12 @@ wxTEXT\_ATTR\_LINE\_SPACING\_HALF, and wxTEXT\_ATTR\_LINE\_SPACING\_TWICE.
 
 Returns the name of the list style.
 
+\membersection{wxRichTextAttr::GetOutlineLevel}\label{wxrichtextattrgetoutlinelevel}
+
+\constfunc{bool}{GetOutlineLevel}{\void}
+
+Returns the outline level.
+
 \membersection{wxRichTextAttr::GetParagraphSpacingAfter}\label{wxrichtextattrgetparagraphspacingafter}
 
 \constfunc{int}{GetParagraphSpacingAfter}{\void}
@@ -439,6 +446,12 @@ Returns \true if the attribute object specifies line spacing.
 
 Returns \true if the attribute object specifies a list style name.
 
+\membersection{wxRichTextAttr::HasOutlineLevel}\label{wxrichtextattrhasoutlinelevel}
+
+\constfunc{bool}{HasOutlineLevel}{\void}
+
+Returns \true if the attribute object specifies an outline level.
+
 \membersection{wxRichTextAttr::HasPageBreak}\label{wxrichtextattrhaspagebreak}
 
 \constfunc{bool}{HasPageBreak}{\void}
@@ -487,12 +500,24 @@ Returns \true if the attribute object specifies tab stops.
 
 Returns \true if the attribute object specifies a text foreground colour.
 
+\membersection{wxRichTextAttr::HasTextEffects}\label{wxrichtextattrhastexteffects}
+
+\constfunc{bool}{HasTextEffects}{\void}
+
+Returns \true if the attribute object specifies text effects.
+
 \membersection{wxRichTextAttr::HasUnderlined}\label{wxrichtextattrhasunderlined}
 
 \constfunc{bool}{HasUnderlined}{\void}
 
 Returns \true if the attribute object specifies either underlining or no underlining.
 
+\membersection{wxRichTextAttr::HasURL}\label{wxrichtextattrhasurl}
+
+\constfunc{bool}{HasURL}{\void}
+
+Returns \true if the attribute object specifies a URL.
+
 \membersection{wxRichTextAttr::HasWeight}\label{wxrichtextattrhasweight}
 
 \constfunc{bool}{HasWeight}{\void}
@@ -658,6 +683,7 @@ flags can be passed in a bitlist:
 #define wxTEXT_ATTR_URL                     0x00200000
 #define wxTEXT_ATTR_PAGE_BREAK              0x00400000
 #define wxTEXT_ATTR_EFFECTS                 0x00800000
+#define wxTEXT_ATTR_OUTLINE_LEVEL           0x01000000
 \end{verbatim}
 }
 
@@ -729,6 +755,14 @@ defined for convenience:
 
 Sets the list style name.
 
+\membersection{wxRichTextAttr::SetOutlineLevel}\label{wxrichtextattrsetoutlinelevel}
+
+\func{void}{SetOutlineLevel}{\param{int}{ level}}
+
+Specifies the outline level. Zero represents normal text. At present, the outline level is
+not used, but may be used in future for determining list levels and for applications
+that need to store document structure information.
+
 \membersection{wxRichTextAttr::SetPageBreak}\label{wxrichtextattrsetpagebreak}
 
 \func{void}{SetPageBreak}{\param{bool}{ pageBreak = true}}
index 5c94102976f6413172cf61c5f083535354eb4ac6..f190f3b59b4084907eb80daf5d88f823def44af4 100644 (file)
@@ -83,6 +83,7 @@ for a text control.
 #define wxTEXT_ATTR_URL                     0x00200000
 #define wxTEXT_ATTR_PAGE_BREAK              0x00400000
 #define wxTEXT_ATTR_EFFECTS                 0x00800000
+#define wxTEXT_ATTR_OUTLINE_LEVEL           0x01000000
 \end{verbatim}
 }
 
@@ -220,6 +221,12 @@ wxTEXT\_ATTR\_LINE\_SPACING\_HALF, and wxTEXT\_ATTR\_LINE\_SPACING\_TWICE.
 
 Returns the name of the list style.
 
+\membersection{wxTextAttrEx::GetOutlineLevel}\label{wxtextattrexgetoutlinelevel}
+
+\constfunc{bool}{GetOutlineLevel}{\void}
+
+Returns the outline level.
+
 \membersection{wxTextAttrEx::GetParagraphSpacingAfter}\label{wxtextattrexgetparagraphspacingafter}
 
 \constfunc{int}{GetParagraphSpacingAfter}{\void}
@@ -301,6 +308,12 @@ Returns \true if the attribute object specifies line spacing.
 
 Returns \true if the attribute object specifies a list style name.
 
+\membersection{wxTextAttrEx::HasOutlineLevel}\label{wxtextattrexhasoutlinelevel}
+
+\constfunc{bool}{HasOutlineLevel}{\void}
+
+Returns \true if the attribute object specifies an outline level.
+
 \membersection{wxTextAttrEx::HasPageBreak}\label{wxtextattrexhaspagebreak}
 
 \constfunc{bool}{HasPageBreak}{\void}
@@ -325,6 +338,18 @@ Returns \true if the attribute object specifies spacing before a paragraph.
 
 Returns \true if the attribute object specifies a paragraph style name.
 
+\membersection{wxTextAttrEx::HasTextEffects}\label{wxtextattrexhastexteffects}
+
+\constfunc{bool}{HasTextEffects}{\void}
+
+Returns \true if the attribute object specifies text effects.
+
+\membersection{wxTextAttrEx::HasURL}\label{wxtextattrexhasurl}
+
+\constfunc{bool}{HasURL}{\void}
+
+Returns \true if the attribute object specifies a URL.
+
 \membersection{wxTextAttrEx::Init}\label{wxtextattrexinit}
 
 \func{void}{Init}{\void}
@@ -436,6 +461,14 @@ defined for convenience:
 
 Sets the list style name.
 
+\membersection{wxTextAttrEx::SetOutlineLevel}\label{wxtextattrexsetoutlinelevel}
+
+\func{void}{SetOutlineLevel}{\param{int}{ level}}
+
+Specifies the outline level. Zero represents normal text. At present, the outline level is
+not used, but may be used in future for determining list levels and for applications
+that need to store document structure information.
+
 \membersection{wxTextAttrEx::SetPageBreak}\label{wxtextattrexsetpagebreak}
 
 \func{void}{SetPageBreak}{\param{bool}{ pageBreak = true}}
index 8a1149dec6eaf290abb4fbc959e83a939c939269..c57f858c331a2290b895bc2474049223caab5300 100644 (file)
@@ -200,6 +200,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextBuffer;
 #define wxTEXT_ATTR_URL                     0x00200000
 #define wxTEXT_ATTR_PAGE_BREAK              0x00400000
 #define wxTEXT_ATTR_EFFECTS                 0x00800000
+#define wxTEXT_ATTR_OUTLINE_LEVEL           0x01000000
 
 /*!
  * Styles for wxTextAttrEx::SetBulletStyle
@@ -256,7 +257,7 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextBuffer;
 #define wxTEXT_ATTR_PARAGRAPH (wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_TABS|\
     wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|wxTEXT_ATTR_LINE_SPACING|\
     wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_TEXT|wxTEXT_ATTR_BULLET_NAME|\
-    wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME)
+    wxTEXT_ATTR_PARAGRAPH_STYLE_NAME|wxTEXT_ATTR_LIST_STYLE_NAME|wxTEXT_ATTR_OUTLINE_LEVEL)
 
 #define wxTEXT_ATTR_ALL (wxTEXT_ATTR_CHARACTER|wxTEXT_ATTR_PARAGRAPH)
 
@@ -367,6 +368,7 @@ public:
     void SetPageBreak(bool pageBreak = true) { SetFlags(pageBreak ? (GetFlags() | wxTEXT_ATTR_PAGE_BREAK) : (GetFlags() & ~wxTEXT_ATTR_PAGE_BREAK)); }
     void SetTextEffects(int effects) { m_textEffects = effects; SetFlags(GetFlags() | wxTEXT_ATTR_EFFECTS); }
     void SetTextEffectFlags(int effects) { m_textEffectFlags = effects; }
+    void SetOutlineLevel(int level) { m_outlineLevel = level; SetFlags(GetFlags() | wxTEXT_ATTR_OUTLINE_LEVEL); }
 
     const wxString& GetCharacterStyleName() const { return m_characterStyleName; }
     const wxString& GetParagraphStyleName() const { return m_paragraphStyleName; }
@@ -382,6 +384,7 @@ public:
     const wxString& GetURL() const { return m_urlTarget; }
     int GetTextEffects() const { return m_textEffects; }
     int GetTextEffectFlags() const { return m_textEffectFlags; }
+    int GetOutlineLevel() const { return m_outlineLevel; }
 
     bool HasWeight() const { return (GetFlags() & wxTEXT_ATTR_FONT_WEIGHT) != 0; }
     bool HasSize() const { return (GetFlags() & wxTEXT_ATTR_FONT_SIZE) != 0; }
@@ -403,6 +406,7 @@ public:
     bool HasPageBreak() const { return HasFlag(wxTEXT_ATTR_PAGE_BREAK); }
     bool HasTextEffects() const { return HasFlag(wxTEXT_ATTR_EFFECTS); }
     bool HasTextEffect(int effect) const { return HasFlag(wxTEXT_ATTR_EFFECTS) && ((GetTextEffectFlags() & effect) != 0); }
+    bool HasOutlineLevel() const { return HasFlag(wxTEXT_ATTR_OUTLINE_LEVEL); }
 
     // Is this a character style?
     bool IsCharacterStyle() const { return (0 != (GetFlags() & wxTEXT_ATTR_CHARACTER)); }
@@ -430,6 +434,7 @@ private:
     int                 m_bulletNumber;
     int                 m_textEffects;
     int                 m_textEffectFlags;
+    int                 m_outlineLevel;
     wxString            m_bulletText;
     wxString            m_bulletFont;
     wxString            m_bulletName;
@@ -479,9 +484,6 @@ public:
     // Making a wxTextAttrEx object.
     operator wxTextAttrEx () const ;
 
-    // Copy to a wxTextAttr
-    void CopyTo(wxTextAttrEx& attr) const;
-
     // Create font from font attributes.
     wxFont CreateFont() const;
 
@@ -519,6 +521,7 @@ public:
     void SetPageBreak(bool pageBreak = true) { SetFlags(pageBreak ? (GetFlags() | wxTEXT_ATTR_PAGE_BREAK) : (GetFlags() & ~wxTEXT_ATTR_PAGE_BREAK)); }
     void SetTextEffects(int effects) { m_textEffects = effects; SetFlags(GetFlags() | wxTEXT_ATTR_EFFECTS); }
     void SetTextEffectFlags(int effects) { m_textEffectFlags = effects; }
+    void SetOutlineLevel(int level) { m_outlineLevel = level; SetFlags(GetFlags() | wxTEXT_ATTR_OUTLINE_LEVEL); }
 
     const wxColour& GetTextColour() const { return m_colText; }
     const wxColour& GetBackgroundColour() const { return m_colBack; }
@@ -549,6 +552,7 @@ public:
     const wxString& GetURL() const { return m_urlTarget; }
     int GetTextEffects() const { return m_textEffects; }
     int GetTextEffectFlags() const { return m_textEffectFlags; }
+    int GetOutlineLevel() const { return m_outlineLevel; }
 
     // accessors
     bool HasTextColour() const { return m_colText.Ok() && HasFlag(wxTEXT_ATTR_TEXT_COLOUR) ; }
@@ -578,6 +582,7 @@ public:
     bool HasPageBreak() const { return HasFlag(wxTEXT_ATTR_PAGE_BREAK); }
     bool HasTextEffects() const { return HasFlag(wxTEXT_ATTR_EFFECTS); }
     bool HasTextEffect(int effect) const { return HasFlag(wxTEXT_ATTR_EFFECTS) && ((GetTextEffectFlags() & effect) != 0); }
+    bool HasOutlineLevel() const { return HasFlag(wxTEXT_ATTR_OUTLINE_LEVEL); }
 
     bool HasFlag(long flag) const { return (m_flags & flag) != 0; }
 
@@ -616,6 +621,7 @@ private:
     int                 m_bulletNumber;
     int                 m_textEffects;
     int                 m_textEffectFlags;
+    int                 m_outlineLevel;
     wxString            m_bulletText;
     wxString            m_bulletFont;
     wxString            m_bulletName;
@@ -1136,7 +1142,7 @@ public:
 
     /// Set basic (overall) style
     virtual void SetBasicStyle(const wxTextAttrEx& style) { m_attributes = style; }
-    virtual void SetBasicStyle(const wxRichTextAttr& style) { style.CopyTo(m_attributes); }
+    virtual void SetBasicStyle(const wxRichTextAttr& style) { m_attributes = style; }
 
     /// Get basic (overall) style
     virtual const wxTextAttrEx& GetBasicStyle() const { return m_attributes; }
index a99957929c12c60cae82f8654655cd2a62cb8914..a801703c82c0c7fe845a04fd13d78fd9970b0465 100644 (file)
@@ -99,6 +99,9 @@ public:
     /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT
     void OnIndentRightUpdated( wxCommandEvent& event );
 
+    /// wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL
+    void OnRichtextOutlinelevelSelected( wxCommandEvent& event );
+
     /// wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE
     void OnSpacingBeforeUpdated( wxCommandEvent& event );
 
@@ -131,6 +134,7 @@ public:
     wxTextCtrl* m_indentLeft;
     wxTextCtrl* m_indentLeftFirst;
     wxTextCtrl* m_indentRight;
+    wxComboBox* m_outlineLevelCtrl;
     wxTextCtrl* m_spacingBefore;
     wxTextCtrl* m_spacingAfter;
     wxComboBox* m_spacingLine;
@@ -146,6 +150,7 @@ public:
         ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT = 10103,
         ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST = 10104,
         ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT = 10113,
+        ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL = 10105,
         ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE = 10114,
         ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER = 10116,
         ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_LINE = 10115,
index e361c51a296211e8243e46e8a70d27ed95107205..fceaaf7dc16f48373e6ec165500586a5ec7416e5 100644 (file)
@@ -2261,6 +2261,21 @@ bool wxRichTextParagraphLayoutBox::CollectStyle(wxTextAttrEx& currentStyle, cons
         }
     }
 
+    if (style.HasOutlineLevel() && !wxHasStyle(multipleStyleAttributes, wxTEXT_ATTR_OUTLINE_LEVEL))
+    {
+        if (currentStyle.HasOutlineLevel())
+        {
+            if (currentStyle.GetOutlineLevel() != style.GetOutlineLevel())
+            {
+                // Clash of style - mark as such
+                multipleStyleAttributes |= wxTEXT_ATTR_OUTLINE_LEVEL;
+                currentStyle.SetFlags(currentStyle.GetFlags() & ~wxTEXT_ATTR_OUTLINE_LEVEL);
+            }
+        }
+        else
+            currentStyle.SetOutlineLevel(style.GetOutlineLevel());
+    }
+
     return true;
 }
 
@@ -5185,8 +5200,7 @@ bool wxRichTextBuffer::BeginCharacterStyle(const wxString& characterStyle)
         wxRichTextCharacterStyleDefinition* def = GetStyleSheet()->FindCharacterStyle(characterStyle);
         if (def)
         {
-            wxTextAttrEx attr;
-            def->GetStyle().CopyTo(attr);
+            wxTextAttrEx attr = def->GetStyle();
             return BeginStyle(attr);
         }
     }
@@ -5201,8 +5215,7 @@ bool wxRichTextBuffer::BeginParagraphStyle(const wxString& paragraphStyle)
         wxRichTextParagraphStyleDefinition* def = GetStyleSheet()->FindParagraphStyle(paragraphStyle);
         if (def)
         {
-            wxTextAttrEx attr;
-            def->GetStyle().CopyTo(attr);
+            wxTextAttrEx attr = def->GetStyle();
             return BeginStyle(attr);
         }
     }
@@ -5237,7 +5250,7 @@ bool wxRichTextBuffer::BeginURL(const wxString& url, const wxString& characterSt
         wxRichTextCharacterStyleDefinition* def = GetStyleSheet()->FindCharacterStyle(characterStyle);
         if (def)
         {
-            def->GetStyle().CopyTo(attr);
+            attr = def->GetStyle();
         }
     }
     attr.SetURL(url);
@@ -6400,6 +6413,7 @@ bool wxTextAttrEq(const wxTextAttrEx& attr1, const wxRichTextAttr& attr2)
         attr1.GetBulletText() == attr2.GetBulletText() &&
         attr1.GetBulletName() == attr2.GetBulletName() &&
         attr1.GetBulletFont() == attr2.GetBulletFont() &&
+        attr1.GetOutlineLevel() == attr2.GetOutlineLevel() &&
         attr1.GetCharacterStyleName() == attr2.GetCharacterStyleName() &&
         attr1.GetParagraphStyleName() == attr2.GetParagraphStyleName() &&
         attr1.GetListStyleName() == attr2.GetListStyleName() &&
@@ -6504,6 +6518,10 @@ bool wxTextAttrEqPartial(const wxTextAttrEx& attr1, const wxTextAttrEx& attr2, i
             return false;
     }
 
+    if ((flags & wxTEXT_ATTR_OUTLINE_LEVEL) &&
+        (attr1.GetOutlineLevel() != attr2.GetOutlineLevel()))
+         return false;
+
     return true;
 }
 
@@ -6606,6 +6624,10 @@ bool wxTextAttrEqPartial(const wxTextAttrEx& attr1, const wxRichTextAttr& attr2,
             return false;
     }
 
+    if ((flags & wxTEXT_ATTR_OUTLINE_LEVEL) &&
+        (attr1.GetOutlineLevel() != attr2.GetOutlineLevel()))
+         return false;
+
     return true;
 }
 
@@ -6745,13 +6767,15 @@ bool wxRichTextApplyStyle(wxTextAttrEx& destStyle, const wxTextAttrEx& style)
         destStyle.SetTextEffectFlags(destFlags);
     }
 
+    if (style.HasOutlineLevel())
+        destStyle.SetOutlineLevel(style.GetOutlineLevel());
+
     return true;
 }
 
 bool wxRichTextApplyStyle(wxRichTextAttr& destStyle, const wxTextAttrEx& style)
 {
-    wxTextAttrEx destStyle2;
-    destStyle.CopyTo(destStyle2);
+    wxTextAttrEx destStyle2 = destStyle;
     wxRichTextApplyStyle(destStyle2, style);
     destStyle = destStyle2;
     return true;
@@ -6982,6 +7006,12 @@ bool wxRichTextApplyStyle(wxTextAttrEx& destStyle, const wxRichTextAttr& style,
         }
     }
 
+    if (style.HasOutlineLevel())
+    {
+        if (!(compareWith && compareWith->HasOutlineLevel() && compareWith->GetOutlineLevel() == style.GetOutlineLevel()))
+            destStyle.SetOutlineLevel(style.GetOutlineLevel());
+    }
+
     return true;
 }
 
@@ -7137,6 +7167,7 @@ void wxRichTextAttr::Init()
     m_bulletStyle = wxTEXT_ATTR_BULLET_STYLE_NONE;
     m_textEffects = wxTEXT_ATTR_EFFECT_NONE;
     m_textEffectFlags = wxTEXT_ATTR_EFFECT_NONE;
+    m_outlineLevel = 0;
     m_bulletNumber = 0;
 }
 
@@ -7171,6 +7202,7 @@ void wxRichTextAttr::Copy(const wxRichTextAttr& attr)
     m_bulletText = attr.m_bulletText;
     m_bulletFont = attr.m_bulletFont;
     m_bulletName = attr.m_bulletName;
+    m_outlineLevel = attr.m_outlineLevel;
 
     m_urlTarget = attr.m_urlTarget;
 }
@@ -7207,6 +7239,7 @@ void wxRichTextAttr::operator= (const wxTextAttrEx& attr)
     m_bulletText = attr.GetBulletText();
     m_bulletName = attr.GetBulletName();
     m_bulletFont = attr.GetBulletFont();
+    m_outlineLevel = attr.GetOutlineLevel();
 
     m_urlTarget = attr.GetURL();
 
@@ -7218,7 +7251,32 @@ void wxRichTextAttr::operator= (const wxTextAttrEx& attr)
 wxRichTextAttr::operator wxTextAttrEx () const
 {
     wxTextAttrEx attr;
-    CopyTo(attr);
+    attr.SetTextColour(GetTextColour());
+    attr.SetBackgroundColour(GetBackgroundColour());
+    attr.SetAlignment(GetAlignment());
+    attr.SetTabs(GetTabs());
+    attr.SetLeftIndent(GetLeftIndent(), GetLeftSubIndent());
+    attr.SetRightIndent(GetRightIndent());
+    attr.SetFont(CreateFont());
+
+    attr.SetParagraphSpacingAfter(m_paragraphSpacingAfter);
+    attr.SetParagraphSpacingBefore(m_paragraphSpacingBefore);
+    attr.SetLineSpacing(m_lineSpacing);
+    attr.SetBulletStyle(m_bulletStyle);
+    attr.SetBulletNumber(m_bulletNumber);
+    attr.SetBulletText(m_bulletText);
+    attr.SetBulletName(m_bulletName);
+    attr.SetBulletFont(m_bulletFont);
+    attr.SetCharacterStyleName(m_characterStyleName);
+    attr.SetParagraphStyleName(m_paragraphStyleName);
+    attr.SetListStyleName(m_listStyleName);
+    attr.SetTextEffects(m_textEffects);
+    attr.SetTextEffectFlags(m_textEffectFlags);
+    attr.SetOutlineLevel(m_outlineLevel);
+
+    attr.SetURL(m_urlTarget);
+
+    attr.SetFlags(GetFlags()); // Important: set after SetFont and others, since they set flags
     return attr;
 }
 
@@ -7252,43 +7310,15 @@ bool wxRichTextAttr::operator== (const wxRichTextAttr& attr) const
             GetTextEffects() == attr.GetTextEffects() &&
             GetTextEffectFlags() == attr.GetTextEffectFlags() &&
 
-            m_fontSize == attr.m_fontSize &&
-            m_fontStyle == attr.m_fontStyle &&
-            m_fontWeight == attr.m_fontWeight &&
-            m_fontUnderlined == attr.m_fontUnderlined &&
-            m_fontFaceName == attr.m_fontFaceName &&
-            
-            m_urlTarget == attr.m_urlTarget;
-}
-
-// Copy to a wxTextAttr
-void wxRichTextAttr::CopyTo(wxTextAttrEx& attr) const
-{
-    attr.SetTextColour(GetTextColour());
-    attr.SetBackgroundColour(GetBackgroundColour());
-    attr.SetAlignment(GetAlignment());
-    attr.SetTabs(GetTabs());
-    attr.SetLeftIndent(GetLeftIndent(), GetLeftSubIndent());
-    attr.SetRightIndent(GetRightIndent());
-    attr.SetFont(CreateFont());
-
-    attr.SetParagraphSpacingAfter(m_paragraphSpacingAfter);
-    attr.SetParagraphSpacingBefore(m_paragraphSpacingBefore);
-    attr.SetLineSpacing(m_lineSpacing);
-    attr.SetBulletStyle(m_bulletStyle);
-    attr.SetBulletNumber(m_bulletNumber);
-    attr.SetBulletText(m_bulletText);
-    attr.SetBulletName(m_bulletName);
-    attr.SetBulletFont(m_bulletFont);
-    attr.SetCharacterStyleName(m_characterStyleName);
-    attr.SetParagraphStyleName(m_paragraphStyleName);
-    attr.SetListStyleName(m_listStyleName);
-    attr.SetTextEffects(m_textEffects);
-    attr.SetTextEffectFlags(m_textEffectFlags);
-
-    attr.SetURL(m_urlTarget);
+            GetOutlineLevel() == attr.GetOutlineLevel() &&
 
-    attr.SetFlags(GetFlags()); // Important: set after SetFont and others, since they set flags
+            GetFontSize() == attr.GetFontSize() &&
+            GetFontStyle() == attr.GetFontStyle() &&
+            GetFontWeight() == attr.GetFontWeight() &&
+            GetFontUnderlined() == attr.GetFontUnderlined() &&
+            GetFontFaceName() == attr.GetFontFaceName() &&
+            
+            GetURL() == attr.GetURL();
 }
 
 // Create font from font attributes.
@@ -7422,6 +7452,9 @@ wxRichTextAttr wxRichTextAttr::Combine(const wxRichTextAttr& attr,
         newAttr.SetTextEffectFlags(attr.GetTextEffectFlags());
     }
 
+    if (attr.HasOutlineLevel())
+        newAttr.SetOutlineLevel(attr.GetOutlineLevel());
+
     return newAttr;
 }
 
@@ -7444,6 +7477,7 @@ void wxTextAttrEx::Init()
     m_textEffects = wxTEXT_ATTR_EFFECT_NONE;
     m_textEffectFlags = wxTEXT_ATTR_EFFECT_NONE;
     m_bulletNumber = 0;
+    m_outlineLevel = 0;
 }
 
 // Copy
@@ -7465,6 +7499,7 @@ void wxTextAttrEx::Copy(const wxTextAttrEx& attr)
     m_urlTarget = attr.m_urlTarget;
     m_textEffects = attr.m_textEffects;
     m_textEffectFlags = attr.m_textEffectFlags;
+    m_outlineLevel = attr.m_outlineLevel;
 }
 
 // Assignment from a wxTextAttrEx object
@@ -7483,10 +7518,12 @@ void wxTextAttrEx::operator= (const wxTextAttr& attr)
 bool wxTextAttrEx::operator== (const wxTextAttrEx& attr) const
 {
     return (
+        GetFlags() == attr.GetFlags() &&
         GetTextColour() == attr.GetTextColour() &&
         GetBackgroundColour() == attr.GetBackgroundColour() &&
         GetFont() == attr.GetFont() &&
         GetTextEffects() == attr.GetTextEffects() &&
+        GetTextEffectFlags() == attr.GetTextEffectFlags() &&
         GetAlignment() == attr.GetAlignment() &&
         GetLeftIndent() == attr.GetLeftIndent() &&
         GetRightIndent() == attr.GetRightIndent() &&
@@ -7503,6 +7540,7 @@ bool wxTextAttrEx::operator== (const wxTextAttrEx& attr) const
         GetCharacterStyleName() == attr.GetCharacterStyleName() &&
         GetParagraphStyleName() == attr.GetParagraphStyleName() &&
         GetListStyleName() == attr.GetListStyleName() &&
+        GetOutlineLevel() == attr.GetOutlineLevel() &&
         GetURL() == attr.GetURL());
 }
 
@@ -7660,6 +7698,9 @@ wxTextAttrEx wxTextAttrEx::CombineEx(const wxTextAttrEx& attr,
         newAttr.SetTextEffectFlags(attr.GetTextEffectFlags());
     }
 
+    if (attr.HasOutlineLevel())
+        newAttr.SetOutlineLevel(attr.GetOutlineLevel());
+
     return newAttr;
 }
 
index e9f1a5b1c23d5de100eea248c39d2efc836b418d..69360c41277c50504003d921c8819296848a95ed 100644 (file)
@@ -6,7 +6,7 @@
     <string name="title">""</string>
     <string name="author">""</string>
     <string name="description">""</string>
-    <long name="doc_count">283</long>
+    <long name="doc_count">285</long>
     <string name="xrc_filename">""</string>
     <bool name="convert_images_to_xpm">0</bool>
     <bool name="inline_images">0</bool>
             <string name="proxy-type">"wbBoxSizerProxy"</string>
             <string name="proxy-Orientation">"Vertical"</string>
             <string name="proxy-Member variable name">""</string>
+            <string name="proxy-AlignH">"Centre"</string>
+            <string name="proxy-AlignV">"Centre"</string>
+            <long name="proxy-Stretch factor">0</long>
+            <long name="proxy-Border">5</long>
+            <bool name="proxy-wxLEFT">1</bool>
+            <bool name="proxy-wxRIGHT">1</bool>
+            <bool name="proxy-wxTOP">1</bool>
+            <bool name="proxy-wxBOTTOM">1</bool>
             <bool name="proxy-wxSHAPED">0</bool>
             <bool name="proxy-wxADJUST_MINSIZE">0</bool>
             <bool name="proxy-wxFIXED_MINSIZE">0</bool>
             <string name="proxy-type">"wbBoxSizerProxy"</string>
             <string name="proxy-Orientation">"Vertical"</string>
             <string name="proxy-Member variable name">""</string>
-            <string name="proxy-AlignH">"Centre"</string>
-            <string name="proxy-AlignV">"Centre"</string>
-            <long name="proxy-Stretch factor">0</long>
-            <long name="proxy-Border">5</long>
-            <bool name="proxy-wxLEFT">1</bool>
-            <bool name="proxy-wxRIGHT">1</bool>
-            <bool name="proxy-wxTOP">1</bool>
-            <bool name="proxy-wxBOTTOM">1</bool>
             <bool name="proxy-wxSHAPED">0</bool>
             <bool name="proxy-wxADJUST_MINSIZE">0</bool>
             <bool name="proxy-wxFIXED_MINSIZE">0</bool>
                         <string name="proxy-type">"wbBoxSizerProxy"</string>
                         <string name="proxy-Orientation">"Horizontal"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-AlignH">"Centre"</string>
+                        <string name="proxy-AlignH">"Expand"</string>
                         <string name="proxy-AlignV">"Centre"</string>
                         <long name="proxy-Stretch factor">0</long>
                         <long name="proxy-Border">5</long>
                           <long name="proxy-Height">-1</long>
                           <string name="proxy-AlignH">"Centre"</string>
                           <string name="proxy-AlignV">"Centre"</string>
-                          <long name="proxy-Stretch factor">0</long>
+                          <long name="proxy-Stretch factor">1</long>
                           <long name="proxy-Border">5</long>
                           <bool name="proxy-wxLEFT">1</bool>
                           <bool name="proxy-wxRIGHT">1</bool>
                         <string name="proxy-type">"wbBoxSizerProxy"</string>
                         <string name="proxy-Orientation">"Horizontal"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-AlignH">"Centre"</string>
+                        <string name="proxy-AlignH">"Expand"</string>
                         <string name="proxy-AlignV">"Centre"</string>
                         <long name="proxy-Stretch factor">0</long>
                         <long name="proxy-Border">5</long>
                           <long name="proxy-Height">-1</long>
                           <string name="proxy-AlignH">"Centre"</string>
                           <string name="proxy-AlignV">"Centre"</string>
-                          <long name="proxy-Stretch factor">0</long>
+                          <long name="proxy-Stretch factor">1</long>
                           <long name="proxy-Border">5</long>
                           <bool name="proxy-wxLEFT">1</bool>
                           <bool name="proxy-wxRIGHT">1</bool>
                         <string name="proxy-type">"wbBoxSizerProxy"</string>
                         <string name="proxy-Orientation">"Horizontal"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-AlignH">"Centre"</string>
+                        <string name="proxy-AlignH">"Expand"</string>
                         <string name="proxy-AlignV">"Centre"</string>
                         <long name="proxy-Stretch factor">0</long>
                         <long name="proxy-Border">5</long>
                           <long name="proxy-Height">-1</long>
                           <string name="proxy-AlignH">"Centre"</string>
                           <string name="proxy-AlignV">"Centre"</string>
-                          <long name="proxy-Stretch factor">0</long>
+                          <long name="proxy-Stretch factor">1</long>
                           <long name="proxy-Border">5</long>
                           <bool name="proxy-wxLEFT">1</bool>
                           <bool name="proxy-wxRIGHT">1</bool>
                           <string name="proxy-Custom ctor arguments">""</string>
                         </document>
                       </document>
+                      <document>
+                        <string name="title">"wxStaticText: wxID_STATIC"</string>
+                        <string name="type">"dialog-control-document"</string>
+                        <string name="filename">""</string>
+                        <string name="icon-name">"statictext"</string>
+                        <long name="is-transient">0</long>
+                        <long name="owns-file">1</long>
+                        <long name="title-mode">0</long>
+                        <long name="locked">0</long>
+                        <string name="created">"10/11/2006"</string>
+                        <string name="proxy-type">"wbStaticTextProxy"</string>
+                        <string name="proxy-Id name">"wxID_STATIC"</string>
+                        <long name="proxy-Id value">5105</long>
+                        <string name="proxy-Class">"wxStaticText"</string>
+                        <string name="proxy-Member variable name">""</string>
+                        <string name="proxy-Label">"&amp;Outline level:"</string>
+                        <long name="proxy-Wrapping width">-1</long>
+                        <string name="proxy-Help text">""</string>
+                        <string name="proxy-Tooltip text">""</string>
+                        <string name="proxy-Background colour">""</string>
+                        <string name="proxy-Foreground colour">""</string>
+                        <string name="proxy-Font">""</string>
+                        <bool name="proxy-Hidden">0</bool>
+                        <bool name="proxy-Enabled">1</bool>
+                        <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+                        <string name="proxy-Data variable">""</string>
+                        <string name="proxy-Data validator">""</string>
+                        <bool name="proxy-wxALIGN_LEFT">0</bool>
+                        <bool name="proxy-wxALIGN_RIGHT">0</bool>
+                        <bool name="proxy-wxALIGN_CENTRE">0</bool>
+                        <bool name="proxy-wxST_NO_AUTORESIZE">0</bool>
+                        <bool name="proxy-wxNO_BORDER">0</bool>
+                        <bool name="proxy-wxSIMPLE_BORDER">0</bool>
+                        <bool name="proxy-wxDOUBLE_BORDER">0</bool>
+                        <bool name="proxy-wxSUNKEN_BORDER">0</bool>
+                        <bool name="proxy-wxRAISED_BORDER">0</bool>
+                        <bool name="proxy-wxSTATIC_BORDER">0</bool>
+                        <bool name="proxy-wxWANTS_CHARS">0</bool>
+                        <bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
+                        <bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
+                        <string name="proxy-Custom styles">""</string>
+                        <long name="proxy-X">-1</long>
+                        <long name="proxy-Y">-1</long>
+                        <long name="proxy-Width">-1</long>
+                        <long name="proxy-Height">-1</long>
+                        <string name="proxy-AlignH">"Centre"</string>
+                        <string name="proxy-AlignV">"Centre"</string>
+                        <long name="proxy-Stretch factor">0</long>
+                        <long name="proxy-Border">5</long>
+                        <bool name="proxy-wxLEFT">1</bool>
+                        <bool name="proxy-wxRIGHT">1</bool>
+                        <bool name="proxy-wxTOP">1</bool>
+                        <bool name="proxy-wxBOTTOM">1</bool>
+                        <bool name="proxy-wxSHAPED">0</bool>
+                        <bool name="proxy-wxADJUST_MINSIZE">1</bool>
+                        <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+                        <string name="proxy-Custom arguments">""</string>
+                        <string name="proxy-Custom ctor arguments">""</string>
+                      </document>
+                      <document>
+                        <string name="title">"wxComboBox: ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL"</string>
+                        <string name="type">"dialog-control-document"</string>
+                        <string name="filename">""</string>
+                        <string name="icon-name">"combobox"</string>
+                        <long name="is-transient">0</long>
+                        <long name="owns-file">1</long>
+                        <long name="title-mode">0</long>
+                        <long name="locked">0</long>
+                        <string name="created">"10/11/2006"</string>
+                        <string name="proxy-type">"wbComboBoxProxy"</string>
+                        <string name="event-handler-0">"wxEVT_COMMAND_COMBOBOX_SELECTED|OnRichtextOutlinelevelSelected"</string>
+                        <string name="proxy-Id name">"ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL"</string>
+                        <long name="proxy-Id value">10105</long>
+                        <string name="proxy-Class">"wxComboBox"</string>
+                        <string name="proxy-Member variable name">"m_outlineLevelCtrl"</string>
+                        <string name="proxy-Strings">"Normal|1|2|3|4|5|6|7|8|9"</string>
+                        <string name="proxy-Initial value">"Normal"</string>
+                        <string name="proxy-Help text">"The outline level."</string>
+                        <string name="proxy-Tooltip text">""</string>
+                        <string name="proxy-Background colour">""</string>
+                        <string name="proxy-Foreground colour">""</string>
+                        <string name="proxy-Font">""</string>
+                        <bool name="proxy-Hidden">0</bool>
+                        <bool name="proxy-Enabled">1</bool>
+                        <string name="proxy-Platform">"&lt;Any platform&gt;"</string>
+                        <string name="proxy-Data variable">""</string>
+                        <string name="proxy-Data validator">""</string>
+                        <bool name="proxy-wxCB_SIMPLE">0</bool>
+                        <bool name="proxy-wxCB_DROPDOWN">0</bool>
+                        <bool name="proxy-wxCB_READONLY">1</bool>
+                        <bool name="proxy-wxCB_SORT">0</bool>
+                        <bool name="proxy-wxWANTS_CHARS">0</bool>
+                        <bool name="proxy-wxNO_FULL_REPAINT_ON_RESIZE">0</bool>
+                        <bool name="proxy-wxFULL_REPAINT_ON_RESIZE">0</bool>
+                        <string name="proxy-Custom styles">""</string>
+                        <long name="proxy-X">-1</long>
+                        <long name="proxy-Y">-1</long>
+                        <long name="proxy-Width">-1</long>
+                        <long name="proxy-Height">-1</long>
+                        <string name="proxy-AlignH">"Expand"</string>
+                        <string name="proxy-AlignV">"Centre"</string>
+                        <long name="proxy-Stretch factor">1</long>
+                        <long name="proxy-Border">5</long>
+                        <bool name="proxy-wxLEFT">1</bool>
+                        <bool name="proxy-wxRIGHT">1</bool>
+                        <bool name="proxy-wxTOP">1</bool>
+                        <bool name="proxy-wxBOTTOM">1</bool>
+                        <bool name="proxy-wxSHAPED">0</bool>
+                        <bool name="proxy-wxADJUST_MINSIZE">0</bool>
+                        <bool name="proxy-wxFIXED_MINSIZE">0</bool>
+                        <string name="proxy-Custom arguments">""</string>
+                        <string name="proxy-Custom ctor arguments">""</string>
+                      </document>
                     </document>
                   </document>
                 </document>
                       <long name="locked">0</long>
                       <string name="created">"3/10/2006"</string>
                       <string name="proxy-type">"wbFlexGridSizerProxy"</string>
-                      <string name="proxy-GrowableColumns">""</string>
+                      <string name="proxy-GrowableColumns">"1"</string>
                       <string name="proxy-GrowableRows">""</string>
                       <long name="proxy-Columns">2</long>
                       <long name="proxy-Rows">2</long>
                         <long name="proxy-Id value">5105</long>
                         <string name="proxy-Class">"wxStaticText"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-Label">"Before a paragraph:"</string>
+                        <string name="proxy-Label">"&amp;Before a paragraph:"</string>
                         <long name="proxy-Wrapping width">-1</long>
                         <string name="proxy-Help text">""</string>
                         <string name="proxy-Tooltip text">""</string>
                         <string name="proxy-type">"wbBoxSizerProxy"</string>
                         <string name="proxy-Orientation">"Horizontal"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-AlignH">"Centre"</string>
+                        <string name="proxy-AlignH">"Expand"</string>
                         <string name="proxy-AlignV">"Centre"</string>
                         <long name="proxy-Stretch factor">0</long>
                         <long name="proxy-Border">5</long>
                           <long name="proxy-Height">-1</long>
                           <string name="proxy-AlignH">"Centre"</string>
                           <string name="proxy-AlignV">"Centre"</string>
-                          <long name="proxy-Stretch factor">0</long>
+                          <long name="proxy-Stretch factor">1</long>
                           <long name="proxy-Border">5</long>
                           <bool name="proxy-wxLEFT">1</bool>
                           <bool name="proxy-wxRIGHT">1</bool>
                         <long name="proxy-Id value">5105</long>
                         <string name="proxy-Class">"wxStaticText"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-Label">"After a paragraph:"</string>
+                        <string name="proxy-Label">"&amp;After a paragraph:"</string>
                         <long name="proxy-Wrapping width">-1</long>
                         <string name="proxy-Help text">""</string>
                         <string name="proxy-Tooltip text">""</string>
                         <string name="proxy-type">"wbBoxSizerProxy"</string>
                         <string name="proxy-Orientation">"Horizontal"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-AlignH">"Centre"</string>
+                        <string name="proxy-AlignH">"Expand"</string>
                         <string name="proxy-AlignV">"Centre"</string>
-                        <long name="proxy-Stretch factor">0</long>
+                        <long name="proxy-Stretch factor">1</long>
                         <long name="proxy-Border">5</long>
                         <bool name="proxy-wxLEFT">0</bool>
                         <bool name="proxy-wxRIGHT">0</bool>
                           <long name="proxy-Height">-1</long>
                           <string name="proxy-AlignH">"Centre"</string>
                           <string name="proxy-AlignV">"Centre"</string>
-                          <long name="proxy-Stretch factor">0</long>
+                          <long name="proxy-Stretch factor">1</long>
                           <long name="proxy-Border">5</long>
                           <bool name="proxy-wxLEFT">1</bool>
                           <bool name="proxy-wxRIGHT">1</bool>
                         <long name="proxy-Id value">5105</long>
                         <string name="proxy-Class">"wxStaticText"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-Label">"Line spacing:"</string>
+                        <string name="proxy-Label">"L&amp;ine spacing:"</string>
                         <long name="proxy-Wrapping width">-1</long>
                         <string name="proxy-Help text">""</string>
                         <string name="proxy-Tooltip text">""</string>
                         <string name="proxy-type">"wbBoxSizerProxy"</string>
                         <string name="proxy-Orientation">"Horizontal"</string>
                         <string name="proxy-Member variable name">""</string>
-                        <string name="proxy-AlignH">"Centre"</string>
+                        <string name="proxy-AlignH">"Expand"</string>
                         <string name="proxy-AlignV">"Centre"</string>
                         <long name="proxy-Stretch factor">0</long>
                         <long name="proxy-Border">5</long>
             <string name="proxy-type">"wbBoxSizerProxy"</string>
             <string name="proxy-Orientation">"Vertical"</string>
             <string name="proxy-Member variable name">""</string>
+            <string name="proxy-AlignH">"Centre"</string>
+            <string name="proxy-AlignV">"Centre"</string>
+            <long name="proxy-Stretch factor">0</long>
+            <long name="proxy-Border">5</long>
+            <bool name="proxy-wxLEFT">1</bool>
+            <bool name="proxy-wxRIGHT">1</bool>
+            <bool name="proxy-wxTOP">1</bool>
+            <bool name="proxy-wxBOTTOM">1</bool>
             <bool name="proxy-wxSHAPED">0</bool>
             <bool name="proxy-wxADJUST_MINSIZE">0</bool>
             <bool name="proxy-wxFIXED_MINSIZE">0</bool>
index 12ddce245d6d1dce1cc575bcc73ddf126f543a71..db9a294b41ee6fbabbfe828f5eb95988118a7a11 100644 (file)
@@ -42,6 +42,8 @@ BEGIN_EVENT_TABLE( wxRichTextIndentsSpacingPage, wxPanel )
 
     EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT, wxRichTextIndentsSpacingPage::OnIndentRightUpdated )
 
+    EVT_COMBOBOX( ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL, wxRichTextIndentsSpacingPage::OnRichtextOutlinelevelSelected )
+
     EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE, wxRichTextIndentsSpacingPage::OnSpacingBeforeUpdated )
 
     EVT_TEXT( ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER, wxRichTextIndentsSpacingPage::OnSpacingAfterUpdated )
@@ -84,6 +86,7 @@ void wxRichTextIndentsSpacingPage::Init()
     m_indentLeft = NULL;
     m_indentLeftFirst = NULL;
     m_indentRight = NULL;
+    m_outlineLevelCtrl = NULL;
     m_spacingBefore = NULL;
     m_spacingAfter = NULL;
     m_spacingLine = NULL;
@@ -203,87 +206,110 @@ void wxRichTextIndentsSpacingPage::CreateControls()
     itemFlexGridSizer22->Add(itemStaticText23, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
 
     wxBoxSizer* itemBoxSizer24 = new wxBoxSizer(wxHORIZONTAL);
-    itemFlexGridSizer22->Add(itemBoxSizer24, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+    itemFlexGridSizer22->Add(itemBoxSizer24, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
 
     m_indentLeft = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
     m_indentLeft->SetHelpText(_("The left indent."));
     if (ShowToolTips())
         m_indentLeft->SetToolTip(_("The left indent."));
-    itemBoxSizer24->Add(m_indentLeft, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+    itemBoxSizer24->Add(m_indentLeft, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
     wxStaticText* itemStaticText26 = new wxStaticText( itemPanel1, wxID_STATIC, _("Left (&first line):"), wxDefaultPosition, wxDefaultSize, 0 );
     itemFlexGridSizer22->Add(itemStaticText26, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
 
     wxBoxSizer* itemBoxSizer27 = new wxBoxSizer(wxHORIZONTAL);
-    itemFlexGridSizer22->Add(itemBoxSizer27, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+    itemFlexGridSizer22->Add(itemBoxSizer27, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
 
     m_indentLeftFirst = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_LEFT_FIRST, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
     m_indentLeftFirst->SetHelpText(_("The first line indent."));
     if (ShowToolTips())
         m_indentLeftFirst->SetToolTip(_("The first line indent."));
-    itemBoxSizer27->Add(m_indentLeftFirst, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+    itemBoxSizer27->Add(m_indentLeftFirst, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
     wxStaticText* itemStaticText29 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Right:"), wxDefaultPosition, wxDefaultSize, 0 );
     itemFlexGridSizer22->Add(itemStaticText29, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
 
     wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxHORIZONTAL);
-    itemFlexGridSizer22->Add(itemBoxSizer30, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+    itemFlexGridSizer22->Add(itemBoxSizer30, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
 
     m_indentRight = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_INDENT_RIGHT, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
     m_indentRight->SetHelpText(_("The right indent."));
     if (ShowToolTips())
         m_indentRight->SetToolTip(_("The right indent."));
-    itemBoxSizer30->Add(m_indentRight, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+    itemBoxSizer30->Add(m_indentRight, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+
+    wxStaticText* itemStaticText32 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Outline level:"), wxDefaultPosition, wxDefaultSize, 0 );
+    itemFlexGridSizer22->Add(itemStaticText32, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
+
+    wxString m_outlineLevelCtrlStrings[] = {
+        _("Normal"),
+        _("1"),
+        _("2"),
+        _("3"),
+        _("4"),
+        _("5"),
+        _("6"),
+        _("7"),
+        _("8"),
+        _("9")
+    };
+    m_outlineLevelCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL, _("Normal"), wxDefaultPosition, wxDefaultSize, 10, m_outlineLevelCtrlStrings, wxCB_READONLY );
+    m_outlineLevelCtrl->SetStringSelection(_("Normal"));
+    m_outlineLevelCtrl->SetHelpText(_("The outline level."));
+    if (ShowToolTips())
+        m_outlineLevelCtrl->SetToolTip(_("The outline level."));
+    itemFlexGridSizer22->Add(m_outlineLevelCtrl, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
     itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
 
-    wxStaticLine* itemStaticLine33 = new wxStaticLine( itemPanel1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
-    itemBoxSizer4->Add(itemStaticLine33, 0, wxGROW|wxTOP|wxBOTTOM, 5);
+    wxStaticLine* itemStaticLine35 = new wxStaticLine( itemPanel1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
+    itemBoxSizer4->Add(itemStaticLine35, 0, wxGROW|wxTOP|wxBOTTOM, 5);
 
     itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
 
-    wxBoxSizer* itemBoxSizer35 = new wxBoxSizer(wxVERTICAL);
-    itemBoxSizer4->Add(itemBoxSizer35, 0, wxGROW, 5);
+    wxBoxSizer* itemBoxSizer37 = new wxBoxSizer(wxVERTICAL);
+    itemBoxSizer4->Add(itemBoxSizer37, 0, wxGROW, 5);
 
-    wxStaticText* itemStaticText36 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Spacing (tenths of a mm)"), wxDefaultPosition, wxDefaultSize, 0 );
-    itemBoxSizer35->Add(itemStaticText36, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
+    wxStaticText* itemStaticText38 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Spacing (tenths of a mm)"), wxDefaultPosition, wxDefaultSize, 0 );
+    itemBoxSizer37->Add(itemStaticText38, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
 
-    wxBoxSizer* itemBoxSizer37 = new wxBoxSizer(wxHORIZONTAL);
-    itemBoxSizer35->Add(itemBoxSizer37, 0, wxALIGN_LEFT|wxALL, 5);
+    wxBoxSizer* itemBoxSizer39 = new wxBoxSizer(wxHORIZONTAL);
+    itemBoxSizer37->Add(itemBoxSizer39, 0, wxALIGN_LEFT|wxALL, 5);
 
-    itemBoxSizer37->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL, 5);
+    itemBoxSizer39->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL, 5);
 
-    wxFlexGridSizer* itemFlexGridSizer39 = new wxFlexGridSizer(2, 2, 0, 0);
-    itemBoxSizer37->Add(itemFlexGridSizer39, 0, wxALIGN_CENTER_VERTICAL, 5);
+    wxFlexGridSizer* itemFlexGridSizer41 = new wxFlexGridSizer(2, 2, 0, 0);
+    itemFlexGridSizer41->AddGrowableCol(1);
+    itemBoxSizer39->Add(itemFlexGridSizer41, 0, wxALIGN_CENTER_VERTICAL, 5);
 
-    wxStaticText* itemStaticText40 = new wxStaticText( itemPanel1, wxID_STATIC, _("Before a paragraph:"), wxDefaultPosition, wxDefaultSize, 0 );
-    itemFlexGridSizer39->Add(itemStaticText40, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
+    wxStaticText* itemStaticText42 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Before a paragraph:"), wxDefaultPosition, wxDefaultSize, 0 );
+    itemFlexGridSizer41->Add(itemStaticText42, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
 
-    wxBoxSizer* itemBoxSizer41 = new wxBoxSizer(wxHORIZONTAL);
-    itemFlexGridSizer39->Add(itemBoxSizer41, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+    wxBoxSizer* itemBoxSizer43 = new wxBoxSizer(wxHORIZONTAL);
+    itemFlexGridSizer41->Add(itemBoxSizer43, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
 
     m_spacingBefore = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_BEFORE, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
     m_spacingBefore->SetHelpText(_("The spacing before the paragraph."));
     if (ShowToolTips())
         m_spacingBefore->SetToolTip(_("The spacing before the paragraph."));
-    itemBoxSizer41->Add(m_spacingBefore, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+    itemBoxSizer43->Add(m_spacingBefore, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
-    wxStaticText* itemStaticText43 = new wxStaticText( itemPanel1, wxID_STATIC, _("After a paragraph:"), wxDefaultPosition, wxDefaultSize, 0 );
-    itemFlexGridSizer39->Add(itemStaticText43, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
+    wxStaticText* itemStaticText45 = new wxStaticText( itemPanel1, wxID_STATIC, _("&After a paragraph:"), wxDefaultPosition, wxDefaultSize, 0 );
+    itemFlexGridSizer41->Add(itemStaticText45, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
 
-    wxBoxSizer* itemBoxSizer44 = new wxBoxSizer(wxHORIZONTAL);
-    itemFlexGridSizer39->Add(itemBoxSizer44, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+    wxBoxSizer* itemBoxSizer46 = new wxBoxSizer(wxHORIZONTAL);
+    itemFlexGridSizer41->Add(itemBoxSizer46, 1, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
 
     m_spacingAfter = new wxTextCtrl( itemPanel1, ID_RICHTEXTINDENTSSPACINGPAGE_SPACING_AFTER, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
     if (ShowToolTips())
         m_spacingAfter->SetToolTip(_("The spacing after the paragraph."));
-    itemBoxSizer44->Add(m_spacingAfter, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+    itemBoxSizer46->Add(m_spacingAfter, 1, wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
-    wxStaticText* itemStaticText46 = new wxStaticText( itemPanel1, wxID_STATIC, _("Line spacing:"), wxDefaultPosition, wxDefaultSize, 0 );
-    itemFlexGridSizer39->Add(itemStaticText46, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
+    wxStaticText* itemStaticText48 = new wxStaticText( itemPanel1, wxID_STATIC, _("L&ine spacing:"), wxDefaultPosition, wxDefaultSize, 0 );
+    itemFlexGridSizer41->Add(itemStaticText48, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
 
-    wxBoxSizer* itemBoxSizer47 = new wxBoxSizer(wxHORIZONTAL);
-    itemFlexGridSizer39->Add(itemBoxSizer47, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
+    wxBoxSizer* itemBoxSizer49 = new wxBoxSizer(wxHORIZONTAL);
+    itemFlexGridSizer41->Add(itemBoxSizer49, 0, wxGROW|wxALIGN_CENTER_VERTICAL, 5);
 
     wxString m_spacingLineStrings[] = {
         _("Single"),
@@ -295,7 +321,7 @@ void wxRichTextIndentsSpacingPage::CreateControls()
     m_spacingLine->SetHelpText(_("The line spacing."));
     if (ShowToolTips())
         m_spacingLine->SetToolTip(_("The line spacing."));
-    itemBoxSizer47->Add(m_spacingLine, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
+    itemBoxSizer49->Add(m_spacingLine, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
 
     itemBoxSizer3->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
 
@@ -424,6 +450,10 @@ bool wxRichTextIndentsSpacingPage::TransferDataFromWindow()
         attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_LINE_SPACING));
     else
         attr->SetLineSpacing(lineSpacing);
+        
+    int outlineLevel = m_outlineLevelCtrl->GetSelection();
+    if (outlineLevel != wxNOT_FOUND)
+        attr->SetOutlineLevel(outlineLevel);
 
     return true;
 }
@@ -512,6 +542,19 @@ bool wxRichTextIndentsSpacingPage::TransferDataToWindow()
     else
         m_spacingLine->SetSelection(-1);
 
+    if (attr->HasOutlineLevel())
+    {
+        int outlineLevel = attr->GetOutlineLevel();
+        if (outlineLevel < 0)
+            outlineLevel = 0;
+        if (outlineLevel > 9)
+            outlineLevel = 9;            
+
+        m_outlineLevelCtrl->SetSelection(outlineLevel);
+    }
+    else
+        m_outlineLevelCtrl->SetSelection(-1);
+
     UpdatePreview();
 
     m_dontUpdate = false;
@@ -673,4 +716,14 @@ void wxRichTextIndentsSpacingPage::OnSpacingLineSelected( wxCommandEvent& WXUNUS
         UpdatePreview();
 }
 
+/*!
+ * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTINDENTSSPACINGPAGE_OUTLINELEVEL
+ */
+
+void wxRichTextIndentsSpacingPage::OnRichtextOutlinelevelSelected( wxCommandEvent& WXUNUSED(event) )
+{
+    if (!m_dontUpdate)
+        UpdatePreview();
+}
+
 #endif // wxUSE_RICHTEXT
index 26189e93ec560b5e2a8f87ea0f8c48f0ae266d07..9a22fd4292ebe7dbf430b68cee4693d2cd8873c8 100644 (file)
@@ -996,6 +996,10 @@ wxString wxRichTextXMLHandler::CreateStyle(const wxTextAttrEx& attr, bool isPara
         {
             str << wxT(" pagebreak=\"1\"");
         }
+
+        if (attr.HasOutlineLevel())
+            str << wxT(" outlinelevel=\"") << (int) attr.GetOutlineLevel() << wxT("\"");
+
     }
 
     return str;
@@ -1195,6 +1199,12 @@ bool wxRichTextXMLHandler::GetStyle(wxTextAttrEx& attr, wxXmlNode* node, bool is
         {
             attr.SetPageBreak(wxAtoi(value) != 0);
         }
+
+        value = node->GetPropVal(wxT("outlinelevel"), wxEmptyString);
+        if (!value.IsEmpty())
+        {
+            attr.SetOutlineLevel(wxAtoi(value) != 0);
+        }
     }
 
     return true;