]> git.saurik.com Git - wxWidgets.git/blobdiff - interface/textctrl.h
Mention wxDataViewTreeCtrl in wxTreeCtrl
[wxWidgets.git] / interface / textctrl.h
index 1b5ff11567cd6c1afc1bed789c5921834c1fac79..6a8be8b392fa66733ed76e9b51bb91e83087e1c4 100644 (file)
     for a range of text in a wxTextCtrl or wxRichTextCtrl.
 
     When setting up a wxTextAttr object, pass a bitlist mask to
-    wxTextAttr::SetFlags to
-    indicate which style elements should be changed. As a convenience, when you
-    call a setter such
-    as SetFont, the relevant bit will be set.
+    wxTextAttr::SetFlags to indicate which style elements should be changed. As
+    a convenience, when you call a setter such as SetFont, the relevant bit
+    will be set.
 
     @library{wxcore}
     @category{richtext}
@@ -124,7 +123,7 @@ public:
 
     /**
         Gets the font attributes from the given font, using only the attributes
-        specified by @e flags.
+        specified by @a flags.
     */
     bool GetFontAttributes(const wxFont& font,
                            int flags = wxTEXT_ATTR_FONT);
@@ -404,8 +403,8 @@ public:
     //@{
     /**
         Creates a new @c wxTextAttr which is a merge of @a base and
-        @e overlay. Properties defined in @a overlay take precedence over those
-        in @e base. Properties undefined/invalid in both are undefined in the
+        @a overlay. Properties defined in @a overlay take precedence over those
+        in @a base. Properties undefined/invalid in both are undefined in the
         result.
     */
     void Merge(const wxTextAttr& overlay);
