1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/richtext/richtextctrl.h
3 // Purpose: A rich edit control
4 // Author: Julian Smart
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
12 #ifndef _WX_RICHTEXTCTRL_H_
13 #define _WX_RICHTEXTCTRL_H_
15 #include "wx/richtext/richtextbuffer.h"
19 #include "wx/scrolwin.h"
22 #include "wx/textctrl.h"
24 #if !defined(__WXGTK__) && !defined(__WXMAC__)
25 #define wxRICHTEXT_BUFFERED_PAINTING 1
27 #define wxRICHTEXT_BUFFERED_PAINTING 0
30 class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextStyleDefinition
;
40 #define wxRE_READONLY 0x0010
41 #define wxRE_MULTILINE 0x0020
42 #define wxRE_CENTRE_CARET 0x8000
43 #define wxRE_CENTER_CARET wxRE_CENTRE_CARET
49 #define wxRICHTEXT_SHIFT_DOWN 0x01
50 #define wxRICHTEXT_CTRL_DOWN 0x02
51 #define wxRICHTEXT_ALT_DOWN 0x04
57 // Don't draw guide lines around boxes and tables
58 #define wxRICHTEXT_EX_NO_GUIDELINES 0x00000100
65 #define wxRICHTEXT_DEFAULT_OVERALL_SIZE wxSize(-1, -1)
66 #define wxRICHTEXT_DEFAULT_IMAGE_SIZE wxSize(80, 80)
67 #define wxRICHTEXT_DEFAULT_SPACING 3
68 #define wxRICHTEXT_DEFAULT_MARGIN 3
69 #define wxRICHTEXT_DEFAULT_UNFOCUSSED_BACKGROUND wxColour(175, 175, 175)
70 #define wxRICHTEXT_DEFAULT_FOCUSSED_BACKGROUND wxColour(140, 140, 140)
71 #define wxRICHTEXT_DEFAULT_UNSELECTED_BACKGROUND wxSystemSettings::GetColour(wxSYS_COLOUR_3DFACE)
72 #define wxRICHTEXT_DEFAULT_TYPE_COLOUR wxColour(0, 0, 200)
73 #define wxRICHTEXT_DEFAULT_FOCUS_RECT_COLOUR wxColour(100, 80, 80)
74 #define wxRICHTEXT_DEFAULT_CARET_WIDTH 2
75 // Minimum buffer size before delayed layout kicks in
76 #define wxRICHTEXT_DEFAULT_DELAYED_LAYOUT_THRESHOLD 20000
77 // Milliseconds before layout occurs after resize
78 #define wxRICHTEXT_DEFAULT_LAYOUT_INTERVAL 50
82 #define wxID_RICHTEXT_PROPERTIES1 (wxID_HIGHEST + 1)
83 #define wxID_RICHTEXT_PROPERTIES2 (wxID_HIGHEST + 2)
84 #define wxID_RICHTEXT_PROPERTIES3 (wxID_HIGHEST + 3)
87 Normal selection occurs initially and as user drags within one container.
88 Common ancestor selection occurs when the user starts dragging across containers
89 that have a common ancestor, for example the cells in a table.
92 enum wxRichTextCtrlSelectionState
94 wxRichTextCtrlSelectionState_Normal
,
95 wxRichTextCtrlSelectionState_CommonAncestor
99 @class wxRichTextContextMenuPropertiesInfo
101 wxRichTextContextMenuPropertiesInfo keeps track of objects that appear in the context menu,
102 whose properties are available to be edited.
105 class WXDLLIMPEXP_RICHTEXT wxRichTextContextMenuPropertiesInfo
111 wxRichTextContextMenuPropertiesInfo() { Init(); }
123 bool AddItem(const wxString
& label
, wxRichTextObject
* obj
);
126 Returns the number of menu items that were added.
128 int AddMenuItems(wxMenu
* menu
, int startCmd
= wxID_RICHTEXT_PROPERTIES1
) const;
131 Adds appropriate menu items for the current container and clicked on object
132 (and container's parent, if appropriate).
134 int AddItems(wxRichTextObject
* container
, wxRichTextObject
* obj
);
139 void Clear() { m_objects
.Clear(); m_labels
.Clear(); }
144 Returns the nth label.
146 wxString
GetLabel(int n
) const { return m_labels
[n
]; }
149 Returns the nth object.
151 wxRichTextObject
* GetObject(int n
) const { return m_objects
[n
]; }
154 Returns the array of objects.
156 wxRichTextObjectPtrArray
& GetObjects() { return m_objects
; }
159 Returns the array of objects.
161 const wxRichTextObjectPtrArray
& GetObjects() const { return m_objects
; }
164 Returns the array of labels.
166 wxArrayString
& GetLabels() { return m_labels
; }
169 Returns the array of labels.
171 const wxArrayString
& GetLabels() const { return m_labels
; }
174 Returns the number of items.
176 int GetCount() const { return m_objects
.GetCount(); }
178 wxRichTextObjectPtrArray m_objects
;
179 wxArrayString m_labels
;
183 @class wxRichTextCtrl
185 wxRichTextCtrl provides a generic, ground-up implementation of a text control
186 capable of showing multiple styles and images.
188 wxRichTextCtrl sends notification events: see wxRichTextEvent.
190 It also sends the standard wxTextCtrl events @c wxEVT_COMMAND_TEXT_ENTER and
191 @c wxEVT_COMMAND_TEXT_UPDATED, and wxTextUrlEvent when URL content is clicked.
193 For more information, see the @ref overview_richtextctrl.
196 @style{wxRE_CENTRE_CARET}
197 The control will try to keep the caret line centred vertically while editing.
198 wxRE_CENTER_CARET is a synonym for this style.
199 @style{wxRE_MULTILINE}
200 The control will be multiline (mandatory).
201 @style{wxRE_READONLY}
202 The control will not be editable.
207 @appearance{richtextctrl.png}
211 class WXDLLIMPEXP_RICHTEXT wxRichTextCtrl
: public wxControl
,
212 public wxTextCtrlIface
,
213 public wxScrollHelper
215 DECLARE_CLASS( wxRichTextCtrl
)
216 DECLARE_EVENT_TABLE()
227 Constructor, creating and showing a rich text control.
230 Parent window. Must not be @NULL.
232 Window identifier. The value @c wxID_ANY indicates a default value.
246 @see Create(), wxValidator
248 wxRichTextCtrl( wxWindow
* parent
, wxWindowID id
= -1, const wxString
& value
= wxEmptyString
, const wxPoint
& pos
= wxDefaultPosition
, const wxSize
& size
= wxDefaultSize
,
249 long style
= wxRE_MULTILINE
, const wxValidator
& validator
= wxDefaultValidator
, const wxString
& name
= wxTextCtrlNameStr
);
254 virtual ~wxRichTextCtrl( );
259 Creates the underlying window.
261 bool Create( wxWindow
* parent
, wxWindowID id
= -1, const wxString
& value
= wxEmptyString
, const wxPoint
& pos
= wxDefaultPosition
, const wxSize
& size
= wxDefaultSize
,
262 long style
= wxRE_MULTILINE
, const wxValidator
& validator
= wxDefaultValidator
, const wxString
& name
= wxTextCtrlNameStr
);
265 Initialises the members of the control.
272 Gets the text for the given range.
273 The end point of range is specified as the last character position of
274 the span of text, plus one.
276 virtual wxString
GetRange(long from
, long to
) const;
279 Returns the length of the specified line in characters.
281 virtual int GetLineLength(long lineNo
) const ;
284 Returns the text for the given line.
286 virtual wxString
GetLineText(long lineNo
) const ;
289 Returns the number of lines in the buffer.
291 virtual int GetNumberOfLines() const ;
294 Returns @true if the buffer has been modified.
296 virtual bool IsModified() const ;
299 Returns @true if the control is editable.
301 virtual bool IsEditable() const ;
304 Returns @true if the control is single-line.
305 Currently wxRichTextCtrl does not support single-line editing.
307 bool IsSingleLine() const { return !HasFlag(wxRE_MULTILINE
); }
310 Returns @true if the control is multiline.
312 bool IsMultiLine() const { return !IsSingleLine(); }
316 Returns the range of the current selection.
317 The end point of range is specified as the last character position of the span
319 If the return values @a from and @a to are the same, there is no selection.
321 virtual void GetSelection(long* from
, long* to
) const;
322 const wxRichTextSelection
& GetSelection() const { return m_selection
; }
323 wxRichTextSelection
& GetSelection() { return m_selection
; }
327 Returns the text within the current selection range, if any.
329 virtual wxString
GetStringSelection() const;
332 Gets the current filename associated with the control.
334 wxString
GetFilename() const { return m_filename
; }
337 Sets the current filename.
339 void SetFilename(const wxString
& filename
) { m_filename
= filename
; }
342 Sets the size of the buffer beyond which layout is delayed during resizing.
343 This optimizes sizing for large buffers. The default is 20000.
345 void SetDelayedLayoutThreshold(long threshold
) { m_delayedLayoutThreshold
= threshold
; }
348 Gets the size of the buffer beyond which layout is delayed during resizing.
349 This optimizes sizing for large buffers. The default is 20000.
351 long GetDelayedLayoutThreshold() const { return m_delayedLayoutThreshold
; }
355 bool GetFullLayoutRequired() const { return m_fullLayoutRequired
; }
359 void SetFullLayoutRequired(bool b
) { m_fullLayoutRequired
= b
; }
363 wxLongLong
GetFullLayoutTime() const { return m_fullLayoutTime
; }
367 void SetFullLayoutTime(wxLongLong t
) { m_fullLayoutTime
= t
; }
371 long GetFullLayoutSavedPosition() const { return m_fullLayoutSavedPosition
; }
375 void SetFullLayoutSavedPosition(long p
) { m_fullLayoutSavedPosition
= p
; }
377 // Force any pending layout due to large buffer
380 void ForceDelayedLayout();
383 Sets the text (normal) cursor.
385 void SetTextCursor(const wxCursor
& cursor
) { m_textCursor
= cursor
; }
388 Returns the text (normal) cursor.
390 wxCursor
GetTextCursor() const { return m_textCursor
; }
393 Sets the cursor to be used over URLs.
395 void SetURLCursor(const wxCursor
& cursor
) { m_urlCursor
= cursor
; }
398 Returns the cursor to be used over URLs.
400 wxCursor
GetURLCursor() const { return m_urlCursor
; }
403 Returns @true if we are showing the caret position at the start of a line
404 instead of at the end of the previous one.
406 bool GetCaretAtLineStart() const { return m_caretAtLineStart
; }
409 Sets a flag to remember that we are showing the caret position at the start of a line
410 instead of at the end of the previous one.
412 void SetCaretAtLineStart(bool atStart
) { m_caretAtLineStart
= atStart
; }
415 Returns @true if we are dragging a selection.
417 bool GetDragging() const { return m_dragging
; }
420 Sets a flag to remember if we are dragging a selection.
422 void SetDragging(bool dragging
) { m_dragging
= dragging
; }
425 Returns the drag start position.
427 const wxPoint
& GetDragStart() const { return m_dragStart
; }
430 Sets the drag start position.
432 void SetDragStart(const wxPoint
& pt
) { m_dragStart
= pt
; }
434 #if wxRICHTEXT_BUFFERED_PAINTING
437 Returns the buffer bitmap if using buffered painting.
439 const wxBitmap
& GetBufferBitmap() const { return m_bufferBitmap
; }
440 wxBitmap
& GetBufferBitmap() { return m_bufferBitmap
; }
445 Returns the current context menu.
447 wxMenu
* GetContextMenu() const { return m_contextMenu
; }
450 Sets the current context menu.
452 void SetContextMenu(wxMenu
* menu
);
455 Returns an anchor so we know how to extend the selection.
456 It's a caret position since it's between two characters.
458 long GetSelectionAnchor() const { return m_selectionAnchor
; }
461 Sets an anchor so we know how to extend the selection.
462 It's a caret position since it's between two characters.
464 void SetSelectionAnchor(long anchor
) { m_selectionAnchor
= anchor
; }
467 Returns the anchor object if selecting multiple containers.
469 wxRichTextObject
* GetSelectionAnchorObject() const { return m_selectionAnchorObject
; }
472 Sets the anchor object if selecting multiple containers.
474 void SetSelectionAnchorObject(wxRichTextObject
* anchor
) { m_selectionAnchorObject
= anchor
; }
478 Returns an object that stores information about context menu property item(s),
479 in order to communicate between the context menu event handler and the code
480 that responds to it. The wxRichTextContextMenuPropertiesInfo stores one
481 item for each object that could respond to a property-editing event. If
482 objects are nested, several might be editable.
484 wxRichTextContextMenuPropertiesInfo
& GetContextMenuPropertiesInfo() { return m_contextMenuPropertiesInfo
; }
485 const wxRichTextContextMenuPropertiesInfo
& GetContextMenuPropertiesInfo() const { return m_contextMenuPropertiesInfo
; }
489 Returns the wxRichTextObject object that currently has the editing focus.
490 If there are no composite objects, this will be the top-level buffer.
492 wxRichTextParagraphLayoutBox
* GetFocusObject() const { return m_focusObject
; }
495 Sets the wxRichTextObject object that currently has the editing focus.
497 bool SetFocusObject(wxRichTextParagraphLayoutBox
* obj
, bool setCaretPosition
= true);
502 Invalidates the whole buffer to trigger painting later.
504 void Invalidate() { GetBuffer().Invalidate(wxRICHTEXT_ALL
); }
507 Clears the buffer content, leaving a single empty paragraph. Cannot be undone.
509 virtual void Clear();
512 Replaces the content in the specified range with the string specified by
515 virtual void Replace(long from
, long to
, const wxString
& value
);
518 Removes the content in the specified range.
520 virtual void Remove(long from
, long to
);
524 Loads content into the control's buffer using the given type.
526 If the specified type is wxRICHTEXT_TYPE_ANY, the type is deduced from
527 the filename extension.
529 This function looks for a suitable wxRichTextFileHandler object.
531 bool LoadFile(const wxString
& file
,
532 int type
= wxRICHTEXT_TYPE_ANY
);
536 Helper function for LoadFile(). Loads content into the control's buffer using the given type.
538 If the specified type is wxRICHTEXT_TYPE_ANY, the type is deduced from
539 the filename extension.
541 This function looks for a suitable wxRichTextFileHandler object.
543 virtual bool DoLoadFile(const wxString
& file
, int fileType
);
547 Saves the buffer content using the given type.
549 If the specified type is wxRICHTEXT_TYPE_ANY, the type is deduced from
550 the filename extension.
552 This function looks for a suitable wxRichTextFileHandler object.
554 bool SaveFile(const wxString
& file
= wxEmptyString
,
555 int type
= wxRICHTEXT_TYPE_ANY
);
559 Helper function for SaveFile(). Saves the buffer content using the given type.
561 If the specified type is wxRICHTEXT_TYPE_ANY, the type is deduced from
562 the filename extension.
564 This function looks for a suitable wxRichTextFileHandler object.
566 virtual bool DoSaveFile(const wxString
& file
= wxEmptyString
,
567 int fileType
= wxRICHTEXT_TYPE_ANY
);
570 Sets flags that change the behaviour of loading or saving.
572 See the documentation for each handler class to see what flags are
573 relevant for each handler.
575 void SetHandlerFlags(int flags
) { GetBuffer().SetHandlerFlags(flags
); }
578 Returns flags that change the behaviour of loading or saving.
579 See the documentation for each handler class to see what flags are
580 relevant for each handler.
582 int GetHandlerFlags() const { return GetBuffer().GetHandlerFlags(); }
585 Marks the buffer as modified.
587 virtual void MarkDirty();
590 Sets the buffer's modified status to @false, and clears the buffer's command
593 virtual void DiscardEdits();
596 Sets the maximum number of characters that may be entered in a single line
597 text control. For compatibility only; currently does nothing.
599 virtual void SetMaxLength(unsigned long WXUNUSED(len
)) { }
602 Writes text at the current position.
604 virtual void WriteText(const wxString
& text
);
607 Sets the insertion point to the end of the buffer and writes the text.
609 virtual void AppendText(const wxString
& text
);
613 Gets the attributes at the given position.
614 This function gets the combined style - that is, the style you see on the
615 screen as a result of combining base style, paragraph style and character
618 To get the character or paragraph style alone, use GetUncombinedStyle().
621 In wxPerl this method is implemented as GetStyle(@a position)
622 returning a 2-element list (ok, attr).
625 virtual bool GetStyle(long position
, wxTextAttr
& style
);
626 virtual bool GetStyle(long position
, wxRichTextAttr
& style
);
627 virtual bool GetStyle(long position
, wxRichTextAttr
& style
, wxRichTextParagraphLayoutBox
* container
);
632 Sets the attributes for the given range.
633 The end point of range is specified as the last character position of the span
636 So, for example, to set the style for a character at position 5, use the range
639 virtual bool SetStyle(long start
, long end
, const wxTextAttr
& style
);
640 virtual bool SetStyle(long start
, long end
, const wxRichTextAttr
& style
);
641 virtual bool SetStyle(const wxRichTextRange
& range
, const wxTextAttr
& style
);
642 virtual bool SetStyle(const wxRichTextRange
& range
, const wxRichTextAttr
& style
);
646 Sets the attributes for a single object
648 virtual void SetStyle(wxRichTextObject
*obj
, const wxRichTextAttr
& textAttr
);
652 Gets the attributes common to the specified range.
653 Attributes that differ in value within the range will not be included
657 In wxPerl this method is implemented as GetStyleForRange(@a position)
658 returning a 2-element list (ok, attr).
661 virtual bool GetStyleForRange(const wxRichTextRange
& range
, wxTextAttr
& style
);
662 virtual bool GetStyleForRange(const wxRichTextRange
& range
, wxRichTextAttr
& style
);
663 virtual bool GetStyleForRange(const wxRichTextRange
& range
, wxRichTextAttr
& style
, wxRichTextParagraphLayoutBox
* container
);
667 Sets the attributes for the given range, passing flags to determine how the
670 The end point of range is specified as the last character position of the span
671 of text, plus one. So, for example, to set the style for a character at
672 position 5, use the range (5,6).
674 @a flags may contain a bit list of the following values:
675 - wxRICHTEXT_SETSTYLE_NONE: no style flag.
676 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this operation should be
678 - wxRICHTEXT_SETSTYLE_OPTIMIZE: specifies that the style should not be applied
679 if the combined style at this point is already the style in question.
680 - wxRICHTEXT_SETSTYLE_PARAGRAPHS_ONLY: specifies that the style should only be
681 applied to paragraphs, and not the content.
682 This allows content styling to be preserved independently from that
683 of e.g. a named paragraph style.
684 - wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY: specifies that the style should only be
685 applied to characters, and not the paragraph.
686 This allows content styling to be preserved independently from that
687 of e.g. a named paragraph style.
688 - wxRICHTEXT_SETSTYLE_RESET: resets (clears) the existing style before applying
690 - wxRICHTEXT_SETSTYLE_REMOVE: removes the specified style. Only the style flags
691 are used in this operation.
693 virtual bool SetStyleEx(const wxRichTextRange
& range
, const wxRichTextAttr
& style
, int flags
= wxRICHTEXT_SETSTYLE_WITH_UNDO
);
697 Gets the attributes at the given position.
698 This function gets the @e uncombined style - that is, the attributes associated
699 with the paragraph or character content, and not necessarily the combined
700 attributes you see on the screen.
701 To get the combined attributes, use GetStyle().
703 If you specify (any) paragraph attribute in @e style's flags, this function
704 will fetch the paragraph attributes.
705 Otherwise, it will return the character attributes.
708 In wxPerl this method is implemented as GetUncombinedStyle(@a position)
709 returning a 2-element list (ok, attr).
712 virtual bool GetUncombinedStyle(long position
, wxRichTextAttr
& style
);
713 virtual bool GetUncombinedStyle(long position
, wxRichTextAttr
& style
, wxRichTextParagraphLayoutBox
* container
);
718 Sets the current default style, which can be used to change how subsequently
719 inserted text is displayed.
721 virtual bool SetDefaultStyle(const wxTextAttr
& style
);
722 virtual bool SetDefaultStyle(const wxRichTextAttr
& style
);
726 Returns the current default style, which can be used to change how subsequently
727 inserted text is displayed.
729 virtual const wxRichTextAttr
& GetDefaultStyleEx() const;
731 //virtual const wxTextAttr& GetDefaultStyle() const;
735 Sets the list attributes for the given range, passing flags to determine how
736 the attributes are set.
738 Either the style definition or the name of the style definition (in the current
739 sheet) can be passed.
740 @a flags is a bit list of the following:
741 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
742 - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
743 @a startFrom, otherwise existing attributes are used.
744 - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
745 as the level for all paragraphs, otherwise the current indentation will be used.
747 @see NumberList(), PromoteList(), ClearListStyle().
749 virtual bool SetListStyle(const wxRichTextRange
& range
, wxRichTextListStyleDefinition
* def
, int flags
= wxRICHTEXT_SETSTYLE_WITH_UNDO
, int startFrom
= 1, int specifiedLevel
= -1);
750 virtual bool SetListStyle(const wxRichTextRange
& range
, const wxString
& defName
, int flags
= wxRICHTEXT_SETSTYLE_WITH_UNDO
, int startFrom
= 1, int specifiedLevel
= -1);
754 Clears the list style from the given range, clearing list-related attributes
755 and applying any named paragraph style associated with each paragraph.
757 @a flags is a bit list of the following:
758 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
760 @see SetListStyle(), PromoteList(), NumberList().
762 virtual bool ClearListStyle(const wxRichTextRange
& range
, int flags
= wxRICHTEXT_SETSTYLE_WITH_UNDO
);
766 Numbers the paragraphs in the given range.
767 Pass flags to determine how the attributes are set.
769 Either the style definition or the name of the style definition (in the current
770 sheet) can be passed.
772 @a flags is a bit list of the following:
773 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
774 - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
775 @a startFrom, otherwise existing attributes are used.
776 - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
777 as the level for all paragraphs, otherwise the current indentation will be used.
779 @see SetListStyle(), PromoteList(), ClearListStyle().
781 virtual bool NumberList(const wxRichTextRange
& range
, wxRichTextListStyleDefinition
* def
= NULL
, int flags
= wxRICHTEXT_SETSTYLE_WITH_UNDO
, int startFrom
= 1, int specifiedLevel
= -1);
782 virtual bool NumberList(const wxRichTextRange
& range
, const wxString
& defName
, int flags
= wxRICHTEXT_SETSTYLE_WITH_UNDO
, int startFrom
= 1, int specifiedLevel
= -1);
787 Promotes or demotes the paragraphs in the given range.
788 A positive @a promoteBy produces a smaller indent, and a negative number
789 produces a larger indent. Pass flags to determine how the attributes are set.
790 Either the style definition or the name of the style definition (in the current
791 sheet) can be passed.
793 @a flags is a bit list of the following:
794 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
795 - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
796 @a startFrom, otherwise existing attributes are used.
797 - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
798 as the level for all paragraphs, otherwise the current indentation will be used.
800 @see SetListStyle(), @see SetListStyle(), ClearListStyle().
802 virtual bool PromoteList(int promoteBy
, const wxRichTextRange
& range
, wxRichTextListStyleDefinition
* def
= NULL
, int flags
= wxRICHTEXT_SETSTYLE_WITH_UNDO
, int specifiedLevel
= -1);
803 virtual bool PromoteList(int promoteBy
, const wxRichTextRange
& range
, const wxString
& defName
, int flags
= wxRICHTEXT_SETSTYLE_WITH_UNDO
, int specifiedLevel
= -1);
807 Deletes the content within the given range.
809 virtual bool Delete(const wxRichTextRange
& range
);
812 Translates from column and line number to position.
814 virtual long XYToPosition(long x
, long y
) const;
817 Converts a text position to zero-based column and line numbers.
819 virtual bool PositionToXY(long pos
, long *x
, long *y
) const;
822 Scrolls the buffer so that the given position is in view.
824 virtual void ShowPosition(long pos
);
828 Finds the character at the given position in pixels.
829 @a pt is in device coords (not adjusted for the client area origin nor for
832 virtual wxTextCtrlHitTestResult
HitTest(const wxPoint
& pt
, long *pos
) const;
833 virtual wxTextCtrlHitTestResult
HitTest(const wxPoint
& pt
,
835 wxTextCoord
*row
) const;
838 // Clipboard operations
841 Copies the selected content (if any) to the clipboard.
846 Copies the selected content (if any) to the clipboard and deletes the selection.
852 Pastes content from the clipboard to the buffer.
854 virtual void Paste();
857 Deletes the content in the selection, if any. This is undoable.
859 virtual void DeleteSelection();
862 Returns @true if selected content can be copied to the clipboard.
864 virtual bool CanCopy() const;
867 Returns @true if selected content can be copied to the clipboard and deleted.
869 virtual bool CanCut() const;
872 Returns @true if the clipboard content can be pasted to the buffer.
874 virtual bool CanPaste() const;
877 Returns @true if selected content can be deleted.
879 virtual bool CanDeleteSelection() const;
882 Undoes the command at the top of the command history, if there is one.
887 Redoes the current command.
892 Returns @true if there is a command in the command history that can be undone.
894 virtual bool CanUndo() const;
897 Returns @true if there is a command in the command history that can be redone.
899 virtual bool CanRedo() const;
902 Sets the insertion point and causes the current editing style to be taken from
903 the new position (unlike wxRichTextCtrl::SetCaretPosition).
905 virtual void SetInsertionPoint(long pos
);
908 Sets the insertion point to the end of the text control.
910 virtual void SetInsertionPointEnd();
913 Returns the current insertion point.
915 virtual long GetInsertionPoint() const;
918 Returns the last position in the buffer.
920 virtual wxTextPos
GetLastPosition() const;
924 Sets the selection to the given range.
925 The end point of range is specified as the last character position of the span
928 So, for example, to set the selection for a character at position 5, use the
931 virtual void SetSelection(long from
, long to
);
932 void SetSelection(const wxRichTextSelection
& sel
) { m_selection
= sel
; }
937 Selects all the text in the buffer.
939 virtual void SelectAll();
942 Makes the control editable, or not.
944 virtual void SetEditable(bool editable
);
947 Returns @true if there is a selection and the object containing the selection
948 was the same as the current focus object.
950 virtual bool HasSelection() const;
953 Returns @true if there was a selection, whether or not the current focus object
954 is the same as the selection's container object.
956 virtual bool HasUnfocusedSelection() const;
960 Write a bitmap or image at the current insertion point.
961 Supply an optional type to use for internal and file storage of the raw data.
963 virtual bool WriteImage(const wxImage
& image
, wxBitmapType bitmapType
= wxBITMAP_TYPE_PNG
,
964 const wxRichTextAttr
& textAttr
= wxRichTextAttr());
966 virtual bool WriteImage(const wxBitmap
& bitmap
, wxBitmapType bitmapType
= wxBITMAP_TYPE_PNG
,
967 const wxRichTextAttr
& textAttr
= wxRichTextAttr());
971 Loads an image from a file and writes it at the current insertion point.
973 virtual bool WriteImage(const wxString
& filename
, wxBitmapType bitmapType
,
974 const wxRichTextAttr
& textAttr
= wxRichTextAttr());
977 Writes an image block at the current insertion point.
979 virtual bool WriteImage(const wxRichTextImageBlock
& imageBlock
,
980 const wxRichTextAttr
& textAttr
= wxRichTextAttr());
983 Write a text box at the current insertion point, returning the text box.
984 You can then call SetFocusObject() to set the focus to the new object.
986 virtual wxRichTextBox
* WriteTextBox(const wxRichTextAttr
& textAttr
= wxRichTextAttr());
989 Write a table at the current insertion point, returning the table.
990 You can then call SetFocusObject() to set the focus to the new object.
992 virtual wxRichTextTable
* WriteTable(int rows
, int cols
, const wxRichTextAttr
& tableAttr
= wxRichTextAttr(), const wxRichTextAttr
& cellAttr
= wxRichTextAttr());
995 Inserts a new paragraph at the current insertion point. @see LineBreak().
997 virtual bool Newline();
1000 Inserts a line break at the current insertion point.
1002 A line break forces wrapping within a paragraph, and can be introduced by
1003 using this function, by appending the wxChar value @b wxRichTextLineBreakChar
1004 to text content, or by typing Shift-Return.
1006 virtual bool LineBreak();
1009 Sets the basic (overall) style.
1011 This is the style of the whole buffer before further styles are applied,
1012 unlike the default style, which only affects the style currently being
1013 applied (for example, setting the default style to bold will cause
1014 subsequently inserted text to be bold).
1016 virtual void SetBasicStyle(const wxRichTextAttr
& style
) { GetBuffer().SetBasicStyle(style
); }
1019 Gets the basic (overall) style.
1021 This is the style of the whole buffer before further styles are applied,
1022 unlike the default style, which only affects the style currently being
1023 applied (for example, setting the default style to bold will cause
1024 subsequently inserted text to be bold).
1026 virtual const wxRichTextAttr
& GetBasicStyle() const { return GetBuffer().GetBasicStyle(); }
1029 Begins applying a style.
1031 virtual bool BeginStyle(const wxRichTextAttr
& style
) { return GetBuffer().BeginStyle(style
); }
1034 Ends the current style.
1036 virtual bool EndStyle() { return GetBuffer().EndStyle(); }
1039 Ends application of all styles in the current style stack.
1041 virtual bool EndAllStyles() { return GetBuffer().EndAllStyles(); }
1046 bool BeginBold() { return GetBuffer().BeginBold(); }
1051 bool EndBold() { return GetBuffer().EndBold(); }
1054 Begins using italic.
1056 bool BeginItalic() { return GetBuffer().BeginItalic(); }
1061 bool EndItalic() { return GetBuffer().EndItalic(); }
1064 Begins using underlining.
1066 bool BeginUnderline() { return GetBuffer().BeginUnderline(); }
1069 End applying underlining.
1071 bool EndUnderline() { return GetBuffer().EndUnderline(); }
1074 Begins using the given point size.
1076 bool BeginFontSize(int pointSize
) { return GetBuffer().BeginFontSize(pointSize
); }
1079 Ends using a point size.
1081 bool EndFontSize() { return GetBuffer().EndFontSize(); }
1084 Begins using this font.
1086 bool BeginFont(const wxFont
& font
) { return GetBuffer().BeginFont(font
); }
1091 bool EndFont() { return GetBuffer().EndFont(); }
1094 Begins using this colour.
1096 bool BeginTextColour(const wxColour
& colour
) { return GetBuffer().BeginTextColour(colour
); }
1099 Ends applying a text colour.
1101 bool EndTextColour() { return GetBuffer().EndTextColour(); }
1104 Begins using alignment.
1105 For alignment values, see wxTextAttr.
1107 bool BeginAlignment(wxTextAttrAlignment alignment
) { return GetBuffer().BeginAlignment(alignment
); }
1112 bool EndAlignment() { return GetBuffer().EndAlignment(); }
1115 Begins applying a left indent and subindent in tenths of a millimetre.
1116 The subindent is an offset from the left edge of the paragraph, and is
1117 used for all but the first line in a paragraph. A positive value will
1118 cause the first line to appear to the left of the subsequent lines, and
1119 a negative value will cause the first line to be indented to the right
1120 of the subsequent lines.
1122 wxRichTextBuffer uses indentation to render a bulleted item. The
1123 content of the paragraph, including the first line, starts at the
1124 @a leftIndent plus the @a leftSubIndent.
1127 The distance between the margin and the bullet.
1128 @param leftSubIndent
1129 The distance between the left edge of the bullet and the left edge
1130 of the actual paragraph.
1132 bool BeginLeftIndent(int leftIndent
, int leftSubIndent
= 0) { return GetBuffer().BeginLeftIndent(leftIndent
, leftSubIndent
); }
1137 bool EndLeftIndent() { return GetBuffer().EndLeftIndent(); }
1140 Begins a right indent, specified in tenths of a millimetre.
1142 bool BeginRightIndent(int rightIndent
) { return GetBuffer().BeginRightIndent(rightIndent
); }
1147 bool EndRightIndent() { return GetBuffer().EndRightIndent(); }
1150 Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing
1151 in tenths of a millimetre.
1153 bool BeginParagraphSpacing(int before
, int after
) { return GetBuffer().BeginParagraphSpacing(before
, after
); }
1156 Ends paragraph spacing.
1158 bool EndParagraphSpacing() { return GetBuffer().EndParagraphSpacing(); }
1161 Begins appling line spacing. @e spacing is a multiple, where 10 means
1162 single-spacing, 15 means 1.5 spacing, and 20 means double spacing.
1164 The ::wxTextAttrLineSpacing constants are defined for convenience.
1166 bool BeginLineSpacing(int lineSpacing
) { return GetBuffer().BeginLineSpacing(lineSpacing
); }
1171 bool EndLineSpacing() { return GetBuffer().EndLineSpacing(); }
1174 Begins a numbered bullet.
1176 This call will be needed for each item in the list, and the
1177 application should take care of incrementing the numbering.
1179 @a bulletNumber is a number, usually starting with 1.
1180 @a leftIndent and @a leftSubIndent are values in tenths of a millimetre.
1181 @a bulletStyle is a bitlist of the ::wxTextAttrBulletStyle values.
1183 wxRichTextBuffer uses indentation to render a bulleted item.
1184 The left indent is the distance between the margin and the bullet.
1185 The content of the paragraph, including the first line, starts
1186 at leftMargin + leftSubIndent.
1187 So the distance between the left edge of the bullet and the
1188 left of the actual paragraph is leftSubIndent.
1190 bool BeginNumberedBullet(int bulletNumber
, int leftIndent
, int leftSubIndent
, int bulletStyle
= wxTEXT_ATTR_BULLET_STYLE_ARABIC
|wxTEXT_ATTR_BULLET_STYLE_PERIOD
)
1191 { return GetBuffer().BeginNumberedBullet(bulletNumber
, leftIndent
, leftSubIndent
, bulletStyle
); }
1194 Ends application of a numbered bullet.
1196 bool EndNumberedBullet() { return GetBuffer().EndNumberedBullet(); }
1199 Begins applying a symbol bullet, using a character from the current font.
1200 See BeginNumberedBullet() for an explanation of how indentation is used
1201 to render the bulleted paragraph.
1203 bool BeginSymbolBullet(const wxString
& symbol
, int leftIndent
, int leftSubIndent
, int bulletStyle
= wxTEXT_ATTR_BULLET_STYLE_SYMBOL
)
1204 { return GetBuffer().BeginSymbolBullet(symbol
, leftIndent
, leftSubIndent
, bulletStyle
); }
1207 Ends applying a symbol bullet.
1209 bool EndSymbolBullet() { return GetBuffer().EndSymbolBullet(); }
1212 Begins applying a symbol bullet.
1214 bool BeginStandardBullet(const wxString
& bulletName
, int leftIndent
, int leftSubIndent
, int bulletStyle
= wxTEXT_ATTR_BULLET_STYLE_STANDARD
)
1215 { return GetBuffer().BeginStandardBullet(bulletName
, leftIndent
, leftSubIndent
, bulletStyle
); }
1218 Begins applying a standard bullet.
1220 bool EndStandardBullet() { return GetBuffer().EndStandardBullet(); }
1223 Begins using the named character style.
1225 bool BeginCharacterStyle(const wxString
& characterStyle
) { return GetBuffer().BeginCharacterStyle(characterStyle
); }
1228 Ends application of a named character style.
1230 bool EndCharacterStyle() { return GetBuffer().EndCharacterStyle(); }
1233 Begins applying the named paragraph style.
1235 bool BeginParagraphStyle(const wxString
& paragraphStyle
) { return GetBuffer().BeginParagraphStyle(paragraphStyle
); }
1238 Ends application of a named paragraph style.
1240 bool EndParagraphStyle() { return GetBuffer().EndParagraphStyle(); }
1243 Begins using a specified list style.
1244 Optionally, you can also pass a level and a number.
1246 bool BeginListStyle(const wxString
& listStyle
, int level
= 1, int number
= 1) { return GetBuffer().BeginListStyle(listStyle
, level
, number
); }
1249 Ends using a specified list style.
1251 bool EndListStyle() { return GetBuffer().EndListStyle(); }
1254 Begins applying wxTEXT_ATTR_URL to the content.
1256 Pass a URL and optionally, a character style to apply, since it is common
1257 to mark a URL with a familiar style such as blue text with underlining.
1259 bool BeginURL(const wxString
& url
, const wxString
& characterStyle
= wxEmptyString
) { return GetBuffer().BeginURL(url
, characterStyle
); }
1262 Ends applying a URL.
1264 bool EndURL() { return GetBuffer().EndURL(); }
1267 Sets the default style to the style under the cursor.
1269 bool SetDefaultStyleToCursorStyle();
1272 Cancels any selection.
1274 virtual void SelectNone();
1277 Selects the word at the given character position.
1279 virtual bool SelectWord(long position
);
1282 Returns the selection range in character positions. -1, -1 means no selection.
1284 The range is in API convention, i.e. a single character selection is denoted
1287 wxRichTextRange
GetSelectionRange() const;
1290 Sets the selection to the given range.
1291 The end point of range is specified as the last character position of the span
1294 So, for example, to set the selection for a character at position 5, use the
1297 void SetSelectionRange(const wxRichTextRange
& range
);
1300 Returns the selection range in character positions. -2, -2 means no selection
1301 -1, -1 means select everything.
1302 The range is in internal format, i.e. a single character selection is denoted
1305 wxRichTextRange
GetInternalSelectionRange() const { return m_selection
.GetRange(); }
1308 Sets the selection range in character positions. -2, -2 means no selection
1309 -1, -1 means select everything.
1310 The range is in internal format, i.e. a single character selection is denoted
1313 void SetInternalSelectionRange(const wxRichTextRange
& range
) { m_selection
.Set(range
, GetFocusObject()); }
1316 Adds a new paragraph of text to the end of the buffer.
1318 virtual wxRichTextRange
AddParagraph(const wxString
& text
);
1321 Adds an image to the control's buffer.
1323 virtual wxRichTextRange
AddImage(const wxImage
& image
);
1326 Lays out the buffer, which must be done before certain operations, such as
1327 setting the caret position.
1328 This function should not normally be required by the application.
1330 virtual bool LayoutContent(bool onlyVisibleRect
= false);
1333 Move the caret to the given character position.
1335 Please note that this does not update the current editing style
1336 from the new position; to do that, call wxRichTextCtrl::SetInsertionPoint instead.
1338 virtual bool MoveCaret(long pos
, bool showAtLineStart
= false, wxRichTextParagraphLayoutBox
* container
= NULL
);
1343 virtual bool MoveRight(int noPositions
= 1, int flags
= 0);
1348 virtual bool MoveLeft(int noPositions
= 1, int flags
= 0);
1351 Moves to the start of the paragraph.
1353 virtual bool MoveUp(int noLines
= 1, int flags
= 0);
1356 Moves the caret down.
1358 virtual bool MoveDown(int noLines
= 1, int flags
= 0);
1361 Moves to the end of the line.
1363 virtual bool MoveToLineEnd(int flags
= 0);
1366 Moves to the start of the line.
1368 virtual bool MoveToLineStart(int flags
= 0);
1371 Moves to the end of the paragraph.
1373 virtual bool MoveToParagraphEnd(int flags
= 0);
1376 Moves to the start of the paragraph.
1378 virtual bool MoveToParagraphStart(int flags
= 0);
1381 Moves to the start of the buffer.
1383 virtual bool MoveHome(int flags
= 0);
1386 Moves to the end of the buffer.
1388 virtual bool MoveEnd(int flags
= 0);
1391 Moves one or more pages up.
1393 virtual bool PageUp(int noPages
= 1, int flags
= 0);
1396 Moves one or more pages down.
1398 virtual bool PageDown(int noPages
= 1, int flags
= 0);
1401 Moves a number of words to the left.
1403 virtual bool WordLeft(int noPages
= 1, int flags
= 0);
1406 Move a nuber of words to the right.
1408 virtual bool WordRight(int noPages
= 1, int flags
= 0);
1412 Returns the buffer associated with the control.
1414 wxRichTextBuffer
& GetBuffer() { return m_buffer
; }
1415 const wxRichTextBuffer
& GetBuffer() const { return m_buffer
; }
1419 Starts batching undo history for commands.
1421 virtual bool BeginBatchUndo(const wxString
& cmdName
) { return m_buffer
.BeginBatchUndo(cmdName
); }
1424 Ends batching undo command history.
1426 virtual bool EndBatchUndo() { return m_buffer
.EndBatchUndo(); }
1429 Returns @true if undo commands are being batched.
1431 virtual bool BatchingUndo() const { return m_buffer
.BatchingUndo(); }
1434 Starts suppressing undo history for commands.
1436 virtual bool BeginSuppressUndo() { return m_buffer
.BeginSuppressUndo(); }
1439 Ends suppressing undo command history.
1441 virtual bool EndSuppressUndo() { return m_buffer
.EndSuppressUndo(); }
1444 Returns @true if undo history suppression is on.
1446 virtual bool SuppressingUndo() const { return m_buffer
.SuppressingUndo(); }
1449 Test if this whole range has character attributes of the specified kind.
1450 If any of the attributes are different within the range, the test fails.
1452 You can use this to implement, for example, bold button updating.
1453 @a style must have flags indicating which attributes are of interest.
1455 virtual bool HasCharacterAttributes(const wxRichTextRange
& range
, const wxRichTextAttr
& style
) const
1457 return GetBuffer().HasCharacterAttributes(range
.ToInternal(), style
);
1461 Test if this whole range has paragraph attributes of the specified kind.
1462 If any of the attributes are different within the range, the test fails.
1463 You can use this to implement, for example, centering button updating.
1464 @a style must have flags indicating which attributes are of interest.
1466 virtual bool HasParagraphAttributes(const wxRichTextRange
& range
, const wxRichTextAttr
& style
) const
1468 return GetBuffer().HasParagraphAttributes(range
.ToInternal(), style
);
1472 Returns @true if all of the selection is bold.
1474 virtual bool IsSelectionBold();
1477 Returns @true if all of the selection is italic.
1479 virtual bool IsSelectionItalics();
1482 Returns @true if all of the selection is underlined.
1484 virtual bool IsSelectionUnderlined();
1487 Returns @true if all of the selection is aligned according to the specified flag.
1489 virtual bool IsSelectionAligned(wxTextAttrAlignment alignment
);
1492 Apples bold to the selection (undoable).
1494 virtual bool ApplyBoldToSelection();
1497 Applies italic to the selection (undoable).
1499 virtual bool ApplyItalicToSelection();
1502 Applies underline to the selection (undoable).
1504 virtual bool ApplyUnderlineToSelection();
1507 Applies the given alignment to the selection (undoable).
1508 For alignment values, see wxTextAttr.
1510 virtual bool ApplyAlignmentToSelection(wxTextAttrAlignment alignment
);
1513 Applies the style sheet to the buffer, matching paragraph styles in the sheet
1514 against named styles in the buffer.
1516 This might be useful if the styles have changed.
1517 If @a sheet is @NULL, the sheet set with SetStyleSheet() is used.
1518 Currently this applies paragraph styles only.
1520 virtual bool ApplyStyle(wxRichTextStyleDefinition
* def
);
1523 Sets the style sheet associated with the control.
1524 A style sheet allows named character and paragraph styles to be applied.
1526 void SetStyleSheet(wxRichTextStyleSheet
* styleSheet
) { GetBuffer().SetStyleSheet(styleSheet
); }
1529 Returns the style sheet associated with the control, if any.
1530 A style sheet allows named character and paragraph styles to be applied.
1532 wxRichTextStyleSheet
* GetStyleSheet() const { return GetBuffer().GetStyleSheet(); }
1535 Push the style sheet to top of stack.
1537 bool PushStyleSheet(wxRichTextStyleSheet
* styleSheet
) { return GetBuffer().PushStyleSheet(styleSheet
); }
1540 Pops the style sheet from top of stack.
1542 wxRichTextStyleSheet
* PopStyleSheet() { return GetBuffer().PopStyleSheet(); }
1545 Applies the style sheet to the buffer, for example if the styles have changed.
1547 bool ApplyStyleSheet(wxRichTextStyleSheet
* styleSheet
= NULL
);
1552 Sends the event to the control.
1554 void Command(wxCommandEvent
& event
);
1557 Loads the first dropped file.
1559 void OnDropFiles(wxDropFilesEvent
& event
);
1561 void OnCaptureLost(wxMouseCaptureLostEvent
& event
);
1562 void OnSysColourChanged(wxSysColourChangedEvent
& event
);
1565 Standard handler for the wxID_CUT command.
1567 void OnCut(wxCommandEvent
& event
);
1570 Standard handler for the wxID_COPY command.
1572 void OnCopy(wxCommandEvent
& event
);
1575 Standard handler for the wxID_PASTE command.
1577 void OnPaste(wxCommandEvent
& event
);
1580 Standard handler for the wxID_UNDO command.
1582 void OnUndo(wxCommandEvent
& event
);
1585 Standard handler for the wxID_REDO command.
1587 void OnRedo(wxCommandEvent
& event
);
1590 Standard handler for the wxID_SELECTALL command.
1592 void OnSelectAll(wxCommandEvent
& event
);
1595 Standard handler for property commands.
1597 void OnProperties(wxCommandEvent
& event
);
1600 Standard handler for the wxID_CLEAR command.
1602 void OnClear(wxCommandEvent
& event
);
1605 Standard update handler for the wxID_CUT command.
1607 void OnUpdateCut(wxUpdateUIEvent
& event
);
1610 Standard update handler for the wxID_COPY command.
1612 void OnUpdateCopy(wxUpdateUIEvent
& event
);
1615 Standard update handler for the wxID_PASTE command.
1617 void OnUpdatePaste(wxUpdateUIEvent
& event
);
1620 Standard update handler for the wxID_UNDO command.
1622 void OnUpdateUndo(wxUpdateUIEvent
& event
);
1625 Standard update handler for the wxID_REDO command.
1627 void OnUpdateRedo(wxUpdateUIEvent
& event
);
1630 Standard update handler for the wxID_SELECTALL command.
1632 void OnUpdateSelectAll(wxUpdateUIEvent
& event
);
1635 Standard update handler for property commands.
1638 void OnUpdateProperties(wxUpdateUIEvent
& event
);
1641 Standard update handler for the wxID_CLEAR command.
1643 void OnUpdateClear(wxUpdateUIEvent
& event
);
1646 Shows a standard context menu with undo, redo, cut, copy, paste, clear, and
1647 select all commands.
1649 void OnContextMenu(wxContextMenuEvent
& event
);
1654 void OnPaint(wxPaintEvent
& event
);
1655 void OnEraseBackground(wxEraseEvent
& event
);
1658 void OnLeftClick(wxMouseEvent
& event
);
1661 void OnLeftUp(wxMouseEvent
& event
);
1664 void OnMoveMouse(wxMouseEvent
& event
);
1666 // Left-double-click
1667 void OnLeftDClick(wxMouseEvent
& event
);
1670 void OnMiddleClick(wxMouseEvent
& event
);
1673 void OnRightClick(wxMouseEvent
& event
);
1676 void OnChar(wxKeyEvent
& event
);
1679 void OnSize(wxSizeEvent
& event
);
1681 // Setting/losing focus
1682 void OnSetFocus(wxFocusEvent
& event
);
1683 void OnKillFocus(wxFocusEvent
& event
);
1685 // Idle-time processing
1686 void OnIdle(wxIdleEvent
& event
);
1689 void OnScroll(wxScrollWinEvent
& event
);
1692 Sets the font, and also the basic and default attributes
1693 (see wxRichTextCtrl::SetDefaultStyle).
1695 virtual bool SetFont(const wxFont
& font
);
1698 A helper function setting up scrollbars, for example after a resize.
1700 virtual void SetupScrollbars(bool atTop
= false);
1703 Helper function implementing keyboard navigation.
1705 virtual bool KeyboardNavigate(int keyCode
, int flags
);
1708 Paints the background.
1710 virtual void PaintBackground(wxDC
& dc
);
1713 Other user defined painting after everything else (i.e. all text) is painted.
1717 virtual void PaintAboveContent(wxDC
& WXUNUSED(dc
)) {}
1719 #if wxRICHTEXT_BUFFERED_PAINTING
1721 Recreates the buffer bitmap if necessary.
1723 virtual bool RecreateBuffer(const wxSize
& size
= wxDefaultSize
);
1727 virtual void DoWriteText(const wxString
& value
, int flags
= 0);
1729 // Should we inherit colours?
1730 virtual bool ShouldInheritColours() const { return false; }
1733 Internal function to position the visible caret according to the current caret
1736 virtual void PositionCaret(wxRichTextParagraphLayoutBox
* container
= NULL
);
1739 Helper function for extending the selection, returning @true if the selection
1740 was changed. Selections are in caret positions.
1742 virtual bool ExtendSelection(long oldPosition
, long newPosition
, int flags
);
1745 Scrolls @a position into view. This function takes a caret position.
1747 virtual bool ScrollIntoView(long position
, int keyCode
);
1750 Refreshes the area affected by a selection change.
1752 bool RefreshForSelectionChange(const wxRichTextSelection
& oldSelection
, const wxRichTextSelection
& newSelection
);
1755 Sets the caret position.
1757 The caret position is the character position just before the caret.
1758 A value of -1 means the caret is at the start of the buffer.
1759 Please note that this does not update the current editing style
1760 from the new position or cause the actual caret to be refreshed; to do that,
1761 call wxRichTextCtrl::SetInsertionPoint instead.
1763 void SetCaretPosition(long position
, bool showAtLineStart
= false) ;
1766 Returns the current caret position.
1768 long GetCaretPosition() const { return m_caretPosition
; }
1771 The adjusted caret position is the character position adjusted to take
1772 into account whether we're at the start of a paragraph, in which case
1773 style information should be taken from the next position, not current one.
1775 long GetAdjustedCaretPosition(long caretPos
) const;
1778 Move the caret one visual step forward: this may mean setting a flag
1779 and keeping the same position if we're going from the end of one line
1780 to the start of the next, which may be the exact same caret position.
1782 void MoveCaretForward(long oldPosition
) ;
1785 Move the caret one visual step forward: this may mean setting a flag
1786 and keeping the same position if we're going from the end of one line
1787 to the start of the next, which may be the exact same caret position.
1789 void MoveCaretBack(long oldPosition
) ;
1792 Returns the caret height and position for the given character position.
1793 If container is null, the current focus object will be used.
1796 In wxPerl this method is implemented as
1797 GetCaretPositionForIndex(@a position) returning a
1798 2-element list (ok, rect).
1801 bool GetCaretPositionForIndex(long position
, wxRect
& rect
, wxRichTextParagraphLayoutBox
* container
= NULL
);
1804 Internal helper function returning the line for the visible caret position.
1805 If the caret is shown at the very end of the line, it means the next character
1806 is actually on the following line.
1807 So this function gets the line we're expecting to find if this is the case.
1809 wxRichTextLine
* GetVisibleLineForCaretPosition(long caretPosition
) const;
1812 Gets the command processor associated with the control's buffer.
1814 wxCommandProcessor
* GetCommandProcessor() const { return GetBuffer().GetCommandProcessor(); }
1817 Deletes content if there is a selection, e.g. when pressing a key.
1818 Returns the new caret position in @e newPos, or leaves it if there
1819 was no action. This is undoable.
1822 In wxPerl this method takes no arguments and returns a 2-element
1826 bool DeleteSelectedContent(long* newPos
= NULL
);
1829 Transforms logical (unscrolled) position to physical window position.
1831 wxPoint
GetPhysicalPoint(const wxPoint
& ptLogical
) const;
1834 Transforms physical window position to logical (unscrolled) position.
1836 wxPoint
GetLogicalPoint(const wxPoint
& ptPhysical
) const;
1839 Helper function for finding the caret position for the next word.
1840 Direction is 1 (forward) or -1 (backwards).
1842 virtual long FindNextWordPosition(int direction
= 1) const;
1845 Returns @true if the given position is visible on the screen.
1847 bool IsPositionVisible(long pos
) const;
1850 Returns the first visible position in the current view.
1852 long GetFirstVisiblePosition() const;
1855 Returns the caret position since the default formatting was changed. As
1856 soon as this position changes, we no longer reflect the default style
1857 in the UI. A value of -2 means that we should only reflect the style of the
1858 content under the caret.
1860 long GetCaretPositionForDefaultStyle() const { return m_caretPositionForDefaultStyle
; }
1863 Set the caret position for the default style that the user is selecting.
1865 void SetCaretPositionForDefaultStyle(long pos
) { m_caretPositionForDefaultStyle
= pos
; }
1868 Returns @true if the user has recently set the default style without moving
1869 the caret, and therefore the UI needs to reflect the default style and not
1870 the style at the caret.
1872 Below is an example of code that uses this function to determine whether the UI
1873 should show that the current style is bold.
1875 @see SetAndShowDefaultStyle().
1877 bool IsDefaultStyleShowing() const { return m_caretPositionForDefaultStyle
!= -2; }
1880 Sets @a attr as the default style and tells the control that the UI should
1881 reflect this attribute until the user moves the caret.
1883 @see IsDefaultStyleShowing().
1885 void SetAndShowDefaultStyle(const wxRichTextAttr
& attr
)
1887 SetDefaultStyle(attr
);
1888 SetCaretPositionForDefaultStyle(GetCaretPosition());
1892 Returns the first visible point in the window.
1894 wxPoint
GetFirstVisiblePoint() const;
1898 Returns the content of the entire control as a string.
1900 virtual wxString
GetValue() const;
1903 Replaces existing content with the given text.
1905 virtual void SetValue(const wxString
& value
);
1908 Call this function to prevent refresh and allow fast updates, and then Thaw() to
1909 refresh the control.
1914 Call this function to end a Freeze and refresh the display.
1919 Returns @true if Freeze has been called without a Thaw.
1921 bool IsFrozen() const;
1928 Sets up the caret for the given position and container, after a mouse click.
1930 bool SetCaretPositionAfterClick(wxRichTextParagraphLayoutBox
* container
, long position
, int hitTestFlags
, bool extendSelection
= false);
1933 Find the caret position for the combination of hit-test flags and character position.
1934 Returns the caret position and also an indication of where to place the caret (caretLineStart)
1935 since this is ambiguous (same position used for end of line and start of next).
1937 long FindCaretPositionForCharacterPosition(long position
, int hitTestFlags
, wxRichTextParagraphLayoutBox
* container
,
1938 bool& caretLineStart
);
1941 Font names take a long time to retrieve, so cache them (on demand).
1943 static const wxArrayString
& GetAvailableFontNames();
1946 Clears the cache of available font names.
1948 static void ClearAvailableFontNames();
1950 WX_FORWARD_TO_SCROLL_HELPER()
1952 // implement wxTextEntry methods
1953 virtual wxString
DoGetValue() const;
1956 // implement the wxTextEntry pure virtual method
1957 virtual wxWindow
*GetEditableWindow() { return this; }
1959 // margins functions
1960 virtual bool DoSetMargins(const wxPoint
& pt
);
1961 virtual wxPoint
DoGetMargins() const;
1963 // FIXME: this does not work, it allows this code to compile but will fail
1965 #ifndef __WXUNIVERSAL__
1967 virtual WXHWND
GetEditHWND() const { return GetHWND(); }
1970 virtual WXWidget
GetTextWidget() const { return NULL
; }
1973 virtual GtkEditable
*GetEditable() const { return NULL
; }
1974 virtual GtkEntry
*GetEntry() const { return NULL
; }
1976 #endif // !__WXUNIVERSAL__
1982 Currently this simply returns @c wxSize(10, 10).
1984 virtual wxSize
DoGetBestSize() const ;
1986 virtual void DoSetValue(const wxString
& value
, int flags
= 0);
1988 virtual void DoThaw();
1993 #if wxRICHTEXT_BUFFERED_PAINTING
1995 wxBitmap m_bufferBitmap
;
1999 wxRichTextBuffer m_buffer
;
2001 wxMenu
* m_contextMenu
;
2003 /// Caret position (1 less than the character position, so -1 is the
2004 /// first caret position).
2005 long m_caretPosition
;
2007 /// Caret position when the default formatting has been changed. As
2008 /// soon as this position changes, we no longer reflect the default style
2010 long m_caretPositionForDefaultStyle
;
2012 /// Selection range in character positions. -2, -2 means no selection.
2013 wxRichTextSelection m_selection
;
2015 wxRichTextCtrlSelectionState m_selectionState
;
2017 /// Anchor so we know how to extend the selection
2018 /// It's a caret position since it's between two characters.
2019 long m_selectionAnchor
;
2021 /// Anchor object if selecting multiple container objects, such as grid cells.
2022 wxRichTextObject
* m_selectionAnchorObject
;
2024 /// Are we editable?
2027 /// Are we showing the caret position at the start of a line
2028 /// instead of at the end of the previous one?
2029 bool m_caretAtLineStart
;
2031 /// Are we dragging a selection?
2034 /// Start position for drag
2035 wxPoint m_dragStart
;
2037 /// Do we need full layout in idle?
2038 bool m_fullLayoutRequired
;
2039 wxLongLong m_fullLayoutTime
;
2040 long m_fullLayoutSavedPosition
;
2042 /// Threshold for doing delayed layout
2043 long m_delayedLayoutThreshold
;
2046 wxCursor m_textCursor
;
2047 wxCursor m_urlCursor
;
2049 static wxArrayString sm_availableFontNames
;
2051 wxRichTextContextMenuPropertiesInfo m_contextMenuPropertiesInfo
;
2053 /// The object that currently has the editing focus
2054 wxRichTextParagraphLayoutBox
* m_focusObject
;
2058 @class wxRichTextEvent
2060 This is the event class for wxRichTextCtrl notifications.
2062 @beginEventTable{wxRichTextEvent}
2063 @event{EVT_RICHTEXT_LEFT_CLICK(id, func)}
2064 Process a @c wxEVT_COMMAND_RICHTEXT_LEFT_CLICK event, generated when the user
2065 releases the left mouse button over an object.
2066 @event{EVT_RICHTEXT_RIGHT_CLICK(id, func)}
2067 Process a @c wxEVT_COMMAND_RICHTEXT_RIGHT_CLICK event, generated when the user
2068 releases the right mouse button over an object.
2069 @event{EVT_RICHTEXT_MIDDLE_CLICK(id, func)}
2070 Process a @c wxEVT_COMMAND_RICHTEXT_MIDDLE_CLICK event, generated when the user
2071 releases the middle mouse button over an object.
2072 @event{EVT_RICHTEXT_LEFT_DCLICK(id, func)}
2073 Process a @c wxEVT_COMMAND_RICHTEXT_DLEFT_CLICK event, generated when the user
2074 double-clicks an object.
2075 @event{EVT_RICHTEXT_RETURN(id, func)}
2076 Process a @c wxEVT_COMMAND_RICHTEXT_RETURN event, generated when the user
2077 presses the return key. Valid event functions: GetFlags, GetPosition.
2078 @event{EVT_RICHTEXT_CHARACTER(id, func)}
2079 Process a @c wxEVT_COMMAND_RICHTEXT_CHARACTER event, generated when the user
2080 presses a character key. Valid event functions: GetFlags, GetPosition, GetCharacter.
2081 @event{EVT_RICHTEXT_DELETE(id, func)}
2082 Process a @c wxEVT_COMMAND_RICHTEXT_DELETE event, generated when the user
2083 presses the backspace or delete key. Valid event functions: GetFlags, GetPosition.
2084 @event{EVT_RICHTEXT_RETURN(id, func)}
2085 Process a @c wxEVT_COMMAND_RICHTEXT_RETURN event, generated when the user
2086 presses the return key. Valid event functions: GetFlags, GetPosition.
2087 @event{EVT_RICHTEXT_STYLE_CHANGED(id, func)}
2088 Process a @c wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED event, generated when
2089 styling has been applied to the control. Valid event functions: GetPosition, GetRange.
2090 @event{EVT_RICHTEXT_STYLESHEET_CHANGED(id, func)}
2091 Process a @c wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING event, generated
2092 when the control's stylesheet has changed, for example the user added,
2093 edited or deleted a style. Valid event functions: GetRange, GetPosition.
2094 @event{EVT_RICHTEXT_STYLESHEET_REPLACING(id, func)}
2095 Process a @c wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING event, generated
2096 when the control's stylesheet is about to be replaced, for example when
2097 a file is loaded into the control.
2098 Valid event functions: Veto, GetOldStyleSheet, GetNewStyleSheet.
2099 @event{EVT_RICHTEXT_STYLESHEET_REPLACED(id, func)}
2100 Process a @c wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED event, generated
2101 when the control's stylesheet has been replaced, for example when a file
2102 is loaded into the control.
2103 Valid event functions: GetOldStyleSheet, GetNewStyleSheet.
2104 @event{EVT_RICHTEXT_CONTENT_INSERTED(id, func)}
2105 Process a @c wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED event, generated when
2106 content has been inserted into the control.
2107 Valid event functions: GetPosition, GetRange.
2108 @event{EVT_RICHTEXT_CONTENT_DELETED(id, func)}
2109 Process a @c wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED event, generated when
2110 content has been deleted from the control.
2111 Valid event functions: GetPosition, GetRange.
2112 @event{EVT_RICHTEXT_BUFFER_RESET(id, func)}
2113 Process a @c wxEVT_COMMAND_RICHTEXT_BUFFER_RESET event, generated when the
2114 buffer has been reset by deleting all content.
2115 You can use this to set a default style for the first new paragraph.
2116 @event{EVT_RICHTEXT_SELECTION_CHANGED(id, func)}
2117 Process a @c wxEVT_COMMAND_RICHTEXT_SELECTION_CHANGED event, generated when the
2118 selection range has changed.
2119 @event{EVT_RICHTEXT_FOCUS_OBJECT_CHANGED(id, func)}
2120 Process a @c wxEVT_COMMAND_RICHTEXT_FOCUS_OBJECT_CHANGED event, generated when the
2121 current focus object has changed.
2124 @library{wxrichtext}
2125 @category{events,richtext}
2128 class WXDLLIMPEXP_RICHTEXT wxRichTextEvent
: public wxNotifyEvent
2135 The type of the event.
2137 Window identifier. The value @c wxID_ANY indicates a default value.
2139 wxRichTextEvent(wxEventType commandType
= wxEVT_NULL
, int winid
= 0)
2140 : wxNotifyEvent(commandType
, winid
),
2141 m_flags(0), m_position(-1), m_oldStyleSheet(NULL
), m_newStyleSheet(NULL
),
2142 m_char((wxChar
) 0), m_container(NULL
), m_oldContainer(NULL
)
2148 wxRichTextEvent(const wxRichTextEvent
& event
)
2149 : wxNotifyEvent(event
),
2150 m_flags(event
.m_flags
), m_position(-1),
2151 m_oldStyleSheet(event
.m_oldStyleSheet
), m_newStyleSheet(event
.m_newStyleSheet
),
2152 m_char((wxChar
) 0), m_container(event
.m_container
), m_oldContainer(event
.m_oldContainer
)
2156 Returns the buffer position at which the event occured.
2158 long GetPosition() const { return m_position
; }
2161 Sets the buffer position variable.
2163 void SetPosition(long pos
) { m_position
= pos
; }
2166 Returns flags indicating modifier keys pressed.
2168 Possible values are @c wxRICHTEXT_CTRL_DOWN, @c wxRICHTEXT_SHIFT_DOWN, and @c wxRICHTEXT_ALT_DOWN.
2170 int GetFlags() const { return m_flags
; }
2173 Sets flags indicating modifier keys pressed.
2175 Possible values are @c wxRICHTEXT_CTRL_DOWN, @c wxRICHTEXT_SHIFT_DOWN, and @c wxRICHTEXT_ALT_DOWN.
2177 void SetFlags(int flags
) { m_flags
= flags
; }
2180 Returns the old style sheet.
2182 Can be used in a @c wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING or
2183 @c wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED event handler.
2185 wxRichTextStyleSheet
* GetOldStyleSheet() const { return m_oldStyleSheet
; }
2188 Sets the old style sheet variable.
2190 void SetOldStyleSheet(wxRichTextStyleSheet
* sheet
) { m_oldStyleSheet
= sheet
; }
2193 Returns the new style sheet.
2195 Can be used in a @c wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING or
2196 @c wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED event handler.
2198 wxRichTextStyleSheet
* GetNewStyleSheet() const { return m_newStyleSheet
; }
2201 Sets the new style sheet variable.
2203 void SetNewStyleSheet(wxRichTextStyleSheet
* sheet
) { m_newStyleSheet
= sheet
; }
2206 Gets the range for the current operation.
2208 const wxRichTextRange
& GetRange() const { return m_range
; }
2211 Sets the range variable.
2213 void SetRange(const wxRichTextRange
& range
) { m_range
= range
; }
2216 Returns the character pressed, within a @c wxEVT_COMMAND_RICHTEXT_CHARACTER event.
2218 wxChar
GetCharacter() const { return m_char
; }
2221 Sets the character variable.
2223 void SetCharacter(wxChar ch
) { m_char
= ch
; }
2226 Returns the container for which the event is relevant.
2228 wxRichTextParagraphLayoutBox
* GetContainer() const { return m_container
; }
2231 Sets the container for which the event is relevant.
2233 void SetContainer(wxRichTextParagraphLayoutBox
* container
) { m_container
= container
; }
2236 Returns the old container, for a focus change event.
2238 wxRichTextParagraphLayoutBox
* GetOldContainer() const { return m_oldContainer
; }
2241 Sets the old container, for a focus change event.
2243 void SetOldContainer(wxRichTextParagraphLayoutBox
* container
) { m_oldContainer
= container
; }
2245 virtual wxEvent
*Clone() const { return new wxRichTextEvent(*this); }
2250 wxRichTextStyleSheet
* m_oldStyleSheet
;
2251 wxRichTextStyleSheet
* m_newStyleSheet
;
2252 wxRichTextRange m_range
;
2254 wxRichTextParagraphLayoutBox
* m_container
;
2255 wxRichTextParagraphLayoutBox
* m_oldContainer
;
2258 DECLARE_DYNAMIC_CLASS_NO_ASSIGN(wxRichTextEvent
)
2262 * wxRichTextCtrl events
2264 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_LEFT_CLICK
, wxRichTextEvent
);
2265 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_RIGHT_CLICK
, wxRichTextEvent
);
2266 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_MIDDLE_CLICK
, wxRichTextEvent
);
2267 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_LEFT_DCLICK
, wxRichTextEvent
);
2268 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_RETURN
, wxRichTextEvent
);
2269 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_CHARACTER
, wxRichTextEvent
);
2270 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_DELETE
, wxRichTextEvent
);
2272 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING
, wxRichTextEvent
);
2273 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED
, wxRichTextEvent
);
2274 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING
, wxRichTextEvent
);
2275 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED
, wxRichTextEvent
);
2277 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED
, wxRichTextEvent
);
2278 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED
, wxRichTextEvent
);
2279 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED
, wxRichTextEvent
);
2280 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_SELECTION_CHANGED
, wxRichTextEvent
);
2281 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_BUFFER_RESET
, wxRichTextEvent
);
2282 wxDECLARE_EXPORTED_EVENT( WXDLLIMPEXP_RICHTEXT
, wxEVT_COMMAND_RICHTEXT_FOCUS_OBJECT_CHANGED
, wxRichTextEvent
);
2284 typedef void (wxEvtHandler::*wxRichTextEventFunction
)(wxRichTextEvent
&);
2286 #define wxRichTextEventHandler(func) \
2287 wxEVENT_HANDLER_CAST(wxRichTextEventFunction, func)
2289 #define EVT_RICHTEXT_LEFT_CLICK(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_LEFT_CLICK, id, -1, wxRichTextEventHandler( fn ), NULL ),
2290 #define EVT_RICHTEXT_RIGHT_CLICK(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_RIGHT_CLICK, id, -1, wxRichTextEventHandler( fn ), NULL ),
2291 #define EVT_RICHTEXT_MIDDLE_CLICK(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_MIDDLE_CLICK, id, -1, wxRichTextEventHandler( fn ), NULL ),
2292 #define EVT_RICHTEXT_LEFT_DCLICK(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_LEFT_DCLICK, id, -1, wxRichTextEventHandler( fn ), NULL ),
2293 #define EVT_RICHTEXT_RETURN(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_RETURN, id, -1, wxRichTextEventHandler( fn ), NULL ),
2294 #define EVT_RICHTEXT_CHARACTER(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_CHARACTER, id, -1, wxRichTextEventHandler( fn ), NULL ),
2295 #define EVT_RICHTEXT_DELETE(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_DELETE, id, -1, wxRichTextEventHandler( fn ), NULL ),
2297 #define EVT_RICHTEXT_STYLESHEET_CHANGING(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING, id, -1, wxRichTextEventHandler( fn ), NULL ),
2298 #define EVT_RICHTEXT_STYLESHEET_CHANGED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED, id, -1, wxRichTextEventHandler( fn ), NULL ),
2299 #define EVT_RICHTEXT_STYLESHEET_REPLACING(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING, id, -1, wxRichTextEventHandler( fn ), NULL ),
2300 #define EVT_RICHTEXT_STYLESHEET_REPLACED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED, id, -1, wxRichTextEventHandler( fn ), NULL ),
2302 #define EVT_RICHTEXT_CONTENT_INSERTED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED, id, -1, wxRichTextEventHandler( fn ), NULL ),
2303 #define EVT_RICHTEXT_CONTENT_DELETED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED, id, -1, wxRichTextEventHandler( fn ), NULL ),
2304 #define EVT_RICHTEXT_STYLE_CHANGED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED, id, -1, wxRichTextEventHandler( fn ), NULL ),
2305 #define EVT_RICHTEXT_SELECTION_CHANGED(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_SELECTION_CHANGED, id, -1, wxRichTextEventHandler( fn ), NULL ),
2306 #define EVT_RICHTEXT_BUFFER_RESET(id, fn) wxDECLARE_EVENT_TABLE_ENTRY( wxEVT_COMMAND_RICHTEXT_BUFFER_RESET, id, -1, wxRichTextEventHandler( fn ), NULL ),
2312 // _WX_RICHTEXTCTRL_H_