]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/richtext/richtextctrl.h
removed extra semicolon
[wxWidgets.git] / include / wx / richtext / richtextctrl.h
index acfc86d761dd4cde569cec87f15ecc77f18384a2..7ad2a54c77d4be4699662dfaa585187fff68b091 100644 (file)
@@ -27,7 +27,7 @@
 #define wxRICHTEXT_BUFFERED_PAINTING 0
 #endif
 
-class WXDLLIMPEXP_RICHTEXT wxRichTextStyleDefinition;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextStyleDefinition;
 
 /*!
  * Styles and flags
@@ -95,14 +95,15 @@ public:
 
     wxRichTextCtrl( );
     wxRichTextCtrl( wxWindow* parent, wxWindowID id = -1, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-        long style = wxRE_MULTILINE );
+        long style = wxRE_MULTILINE, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxTextCtrlNameStr);
+
     virtual ~wxRichTextCtrl( );
 
 // Operations
 
     /// Creation
     bool Create( wxWindow* parent, wxWindowID id = -1, const wxString& value = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize,
-        long style = wxRE_MULTILINE );
+        long style = wxRE_MULTILINE, const wxValidator& validator = wxDefaultValidator, const wxString& name = wxTextCtrlNameStr );
 
     /// Member initialisation
     void Init();
@@ -154,6 +155,12 @@ public:
     virtual bool DoLoadFile(const wxString& file, int fileType);
     virtual bool DoSaveFile(const wxString& file = wxEmptyString, int fileType = wxRICHTEXT_TYPE_ANY);
 
+    /// Set the handler flags, controlling loading and saving
+    void SetHandlerFlags(int flags) { GetBuffer().SetHandlerFlags(flags); }
+
+    /// Get the handler flags, controlling loading and saving
+    int GetHandlerFlags() const { return GetBuffer().GetHandlerFlags(); }
+
     // sets/clears the dirty flag
     virtual void MarkDirty();
     virtual void DiscardEdits();
@@ -177,6 +184,10 @@ public:
     virtual bool GetStyle(long position, wxTextAttrEx& style);
     virtual bool GetStyle(long position, wxRichTextAttr& style);
 
+    // get the common set of styles for the range
+    virtual bool GetStyleForRange(const wxRichTextRange& range, wxRichTextAttr& style);
+    virtual bool GetStyleForRange(const wxRichTextRange& range, wxTextAttrEx& style);
+
     // extended style setting operation with flags including:
     // wxRICHTEXT_SETSTYLE_WITH_UNDO, wxRICHTEXT_SETSTYLE_OPTIMIZE, wxRICHTEXT_SETSTYLE_PARAGRAPHS_ONLY, wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY
     // see richtextbuffer.h for more details.
@@ -196,6 +207,26 @@ public:
     virtual const wxTextAttrEx& GetDefaultStyleEx() const;
     virtual const wxTextAttr& GetDefaultStyle() const;
 
+    /// 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);
+
     // translate between the position (which is just an index in the text ctrl
     // considering all its contents as a single strings) and (x, y) coordinates
     // which represent column and line.
@@ -271,6 +302,9 @@ public:
     /// Insert a newline (actually paragraph) at the current insertion point.
     virtual bool Newline();
 
+    /// Insert a line break at the current insertion point.
+    virtual bool LineBreak();
+
     /// Set basic (overall) style
     virtual void SetBasicStyle(const wxTextAttrEx& style) { GetBuffer().SetBasicStyle(style); }
     virtual void SetBasicStyle(const wxRichTextAttr& style) { GetBuffer().SetBasicStyle(style); }
@@ -361,12 +395,19 @@ public:
     bool EndNumberedBullet() { return GetBuffer().EndNumberedBullet(); }
 
     /// Begin symbol bullet
-    bool BeginSymbolBullet(wxChar symbol, int leftIndent, int leftSubIndent, int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_SYMBOL)
+    bool BeginSymbolBullet(const wxString& symbol, int leftIndent, int leftSubIndent, int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_SYMBOL)
     { return GetBuffer().BeginSymbolBullet(symbol, leftIndent, leftSubIndent, bulletStyle); }
 
     /// End symbol bullet
     bool EndSymbolBullet() { return GetBuffer().EndSymbolBullet(); }
 
+    /// Begin standard bullet
+    bool BeginStandardBullet(const wxString& bulletName, int leftIndent, int leftSubIndent, int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_STANDARD)
+    { return GetBuffer().BeginStandardBullet(bulletName, leftIndent, leftSubIndent, bulletStyle); }
+
+    /// End standard bullet
+    bool EndStandardBullet() { return GetBuffer().EndStandardBullet(); }
+
     /// Begin named character style
     bool BeginCharacterStyle(const wxString& characterStyle) { return GetBuffer().BeginCharacterStyle(characterStyle); }
 
@@ -379,6 +420,18 @@ public:
     /// End named character style
     bool EndParagraphStyle() { return GetBuffer().EndParagraphStyle(); }
 
+    /// Begin named list style
+    bool BeginListStyle(const wxString& listStyle, int level = 1, int number = 1) { return GetBuffer().BeginListStyle(listStyle, level, number); }
+
+    /// End named character style
+    bool EndListStyle() { return GetBuffer().EndListStyle(); }
+
+    /// Begin URL
+    bool BeginURL(const wxString& url, const wxString& characterStyle = wxEmptyString) { return GetBuffer().BeginURL(url, characterStyle); }
+
+    /// End URL
+    bool EndURL() { return GetBuffer().EndURL(); }
+
     /// Sets the default style to the style under the cursor
     bool SetDefaultStyleToCursorStyle();
 
@@ -483,11 +536,11 @@ public:
     /// flags indicating which attributes are of interest.
     virtual bool HasCharacterAttributes(const wxRichTextRange& range, const wxTextAttrEx& style) const
     {
-        return GetBuffer().HasCharacterAttributes(range, style);
+        return GetBuffer().HasCharacterAttributes(range.ToInternal(), style);
     }
     virtual bool HasCharacterAttributes(const wxRichTextRange& range, const wxRichTextAttr& style) const
     {
-        return GetBuffer().HasCharacterAttributes(range, style);
+        return GetBuffer().HasCharacterAttributes(range.ToInternal(), style);
     }
 
     /// Test if this whole range has paragraph attributes of the specified kind. If any
@@ -496,11 +549,11 @@ public:
     /// flags indicating which attributes are of interest.
     virtual bool HasParagraphAttributes(const wxRichTextRange& range, const wxTextAttrEx& style) const
     {
-        return GetBuffer().HasParagraphAttributes(range, style);
+        return GetBuffer().HasParagraphAttributes(range.ToInternal(), style);
     }
     virtual bool HasParagraphAttributes(const wxRichTextRange& range, const wxRichTextAttr& style) const
     {
-        return GetBuffer().HasParagraphAttributes(range, style);
+        return GetBuffer().HasParagraphAttributes(range.ToInternal(), style);
     }
 
     /// Is all of the selection bold?
@@ -528,12 +581,18 @@ public:
     virtual bool ApplyAlignmentToSelection(wxTextAttrAlignment alignment);
 
     /// Apply a named style to the selection
-    virtual void ApplyStyle(wxRichTextStyleDefinition* def);
+    virtual bool ApplyStyle(wxRichTextStyleDefinition* def);
 
-    /// Set style sheet, if any.
+    /// Set style sheet, if any
     void SetStyleSheet(wxRichTextStyleSheet* styleSheet) { GetBuffer().SetStyleSheet(styleSheet); }
     wxRichTextStyleSheet* GetStyleSheet() const { return GetBuffer().GetStyleSheet(); }
 
+    /// Push style sheet to top of stack
+    bool PushStyleSheet(wxRichTextStyleSheet* styleSheet) { return GetBuffer().PushStyleSheet(styleSheet); }
+
+    /// Pop style sheet from top of stack
+    wxRichTextStyleSheet* PopStyleSheet() { return GetBuffer().PopStyleSheet(); }
+
     /// Apply the style sheet to the buffer, for example if the styles have changed.
     bool ApplyStyleSheet(wxRichTextStyleSheet* styleSheet = NULL);
 
@@ -541,6 +600,7 @@ public:
 
     void Command(wxCommandEvent& event);
     void OnDropFiles(wxDropFilesEvent& event);
+    void OnCaptureLost(wxMouseCaptureLostEvent& event);
 
     void OnCut(wxCommandEvent& event);
     void OnCopy(wxCommandEvent& event);
@@ -712,8 +772,15 @@ public:
         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();
+
      WX_FORWARD_TO_SCROLL_HELPER()
 
 // Overrides
@@ -776,6 +843,12 @@ private:
 
     /// Threshold for doing delayed layout
     long                    m_delayedLayoutThreshold;
+
+    /// Cursors
+    wxCursor                m_textCursor;
+    wxCursor                m_urlCursor;
+
+    static wxArrayString    sm_availableFontNames;
 };
 
 /*!
@@ -787,25 +860,44 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextEvent : public wxNotifyEvent
 public:
     wxRichTextEvent(wxEventType commandType = wxEVT_NULL, int winid = 0)
         : wxNotifyEvent(commandType, winid),
-        m_itemIndex(-1), m_flags(0)
+        m_flags(0), m_position(-1), m_oldStyleSheet(NULL), m_newStyleSheet(NULL),
+        m_char((wxChar) 0)
         { }
 
     wxRichTextEvent(const wxRichTextEvent& event)
         : wxNotifyEvent(event),
-        m_itemIndex(event.m_itemIndex), m_flags(event.m_flags)
+        m_flags(event.m_flags), m_position(-1),
+        m_oldStyleSheet(event.m_oldStyleSheet), m_newStyleSheet(event.m_newStyleSheet),
+        m_char((wxChar) 0)
         { }
 
-    int GetIndex() const { return m_itemIndex; }
-    void SetIndex(int n) { m_itemIndex = n; }
+    long GetPosition() const { return m_position; }
+    void SetPosition(long pos) { m_position = pos; }
 
     int GetFlags() const { return m_flags; }
     void SetFlags(int flags) { m_flags = flags; }
 
+    wxRichTextStyleSheet* GetOldStyleSheet() const { return m_oldStyleSheet; }
+    void SetOldStyleSheet(wxRichTextStyleSheet* sheet) { m_oldStyleSheet = sheet; }
+
+    wxRichTextStyleSheet* GetNewStyleSheet() const { return m_newStyleSheet; }
+    void SetNewStyleSheet(wxRichTextStyleSheet* sheet) { m_newStyleSheet = sheet; }
+
+    const wxRichTextRange& GetRange() const { return m_range; }
+    void SetRange(const wxRichTextRange& range) { m_range = range; }
+
+    wxChar GetCharacter() const { return m_char; }
+    void SetCharacter(wxChar ch) { m_char = ch; }
+
     virtual wxEvent *Clone() const { return new wxRichTextEvent(*this); }
 
 protected:
-    int                 m_itemIndex;
-    int                 m_flags;
+    int                     m_flags;
+    long                    m_position;
+    wxRichTextStyleSheet*   m_oldStyleSheet;
+    wxRichTextStyleSheet*   m_newStyleSheet;
+    wxRichTextRange         m_range;
+    wxChar                  m_char;
 
 private:
     DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxRichTextEvent)
@@ -816,28 +908,47 @@ private:
  */
 
 BEGIN_DECLARE_EVENT_TYPES()
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_ITEM_SELECTED, 2600)
-    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_ITEM_DESELECTED, 2601)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_LEFT_CLICK, 2602)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_RIGHT_CLICK, 2603)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_MIDDLE_CLICK, 2604)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_LEFT_DCLICK, 2605)
     DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_RETURN, 2606)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_CHARACTER, 2607)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_DELETE, 2608)