@@ -414,7 +413,7 @@ public:
     //@}
 
     /**
-        Sets the paragraph alignment. These are the possible values for @e alignment:
+        Sets the paragraph alignment. These are the possible values for @a alignment:
 
         Of these, wxTEXT_ALIGNMENT_JUSTIFIED is unimplemented. In future justification
         may be supported
@@ -620,14 +619,40 @@ public:
     void operator operator=(const wxTextAttr& attr);
 };
 
+/**
+    Describes the possible return values of wxTextCtrl::HitTest().
+
+    The element names correspond to the relationship between the point asked
+    for and the character returned, e.g. @c wxTE_HT_BEFORE means that the point
+    is before (leftward or upward) it and so on.
+ */
+enum wxTextCtrlHitTestResult
+{
+    /// Indicates that wxTextCtrl::HitTest() is not implemented on this
+    /// platform.
+    wxTE_HT_UNKNOWN = -2,
+
+    /// The point is before the character returned.
+    wxTE_HT_BEFORE,
+
+    /// The point is directly on the character returned.
+    wxTE_HT_ON_TEXT,
+
+    /// The point is below the last line of the control.
+    wxTE_HT_BELOW,
+
+    /// The point is beyond the end of line containing the character returned.
+    wxTE_HT_BEYOND
+};
 
 
 /**
     @class wxTextCtrl
     @wxheader{textctrl.h}
 
-    A text control allows text to be displayed and edited. It may be
-    single line or multi-line.
+    A text control allows text to be displayed and edited.
+
+    It may be single line or multi-line.
 
     @beginStyleTable
     @style{wxTE_PROCESS_ENTER}
@@ -693,9 +718,159 @@ public:
            capitalized.
     @endStyleTable
 
+
+    @section textctrl_text_format wxTextCtrl Text Format
+
+    The multiline text controls always store the text as a sequence of lines
+    separated by @c '\\n' characters, i.e. in the Unix text format even on
+    non-Unix platforms. This allows the user code to ignore the differences
+    between the platforms but at a price: the indices in the control such as
+    those returned by GetInsertionPoint() or GetSelection() can @b not be used
+    as indices into the string returned by GetValue() as they're going to be
+    slightly off for platforms using @c "\\r\\n" as separator (as Windows
+    does).
+
+    Instead, if you need to obtain a substring between the 2 indices obtained
+    from the control with the help of the functions mentioned above, you should
+    use GetRange(). And the indices themselves can only be passed to other
+    methods, for example SetInsertionPoint() or SetSelection().
+
+    To summarize: never use the indices returned by (multiline) wxTextCtrl as
+    indices into the string it contains, but only as arguments to be passed
+    back to the other wxTextCtrl methods. This problem doesn't arise for
+    single-line platforms however where the indices in the control do
+    correspond to the positions in the value string.
+
+
+    @section textctrl_styles wxTextCtrl Styles.
+
+    Multi-line text controls support styling, i.e. provide a possibility to set
+    colours and font for individual characters in it (note that under Windows
+    @c wxTE_RICH style is required for style support). To use the styles you
+    can either call SetDefaultStyle() before inserting the text or call
+    SetStyle() later to change the style of the text already in the control
+    (the first solution is much more efficient).
+
+    In either case, if the style doesn't specify some of the attributes (for
+    example you only want to set the text colour but without changing the font
+    nor the text background), the values of the default style will be used for
+    them. If there is no default style, the attributes of the text control
+    itself are used.
+
+    So the following code correctly describes what it does: the second call to
+    SetDefaultStyle() doesn't change the text foreground colour (which stays
+    red) while the last one doesn't change the background colour (which stays
+    grey):
+
+    @code
+    text->SetDefaultStyle(wxTextAttr(*wxRED));
+    text->AppendText("Red text\n");
+    text->SetDefaultStyle(wxTextAttr(wxNullColour, *wxLIGHT_GREY));
+    text->AppendText("Red on grey text\n");
+    text->SetDefaultStyle(wxTextAttr(*wxBLUE);
+    text->AppendText("Blue on grey text\n");
+    @endcode
+
+
+    @section textctrl_cpp_streams wxTextCtrl and C++ Streams
+
+    This class multiply-inherits from @c std::streambuf (except for some really
+    old compilers using non-standard iostream library), allowing code such as
+    the following:
+
+    @code
+    wxTextCtrl *control = new wxTextCtrl(...);
+
+    ostream stream(control)
+
+    stream << 123.456 << " some text\n";
+    stream.flush();
+    @endcode
+
+    Note that even if your compiler doesn't support this (the symbol
+    @c wxHAS_TEXT_WINDOW_STREAM has value of 0 then) you can still use
+    wxTextCtrl itself in a stream-like manner:
+
+    @code
+    wxTextCtrl *control = new wxTextCtrl(...);
+
+    *control << 123.456 << " some text\n";
+    @endcode
+
+    However the possibility to create an ostream associated with wxTextCtrl may
+    be useful if you need to redirect the output of a function taking an
+    ostream as parameter to a text control.
+
+    Another commonly requested need is to redirect @c std::cout to the text
+    control. This may be done in the following way:
+
+    @code
+    #include <iostream>
+
+    wxTextCtrl *control = new wxTextCtrl(...);
+
+    std::streambuf *sbOld = std::cout.rdbuf();
+    std::cout.rdbuf(control);
+
+    // use cout as usual, the output appears in the text control
+    ...
+
+    std::cout.rdbuf(sbOld);
+    @endcode
+
+    But wxWidgets provides a convenient class to make it even simpler so
+    instead you may just do
+
+    @code
+    #include <iostream>
+
+    wxTextCtrl *control = new wxTextCtrl(...);
+
+    wxStreamToTextRedirector redirect(control);
+
+    // all output to cout goes into the text control until the exit from
+    // current scope
+    @endcode
+
+    See wxStreamToTextRedirector for more details.
+
+
+    @section textctrl_event_handling Event Handling.
+
+    The following commands are processed by default event handlers in
+    wxTextCtrl: @c wxID_CUT, @c wxID_COPY, @c wxID_PASTE, @c wxID_UNDO, @c
+    wxID_REDO. The associated UI update events are also processed
+    automatically, when the control has the focus.
+
+    To process input from a text control, use these event handler macros to
+    direct input to member functions that take a wxCommandEvent argument.
+
+    @beginEventTable{wxCommandEvent}
+    @event{EVT_TEXT(id, func)}
+        Respond to a wxEVT_COMMAND_TEXT_UPDATED event, generated when the text
+        changes. Notice that this event will be sent when the text controls
+        contents changes -- whether this is due to user input or comes from the
+        program itself (for example, if SetValue() is called); see
+        ChangeValue() for a function which does not send this event.} This
+        event is however not sent during the control creation.
+
+    @event{EVT_TEXT_ENTER(id, func)}
+        Respond to a wxEVT_COMMAND_TEXT_ENTER event, generated when enter is
+        pressed in a text control which must have wxTE_PROCESS_ENTER style for
+        this event to be generated.
+
+    @event{EVT_TEXT_URL(id, func}}
+        A mouse event occurred over an URL in the text control (wxMSW and
+        wxGTK2 only currently).
+
+    @event{EVT_TEXT_MAXLEN(id, func}}
+        This event is generated when the user tries to enter more text into the
+        control than the limit set by SetMaxLength(), see its description.
+    @endEventTable
+
     @library{wxcore}
     @category{ctrl}
-    @appearance{textctrl.png}
+    <!-- @appearance{textctrl.png} -->
 
     @see wxTextCtrl::Create, wxValidator
 */
