]> git.saurik.com Git - wxWidgets.git/blobdiff - wxPython/src/_richtextctrl.i
Merge recent wxPython changes from 2.8 branch to HEAD
[wxWidgets.git] / wxPython / src / _richtextctrl.i
diff --git a/wxPython/src/_richtextctrl.i b/wxPython/src/_richtextctrl.i
new file mode 100644 (file)
index 0000000..7313b46
--- /dev/null
@@ -0,0 +1,1237 @@
+/////////////////////////////////////////////////////////////////////////////
+// Name:        _richtextctrl.i
+// Purpose:     wxRichTextCtrl and related classes
+//
+// Author:      Robin Dunn
+//
+// Created:     11-April-2006
+// RCS-ID:      $Id$
+// Copyright:   (c) 2006 by Total Control Software
+// Licence:     wxWindows license
+/////////////////////////////////////////////////////////////////////////////
+
+// Not a %module
+
+
+//---------------------------------------------------------------------------
+
+%{
+%}
+
+//---------------------------------------------------------------------------
+%newgroup
+
+enum {
+    wxRE_READONLY,
+    wxRE_MULTILINE,
+
+    wxRICHTEXT_SHIFT_DOWN,
+    wxRICHTEXT_CTRL_DOWN,
+    wxRICHTEXT_ALT_DOWN,
+
+    wxRICHTEXT_SELECTED,
+    wxRICHTEXT_TAGGED,
+    wxRICHTEXT_FOCUSSED,
+    wxRICHTEXT_IS_FOCUS,
+
+};
+
+
+//---------------------------------------------------------------------------
+
+MAKE_CONST_WXSTRING2(RichTextCtrlNameStr, wxT("richText"));
+
+MustHaveApp(wxRichTextCtrl);
+
+
+DocStr(wxRichTextCtrl,
+"", "");
+
+
+class wxRichTextCtrl : public wxScrolledWindow
+{
+public:
+    %pythonAppend wxRichTextCtrl         "self._setOORInfo(self)"
+    %pythonAppend wxRichTextCtrl()       ""
+
+    wxRichTextCtrl( wxWindow* parent,
+                    wxWindowID id = -1,
+                    const wxString& value = wxPyEmptyString,
+                    const wxPoint& pos = wxDefaultPosition,
+                    const wxSize& size = wxDefaultSize,
+                    long style = wxRE_MULTILINE,
+                    const wxValidator& validator = wxDefaultValidator,
+                    const wxString& name = wxPyRichTextCtrlNameStr );
+    %RenameCtor(PreRichTextCtrl, wxRichTextCtrl());
+
+
+    bool Create( wxWindow* parent,
+                 wxWindowID id = -1,
+                 const wxString& value = wxPyEmptyString,
+                 const wxPoint& pos = wxDefaultPosition,
+                 const wxSize& size = wxDefaultSize,
+                 long style = wxRE_MULTILINE,
+                 const wxValidator& validator = wxDefaultValidator,
+                 const wxString& name = wxPyRichTextCtrlNameStr );
+
+
+    DocDeclStr(
+        virtual wxString , GetValue() const,
+        "", "");
+
+    DocDeclStr(
+        virtual void , SetValue(const wxString& value),
+        "", "");
+
+
+    DocDeclStr(
+        virtual wxString , GetRange(long from, long to) const,
+        "", "");
+
+
+    DocDeclStr(
+        virtual int , GetLineLength(long lineNo) const ,
+        "", "");
+
+    DocDeclStr(
+        virtual wxString , GetLineText(long lineNo) const ,
+        "", "");
+
+    DocDeclStr(
+        virtual int , GetNumberOfLines() const ,
+        "", "");
+
+
+    DocDeclStr(
+        virtual bool , IsModified() const ,
+        "", "");
+
+    DocDeclStr(
+        virtual bool , IsEditable() const ,
+        "", "");
+
+
+    // more readable flag testing methods
+    DocDeclStr(
+        bool , IsSingleLine() const,
+        "", "");
+
+    DocDeclStr(
+        bool , IsMultiLine() const,
+        "", "");
+
+
+    DocDeclAStr(
+        virtual void , GetSelection(long* OUTPUT, long* OUTPUT) const,
+        "GetSelection() --> (start, end)",
+        "Returns the start and end positions of the current selection.  If the
+values are the same then there is no selection.", "");
+
+
+    DocDeclStr(
+        virtual wxString , GetStringSelection() const,
+        "", "");
+
+
+    DocDeclStr(
+        wxString , GetFilename() const,
+        "", "");
+
+
+    DocDeclStr(
+        void , SetFilename(const wxString& filename),
+        "", "");
+
+
+    DocDeclStr(
+        void , SetDelayedLayoutThreshold(long threshold),
+        "Set the threshold in character positions for doing layout optimization
+during sizing.", "");
+
+
+    DocDeclStr(
+        long , GetDelayedLayoutThreshold() const,
+        "Get the threshold in character positions for doing layout optimization
+during sizing.", "");
+
+
+
+    DocDeclStr(
+        virtual void , Clear(),
+        "", "");
+
+    DocDeclStr(
+        virtual void , Replace(long from, long to, const wxString& value),
+        "", "");
+
+    DocDeclStr(
+        virtual void , Remove(long from, long to),
+        "", "");
+
+
+    DocDeclStr(
+        virtual bool , LoadFile(const wxString& file, int type = wxRICHTEXT_TYPE_ANY),
+        "Load the contents of the document from the given filename.", "");
+
+    DocDeclStr(
+        virtual bool , SaveFile(const wxString& file = wxPyEmptyString,
+                                int type = wxRICHTEXT_TYPE_ANY),
+        "Save the contents of the document to the given filename, or if the
+empty string is passed then to the filename set with `SetFilename`.", "");
+
+
+    DocDeclStr(
+        void , SetHandlerFlags(int flags), 
+        "Set the handler flags, controlling loading and saving.", "");
+
+    DocDeclStr(
+        int , GetHandlerFlags() const, 
+        "Get the handler flags, controlling loading and saving.", "");
+
+    // sets/clears the dirty flag
+    DocDeclStr(
+        virtual void , MarkDirty(),
+        "Sets the dirty flag, meaning that the contents of the control have
+changed and need to be saved.", "");
+
+    DocDeclStr(
+        virtual void , DiscardEdits(),
+        "Clears the dirty flag.
+:see: `MarkDirty`", "");
+
+
+    DocDeclStr(
+        virtual void , SetMaxLength(unsigned long len),
+        "Set the max number of characters which may be entered in a single line
+text control.", "");
+
+
+    DocDeclStr(
+        virtual void , WriteText(const wxString& text),
+        "Insert text at the current position.", "");
+
+    DocDeclStr(
+        virtual void , AppendText(const wxString& text),
+        "Append text to the end of the document.", "");
+
+
+    DocDeclStr(
+        virtual bool , SetStyle(const wxRichTextRange& range, const wxRichTextAttr& style),
+        "Set the style for the text in ``range`` to ``style``", "");
+
+    DocDeclStr(
+        virtual bool , GetStyle(long position, wxRichTextAttr& style),
+        "Retrieve the style used at the given position.  Copies the style
+values at ``position`` into the ``style`` parameter and returns ``True``
+if successful.  Returns ``False`` otherwise.", "");
+
+
+    DocDeclStr(
+        virtual bool , GetStyleForRange(const wxRichTextRange& range, wxRichTextAttr& style),
+        "Get the common set of styles for the range", "");
+    
+
+    DocDeclStr(
+        virtual bool , SetStyleEx(const wxRichTextRange& range, const wxRichTextAttr& style,
+                                  int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO),
+        "Extended style setting operation with flags including:
+RICHTEXT_SETSTYLE_WITH_UNDO, RICHTEXT_SETSTYLE_OPTIMIZE,
+RICHTEXT_SETSTYLE_PARAGRAPHS_ONLY, RICHTEXT_SETSTYLE_CHARACTERS_ONLY", "");
+    
+
+    
+    DocDeclStr(
+        virtual bool , GetUncombinedStyle(long position, wxRichTextAttr& style),
+        "Get the content (uncombined) attributes for this position.  Copies the
+style values at ``position`` into the ``style`` parameter and returns
+``True`` if successful.  Returns ``False`` otherwise.", "");
+
+
+    DocDeclStr(
+        virtual bool , SetDefaultStyle(const wxRichTextAttr& style),
+        "Set the style used by default for the rich text document.", "");
+
+
+    DocDeclStrName(
+        virtual const wxRichTextAttr , GetDefaultStyleEx() const,
+        "Retrieves a copy of the default style object.", "",
+        GetDefaultStyle);
+
+
+// TODO:  Select which of these to keep or rename
+    
+    /// Set list style
+//     virtual bool SetListStyle(const wxRichTextRange& range,
+//                               wxRichTextListStyleDefinition* def,
+//                               int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
+//                               int startFrom = 1, int specifiedLevel = -1);
+    virtual bool SetListStyle(const wxRichTextRange& range,
+                              const wxString& defName,
+                              int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
+                              int startFrom = 1, int specifiedLevel = -1);
+
+    /// Clear list for given range
+    virtual bool ClearListStyle(const wxRichTextRange& range, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
+
+    /// Number/renumber any list elements in the given range
+    /// def/defName can be NULL/empty to indicate that the existing list style should be used.
+//     virtual bool NumberList(const wxRichTextRange& range,
+//                             wxRichTextListStyleDefinition* def = NULL,
+//                             int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
+//                             int startFrom = 1, int specifiedLevel = -1);
+    virtual bool NumberList(const wxRichTextRange& range,
+                            const wxString& defName,
+                            int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
+                            int startFrom = 1, int specifiedLevel = -1);
+
+    /// Promote the list items within the given range. promoteBy can be a positive or negative number, e.g. 1 or -1
+    /// def/defName can be NULL/empty to indicate that the existing list style should be used.
+//     virtual bool PromoteList(int promoteBy, const wxRichTextRange& range,
+//                              wxRichTextListStyleDefinition* def = NULL,
+//                              int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
+//                              int specifiedLevel = -1);
+    virtual bool PromoteList(int promoteBy, const wxRichTextRange& range,
+                             const wxString& defName,
+                             int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
+                             int specifiedLevel = -1);
+
+    /// Deletes the content in the given range
+    virtual bool Delete(const wxRichTextRange& range);
+
+
+    
+
+    DocDeclStr(
+        virtual long , XYToPosition(long x, long y) const,
+        "Translate a col,row coordinants into a document position.", "");
+
+    DocDeclAStr(
+        virtual void , PositionToXY(long pos, long *OUTPUT, long *OUTPUT) const,
+        "PositionToXY(self, long pos) --> (x, y)",
+        "Retrieves the col,row for the given position within the document", "");
+
+
+    DocDeclStr(
+        virtual void , ShowPosition(long position),
+        "Ensure that the given position in the document is visible.", "");
+
+
+    DocDeclAStr(
+        virtual wxTextCtrlHitTestResult , HitTest(const wxPoint& pt, long *OUTPUT) const,
+        "HitTest(self, Point pt) --> (result, pos)",
+        "Returns the character position at the given point in pixels.  Note
+that ``pt`` should be given in device coordinates, and not be adjusted
+for the client area origin nor for scrolling.  The return value is a
+tuple of the hit test result and the position.", "
+
+Possible result values are a bitmask of these flags:
+
+    =========================  ====================================
+    RICHTEXT_HITTEST_NONE      The point was not on this object.
+    RICHTEXT_HITTEST_BEFORE    The point was before the position
+                                  returned from HitTest.
+    RICHTEXT_HITTEST_AFTER     The point was after the position
+                               returned from HitTest.
+    RICHTEXT_HITTEST_ON        The point was on the position
+                               returned from HitTest
+    =========================  ====================================
+");
+
+    DocDeclAStrName(
+        virtual wxTextCtrlHitTestResult , HitTest(const wxPoint& pt,
+                                                  wxTextCoord *OUTPUT,
+                                                  wxTextCoord *OUTPUT) const,
+        "HitTestRC(self, Point pt) --> (result, col, row)",
+        "Returns the column and row of the given point in pixels.  Note that
+``pt`` should be given in device coordinates, and not be adjusted for
+the client area origin nor for scrolling.  The return value is a tuple
+of the hit test result and the column and row values.", "
+:see: `HitTest`",
+        HitTestXY);
+
+
+    // Clipboard operations
+    DocDeclStr(
+        virtual void , Copy(),
+        "Copies the selected text to the clipboard.", "");
+
+    DocDeclStr(
+        virtual void , Cut(),
+        "Copies the selected text to the clipboard and removes the selection.", "");
+
+    DocDeclStr(
+        virtual void , Paste(),
+        "Pastes text from the clipboard into the document at the current
+insertion point.", "");
+
+    DocDeclStr(
+        virtual void , DeleteSelection(),
+        "Remove the current selection.", "");
+
+
+    DocDeclStr(
+        virtual bool , CanCopy() const,
+        "Returns ``True`` if the selection can be copied to the clipboard.", "");
+
+    DocDeclStr(
+        virtual bool , CanCut() const,
+        "Returns ``True`` if the selection can be cut to the clipboard.", "");
+
+    DocDeclStr(
+        virtual bool , CanPaste() const,
+        "Returns ``True`` if the current contents of the clipboard can be
+pasted into the document.", "");
+
+    DocDeclStr(
+        virtual bool , CanDeleteSelection() const,
+        "Returns ``True`` if the selection can be removed from the document.", "");
+
+
+    // Undo/redo
+    DocDeclStr(
+        virtual void , Undo(),
+        "If the last operation can be undone, undoes the last operation.", "");
+
+    DocDeclStr(
+        virtual void , Redo(),
+        "If the last operation can be redone, redoes the last operation.", "");
+
+
+    DocDeclStr(
+        virtual bool , CanUndo() const,
+        "Returns ``True`` if the last operation can be undone.", "");
+
+    DocDeclStr(
+        virtual bool , CanRedo() const,
+        "Returns ``True`` if the last operation can be redone.", "");
+
+
+    // Insertion point
+    DocDeclStr(
+        virtual void , SetInsertionPoint(long pos),
+        "Sets the insertion point at the given position.", "");
+
+    DocDeclStr(
+        virtual void , SetInsertionPointEnd(),
+        "Moves the insertion point to the end of the document.", "");
+
+    DocDeclStr(
+        virtual long , GetInsertionPoint() const,
+        "Returns the insertion point. This is defined as the zero based index
+of the character position to the right of the insertion point.", "");
+
+    DocDeclStr(
+        virtual long , GetLastPosition() const,
+        "Returns the zero based index of the last position in the document.", "");
+
+
+    DocDeclStr(
+        virtual void , SetSelection(long from, long to),
+        "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 then all text in the control is selected.", "");
+
+    DocDeclStr(
+        virtual void , SelectAll(),
+        "Select all text in the document.", "");
+
+    DocDeclStr(
+        virtual void , SetEditable(bool editable),
+        "Makes the document editable or read-only, overriding the RE_READONLY
+flag.", "");
+
+
+    DocDeclStr(
+        virtual bool , HasSelection() const,
+        "", "");
+
+
+///// Functionality specific to wxRichTextCtrl
+
+    /// Write an image at the current insertion point. Supply optional type to use
+    /// for internal and file storage of the raw data.
+    DocDeclStr(
+        virtual bool , WriteImage(const wxImage& image, int bitmapType = wxBITMAP_TYPE_PNG),
+        "", "");
+
+
+    /// Write a bitmap at the current insertion point. Supply optional type to use
+    /// for internal and file storage of the raw data.
+    DocDeclStrName(
+        virtual bool , WriteImage(const wxBitmap& bitmap, int bitmapType = wxBITMAP_TYPE_PNG),
+        "", "",
+        WriteBitmap);
+
+
+    /// Load an image from file and write at the current insertion point.
+    DocDeclStrName(
+        virtual bool , WriteImage(const wxString& filename, int bitmapType),
+        "", "",
+        WriteImageFile);
+
+
+    /// Write an image block at the current insertion point.
+    DocDeclStrName(
+        virtual bool , WriteImage(const wxRichTextImageBlock& imageBlock),
+        "", "",
+        WriteImageBlock);
+
+
+    /// Insert a newline (actually paragraph) at the current insertion point.
+    DocDeclStr(
+        virtual bool , Newline(),
+        "", "");
+
+
+    /// Insert a line break at the current insertion point.
+    virtual bool LineBreak();
+
+    
+    DocDeclStr(
+        virtual void , SetBasicStyle(const wxRichTextAttr& style),
+        "", "");
+
+
+    /// Get basic (overall) style
+    DocDeclStr(
+        virtual const wxRichTextAttr , GetBasicStyle() const,
+        "", "");
+
+
+    /// Begin using a style
+    DocDeclStr(
+        virtual bool , BeginStyle(const wxRichTextAttr& style),
+        "", "");
+
+    
+    /// End the style
+    DocDeclStr(
+        virtual bool , EndStyle(),
+        "", "");
+
+
+    /// End all styles
+    DocDeclStr(
+        virtual bool , EndAllStyles(),
+        "", "");
+
+
+    /// Begin using bold
+    DocDeclStr(
+        bool , BeginBold(),
+        "", "");
+
+
+    /// End using bold
+    DocDeclStr(
+        bool , EndBold(),
+        "", "");
+
+
+    /// Begin using italic
+    DocDeclStr(
+        bool , BeginItalic(),
+        "", "");
+
+
+    /// End using italic
+    DocDeclStr(
+        bool , EndItalic(),
+        "", "");
+
+
+    /// Begin using underline
+    DocDeclStr(
+        bool , BeginUnderline(),
+        "", "");
+
+
+    /// End using underline
+    DocDeclStr(
+        bool , EndUnderline(),
+        "", "");
+
+
+    /// Begin using point size
+    DocDeclStr(
+        bool , BeginFontSize(int pointSize),
+        "", "");
+
+
+    /// End using point size
+    DocDeclStr(
+        bool , EndFontSize(),
+        "", "");
+
+
+    /// Begin using this font
+    DocDeclStr(
+        bool , BeginFont(const wxFont& font),
+        "", "");
+
+
+    /// End using a font
+    DocDeclStr(
+        bool , EndFont(),
+        "", "");
+
+
+    /// Begin using this colour
+    DocDeclStr(
+        bool , BeginTextColour(const wxColour& colour),
+        "", "");
+
+
+    /// End using a colour
+    DocDeclStr(
+        bool , EndTextColour(),
+        "", "");
+
+
+    /// Begin using alignment
+    DocDeclStr(
+        bool , BeginAlignment(wxTextAttrAlignment alignment),
+        "", "");
+
+
+    /// End alignment
+    DocDeclStr(
+        bool , EndAlignment(),
+        "", "");
+
+
+    /// Begin left indent
+    DocDeclStr(
+        bool , BeginLeftIndent(int leftIndent, int leftSubIndent = 0),
+        "", "");
+
+
+    /// End left indent
+    DocDeclStr(
+        bool , EndLeftIndent(),
+        "", "");
+
+
+    /// Begin right indent
+    DocDeclStr(
+        bool , BeginRightIndent(int rightIndent),
+        "", "");
+
+
+    /// End right indent
+    DocDeclStr(
+        bool , EndRightIndent(),
+        "", "");
+
+
+    /// Begin paragraph spacing
+    DocDeclStr(
+        bool , BeginParagraphSpacing(int before, int after),
+        "", "");
+
+
+    /// End paragraph spacing
+    DocDeclStr(
+        bool , EndParagraphSpacing(),
+        "", "");
+
+
+    /// Begin line spacing
+    DocDeclStr(
+        bool , BeginLineSpacing(int lineSpacing),
+        "", "");
+
+
+    /// End line spacing
+    DocDeclStr(
+        bool , EndLineSpacing(),
+        "", "");
+
+
+    /// Begin numbered bullet
+    DocDeclStr(
+        bool , BeginNumberedBullet(int bulletNumber,
+                                   int leftIndent,
+                                   int leftSubIndent,
+                                   int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_ARABIC|wxTEXT_ATTR_BULLET_STYLE_PERIOD),
+        "", "");
+
+
+    /// End numbered bullet
+    DocDeclStr(
+        bool , EndNumberedBullet(),
+        "", "");
+
+
+    /// Begin symbol bullet
+    DocDeclStr(
+        bool , BeginSymbolBullet(const wxString& symbol,
+                                 int leftIndent,
+                                 int leftSubIndent,
+                                 int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_SYMBOL),
+        "", "");
+
+
+    /// End symbol bullet
+    DocDeclStr(
+        bool , EndSymbolBullet(),
+        "", "");
+
+
+    /// Begin standard bullet
+    DocDeclStr(
+        bool , BeginStandardBullet(const wxString& bulletName,
+                                   int leftIndent,
+                                   int leftSubIndent,
+                                   int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_STANDARD),
+        "", "");
+    
+
+
+    /// End standard bullet
+    DocDeclStr(
+        bool , EndStandardBullet(),
+        "", "");
+    
+    
+    /// Begin named character style
+    DocDeclStr(
+        bool , BeginCharacterStyle(const wxString& characterStyle),
+        "", "");
+
+
+    /// End named character style
+    DocDeclStr(
+        bool , EndCharacterStyle(),
+        "", "");
+
+
+    /// Begin named paragraph style
+    DocDeclStr(
+        bool , BeginParagraphStyle(const wxString& paragraphStyle),
+        "", "");
+
+
+    /// End named character style
+    DocDeclStr(
+        bool , EndParagraphStyle(),
+        "", "");
+
+
+    DocDeclStr(
+        bool , BeginListStyle(const wxString& listStyle, int level = 1, int number = 1),
+        "Begin named list style.", "");
+        
+    DocDeclStr(
+        bool , EndListStyle(), "End named list style.", "");
+
+    DocDeclStr(
+        bool , BeginURL(const wxString& url, const wxString& characterStyle = wxEmptyString),
+            "Begin URL.", "");
+    
+    DocDeclStr(
+        bool , EndURL(), "End URL.", "");
+
+    /// Sets the default style to the style under the cursor
+    DocDeclStr(
+        bool , SetDefaultStyleToCursorStyle(),
+        "", "");
+
+
+    /// Clear the selection
+    DocDeclStr(
+        virtual void , SelectNone(),
+        "", "");
+
+    /// Select the word at the given character position
+    DocDeclStr(
+        virtual bool , SelectWord(long position),
+        "", "");
+
+
+    /// Get/set the selection range in character positions. -1, -1 means no selection.
+    DocDeclStr(
+        wxRichTextRange , GetSelectionRange() const,
+        "", "");
+
+    DocDeclStr(
+        void , SetSelectionRange(const wxRichTextRange& range),
+        "", "");
+
+    /// Get/set the selection range in character positions. -1, -1 means no selection.
+    /// The range is in internal format, i.e. a single character selection is denoted
+    /// by (n, n)
+    DocDeclStr(
+        const wxRichTextRange& , GetInternalSelectionRange() const,
+        "", "");
+
+    DocDeclStr(
+        void , SetInternalSelectionRange(const wxRichTextRange& range),
+        "", "");
+
+
+
+    /// Add a new paragraph of text to the end of the buffer
+    DocDeclStr(
+        virtual wxRichTextRange , AddParagraph(const wxString& text),
+        "", "");
+
+
+    /// Add an image
+    DocDeclStr(
+        virtual wxRichTextRange , AddImage(const wxImage& image),
+        "", "");
+
+
+    /// Layout the buffer: which we must do before certain operations, such as
+    /// setting the caret position.
+    DocDeclStr(
+        virtual bool , LayoutContent(bool onlyVisibleRect = false),
+        "", "");
+
+
+    /// Move the caret to the given character position
+    DocDeclStr(
+        virtual bool , MoveCaret(long pos, bool showAtLineStart = false),
+        "", "");
+
+
+    /// Move right
+    DocDeclStr(
+        virtual bool , MoveRight(int noPositions = 1, int flags = 0),
+        "", "");
+
+
+    /// Move left
+    DocDeclStr(
+        virtual bool , MoveLeft(int noPositions = 1, int flags = 0),
+        "", "");
+
+
+    /// Move up
+    DocDeclStr(
+        virtual bool , MoveUp(int noLines = 1, int flags = 0),
+        "", "");
+
+
+    /// Move up
+    DocDeclStr(
+        virtual bool , MoveDown(int noLines = 1, int flags = 0),
+        "", "");
+
+
+    /// Move to the end of the line
+    DocDeclStr(
+        virtual bool , MoveToLineEnd(int flags = 0),
+        "", "");
+
+
+    /// Move to the start of the line
+    DocDeclStr(
+        virtual bool , MoveToLineStart(int flags = 0),
+        "", "");
+
+
+    /// Move to the end of the paragraph
+    DocDeclStr(
+        virtual bool , MoveToParagraphEnd(int flags = 0),
+        "", "");
+
+
+    /// Move to the start of the paragraph
+    DocDeclStr(
+        virtual bool , MoveToParagraphStart(int flags = 0),
+        "", "");
+
+
+    /// Move to the start of the buffer
+    DocDeclStr(
+        virtual bool , MoveHome(int flags = 0),
+        "", "");
+
+
+    /// Move to the end of the buffer
+    DocDeclStr(
+        virtual bool , MoveEnd(int flags = 0),
+        "", "");
+
+
+    /// Move n pages up
+    DocDeclStr(
+        virtual bool , PageUp(int noPages = 1, int flags = 0),
+        "", "");
+
+
+    /// Move n pages down
+    DocDeclStr(
+        virtual bool , PageDown(int noPages = 1, int flags = 0),
+        "", "");
+
+
+    /// Move n words left
+    DocDeclStr(
+        virtual bool , WordLeft(int noPages = 1, int flags = 0),
+        "", "");
+
+
+    /// Move n words right
+    DocDeclStr(
+        virtual bool , WordRight(int noPages = 1, int flags = 0),
+        "", "");
+
+
+    /// Returns the buffer associated with the control.
+    DocDeclStr(
+        wxRichTextBuffer& , GetBuffer(),
+        "", "");
+
+
+    /// Start batching undo history for commands.
+    DocDeclStr(
+        virtual bool , BeginBatchUndo(const wxString& cmdName),
+        "", "");
+
+
+    /// End batching undo history for commands.
+    DocDeclStr(
+        virtual bool , EndBatchUndo(),
+        "", "");
+
+
+    /// Are we batching undo history for commands?
+    DocDeclStr(
+        virtual bool , BatchingUndo() const,
+        "", "");
+
+
+    /// Start suppressing undo history for commands.
+    DocDeclStr(
+        virtual bool , BeginSuppressUndo(),
+        "", "");
+
+
+    /// End suppressing undo history for commands.
+    DocDeclStr(
+        virtual bool , EndSuppressUndo(),
+        "", "");
+
+
+    /// Are we suppressing undo history for commands?
+    DocDeclStr(
+        virtual bool , SuppressingUndo() 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. style must have
+    /// flags indicating which attributes are of interest.
+    DocDeclStr(
+        virtual bool , HasCharacterAttributes(const wxRichTextRange& range,
+                                              const wxRichTextAttr& 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. style must have
+    /// flags indicating which attributes are of interest.
+    DocDeclStr(
+        virtual bool , HasParagraphAttributes(const wxRichTextRange& range,
+                                              const wxRichTextAttr& style) const,
+        "", "");
+
+
+
+    /// Is all of the selection bold?
+    DocDeclStr(
+        virtual bool , IsSelectionBold(),
+        "", "");
+
+
+    /// Is all of the selection italics?
+    DocDeclStr(
+        virtual bool , IsSelectionItalics(),
+        "", "");
+
+
+    /// Is all of the selection underlined?
+    DocDeclStr(
+        virtual bool , IsSelectionUnderlined(),
+        "", "");
+
+
+    /// Is all of the selection aligned according to the specified flag?
+    DocDeclStr(
+        virtual bool , IsSelectionAligned(wxTextAttrAlignment alignment),
+        "", "");
+
+
+    /// Apply bold to the selection
+    DocDeclStr(
+        virtual bool , ApplyBoldToSelection(),
+        "", "");
+
+
+    /// Apply italic to the selection
+    DocDeclStr(
+        virtual bool , ApplyItalicToSelection(),
+        "", "");
+
+
+    /// Apply underline to the selection
+    DocDeclStr(
+        virtual bool , ApplyUnderlineToSelection(),
+        "", "");
+
+
+    /// Apply alignment to the selection
+    DocDeclStr(
+        virtual bool , ApplyAlignmentToSelection(wxTextAttrAlignment alignment),
+        "", "");
+
+
+    /// Apply a named style to the selection
+    virtual bool ApplyStyle(wxRichTextStyleDefinition* def);
+
+    /// Set style sheet, if any.
+    DocDeclStr(
+        void , SetStyleSheet(wxRichTextStyleSheet* styleSheet),
+        "", "");
+
+    DocDeclStr(
+        wxRichTextStyleSheet* , GetStyleSheet() const,
+        "", "");
+
+
+    /// Push style sheet to top of stack
+    bool PushStyleSheet(wxRichTextStyleSheet* styleSheet);
+
+    
+    /// Pop style sheet from top of stack
+    wxRichTextStyleSheet* PopStyleSheet();
+
+    
+    /// Apply the style sheet to the buffer, for example if the styles have changed.
+    DocDeclStr(
+        bool , ApplyStyleSheet(wxRichTextStyleSheet* styleSheet = NULL),
+        "", "");
+
+
+
+    %property(Buffer, GetBuffer, doc="See `GetBuffer`");
+    %property(DefaultStyle, GetDefaultStyle, SetDefaultStyle, doc="See `GetDefaultStyle` and `SetDefaultStyle`");
+    %property(DelayedLayoutThreshold, GetDelayedLayoutThreshold, SetDelayedLayoutThreshold, doc="See `GetDelayedLayoutThreshold` and `SetDelayedLayoutThreshold`");
+    %property(Filename, GetFilename, SetFilename, doc="See `GetFilename` and `SetFilename`");
+    %property(InsertionPoint, GetInsertionPoint, SetInsertionPoint, doc="See `GetInsertionPoint` and `SetInsertionPoint`");
+    %property(InternalSelectionRange, GetInternalSelectionRange, SetInternalSelectionRange, doc="See `GetInternalSelectionRange` and `SetInternalSelectionRange`");
+    %property(LastPosition, GetLastPosition, doc="See `GetLastPosition`");
+    %property(NumberOfLines, GetNumberOfLines, doc="See `GetNumberOfLines`");
+    %property(Selection, GetSelection, SetSelectionRange, doc="See `GetSelection` and `SetSelection`");
+    %property(SelectionRange, GetSelectionRange, SetSelectionRange, doc="See `GetSelectionRange` and `SetSelectionRange`");
+    %property(StringSelection, GetStringSelection, doc="See `GetStringSelection`");
+    %property(StyleSheet, GetStyleSheet, SetStyleSheet, doc="See `GetStyleSheet` and `SetStyleSheet`");
+    %property(Value, GetValue, SetValue, doc="See `GetValue` and `SetValue`");
+
+
+
+    // TODO:  Some of these methods may be useful too...
+    
+
+//     /// Set up scrollbars, e.g. after a resize
+//     virtual void SetupScrollbars(bool atTop = false);
+
+//     /// Keyboard navigation
+//     virtual bool KeyboardNavigate(int keyCode, int flags);
+
+//     /// Paint the background
+//     virtual void PaintBackground(wxDC& dc);
+
+// #if wxRICHTEXT_BUFFERED_PAINTING
+//     /// Recreate buffer bitmap if necessary
+//     virtual bool RecreateBuffer(const wxSize& size = wxDefaultSize);
+// #endif
+
+//     /// Set the selection
+//     virtual void DoSetSelection(long from, long to, bool scrollCaret = true);
+
+//     /// Write text
+//     virtual void DoWriteText(const wxString& value, int flags = 0);
+
+//     /// Should we inherit colours?
+//     virtual bool ShouldInheritColours() const { return false; }
+
+//     /// Position the caret
+//     virtual void PositionCaret();
+
+//     /// Extend the selection, returning true if the selection was
+//     /// changed. Selections are in caret positions.
+//     virtual bool ExtendSelection(long oldPosition, long newPosition, int flags);
+
+//     /// Scroll into view. This takes a _caret_ position.
+//     virtual bool ScrollIntoView(long position, int keyCode);
+
+//     /// The caret position is the character position just before the caret.
+//     /// A value of -1 means the caret is at the start of the buffer.
+//     void SetCaretPosition(long position, bool showAtLineStart = false) ;
+//     long GetCaretPosition() const { return m_caretPosition; }
+
+//     /// The adjusted caret position is the character position adjusted to take
+//     /// into account whether we're at the start of a paragraph, in which case
+//     /// style information should be taken from the next position, not current one.
+//     long GetAdjustedCaretPosition(long caretPos) const;
+
+//     /// Move caret one visual step forward: this may mean setting a flag
+//     /// and keeping the same position if we're going from the end of one line
+//     /// to the start of the next, which may be the exact same caret position.
+//     void MoveCaretForward(long oldPosition) ;
+
+//     /// Move caret one visual step forward: this may mean setting a flag
+//     /// and keeping the same position if we're going from the end of one line
+//     /// to the start of the next, which may be the exact same caret position.
+//     void MoveCaretBack(long oldPosition) ;
+
+//     /// Get the caret height and position for the given character position
+//     bool GetCaretPositionForIndex(long position, wxRect& rect);
+
+//     /// Gets 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 let's get the line we're expecting to find
+//     /// if this is the case.
+//     wxRichTextLine* GetVisibleLineForCaretPosition(long caretPosition) const;
+
+//     /// Gets the command processor
+//     wxCommandProcessor* GetCommandProcessor() const { return GetBuffer().GetCommandProcessor(); }
+
+//     /// Delete content if there is a selection, e.g. when pressing a key.
+//     /// Returns the new caret position in newPos, or leaves it if there
+//     /// was no action.
+//     bool DeleteSelectedContent(long* newPos= NULL);
+
+//     /// Transform logical to physical
+//     wxPoint GetPhysicalPoint(const wxPoint& ptLogical) const;
+
+//     /// Transform physical to logical
+//     wxPoint GetLogicalPoint(const wxPoint& ptPhysical) const;
+
+//     /// Finds the caret position for the next word. Direction
+//     /// is 1 (forward) or -1 (backwards).
+//     virtual long FindNextWordPosition(int direction = 1) const;
+
+//     /// Is the given position visible on the screen?
+//     bool IsPositionVisible(long pos) const;
+
+//     /// Returns the first visible position in the current view
+//     long GetFirstVisiblePosition() const;
+
+//     /// Returns the caret position since the default formatting was changed. As
+//     /// soon as this position changes, we no longer reflect the default style
+//     /// in the UI. A value of -2 means that we should only reflect the style of the
+//     /// content under the caret.
+//     long GetCaretPositionForDefaultStyle() const { return m_caretPositionForDefaultStyle; }
+
+//     /// Set the caret position for the default style that the user is selecting.
+//     void SetCaretPositionForDefaultStyle(long pos) { m_caretPositionForDefaultStyle = pos; }
+
+//     /// Should the UI reflect the default style chosen by the user, rather than the style under
+//     /// the caret?
+//     bool IsDefaultStyleShowing() const { return m_caretPositionForDefaultStyle != -2; }
+
+//     /// Convenience function that tells the control to start reflecting the default
+//     /// style, since the user is changing it.
+//     void SetAndShowDefaultStyle(const wxRichTextAttr& attr)
+//     {
+//         SetDefaultStyle(attr);
+//         SetCaretPositionForDefaultStyle(GetCaretPosition());
+//     }
+
+//     /// Get the first visible point in the window
+//     wxPoint GetFirstVisiblePoint() const;
+
+// // Implementation
+
+//      /// Font names take a long time to retrieve, so cache them (on demand)
+//      static const wxArrayString& GetAvailableFontNames();
+//      static void ClearAvailableFontNames();
+    
+};
+
+
+//---------------------------------------------------------------------------
+%newgroup
+
+
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_LEFT_CLICK;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_RIGHT_CLICK;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_MIDDLE_CLICK;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_LEFT_DCLICK;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_RETURN;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_CHARACTER;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_DELETE;
+
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED;
+
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED;
+%constant wxEventType wxEVT_COMMAND_RICHTEXT_SELECTION_CHANGED;
+
+%pythoncode {
+EVT_RICHTEXT_LEFT_CLICK = wx.PyEventBinder(wxEVT_COMMAND_RICHTEXT_LEFT_CLICK, 1)
+EVT_RICHTEXT_RIGHT_CLICK = wx.PyEventBinder(wxEVT_COMMAND_RICHTEXT_RIGHT_CLICK, 1)
+EVT_RICHTEXT_MIDDLE_CLICK = wx.PyEventBinder(wxEVT_COMMAND_RICHTEXT_MIDDLE_CLICK, 1)
+EVT_RICHTEXT_LEFT_DCLICK = wx.PyEventBinder(wxEVT_COMMAND_RICHTEXT_LEFT_DCLICK, 1)
+EVT_RICHTEXT_RETURN = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_RETURN, 1)
+EVT_RICHTEXT_CHARACTER = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_CHARACTER, 1)
+EVT_RICHTEXT_DELETE = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_DELETE, 1)
+
+EVT_RICHTEXT_STYLESHEET_CHANGING = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING, 1)
+EVT_RICHTEXT_STYLESHEET_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED, 1)
+EVT_RICHTEXT_STYLESHEET_REPLACING = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING, 1)
+EVT_RICHTEXT_STYLESHEET_REPLACED = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED, 1)
+
+EVT_RICHTEXT_CONTENT_INSERTED = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED, 1)
+EVT_RICHTEXT_CONTENT_DELETED = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED, 1)
+EVT_RICHTEXT_STYLE_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED, 1)
+EVT_RICHTEXT_SELECTION_CHANGED = wx.PyEventBinder( wxEVT_COMMAND_RICHTEXT_SELECTION_CHANGED, 1)    
+}
+
+
+class wxRichTextEvent : public wxNotifyEvent
+{
+public:
+    wxRichTextEvent(wxEventType commandType = wxEVT_NULL, int winid = 0);
+
+    int GetPosition() const;
+    void SetPosition(int n);
+
+    int GetFlags() const;
+    void SetFlags(int flags);
+
+    wxRichTextStyleSheet* GetOldStyleSheet() const;
+    void SetOldStyleSheet(wxRichTextStyleSheet* sheet);
+
+    wxRichTextStyleSheet* GetNewStyleSheet() const;
+    void SetNewStyleSheet(wxRichTextStyleSheet* sheet);
+
+    const wxRichTextRange& GetRange() const;
+    void SetRange(const wxRichTextRange& range);
+
+    wxChar GetCharacter() const;
+    void SetCharacter(wxChar ch);
+
+    
+    %property(Flags, GetFlags, SetFlags);
+    %property(Index, GetPosition, SetPosition);
+    %property(OldStyleSheet, GetOldStyleSheet, SetOldStyleSheet);
+    %property(NewStyleSheet, GetNewStyleSheet, SetNewStyleSheet);
+    %property(Range, GetRange, SetRange);
+    %property(Character, GetCharacter, SetCharacter);
+};
+
+
+//---------------------------------------------------------------------------