]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/wx/richtext/richtextctrl.h
wxSocket::Initialize() and Shutdown() are for main thread only.
[wxWidgets.git] / interface / wx / richtext / richtextctrl.h
index 690a55d2e1a2f885ad177edf7d729f05075e89b9..d7f4147ef3c43a72beeba1a16a9b5df8b607f28f 100644 (file)
@@ -1,6 +1,6 @@
 /////////////////////////////////////////////////////////////////////////////
 // Name:        richtext/richtextctrl.h
 /////////////////////////////////////////////////////////////////////////////
 // Name:        richtext/richtextctrl.h
-// Purpose:     interface of wxRichTextEvent
+// Purpose:     interface of wxRichTextCtrl and wxRichTextEvent
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Licence:     wxWindows license
 // Author:      wxWidgets team
 // RCS-ID:      $Id$
 // Licence:     wxWindows license
 
     This is the event class for wxRichTextCtrl notifications.
 
 
     This is the event class for wxRichTextCtrl notifications.
 
+    @beginEventTable{wxRichTextEvent}
+    @event{EVT_RICHTEXT_CHARACTER(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_CHARACTER event, generated when the user
+        presses a character key. Valid event functions: GetFlags, GetPosition, GetCharacter.
+    @event{EVT_RICHTEXT_DELETE(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_DELETE event, generated when the user
+        presses the backspace or delete key. Valid event functions: GetFlags, GetPosition.
+    @event{EVT_RICHTEXT_RETURN(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_RETURN event, generated when the user
+        presses the return key. Valid event functions: GetFlags, GetPosition.
+    @event{EVT_RICHTEXT_STYLE_CHANGED(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED event, generated when
+        styling has been applied to the control. Valid event functions: GetPosition, GetRange.
+    @event{EVT_RICHTEXT_STYLESHEET_CHANGED(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING event, generated
+        when the control's stylesheet has changed, for example the user added,
+        edited or deleted a style. Valid event functions: GetRange, GetPosition.
+    @event{EVT_RICHTEXT_STYLESHEET_REPLACING(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING event, generated
+        when the control's stylesheet is about to be replaced, for example when
+        a file is loaded into the control.
+        Valid event functions: Veto, GetOldStyleSheet, GetNewStyleSheet.
+    @event{EVT_RICHTEXT_STYLESHEET_REPLACED(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED event, generated
+        when the control's stylesheet has been replaced, for example when a file
+        is loaded into the control.
+        Valid event functions: GetOldStyleSheet, GetNewStyleSheet.
+    @event{EVT_RICHTEXT_CONTENT_INSERTED(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED event, generated when
+        content has been inserted into the control.
+        Valid event functions: GetPosition, GetRange.
+    @event{EVT_RICHTEXT_CONTENT_DELETED(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED event, generated when
+        content has been deleted from the control.
+        Valid event functions: GetPosition, GetRange.
+    @event{EVT_RICHTEXT_BUFFER_RESET(id, func)}
+        Process a wxEVT_COMMAND_RICHTEXT_BUFFER_RESET event, generated when the
+        buffer has been reset by deleting all content.
+        You can use this to set a default style for the first new paragraph.
+    @endEventTable
+
     @library{wxrichtext}
     @library{wxrichtext}
-    @category{richtext}
+    @category{events,richtext}
 */
 class wxRichTextEvent : public wxNotifyEvent
 {
 */
 class wxRichTextEvent : public wxNotifyEvent
 {
@@ -25,38 +66,37 @@ public:
     /**
         Constructor.
 
     /**
         Constructor.
 
+        @param commandType
+            The type of the event.
         @param id
             Window identifier. The value @c wxID_ANY indicates a default value.
     */
     wxRichTextEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
 
         @param id
             Window identifier. The value @c wxID_ANY indicates a default value.
     */
     wxRichTextEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
 
-    /**
-        Clones the event.
-    */
-    wxEvent* Clone() const;
-
     /**
         Returns the character pressed, within a wxEVT_COMMAND_RICHTEXT_CHARACTER event.
     */
     wxChar GetCharacter() const;
 
     /**
     /**
         Returns the character pressed, within a wxEVT_COMMAND_RICHTEXT_CHARACTER event.
     */
     wxChar GetCharacter() const;
 
     /**
-        Returns flags indicating modifier keys pressed. Possible values are
-        wxRICHTEXT_CTRL_DOWN,
-        wxRICHTEXT_SHIFT_DOWN, and wxRICHTEXT_ALT_DOWN.
+        Returns flags indicating modifier keys pressed.
+
+        Possible values are wxRICHTEXT_CTRL_DOWN, wxRICHTEXT_SHIFT_DOWN, and wxRICHTEXT_ALT_DOWN.
     */
     int GetFlags() const;
 
     /**
     */
     int GetFlags() const;
 
     /**
-        Returns the new style sheet. Can be used in a
-        wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING or
+        Returns the new style sheet.
+
+        Can be used in a wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING or
         wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED event handler.
     */
     wxRichTextStyleSheet* GetNewStyleSheet() const;
 
     /**
         wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED event handler.
     */
     wxRichTextStyleSheet* GetNewStyleSheet() const;
 
     /**
-        Returns the old style sheet. Can be used in a
-        wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING or
+        Returns the old style sheet.
+
+        Can be used in a wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING or
         wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED event handler.
     */
     wxRichTextStyleSheet* GetOldStyleSheet() const;
         wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED event handler.
     */
     wxRichTextStyleSheet* GetOldStyleSheet() const;
@@ -69,7 +109,7 @@ public:
     /**
         Gets the range for the current operation.
     */
     /**
         Gets the range for the current operation.
     */
-    wxRichTextRange GetRange() const;
+    const wxRichTextRange& GetRange() const;
 
     /**
         Sets the character variable.
 
     /**
         Sets the character variable.
@@ -77,9 +117,9 @@ public:
     void SetCharacter(wxChar ch);
 
     /**
     void SetCharacter(wxChar ch);
 
     /**
-        Sets flags indicating modifier keys pressed. Possible values are
-        wxRICHTEXT_CTRL_DOWN,
-        wxRICHTEXT_SHIFT_DOWN, and wxRICHTEXT_ALT_DOWN.
+        Sets flags indicating modifier keys pressed.
+
+        Possible values are wxRICHTEXT_CTRL_DOWN, wxRICHTEXT_SHIFT_DOWN, and wxRICHTEXT_ALT_DOWN.
     */
     void SetFlags(int flags);
 
     */
     void SetFlags(int flags);
 
@@ -113,14 +153,25 @@ public:
     capable of showing multiple styles and images.
 
     wxRichTextCtrl sends notification events: see wxRichTextEvent.
     capable of showing multiple styles and images.
 
     wxRichTextCtrl sends notification events: see wxRichTextEvent.
+
     It also sends the standard wxTextCtrl events wxEVT_COMMAND_TEXT_ENTER and
     It also sends the standard wxTextCtrl events wxEVT_COMMAND_TEXT_ENTER and
-    wxEVT_COMMAND_TEXT_UPDATED,
-    and wxTextUrlEvent when URL content is clicked.
+    wxEVT_COMMAND_TEXT_UPDATED, and wxTextUrlEvent when URL content is clicked.
 
     For more information, see the @ref overview_richtextctrl.
 
 
     For more information, see the @ref overview_richtextctrl.
 
+    @beginStyleTable
+    @style{wxRE_CENTRE_CARET}
+           The control will try to keep the caret line centred vertically while editing.
+           wxRE_CENTER_CARET is a synonym for this style.
+    @style{wxRE_MULTILINE}
+           The control will be multiline (mandatory).
+    @style{wxRE_READONLY}
+           The control will not be editable.
+    @endStyleTable
+
     @library{wxrichtext}
     @category{richtext}
     @library{wxrichtext}
     @category{richtext}
+    @appearance{richtextctrl.png}
 */
 class wxRichTextCtrl
 {
 */
 class wxRichTextCtrl
 {
@@ -203,10 +254,10 @@ public:
 
     /**
         Applies the style sheet to the buffer, matching paragraph styles in the sheet
 
     /**
         Applies the style sheet to the buffer, matching paragraph styles in the sheet
-        against named styles
-        in the buffer. This might be useful if the styles have changed. If @a sheet is
-        @NULL, the
-        sheet set with SetStyleSheet is used.
+        against named styles in the buffer.
+
+        This might be useful if the styles have changed.
+        If @a sheet is @NULL, the sheet set with SetStyleSheet() is used.
         Currently this applies paragraph styles only.
     */
     bool ApplyStyleSheet(wxRichTextStyleSheet* sheet = NULL);
         Currently this applies paragraph styles only.
     */
     bool ApplyStyleSheet(wxRichTextStyleSheet* sheet = NULL);
@@ -222,7 +273,7 @@ public:
     virtual bool BatchingUndo() const;
 
     /**
     virtual bool BatchingUndo() const;
 
     /**
-        Begins using alignment
+        Begins using alignment.
         For alignment values, see wxTextAttr.
     */
     bool BeginAlignment(wxTextAttrAlignment alignment);
         For alignment values, see wxTextAttr.
     */
     bool BeginAlignment(wxTextAttrAlignment alignment);
@@ -259,8 +310,8 @@ public:
 
     /**
         Begins applying a left indent and subindent in tenths of a millimetre.
 
     /**
         Begins applying a left indent and subindent in tenths of a millimetre.
-        The subindent is an offset from the left edge of the paragraph, and is 
-        used for all but the first line in a paragraph. A positive value will 
+        The subindent is an offset from the left edge of the paragraph, and is
+        used for all but the first line in a paragraph. A positive value will
         cause the first line to appear to the left of the subsequent lines, and
         a negative value will cause the first line to be indented to the right
         of the subsequent lines.
         cause the first line to appear to the left of the subsequent lines, and
         a negative value will cause the first line to be indented to the right
         of the subsequent lines.
@@ -279,33 +330,34 @@ public:
 
     /**
         Begins appling line spacing. @e spacing is a multiple, where 10 means
 
     /**
         Begins appling line spacing. @e spacing is a multiple, where 10 means
-        single-spacing,
-        15 means 1.5 spacing, and 20 means double spacing. The following constants are
-        defined for convenience:
+        single-spacing, 15 means 1.5 spacing, and 20 means double spacing.
+
+        The ::wxTextAttrLineSpacing constants are defined for convenience.
     */
     bool BeginLineSpacing(int lineSpacing);
 
     /**
     */
     bool BeginLineSpacing(int lineSpacing);
 
     /**
-        Begins using a specified list style. Optionally, you can also pass a level and
-        a number.
+        Begins using a specified list style.
+        Optionally, you can also pass a level and a number.
     */
     bool BeginListStyle(const wxString& listStyle, int level = 1,
                         int number = 1);
 
     /**
     */
     bool BeginListStyle(const wxString& listStyle, int level = 1,
                         int number = 1);
 
     /**
-        Begins a numbered bullet. This call will be needed for each item in the list,
-        and the
+        Begins a numbered bullet.
+
+        This call will be needed for each item in the list, and the
         application should take care of incrementing the numbering.
         application should take care of incrementing the numbering.
+
         @a bulletNumber is a number, usually starting with 1.
         @a leftIndent and @a leftSubIndent are values in tenths of a millimetre.
         @a bulletNumber is a number, usually starting with 1.
         @a leftIndent and @a leftSubIndent are values in tenths of a millimetre.
-        @a bulletStyle is a bitlist of the following values:
-        
-        wxRichTextBuffer uses indentation to render a bulleted item. The left indent is
-        the distance between
-        the margin and the bullet. The content of the paragraph, including the first
-        line, starts
-        at leftMargin + leftSubIndent. So the distance between the left edge of the
-        bullet and the
+        @a bulletStyle is a bitlist of the  ::wxTextAttrBulletStyle values.
+
+        wxRichTextBuffer uses indentation to render a bulleted item.
+        The left indent is the distance between the margin and the bullet.
+        The content of the paragraph, including the first line, starts
+        at leftMargin + leftSubIndent.
+        So the distance between the left edge of the bullet and the
         left of the actual paragraph is leftSubIndent.
     */
     bool BeginNumberedBullet(int bulletNumber, int leftIndent,
         left of the actual paragraph is leftSubIndent.
     */
     bool BeginNumberedBullet(int bulletNumber, int leftIndent,
@@ -314,8 +366,7 @@ public:
 
     /**
         Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing
 
     /**
         Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing
-        in tenths of
-        a millimetre.
+        in tenths of a millimetre.
     */
     bool BeginParagraphSpacing(int before, int after);
 
     */
     bool BeginParagraphSpacing(int before, int after);
 
@@ -340,11 +391,11 @@ public:
     virtual bool BeginSuppressUndo();
 
     /**
     virtual bool BeginSuppressUndo();
 
     /**
-        Begins applying a symbol bullet, using a character from the current font. See
-        BeginNumberedBullet() for
-        an explanation of how indentation is used to render the bulleted paragraph.
+        Begins applying a symbol bullet, using a character from the current font.
+        See BeginNumberedBullet() for an explanation of how indentation is used
+        to render the bulleted paragraph.
     */
     */
-    bool BeginSymbolBullet(wxChar symbol, int leftIndent,
+    bool BeginSymbolBullet(const wxString& symbol, int leftIndent,
                            int leftSubIndent,
                            int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_SYMBOL);
 
                            int leftSubIndent,
                            int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_SYMBOL);
 
@@ -354,10 +405,10 @@ public:
     bool BeginTextColour(const wxColour& colour);
 
     /**
     bool BeginTextColour(const wxColour& colour);
 
     /**
-        Begins applying wxTEXT_ATTR_URL to the content. Pass a URL and optionally, a
-        character style to apply,
-        since it is common to mark a URL with a familiar style such as blue text with
-        underlining.
+        Begins applying wxTEXT_ATTR_URL to the content.
+
+        Pass a URL and optionally, a character style to apply, since it is common
+        to mark a URL with a familiar style such as blue text with underlining.
     */
     bool BeginURL(const wxString& url,
                   const wxString& characterStyle = wxEmptyString);
     */
     bool BeginURL(const wxString& url,
                   const wxString& characterStyle = wxEmptyString);
@@ -402,19 +453,17 @@ public:
     */
     virtual void Clear();
 
     */
     virtual void Clear();
 
-    //@{
     /**
         Clears the list style from the given range, clearing list-related attributes
         and applying any named paragraph style associated with each paragraph.
     /**
         Clears the list style from the given range, clearing list-related attributes
         and applying any named paragraph style associated with each paragraph.
+
         @a flags is a bit list of the following:
         @a flags is a bit list of the following:
-         wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
-        See also SetListStyle(), PromoteList(), NumberList().
+        - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
+
+        @see SetListStyle(), PromoteList(), NumberList().
     */
     */
-    bool ClearListStyle(const wxRichTextRange& range,
+    virtual bool ClearListStyle(const wxRichTextRange& range,
                         int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
                         int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
-    bool ClearListStyle(const wxRichTextRange& range,
-                        int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
-    //@}
 
     /**
         Sends the event to the control.
 
     /**
         Sends the event to the control.
@@ -466,11 +515,6 @@ public:
     */
     virtual void DiscardEdits();
 
     */
     virtual void DiscardEdits();
 
-    /**
-        Currently this simply returns @c wxSize(10, 10).
-    */
-    wxSize DoGetBestSize() const;
-
     /**
         Ends alignment.
     */
     /**
         Ends alignment.
     */
@@ -578,15 +622,13 @@ public:
 
     /**
         Helper function for extending the selection, returning @true if the selection
 
     /**
         Helper function for extending the selection, returning @true if the selection
-        was
-        changed. Selections are in caret positions.
+        was changed. Selections are in caret positions.
     */
     */
-    bool ExtendSelection(long oldPosition, long newPosition,
-                         int flags);
+    virtual bool ExtendSelection(long oldPosition, long newPosition, int flags);
 
     /**
 
     /**
-        Helper function for finding the caret position for the next word. Direction
-        is 1 (forward) or -1 (backwards).
+        Helper function for finding the caret position for the next word.
+        Direction is 1 (forward) or -1 (backwards).
     */
     virtual long FindNextWordPosition(int direction = 1) const;
 
     */
     virtual long FindNextWordPosition(int direction = 1) const;
 
@@ -597,12 +639,14 @@ public:
     void Freeze();
 
     /**
     void Freeze();
 
     /**
-        Gets the basic (overall) style. This is the style of the whole
-        buffer before further styles are applied, unlike the default style, which
-        only affects the style currently being applied (for example, setting the default
-        style to bold will cause subsequently inserted text to be bold).
+        Gets the basic (overall) style.
+
+        This is the style of the whole buffer before further styles are applied,
+        unlike the default style, which only affects the style currently being
+        applied (for example, setting the default style to bold will cause
+        subsequently inserted text to be bold).
     */
     */
-    const wxTextAttr GetBasicStyle() const;
+    virtual const wxTextAttr& GetBasicStyle() const;
 
     //@{
     /**
 
     //@{
     /**
@@ -618,7 +662,7 @@ public:
     long GetCaretPosition() const;
 
     /**
     long GetCaretPosition() const;
 
     /**
-        Returns the caret height and position for the given character position
+        Returns the caret height and position for the given character position.
     */
     bool GetCaretPositionForIndex(long position, wxRect& rect);
 
     */
     bool GetCaretPositionForIndex(long position, wxRect& rect);
 
@@ -629,10 +673,9 @@ public:
 
     /**
         Returns the current default style, which can be used to change how subsequently
 
     /**
         Returns the current default style, which can be used to change how subsequently
-        inserted
-        text is displayed.
+        inserted text is displayed.
     */
     */
-    const wxTextAttr GetDefaultStyle() const;
+    virtual const wxTextAttr& GetDefaultStyle() const;
 
     /**
         Gets the size of the buffer beyond which layout is delayed during resizing.
 
     /**
         Gets the size of the buffer beyond which layout is delayed during resizing.
@@ -651,9 +694,9 @@ public:
     long GetFirstVisiblePosition() const;
 
     /**
     long GetFirstVisiblePosition() const;
 
     /**
-        Returns flags that change the behaviour of loading or saving. See the
-        documentation for each
-        handler class to see what flags are relevant for each handler.
+        Returns flags that change the behaviour of loading or saving.
+        See the documentation for each handler class to see what flags are
+        relevant for each handler.
     */
     int GetHandlerFlags() const;
 
     */
     int GetHandlerFlags() const;
 
@@ -694,8 +737,8 @@ public:
 
     /**
         Gets the text for the given range.
 
     /**
         Gets the text for the given range.
-        The end point of range is specified as the last character position of the span
-        of text, plus one.
+        The end point of range is specified as the last character position of
+        the span of text, plus one.
     */
     virtual wxString GetRange(long from, long to) const;
 
     */
     virtual wxString GetRange(long from, long to) const;
 
@@ -710,7 +753,7 @@ public:
     /**
         Returns the selection range in character positions. -1, -1 means no selection.
     */
     /**
         Returns the selection range in character positions. -1, -1 means no selection.
     */
-    const wxRichTextRange GetSelectionRange() const;
+    wxRichTextRange GetSelectionRange() const;
 
     /**
         Returns the text within the current selection range, if any.
 
     /**
         Returns the text within the current selection range, if any.
@@ -720,38 +763,37 @@ public:
     /**
         Gets the attributes at the given position.
         This function gets the combined style - that is, the style you see on the
     /**
         Gets the attributes at the given position.
         This function gets the combined style - that is, the style you see on the
-        screen as a result
-        of combining base style, paragraph style and character style attributes. To get
-        the character
-        or paragraph style alone, use GetUncombinedStyle().
+        screen as a result of combining base style, paragraph style and character
+        style attributes.
+
+        To get the character or paragraph style alone, use GetUncombinedStyle().
     */
     virtual bool GetStyle(long position, wxTextAttr& style);
 
     /**
     */
     virtual bool GetStyle(long position, wxTextAttr& style);
 
     /**
-        Gets the attributes common to the specified range. Attributes that differ in
-        value within the range will
-        not be included in @e style's flags.
+        Gets the attributes common to the specified range.
+        Attributes that differ in value within the range will not be included
+        in @a style flags.
     */
     */
-    bool GetStyleForRange(const wxRichTextRange& range,
-                          wxTextAttr& style);
+    virtual bool GetStyleForRange(const wxRichTextRange& range,
+                                  wxTextAttr& style);
 
     /**
 
     /**
-        Returns the style sheet associated with the control, if any. A style sheet
-        allows named
-        character and paragraph styles to be applied.
+        Returns the style sheet associated with the control, if any.
+        A style sheet allows named character and paragraph styles to be applied.
     */
     wxRichTextStyleSheet* GetStyleSheet() const;
 
     /**
         Gets the attributes at the given position.
         This function gets the @e uncombined style - that is, the attributes associated
     */
     wxRichTextStyleSheet* GetStyleSheet() const;
 
     /**
         Gets the attributes at the given position.
         This function gets the @e uncombined style - that is, the attributes associated
-        with the
-        paragraph or character content, and not necessarily the combined attributes you
-        see on the
-        screen. To get the combined attributes, use GetStyle().
+        with the paragraph or character content, and not necessarily the combined
+        attributes you see on the screen.
+        To get the combined attributes, use GetStyle().
+
         If you specify (any) paragraph attribute in @e style's flags, this function
         If you specify (any) paragraph attribute in @e style's flags, this function
-        will fetch
-        the paragraph attributes. Otherwise, it will return the character attributes.
+        will fetch the paragraph attributes.
+        Otherwise, it will return the character attributes.
     */
     virtual bool GetUncombinedStyle(long position, wxTextAttr& style);
 
     */
     virtual bool GetUncombinedStyle(long position, wxTextAttr& style);
 
@@ -761,32 +803,31 @@ public:
     virtual wxString GetValue() const;
 
     /**
     virtual wxString GetValue() const;
 
     /**
-        Internal helper function returning the line for the visible caret position. If
-        the caret is
-        shown at the very end of the line, it means the next character is actually
-        on the following line. So this function gets the line we're expecting to find
-        if this is the case.
+        Internal helper function returning the line for the visible caret position.
+        If the caret is shown at the very end of the line, it means the next character
+        is actually on the following line.
+        So this function gets the line we're expecting to find if this is the case.
     */
     wxRichTextLine* GetVisibleLineForCaretPosition(long caretPosition) const;
 
     /**
     */
     wxRichTextLine* GetVisibleLineForCaretPosition(long caretPosition) const;
 
     /**
-        Test if this whole range has character attributes of the specified kind. If any
-        of the attributes are different within the range, the test fails. You
-        can use this to implement, for example, bold button updating. @a style must have
-        flags indicating which attributes are of interest.
+        Test if this whole range has character attributes of the specified kind.
+        If any of the attributes are different within the range, the test fails.
+
+        You can use this to implement, for example, bold button updating.
+        @a style must have flags indicating which attributes are of interest.
     */
     */
-    bool HasCharacterAttributes(const wxRichTextRange& range,
-                                const wxTextAttr& style) const;
+    virtual bool HasCharacterAttributes(const wxRichTextRange& range,
+                                        const wxTextAttr& style) const;
 
     /**
 
     /**
-        Test if this whole range has paragraph attributes of the specified kind. If any
-        of the attributes are different within the range, the test fails. You
-        can use this to implement, for example, centering button updating. @a style
-        must have
-        flags indicating which attributes are of interest.
+        Test if this whole range has paragraph attributes of the specified kind.
+        If any of the attributes are different within the range, the test fails.
+        You can use this to implement, for example, centering button updating.
+        @a style must have flags indicating which attributes are of interest.
     */
     */
-    bool HasParagraphAttributes(const wxRichTextRange& range,
-                                const wxTextAttr& style) const;
+    virtual bool HasParagraphAttributes(const wxRichTextRange& range,
+                                        const wxTextAttr& style) const;
 
     /**
         Returns @true if there is a selection.
 
     /**
         Returns @true if there is a selection.
@@ -810,20 +851,15 @@ public:
     */
     void Init();
 
     */
     void Init();
 
-    /**
-        Initialises the command event.
-    */
-    void InitCommandEvent(wxCommandEvent& event) const;
-
     /**
         Returns @true if the user has recently set the default style without moving
     /**
         Returns @true if the user has recently set the default style without moving
-        the caret,
-        and therefore the UI needs to reflect the default style and not the style at
-        the caret.
+        the caret, and therefore the UI needs to reflect the default style and not
+        the style at the caret.
+
         Below is an example of code that uses this function to determine whether the UI
         should show that the current style is bold.
         Below is an example of code that uses this function to determine whether the UI
         should show that the current style is bold.
-        
-        See also SetAndShowDefaultStyle().
+
+        @see SetAndShowDefaultStyle().
     */
     bool IsDefaultStyleShowing() const;
 
     */
     bool IsDefaultStyleShowing() const;
 
@@ -853,8 +889,7 @@ public:
     bool IsPositionVisible(long pos) const;
 
     /**
     bool IsPositionVisible(long pos) const;
 
     /**
-        Returns @true if all of the selection is aligned according to the specified
-        flag.
+        Returns @true if all of the selection is aligned according to the specified flag.
     */
     virtual bool IsSelectionAligned(wxTextAttrAlignment alignment);
 
     */
     virtual bool IsSelectionAligned(wxTextAttrAlignment alignment);
 
@@ -874,8 +909,8 @@ public:
     virtual bool IsSelectionUnderlined();
 
     /**
     virtual bool IsSelectionUnderlined();
 
     /**
-        Returns @true if the control is single-line. Currently wxRichTextCtrl does not
-        support single-line editing.
+        Returns @true if the control is single-line.
+        Currently wxRichTextCtrl does not support single-line editing.
     */
     bool IsSingleLine() const;
 
     */
     bool IsSingleLine() const;
 
@@ -886,24 +921,26 @@ public:
 
     /**
         Lays out the buffer, which must be done before certain operations, such as
 
     /**
         Lays out the buffer, which must be done before certain operations, such as
-        setting the caret position. This function should not normally be required by the
-        application.
+        setting the caret position.
+        This function should not normally be required by the application.
     */
     virtual bool LayoutContent(bool onlyVisibleRect = false);
 
     /**
     */
     virtual bool LayoutContent(bool onlyVisibleRect = false);
 
     /**
-        Inserts a line break at the current insertion point. A line break forces
-        wrapping within a paragraph, and
-        can be introduced by using this function, by appending the wxChar value @b
-        wxRichTextLineBreakChar to text content,
-        or by typing Shift-Return.
+        Inserts a line break at the current insertion point.
+
+        A line break forces wrapping within a paragraph, and can be introduced by
+        using this function, by appending the wxChar value @b  wxRichTextLineBreakChar
+        to text content, or by typing Shift-Return.
     */
     virtual bool LineBreak();
 
     /**
     */
     virtual bool LineBreak();
 
     /**
-        Loads content into the control's buffer using the given type. If the specified
-        type
-        is wxRICHTEXT_TYPE_ANY, the type is deduced from the filename extension.
+        Loads content into the control's buffer using the given type.
+
+        If the specified type is wxRICHTEXT_TYPE_ANY, the type is deduced from
+        the filename extension.
+
         This function looks for a suitable wxRichTextFileHandler object.
     */
     bool LoadFile(const wxString& file,
         This function looks for a suitable wxRichTextFileHandler object.
     */
     bool LoadFile(const wxString& file,
@@ -984,23 +1021,26 @@ public:
     virtual bool MoveUp(int noLines = 1, int flags = 0);
 
     /**
     virtual bool MoveUp(int noLines = 1, int flags = 0);
 
     /**
-        Inserts a new paragraph at the current insertion point. See also LineBreak().
+        Inserts a new paragraph at the current insertion point. @see LineBreak().
     */
     virtual bool Newline();
 
     //@{
     /**
     */
     virtual bool Newline();
 
     //@{
     /**
-        Numbers the paragraphs in the given range. Pass flags to determine how the
-        attributes are set.
+        Numbers the paragraphs in the given range.
+        Pass flags to determine how the attributes are set.
+
         Either the style definition or the name of the style definition (in the current
         sheet) can be passed.
         Either the style definition or the name of the style definition (in the current
         sheet) can be passed.
+
         @a flags is a bit list of the following:
         @a flags is a bit list of the following:
-         wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
-         wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e
-        startFrom, otherwise existing attributes are used.
-         wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
-        as the level for all paragraphs, otherwise the current indentation will be used.
-        See also SetListStyle(), PromoteList(), ClearListStyle().
+        - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
+        - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
+          @a startFrom, otherwise existing attributes are used.
+        - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
+          as the level for all paragraphs, otherwise the current indentation will be used.
+
+        @see SetListStyle(), PromoteList(), ClearListStyle().
     */
     bool NumberList(const wxRichTextRange& range,
                     const wxRichTextListStyleDefinition* style,
     */
     bool NumberList(const wxRichTextRange& range,
                     const wxRichTextListStyleDefinition* style,
@@ -1128,18 +1168,20 @@ public:
 
     //@{
     /**
 
     //@{
     /**
-        Promotes or demotes the paragraphs in the given range. A positive @a promoteBy
-        produces a smaller indent, and a negative number
+        Promotes or demotes the paragraphs in the given range.
+        A positive @a promoteBy produces a smaller indent, and a negative number
         produces a larger indent. Pass flags to determine how the attributes are set.
         Either the style definition or the name of the style definition (in the current
         sheet) can be passed.
         produces a larger indent. Pass flags to determine how the attributes are set.
         Either the style definition or the name of the style definition (in the current
         sheet) can be passed.
+
         @a flags is a bit list of the following:
         @a flags is a bit list of the following:
-         wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
-         wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e
-        startFrom, otherwise existing attributes are used.
-         wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
+        - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
+        - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
+          @a startFrom, otherwise existing attributes are used.
+        - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
         as the level for all paragraphs, otherwise the current indentation will be used.
         as the level for all paragraphs, otherwise the current indentation will be used.
-        See also SetListStyle(), See also SetListStyle(), ClearListStyle().
+
+        @see SetListStyle(), @see SetListStyle(), ClearListStyle().
     */
     bool PromoteList(int promoteBy, const wxRichTextRange& range,
                      const wxRichTextListStyleDefinition* style,
     */
     bool PromoteList(int promoteBy, const wxRichTextRange& range,
                      const wxRichTextListStyleDefinition* style,
@@ -1162,14 +1204,17 @@ public:
     virtual void Remove(long from, long to);
 
     /**
     virtual void Remove(long from, long to);
 
     /**
-        Replaces the content in the specified range with the string specified by @e
-        value.
+        Replaces the content in the specified range with the string specified by
+        @a value.
     */
     virtual void Replace(long from, long to, const wxString& value);
 
     /**
     */
     virtual void Replace(long from, long to, const wxString& value);
 
     /**
-        Saves the buffer content using the given type. If the specified type
-        is wxRICHTEXT_TYPE_ANY, the type is deduced from the filename extension.
+        Saves the buffer content using the given type.
+
+        If the specified type is wxRICHTEXT_TYPE_ANY, the type is deduced from
+        the filename extension.
+
         This function looks for a suitable wxRichTextFileHandler object.
     */
     bool SaveFile(const wxString& file = wxEmptyString,
         This function looks for a suitable wxRichTextFileHandler object.
     */
     bool SaveFile(const wxString& file = wxEmptyString,
@@ -1192,17 +1237,19 @@ public:
 
     /**
         Sets @a attr as the default style and tells the control that the UI should
 
     /**
         Sets @a attr as the default style and tells the control that the UI should
-        reflect
-        this attribute until the user moves the caret.
-        See also IsDefaultStyleShowing().
+        reflect this attribute until the user moves the caret.
+
+        @see IsDefaultStyleShowing().
     */
     void SetAndShowDefaultStyle(const wxTextAttr& attr);
 
     /**
     */
     void SetAndShowDefaultStyle(const wxTextAttr& attr);
 
     /**
-        Sets the basic (overall) style. This is the style of the whole
-        buffer before further styles are applied, unlike the default style, which
-        only affects the style currently being applied (for example, setting the default
-        style to bold will cause subsequently inserted text to be bold).
+        Sets the basic (overall) style.
+
+        This is the style of the whole buffer before further styles are applied,
+        unlike the default style, which only affects the style currently being
+        applied (for example, setting the default style to bold will cause
+        subsequently inserted text to be bold).
     */
     virtual void SetBasicStyle(const wxTextAttr& style);
 
     */
     virtual void SetBasicStyle(const wxTextAttr& style);
 
@@ -1215,8 +1262,7 @@ public:
 
     /**
         Sets the current default style, which can be used to change how subsequently
 
     /**
         Sets the current default style, which can be used to change how subsequently
-        inserted
-        text is displayed.
+        inserted text is displayed.
     */
     virtual bool SetDefaultStyle(const wxTextAttr& style);
 
     */
     virtual bool SetDefaultStyle(const wxTextAttr& style);
 
@@ -1242,15 +1288,16 @@ public:
     void SetFilename(const wxString& filename);
 
     /**
     void SetFilename(const wxString& filename);
 
     /**
-        Sets the font, and also the basic and default attributes (see
-        wxRichTextCtrl::SetDefaultStyle).
+        Sets the font, and also the basic and default attributes
+        (see wxRichTextCtrl::SetDefaultStyle).
     */
     virtual bool SetFont(const wxFont& font);
 
     /**
     */
     virtual bool SetFont(const wxFont& font);
 
     /**
-        Sets flags that change the behaviour of loading or saving. See the
-        documentation for each
-        handler class to see what flags are relevant for each handler.
+        Sets flags that change the behaviour of loading or saving.
+
+        See the documentation for each handler class to see what flags are
+        relevant for each handler.
     */
     void SetHandlerFlags(int flags);
 
     */
     void SetHandlerFlags(int flags);
 
@@ -1268,15 +1315,17 @@ public:
     /**
         Sets the list attributes for the given range, passing flags to determine how
         the attributes are set.
     /**
         Sets the list attributes for the given range, passing flags to determine how
         the attributes are set.
+
         Either the style definition or the name of the style definition (in the current
         sheet) can be passed.
         @a flags is a bit list of the following:
         Either the style definition or the name of the style definition (in the current
         sheet) can be passed.
         @a flags is a bit list of the following:
-         wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
-         wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e
-        startFrom, otherwise existing attributes are used.
-         wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
-        as the level for all paragraphs, otherwise the current indentation will be used.
-        See also NumberList(), PromoteList(), ClearListStyle().
+        - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
+        - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
+          @a startFrom, otherwise existing attributes are used.
+        - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
+          as the level for all paragraphs, otherwise the current indentation will be used.
+
+        @see NumberList(), PromoteList(), ClearListStyle().
     */
     bool SetListStyle(const wxRichTextRange& range,
                       const wxRichTextListStyleDefinition* style,
     */
     bool SetListStyle(const wxRichTextRange& range,
                       const wxRichTextListStyleDefinition* style,
@@ -1294,6 +1343,7 @@ public:
         Sets the selection to the given range.
         The end point of range is specified as the last character position of the span
         of text, plus one.
         Sets the selection to the given range.
         The end point of range is specified as the last character position of the span
         of text, plus one.
+
         So, for example, to set the selection for a character at position 5, use the
         range (5,6).
     */
         So, for example, to set the selection for a character at position 5, use the
         range (5,6).
     */
@@ -1303,6 +1353,7 @@ public:
         Sets the selection to the given range.
         The end point of range is specified as the last character position of the span
         of text, plus one.
         Sets the selection to the given range.
         The end point of range is specified as the last character position of the span
         of text, plus one.
+
         So, for example, to set the selection for a character at position 5, use the
         range (5,6).
     */
         So, for example, to set the selection for a character at position 5, use the
         range (5,6).
     */
@@ -1313,6 +1364,7 @@ public:
         Sets the attributes for the given range.
         The end point of range is specified as the last character position of the span
         of text, plus one.
         Sets the attributes for the given range.
         The end point of range is specified as the last character position of the span
         of text, plus one.
+
         So, for example, to set the style for a character at position 5, use the range
         (5,6).
     */
         So, for example, to set the style for a character at position 5, use the range
         (5,6).
     */
@@ -1321,52 +1373,47 @@ public:
     bool SetStyle(long start, long end, const wxTextAttr& style);
     //@}
 
     bool SetStyle(long start, long end, const wxTextAttr& style);
     //@}
 
-    //@{
     /**
         Sets the attributes for the given range, passing flags to determine how the
         attributes are set.
     /**
         Sets the attributes for the given range, passing flags to determine how the
         attributes are set.
+
         The end point of range is specified as the last character position of the span
         The end point of range is specified as the last character position of the span
-        of text, plus one.
-        So, for example, to set the style for a character at position 5, use the range
-        (5,6).
+        of text, plus one. So, for example, to set the style for a character at
+        position 5, use the range (5,6).
+
         @a flags may contain a bit list of the following values:
         @a flags may contain a bit list of the following values:
-         wxRICHTEXT_SETSTYLE_NONE: no style flag.
-         wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this operation should be
-        undoable.
-         wxRICHTEXT_SETSTYLE_OPTIMIZE: specifies that the style should not be applied
-        if the
-        combined style at this point is already the style in question.
-         wxRICHTEXT_SETSTYLE_PARAGRAPHS_ONLY: specifies that the style should only be
-        applied to paragraphs,
-        and not the content. This allows content styling to be preserved independently
-        from that of e.g. a named paragraph style.
-         wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY: specifies that the style should only be
-        applied to characters,
-        and not the paragraph. This allows content styling to be preserved
-        independently from that of e.g. a named paragraph style.
-         wxRICHTEXT_SETSTYLE_RESET: resets (clears) the existing style before applying
-        the new style.
-         wxRICHTEXT_SETSTYLE_REMOVE: removes the specified style. Only the style flags
-        are used in this operation.
-    */
-    bool SetStyleEx(const wxRichTextRange& range,
-                    const wxTextAttr& style,
-                    int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
-    bool SetStyleEx(long start, long end,
+        - wxRICHTEXT_SETSTYLE_NONE: no style flag.
+        - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this operation should be
+          undoable.
+        - wxRICHTEXT_SETSTYLE_OPTIMIZE: specifies that the style should not be applied
+          if the combined style at this point is already the style in question.
+        - wxRICHTEXT_SETSTYLE_PARAGRAPHS_ONLY: specifies that the style should only be
+          applied to paragraphs, and not the content.
+          This allows content styling to be preserved independently from that
+          of e.g. a named paragraph style.
+        - wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY: specifies that the style should only be
+          applied to characters, and not the paragraph.
+          This allows content styling to be preserved independently from that
+          of e.g. a named paragraph style.
+        - wxRICHTEXT_SETSTYLE_RESET: resets (clears) the existing style before applying
+          the new style.
+        - wxRICHTEXT_SETSTYLE_REMOVE: removes the specified style. Only the style flags
+          are used in this operation.
+    */
+    virtual bool SetStyleEx(const wxRichTextRange& range,
                     const wxTextAttr& style,
                     int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
                     const wxTextAttr& style,
                     int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
-    //@}
 
     /**
 
     /**
-        Sets the style sheet associated with the control. A style sheet allows named
-        character and paragraph styles to be applied.
+        Sets the style sheet associated with the control.
+        A style sheet allows named character and paragraph styles to be applied.
     */
     void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
 
     /**
         Replaces existing content with the given text.
     */
     */
     void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
 
     /**
         Replaces existing content with the given text.
     */
-    void SetValue(const wxString& value);
+    virtual void SetValue(const wxString& value);
 
     /**
         A helper function setting up scrollbars, for example after a resize.
 
     /**
         A helper function setting up scrollbars, for example after a resize.
@@ -1403,14 +1450,21 @@ public:
     */
     virtual bool WordRight(int noWords = 1, int flags = 0);
 
     */
     virtual bool WordRight(int noWords = 1, int flags = 0);
 
+    /**
+        Loads an image from a file and writes it at the current insertion point.
+    */
+    virtual bool WriteImage(const wxString& filename, wxBitmapType bitmapType);
+
+    /**
+        Writes an image block at the current insertion point.
+    */
+    virtual bool WriteImage(const wxRichTextImageBlock& imageBlock);
+
     //@{
     /**
     //@{
     /**
-        Write a bitmap or image at the current insertion point. Supply an optional type
-        to use
-        for internal and file storage of the raw data.
+        Write a bitmap or image at the current insertion point.
+        Supply an optional type to use for internal and file storage of the raw data.
     */
     */
-    bool WriteImage(const wxString& filename, int bitmapType);
-    bool WriteImage(const wxRichTextImageBlock& imageBlock);
     bool WriteImage(const wxBitmap& bitmap,
                     int bitmapType = wxBITMAP_TYPE_PNG);
     bool WriteImage(const wxImage& image,
     bool WriteImage(const wxBitmap& bitmap,
                     int bitmapType = wxBITMAP_TYPE_PNG);
     bool WriteImage(const wxImage& image,
@@ -1426,5 +1480,17 @@ public:
         Translates from column and line number to position.
     */
     virtual long XYToPosition(long x, long y) const;
         Translates from column and line number to position.
     */
     virtual long XYToPosition(long x, long y) const;
+
+protected:
+
+    /**
+        Currently this simply returns @c wxSize(10, 10).
+    */
+    virtual wxSize DoGetBestSize() const;
+
+    /**
+        Initialises the command event.
+    */
+    void InitCommandEvent(wxCommandEvent& event) const;
 };
 
 };