@@ -724,12 +899,12 @@ public:
             Window name.
 
         @remarks The horizontal scrollbar (wxHSCROLL style flag) will only be
-                 created for multi-line text controls. Without a
-                 horizontal scrollbar, text lines that don't fit in the
-                 control's size will be wrapped (but no newline
-                 character is inserted). Single line controls don't have
-                 a horizontal scrollbar, the text is automatically
-                 scrolled so that the insertion point is always visible.
+            created for multi-line text controls. Without a horizontal
+            scrollbar, text lines that don't fit in the control's size will be
+            wrapped (but no newline character is inserted). Single line
+            controls don't have a horizontal scrollbar, the text is
+            automatically scrolled so that the insertion point is always
+            visible.
 
         @see Create(), wxValidator
     */
@@ -755,41 +930,44 @@ public:
             Text to write to the text control.
 
         @remarks After the text is appended, the insertion point will be at the
-                 end of the text control. If this behaviour is not
-                 desired, the programmer should use GetInsertionPoint
-                 and SetInsertionPoint.
+            end of the text control. If this behaviour is not desired, the
+            programmer should use GetInsertionPoint and SetInsertionPoint.
 
         @see WriteText()
     */
     void AppendText(const wxString& text);
 
     /**
-        Call this function to enable auto-completion of the text typed in a single-line
-        text control using the given @e choices.
-        Notice that currently this function is only implemented in wxGTK2 and wxMSW
-        ports and does nothing under the other platforms.
+        Call this function to enable auto-completion of the text typed in a
+        single-line text control using the given @a choices.
+
+        Notice that currently this function is only implemented in wxGTK2 and
+        wxMSW ports and does nothing under the other platforms.
 
         @since 2.9.0
 
-        @returns @true if the auto-completion was enabled or @false if the
-                 operation failed, typically because auto-completion is
-                 not supported by the current platform.
+        @return
+            @true if the auto-completion was enabled or @false if the operation
+            failed, typically because auto-completion is not supported by the
+            current platform.
 
         @see AutoCompleteFileNames()
     */
     bool AutoComplete(const wxArrayString& choices);
 
     /**
-        Call this function to enable auto-completion of the text typed in a single-line
-        text control using all valid file system paths.
-        Notice that currently this function is only implemented in wxGTK2 port and does
-        nothing under the other platforms.
+        Call this function to enable auto-completion of the text typed in a
+        single-line text control using all valid file system paths.
+
+        Notice that currently this function is only implemented in wxGTK2 port
+        and does nothing under the other platforms.
 
         @since 2.9.0
 
-        @returns @true if the auto-completion was enabled or @false if the
-                 operation failed, typically because auto-completion is
-                 not supported by the current platform.
+        @return
+            @true if the auto-completion was enabled or @false if the operation
+            failed, typically because auto-completion is not supported by the
+            current platform.
 
         @see AutoComplete()
     */
