X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/3966a9f4f8001df66aa0fcb347911f9fdade00dc..05a98b6d5d201eb8edea04b1ab022e4a9a46e9f0:/include/wx/richtext/richtextctrl.h?ds=sidebyside diff --git a/include/wx/richtext/richtextctrl.h b/include/wx/richtext/richtextctrl.h index d1dd775079..1e0e289712 100644 --- a/include/wx/richtext/richtextctrl.h +++ b/include/wx/richtext/richtextctrl.h @@ -19,14 +19,12 @@ #include "wx/scrolwin.h" #include "wx/caret.h" -#if wxCHECK_VERSION(2,7,0) -#define wxRICHTEXT_DERIVES_FROM_TEXTCTRLBASE 1 -#else -#define wxRICHTEXT_DERIVES_FROM_TEXTCTRLBASE 0 -#endif - -#if wxRICHTEXT_DERIVES_FROM_TEXTCTRLBASE #include "wx/textctrl.h" + +#if !defined(__WXGTK__) && !defined(__WXMAC__) +#define wxRICHTEXT_BUFFERED_PAINTING 1 +#else +#define wxRICHTEXT_BUFFERED_PAINTING 0 #endif class WXDLLIMPEXP_RICHTEXT wxRichTextStyleDefinition; @@ -86,12 +84,8 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextStyleDefinition; * wxRichTextCtrl class declaration */ -class WXDLLIMPEXP_RICHTEXT wxRichTextCtrl: -#if wxRICHTEXT_DERIVES_FROM_TEXTCTRLBASE - public wxTextCtrlBase, public wxScrollHelper -#else - public wxScrolledWindow -#endif +class WXDLLIMPEXP_RICHTEXT wxRichTextCtrl : public wxTextCtrlBase, + public wxScrollHelper { DECLARE_CLASS( wxRichTextCtrl ) DECLARE_EVENT_TABLE() @@ -118,7 +112,6 @@ public: // Accessors virtual wxString GetValue() const; - virtual void SetValue(const wxString& value); virtual wxString GetRange(long from, long to) const; @@ -158,10 +151,8 @@ public: virtual void Remove(long from, long to); // load/save the controls contents from/to the file - virtual bool LoadFile(const wxString& file) { return LoadFile(file, wxRICHTEXT_TYPE_ANY); } - virtual bool LoadFile(const wxString& file, int type); - virtual bool SaveFile(const wxString& file = wxEmptyString) { return SaveFile(file, wxRICHTEXT_TYPE_ANY); } - virtual bool SaveFile(const wxString& file, int type); + virtual bool DoLoadFile(const wxString& file, int fileType); + virtual bool DoSaveFile(const wxString& file = wxEmptyString, int fileType = wxRICHTEXT_TYPE_ANY); // sets/clears the dirty flag virtual void MarkDirty(); @@ -185,6 +176,19 @@ public: virtual bool GetStyle(long position, wxTextAttr& style); virtual bool GetStyle(long position, wxTextAttrEx& style); virtual bool GetStyle(long position, wxRichTextAttr& 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. + virtual bool SetStyleEx(long start, long end, const wxTextAttrEx& style, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO); + virtual bool SetStyleEx(const wxRichTextRange& range, const wxTextAttrEx& style, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO); + virtual bool SetStyleEx(const wxRichTextRange& range, const wxRichTextAttr& style, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO); + + /// Get the content (uncombined) attributes for this position. + virtual bool GetUncombinedStyle(long position, wxTextAttr& style); + virtual bool GetUncombinedStyle(long position, wxTextAttrEx& style); + virtual bool GetUncombinedStyle(long position, wxRichTextAttr& style); + virtual bool SetDefaultStyle(const wxTextAttrEx& style); virtual bool SetDefaultStyle(const wxTextAttr& style); @@ -381,6 +385,9 @@ public: /// Clear the selection virtual void SelectNone(); + /// Select the word at the given character position + virtual bool SelectWord(long position); + /// Get/set the selection range in character positions. -1, -1 means no selection. /// The range is in API convention, i.e. a single character selection is denoted /// by (n, n+1) @@ -521,12 +528,15 @@ 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. void SetStyleSheet(wxRichTextStyleSheet* styleSheet) { GetBuffer().SetStyleSheet(styleSheet); } wxRichTextStyleSheet* GetStyleSheet() const { return GetBuffer().GetStyleSheet(); } + /// Apply the style sheet to the buffer, for example if the styles have changed. + bool ApplyStyleSheet(wxRichTextStyleSheet* styleSheet = NULL); + // Command handlers void Command(wxCommandEvent& event); @@ -592,8 +602,6 @@ public: /// Scrolling void OnScroll(wxScrollWinEvent& event); -// Implementation - /// Set font, and also default attributes virtual bool SetFont(const wxFont& font); @@ -606,26 +614,16 @@ public: /// 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, bool selectionOnly = true); - - /// Send an update event - virtual bool SendUpdateEvent(); - - /// Init command event - void InitCommandEvent(wxCommandEvent& event) const; - - /// do the window-specific processing after processing the update event - // (duplicated code from wxTextCtrlBase) -#if !wxRICHTEXT_DERIVES_FROM_TEXTCTRLBASE - virtual void DoUpdateWindowUI(wxUpdateUIEvent& event); -#endif + virtual void DoWriteText(const wxString& value, int flags = 0); /// Should we inherit colours? virtual bool ShouldInheritColours() const { return false; } @@ -714,30 +712,32 @@ public: SetCaretPositionForDefaultStyle(GetCaretPosition()); } -#if wxRICHTEXT_DERIVES_FROM_TEXTCTRLBASE +// Implementation + WX_FORWARD_TO_SCROLL_HELPER() -#endif // Overrides protected: virtual wxSize DoGetBestSize() const ; + virtual void DoSetValue(const wxString& value, int flags = 0); + + // Data members private: /// Allows nested Freeze/Thaw int m_freezeCount; +#if wxRICHTEXT_BUFFERED_PAINTING /// Buffer bitmap wxBitmap m_bufferBitmap; +#endif /// Text buffer wxRichTextBuffer m_buffer; - /// Filename - wxString m_filename; - wxMenu* m_contextMenu; /// Caret position (1 less than the character position, so -1 is the