+
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING, 2609)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED, 2610)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING, 2611)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED, 2612)
+
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED, 2613)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED, 2614)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED, 2615)
+    DECLARE_EXPORTED_EVENT_TYPE(WXDLLIMPEXP_RICHTEXT, wxEVT_COMMAND_RICHTEXT_SELECTION_CHANGED, 2616)
 END_DECLARE_EVENT_TYPES()
 
 typedef void (wxEvtHandler::*wxRichTextEventFunction)(wxRichTextEvent&);
 
-#define EVT_RICHTEXT_ITEM_SELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_ITEM_SELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
-#define EVT_RICHTEXT_ITEM_DESELECTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_ITEM_DESELECTED, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
 #define EVT_RICHTEXT_LEFT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_LEFT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
 #define EVT_RICHTEXT_RIGHT_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_RIGHT_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
 #define EVT_RICHTEXT_MIDDLE_CLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_MIDDLE_CLICK, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
 #define EVT_RICHTEXT_LEFT_DCLICK(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_LEFT_DCLICK, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
 #define EVT_RICHTEXT_RETURN(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_RETURN, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+#define EVT_RICHTEXT_CHARACTER(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_CHARACTER, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+#define EVT_RICHTEXT_DELETE(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_DELETE, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+
+#define EVT_RICHTEXT_STYLESHEET_CHANGING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+#define EVT_RICHTEXT_STYLESHEET_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+#define EVT_RICHTEXT_STYLESHEET_REPLACING(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+#define EVT_RICHTEXT_STYLESHEET_REPLACED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+
+#define EVT_RICHTEXT_CONTENT_INSERTED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+#define EVT_RICHTEXT_CONTENT_DELETED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+#define EVT_RICHTEXT_STYLE_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
+#define EVT_RICHTEXT_SELECTION_CHANGED(id, fn) DECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_SELECTION_CHANGED, id, -1, (wxObjectEventFunction) (wxEventFunction)  wxStaticCastEvent( wxRichTextEventFunction, & fn ), NULL ),
 
 #endif
     // wxUSE_RICHTEXT
 
 #endif
     // _WX_RICHTEXTCTRL_H_
-