@@ -807,56 +985,61 @@ public:
 
     /**
         Returns @true if the contents of the clipboard can be pasted into the
-        text control. On some platforms (Motif, GTK) this is an approximation
-        and returns @true if the control is editable, @false otherwise.
+        text control.
+
+        On some platforms (Motif, GTK) this is an approximation and returns
+        @true if the control is editable, @false otherwise.
     */
     virtual bool CanPaste();
 
     /**
-        Returns @true if there is a redo facility available and the last operation
-        can be redone.
+        Returns @true if there is a redo facility available and the last
+        operation can be redone.
     */
     virtual bool CanRedo();
 
     /**
-        Returns @true if there is an undo facility available and the last operation
-        can be undone.
+        Returns @true if there is an undo facility available and the last
+        operation can be undone.
     */
     virtual bool CanUndo();
 
     /**
-        Sets the text value and marks the control as not-modified (which means that
-        IsModified() would return @false immediately
-        after the call to SetValue).
-        Note that this function will not generate the @c wxEVT_COMMAND_TEXT_UPDATED
-        event.
-        This is the only difference with SetValue().
+        Sets the text value and marks the control as not-modified (which means
+        that IsModified() would return @false immediately after the call to
+        SetValue).
+
+        This functions does not generate the @c wxEVT_COMMAND_TEXT_UPDATED
+        event but otherwise is identical to SetValue().
         See @ref overview_progevent "this topic" for more information.
 
         @since 2.7.1
 
         @param value
-            The new value to set. It may contain newline characters if the text control
-        is multi-line.
+            The new value to set. It may contain newline characters if the text
+            control is multi-line.
     */
     virtual void ChangeValue(const wxString& value);
 
     /**
         Clears the text in the control.
+
         Note that this function will generate a @c wxEVT_COMMAND_TEXT_UPDATED
-        event.
+        event, i.e. its effect is identical to calling @c SetValue("").
     */
     virtual void Clear();
 
     /**
-        Copies the selected text to the clipboard under Motif and MS Windows.
+        Copies the selected text to the clipboard.
     */
     virtual void Copy();
 
     /**
-        Creates the text control for two-step construction. Derived classes
-        should call or replace this function. See wxTextCtrl()
-        for further details.
+        Creates the text control for two-step construction.
+
+        This method should be called if the default constructor was used for
+        the control creation. Its parameters have the same meaning as for the
+        non-default constructor.
     */
     bool Create(wxWindow* parent, wxWindowID id,
                 const wxString& value = "",
@@ -872,20 +1055,23 @@ public:
     virtual void Cut();
 
     /**
-        Resets the internal 'modified' flag as if the current edits had been saved.
+        Resets the internal modified flag as if the current changes had been
+        saved.
     */
     void DiscardEdits();
 
     /**
-        This functions inserts into the control the character which would have been
-        inserted if the given key event had occurred in the text control. The
-        @a event object should be the same as the one passed to @c EVT_KEY_DOWN
-        handler previously by wxWidgets.
-        Please note that this function doesn't currently work correctly for all keys
-        under any platform but MSW.
+        This functions inserts into the control the character which would have
+        been inserted if the given key event had occurred in the text control.
+
+        The @a event object should be the same as the one passed to @c
+        EVT_KEY_DOWN handler previously by wxWidgets. Please note that this
+        function doesn't currently work correctly for all keys under any
+        platform but MSW.
 
-        @returns @true if the event resulted in a change to the control, @false
-                 otherwise.
+        @return
+            @true if the event resulted in a change to the control, @false
+            otherwise.
     */
     bool EmulateKeyPress(const wxKeyEvent& event);
 
@@ -897,13 +1083,14 @@ public:
     const wxTextAttr GetDefaultStyle() const;
 
     /**
-        Returns the insertion point. This is defined as the zero based index of the
-        character position to the right of the insertion point. For example, if
-        the insertion point is at the end of the text control, it is equal to
-        both GetValue().Length() and
-        GetLastPosition().
-        The following code snippet safely returns the character at the insertion
-        point or the zero character if the point is at the end of the control.
+        Returns the insertion point, or cursor, position.
+
+        This is defined as the zero based index of the character position to
+        the right of the insertion point. For example, if the insertion point
+        is at the end of the single-line text control, it is equal to both
+        GetLastPosition() and GetValue().length() (but notice that the latter
+        equality is not necessarily true for multiline edit controls which may
+        use multiple new line characters).
     */
     virtual long GetInsertionPoint() const;
 
@@ -914,13 +1101,14 @@ public:
     virtual wxTextPos GetLastPosition() const;
 
     /**
-        Gets the length of the specified line, not including any trailing newline
-        character(s).
+        Gets the length of the specified line, not including any trailing
+        newline character(s).
 
         @param lineNo
             Line number (starting from zero).
 
-        @returns The length of the line, or -1 if lineNo was invalid.
+        @return
+            The length of the line, or -1 if @a lineNo was invalid.
     */
     int GetLineLength(long lineNo) const;
 
@@ -931,7 +1119,8 @@ public:
         @param lineNo
             The line number, starting from zero.
 
-        @returns The contents of the line.
+        @return
+            The contents of the line.
     */
     wxString GetLineText(long lineNo) const;
 
@@ -945,27 +1134,27 @@ public:
     int GetNumberOfLines() const;
 
     /**
-        Returns the string containing the text starting in the positions @a from and
-        up to @a to in the control. The positions must have been returned by another
-        wxTextCtrl method.
+        Returns the string containing the text starting in the positions
+        @a from and up to @a to in the control.
+
+        The positions must have been returned by another wxTextCtrl method.
         Please note that the positions in a multiline wxTextCtrl do @b not
-        correspond to the indices in the string returned by
-        GetValue() because of the different new line
-        representations (@c CR or @c CR LF) and so this method should be used to
-        obtain the correct results instead of extracting parts of the entire value. It
-        may also be more efficient, especially if the control contains a lot of data.
+        correspond to the indices in the string returned by GetValue() because
+        of the different new line representations (@c CR or @c CR LF) and so
+        this method should be used to obtain the correct results instead of
+        extracting parts of the entire value. It may also be more efficient,
+        especially if the control contains a lot of data.
     */
     virtual wxString GetRange(long from, long to) const;
 
     /**
-        Gets the current selection span. If the returned values are equal, there was
-        no selection.
-        Please note that the indices returned may be used with the other wxTextctrl
-        methods but don't necessarily represent the correct indices into the string
-        returned by GetValue() for multiline controls
-        under Windows (at least,) you should use
-        GetStringSelection() to get the selected
-        text.
+        Gets the current selection span.
+
+        If the returned values are equal, there was no selection. Please note
+        that the indices returned may be used with the other wxTextCtrl methods
+        but don't necessarily represent the correct indices into the string
+        returned by GetValue() for multiline controls under Windows (at least,)
+        you should use GetStringSelection() to get the selected text.
 
         @param from
             The returned first position.
@@ -975,37 +1164,42 @@ public:
     virtual void GetSelection(long* from, long* to) const;
 
     /**
-        Gets the text currently selected in the control. If there is no selection, the
-        returned string is empty.
+        Gets the text currently selected in the control.
+
+        If there is no selection, the returned string is empty.
     */
     virtual wxString GetStringSelection();
 
     /**
-        Returns the style at this position in the text control. Not all platforms
-        support this function.
+        Returns the style at this position in the text control.
+
+        Not all platforms support this function.
 
-        @returns @true on success, @false if an error occurred - it may also mean
-                 that the styles are not supported under this platform.
+        @return
+            @true on success, @false if an error occurred (this may also mean
+            that the styles are not supported under this platform).
 
         @see SetStyle(), wxTextAttr
     */
     bool GetStyle(long position, wxTextAttr& style);
 
     /**
-        Gets the contents of the control. Notice that for a multiline text control,
-        the lines will be separated by (Unix-style) \n characters, even
-        under Windows where they are separated by a \r\n
-        sequence in the native control.
+        Gets the contents of the control.
+        Notice that for a multiline text control, the lines will be separated
+        by (Unix-style) @c \\n characters, even under Windows where they are
+        separated by a @c \\r\\n sequence in the native control.
     */
     wxString GetValue() const;
 
     /**
-        This function finds the character at the specified position expressed in
-        pixels. If the return code is not @c wxTE_HT_UNKNOWN the row and column
-        of the character closest to this position are returned in the @a col and
-        @a row parameters (unless the pointers are @NULL which is allowed).
-        Please note that this function is currently only implemented in wxUniv,
-        wxMSW and wxGTK2 ports.
+        This function finds the character at the specified position expressed
+        in pixels.
+
+        If the return code is not @c wxTE_HT_UNKNOWN the row and column of the
+        character closest to this position are returned in the @a col and @a
+        row parameters (unless the pointers are @NULL which is allowed). Please
+        note that this function is currently only implemented in wxUniv, wxMSW
+        and wxGTK2 ports.
 
         @see PositionToXY(), XYToPosition()
     */
@@ -1014,25 +1208,28 @@ public:
                                     wxTextCoord row) const;
 
     /**
-        Returns @true if the controls contents may be edited by user (note that it
-        always can be changed by the program), i.e. if the control hasn't been put in
-        read-only mode by a previous call to
-        SetEditable().
+        Returns @true if the controls contents may be edited by user (note that
+        it always can be changed by the program).
+
+        In other words, this functions returns @true if the control hasn't been
+        put in read-only mode by a previous call to SetEditable().
     */
     bool IsEditable() const;
 
     /**
-        Returns @true if the control is currently empty. This is the same as
-        @c GetValue().empty() but can be much more efficient for the multiline
-        controls containing big amounts of text.
+        Returns @true if the control is currently empty.
+
+        This is the same as @c GetValue().empty() but can be much more
+        efficient for the multiline controls containing big amounts of text.
 
         @since 2.7.1
     */
     bool IsEmpty() const;
 
     /**
-        Returns @true if the text has been modified by user. Note that calling
-        SetValue() doesn't make the control modified.
+        Returns @true if the text has been modified by user.
+
+        Note that calling SetValue() doesn't make the control modified.
 
         @see MarkDirty()
     */
@@ -1062,7 +1259,8 @@ public:
         @param fileType
             The type of file to load. This is currently ignored in wxTextCtrl.
 
-        @returns @true if successful, @false otherwise.
+        @return
+            @true if successful, @false otherwise.
     */
     bool LoadFile(const wxString& filename,
                   int fileType = wxTEXT_TYPE_ANY);
@@ -1075,8 +1273,8 @@ public:
     void MarkDirty();
 
     /**
-        This event handler function implements default drag and drop behaviour, which
-        is to load the first dropped file into the control.
+        This event handler function implements default drag and drop behaviour,
+        which is to load the first dropped file into the control.
 
         @param event
             The drop files event.
@@ -1102,23 +1300,25 @@ public:
         @param y
             Receives zero based line number.
 
-        @returns @true on success, @false on failure (most likely due to a too
-                 large position parameter).
+        @return
+            @true on success, @false on failure (most likely due to a too large
+            position parameter).
 
         @see XYToPosition()
     */
     bool PositionToXY(long pos, long* x, long* y) const;
 
     /**
-        If there is a redo facility and the last operation can be redone, redoes the
-        last operation. Does nothing
-        if there is no redo facility.
+        If there is a redo facility and the last operation can be redone,
+        redoes the last operation.
+
+        Does nothing if there is no redo facility.
     */
     virtual void Redo();
 
     /**
-        Removes the text starting at the first given position up to (but not including)
-        the character at the last position.
+        Removes the text starting at the first given position up to (but not
+        including) the character at the last position.
 
         @param from
             The first position.
@@ -1128,8 +1328,8 @@ public:
     virtual void Remove(long from, long to);
 
     /**
-        Replaces the text starting at the first position up to (but not including)
-        the character at the last position with the given text.
+        Replaces the text starting at the first position up to (but not
+        including) the character at the last position with the given text.
 
         @param from
             The first position.
@@ -1148,38 +1348,42 @@ public:
         @param fileType
             The type of file to save. This is currently ignored in wxTextCtrl.
 
-        @returns @true if the operation was successful, @false otherwise.
+        @return
+            @true if the operation was successful, @false otherwise.
     */
     bool SaveFile(const wxString& filename,
                   int fileType = wxTEXT_TYPE_ANY);
 
     /**
-        Changes the default style to use for the new text which is going to be added
-        to the control using WriteText() or
-        AppendText().
+        Changes the default style to use for the new text which is going to be
+        added to the control using WriteText() or AppendText().
+
         If either of the font, foreground, or background colour is not set in
-        @e style, the values of the previous default style are used for them. If
-        the previous default style didn't set them neither, the global font or colours
-        of the text control itself are used as fall back.
-        However if the @a style parameter is the default wxTextAttr, then the
-        default style is just reset (instead of being combined with the new style which
+        @a style, the values of the previous default style are used for them.
+        If the previous default style didn't set them neither, the global font
+        or colours of the text control itself are used as fall back. However if
+        the @a style parameter is the default wxTextAttr, then the default
+        style is just reset (instead of being combined with the new style which
         wouldn't change it at all).
 
         @param style
             The style for the new text.
 
-        @returns @true on success, @false if an error occurred - may also mean that
-                 the styles are not supported under this platform.
+        @return
+            @true on success, @false if an error occurred (this may also mean
+            that the styles are not supported under this platform).
 
         @see GetDefaultStyle()
     */
     bool SetDefaultStyle(const wxTextAttr& style);
 
     /**
-        Makes the text item editable or read-only, overriding the @b wxTE_READONLY flag.
+        Makes the text item editable or read-only, overriding the
+        @b wxTE_READONLY flag.
 
         @param editable
-            If @true, the control is editable. If @false, the control is read-only.
+            If @true, the control is editable. If @false, the control is
+            read-only.
 
         @see IsEditable()
     */
@@ -1194,25 +1398,27 @@ public:
     virtual void SetInsertionPoint(long pos);
 
     /**
-        Sets the insertion point at the end of the text control. This is equivalent
-        to wxTextCtrl::SetInsertionPoint(wxTextCtrl::GetLastPosition()).
+        Sets the insertion point at the end of the text control.
+
+        This is equivalent to calling wxTextCtrl::SetInsertionPoint() with
+        wxTextCtrl::GetLastPosition() argument.
     */
     virtual void SetInsertionPointEnd();
 
     /**
-        This function sets the maximum number of characters the user can enter into the
-        control. In other words, it allows to limit the text value length to @e len
-        not counting the terminating @c NUL character.
-        If @a len is 0, the previously set max length limit, if any, is discarded
-        and the user may enter as much text as the underlying native text control
-        widget supports (typically at least 32Kb).
-        If the user tries to enter more characters into the text control when it
-        already is filled up to the maximal length, a
-        @c wxEVT_COMMAND_TEXT_MAXLEN event is sent to notify the program about it
-        (giving it the possibility to show an explanatory message, for example) and the
-        extra input is discarded.
-        Note that under GTK+, this function may only be used with single line text
-        controls.
+        This function sets the maximum number of characters the user can enter
+        into the control.
+
+        In other words, it allows to limit the text value length to @a len not
+        counting the terminating @c NUL character. If @a len is 0, the
+        previously set max length limit, if any, is discarded and the user may
+        enter as much text as the underlying native text control widget
+        supports (typically at least 32Kb). If the user tries to enter more
+        characters into the text control when it already is filled up to the
+        maximal length, a @c wxEVT_COMMAND_TEXT_MAXLEN event is sent to notify
+        the program about it (giving it the possibility to show an explanatory
+        message, for example) and the extra input is discarded. Note that in
+        wxGTK this function may only be used with single line text controls.
     */
     virtual void SetMaxLength(unsigned long len);
 
@@ -1225,8 +1431,9 @@ public:
 
     /**
         Selects the text starting at the first position up to (but not
-        including) the character at the last position. If both parameters are
-        equal to -1 all text in the control is selected.
+        including) the character at the last position.
+
+        If both parameters are equal to -1 all text in the control is selected.
 
         @param from
             The first position.
@@ -1245,8 +1452,10 @@ public:
     virtual void SelectAll();
 
     /**
-        Changes the style of the given range. If any attribute within @a style is
-        not set, the corresponding attribute from GetDefaultStyle() is used.
+        Changes the style of the given range.
+
+        If any attribute within @a style is not set, the corresponding
+        attribute from GetDefaultStyle() is used.
 
         @param start
             The start of the range to change.
@@ -1255,25 +1464,25 @@ public:
         @param style
             The new style for the range.
 
-        @returns @true on success, @false if an error occurred - it may also mean
-                 that the styles are not supported under this platform.
+        @return
+            @true on success, @false if an error occurred (this may also mean
+            that the styles are not supported under this platform).
 
         @see GetStyle(), wxTextAttr
     */
     bool SetStyle(long start, long end, const wxTextAttr& style);
 
     /**
-        Sets the text value and marks the control as not-modified (which means that
-        IsModified() would return @false immediately
-        after the call to SetValue).
-        Note that this function will generate a @c wxEVT_COMMAND_TEXT_UPDATED
-        event.
-        This function is deprecated and should not be used in new code. Please use the
-        ChangeValue() function instead.
+        Sets the text value and marks the control as not-modified (which means
+        that IsModified() would return @false immediately after the call to
+        SetValue).
+
+        Note that this function generates a @c wxEVT_COMMAND_TEXT_UPDATED
+        event, to avoid this you can use ChangeValue() instead.
 
         @param value
-            The new value to set. It may contain newline characters if the text control
-        is multi-line.
+            The new value to set. It may contain newline characters if the text
+            control is multi-line.
     */
     virtual void SetValue(const wxString& value);
 
@@ -1286,9 +1495,10 @@ public:
     void ShowPosition(long pos);
 
     /**
-        If there is an undo facility and the last operation can be undone, undoes the
-        last operation. Does nothing
-        if there is no undo facility.
+        If there is an undo facility and the last operation can be undone,
+        undoes the last operation.
+
+        Does nothing if there is no undo facility.
     */
     virtual void Undo();
 
@@ -1299,9 +1509,8 @@ public:
             Text to write to the text control.
 
         @remarks Newlines in the text string are the only control characters
-                 allowed, and they will cause appropriate line breaks.
-                 See () and AppendText() for more
-                 convenient ways of writing to the window.
+            allowed, and they will cause appropriate line breaks. See () and
+            AppendText() for more convenient ways of writing to the window.
     */
     void WriteText(const wxString& text);
 
@@ -1313,20 +1522,31 @@ public:
         @param y
             The line number.
 
-        @returns The position value, or -1 if x or y was invalid.
+        @return
+            The position value, or -1 if x or y was invalid.
     */
     long XYToPosition(long x, long y);
 
     //@{
     /**
-        Operator definitions for appending to a text control, for example:
+        Operator definitions for appending to a text control.
+
+        These operators can be used as with the standard C++ streams, for
+        example:
+        @code
+            wxTextCtrl *wnd = new wxTextCtrl(my_frame);
+
+            (*wnd) << "Welcome to text control number " << 1 << ".\n";
+        @endcode
     */
-    wxTextCtrl operator(const wxString& s);
-    wxTextCtrl operator(int i);
-    wxTextCtrl operator(long i);
-    wxTextCtrl operator(float f);
-    wxTextCtrl operator(double d);
-    wxTextCtrl operator(char c);
+
+    wxTextCtrl& operator<<(const wxString& s);
+    wxTextCtrl& operator<<(int i);
+    wxTextCtrl& operator<<(long i);
+    wxTextCtrl& operator<<(float f);
+    wxTextCtrl& operator<<(double d);
+    wxTextCtrl& operator<<(char c);
+    wxTextCtrl& operator<<(wchar_t c);
     //@}
 };
 
@@ -1373,8 +1593,8 @@ class wxStreamToTextRedirector
 {
 public:
     /**
-        The constructor starts redirecting output sent to @a ostr or @e cout for
-        the default parameter value to the text control @e text.
+        The constructor starts redirecting output sent to @a ostr or @a cout for
+        the default parameter value to the text control @a text.
 
         @param text
             The text control to append output too, must be non-@NULL