]> git.saurik.com Git - wxWidgets.git/blame - interface/wx/richtext/richtextctrl.h
add the @appearance tag to wxFileCtrl
[wxWidgets.git] / interface / wx / richtext / richtextctrl.h
CommitLineData
23324ae1
FM
1/////////////////////////////////////////////////////////////////////////////
2// Name: richtext/richtextctrl.h
9e7ad1ca 3// Purpose: interface of wxRichTextCtrl and wxRichTextEvent
23324ae1
FM
4// Author: wxWidgets team
5// RCS-ID: $Id$
6// Licence: wxWindows license
7/////////////////////////////////////////////////////////////////////////////
8
9/**
10 @class wxRichTextEvent
7c913512 11
23324ae1 12 This is the event class for wxRichTextCtrl notifications.
7c913512 13
9e7ad1ca
FM
14 @beginEventTable{wxRichTextEvent}
15 @event{EVT_RICHTEXT_CHARACTER(id, func)}
16 Process a wxEVT_COMMAND_RICHTEXT_CHARACTER event, generated when the user
17 presses a character key. Valid event functions: GetFlags, GetPosition, GetCharacter.
18 @event{EVT_RICHTEXT_DELETE(id, func)}
19 Process a wxEVT_COMMAND_RICHTEXT_DELETE event, generated when the user
20 presses the backspace or delete key. Valid event functions: GetFlags, GetPosition.
21 @event{EVT_RICHTEXT_RETURN(id, func)}
22 Process a wxEVT_COMMAND_RICHTEXT_RETURN event, generated when the user
23 presses the return key. Valid event functions: GetFlags, GetPosition.
24 @event{EVT_RICHTEXT_STYLE_CHANGED(id, func)}
25 Process a wxEVT_COMMAND_RICHTEXT_STYLE_CHANGED event, generated when
26 styling has been applied to the control. Valid event functions: GetPosition, GetRange.
27 @event{EVT_RICHTEXT_STYLESHEET_CHANGED(id, func)}
28 Process a wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING event, generated
29 when the control's stylesheet has changed, for example the user added,
30 edited or deleted a style. Valid event functions: GetRange, GetPosition.
31 @event{EVT_RICHTEXT_STYLESHEET_REPLACING(id, func)}
32 Process a wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACING event, generated
33 when the control's stylesheet is about to be replaced, for example when
34 a file is loaded into the control.
35 Valid event functions: Veto, GetOldStyleSheet, GetNewStyleSheet.
36 @event{EVT_RICHTEXT_STYLESHEET_REPLACED(id, func)}
37 Process a wxEVT_COMMAND_RICHTEXT_STYLESHEET_REPLACED event, generated
38 when the control's stylesheet has been replaced, for example when a file
39 is loaded into the control.
40 Valid event functions: GetOldStyleSheet, GetNewStyleSheet.
41 @event{EVT_RICHTEXT_CONTENT_INSERTED(id, func)}
42 Process a wxEVT_COMMAND_RICHTEXT_CONTENT_INSERTED event, generated when
43 content has been inserted into the control.
44 Valid event functions: GetPosition, GetRange.
45 @event{EVT_RICHTEXT_CONTENT_DELETED(id, func)}
46 Process a wxEVT_COMMAND_RICHTEXT_CONTENT_DELETED event, generated when
47 content has been deleted from the control.
48 Valid event functions: GetPosition, GetRange.
49 @event{EVT_RICHTEXT_BUFFER_RESET(id, func)}
50 Process a wxEVT_COMMAND_RICHTEXT_BUFFER_RESET event, generated when the
51 buffer has been reset by deleting all content.
52 You can use this to set a default style for the first new paragraph.
53 @endEventTable
54
23324ae1 55 @library{wxrichtext}
9e7ad1ca 56 @category{events,richtext}
23324ae1
FM
57*/
58class wxRichTextEvent : public wxNotifyEvent
59{
60public:
23324ae1 61 /**
738b7b98 62 Copy constructor.
23324ae1
FM
63 */
64 wxRichTextEvent(const wxRichTextEvent& event);
738b7b98
BP
65
66 /**
67 Constructor.
68
9e7ad1ca
FM
69 @param commandType
70 The type of the event.
738b7b98
BP
71 @param id
72 Window identifier. The value @c wxID_ANY indicates a default value.
73 */
74 wxRichTextEvent(wxEventType commandType = wxEVT_NULL, int id = 0);
23324ae1 75
23324ae1
FM
76 /**
77 Returns the character pressed, within a wxEVT_COMMAND_RICHTEXT_CHARACTER event.
78 */
328f5751 79 wxChar GetCharacter() const;
23324ae1
FM
80
81 /**
9e7ad1ca
FM
82 Returns flags indicating modifier keys pressed.
83
84 Possible values are wxRICHTEXT_CTRL_DOWN, wxRICHTEXT_SHIFT_DOWN, and wxRICHTEXT_ALT_DOWN.
23324ae1 85 */
328f5751 86 int GetFlags() const;
23324ae1
FM
87
88 /**
9e7ad1ca
FM
89 Returns the new style sheet.
90
91 Can be used in a wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING or
23324ae1
FM
92 wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED event handler.
93 */
328f5751 94 wxRichTextStyleSheet* GetNewStyleSheet() const;
23324ae1
FM
95
96 /**
9e7ad1ca
FM
97 Returns the old style sheet.
98
99 Can be used in a wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGING or
23324ae1
FM
100 wxEVT_COMMAND_RICHTEXT_STYLESHEET_CHANGED event handler.
101 */
328f5751 102 wxRichTextStyleSheet* GetOldStyleSheet() const;
23324ae1
FM
103
104 /**
105 Returns the buffer position at which the event occured.
106 */
328f5751 107 long GetPosition() const;
23324ae1
FM
108
109 /**
110 Gets the range for the current operation.
111 */
5267aefd 112 const wxRichTextRange& GetRange() const;
23324ae1
FM
113
114 /**
115 Sets the character variable.
116 */
117 void SetCharacter(wxChar ch);
118
119 /**
9e7ad1ca
FM
120 Sets flags indicating modifier keys pressed.
121
122 Possible values are wxRICHTEXT_CTRL_DOWN, wxRICHTEXT_SHIFT_DOWN, and wxRICHTEXT_ALT_DOWN.
23324ae1
FM
123 */
124 void SetFlags(int flags);
125
126 /**
127 Sets the new style sheet variable.
128 */
129 void SetNewStyleSheet(wxRichTextStyleSheet* sheet);
130
131 /**
132 Sets the old style sheet variable.
133 */
134 void SetOldStyleSheet(wxRichTextStyleSheet* sheet);
135
136 /**
137 Sets the buffer position variable.
138 */
139 void SetPosition(long pos);
140
141 /**
142 Sets the range variable.
143 */
144 void SetRange(const wxRichTextRange& range);
145};
146
147
e54c96f1 148
23324ae1
FM
149/**
150 @class wxRichTextCtrl
7c913512 151
23324ae1
FM
152 wxRichTextCtrl provides a generic, ground-up implementation of a text control
153 capable of showing multiple styles and images.
7c913512 154
23324ae1 155 wxRichTextCtrl sends notification events: see wxRichTextEvent.
9e7ad1ca 156
23324ae1 157 It also sends the standard wxTextCtrl events wxEVT_COMMAND_TEXT_ENTER and
9e7ad1ca 158 wxEVT_COMMAND_TEXT_UPDATED, and wxTextUrlEvent when URL content is clicked.
7c913512 159
738b7b98 160 For more information, see the @ref overview_richtextctrl.
7c913512 161
23324ae1 162 @library{wxrichtext}
21b447dc 163 @category{richtext}
36d0c795 164 @appearance{richtextctrl.png}
23324ae1 165*/
7c913512 166class wxRichTextCtrl
23324ae1
FM
167{
168public:
23324ae1 169 /**
738b7b98 170 Default Constructor.
23324ae1
FM
171 */
172 wxRichTextCtrl();
738b7b98
BP
173
174 /**
175 Constructor, creating and showing a rich text control.
176
177 @param parent
178 Parent window. Must not be @NULL.
179 @param id
180 Window identifier. The value @c wxID_ANY indicates a default value.
181 @param value
182 Default string.
183 @param pos
184 Window position.
185 @param size
186 Window size.
187 @param style
188 Window style.
189 @param validator
190 Window validator.
191 @param name
192 Window name.
193
194 @see Create(), wxValidator
195 */
7c913512
FM
196 wxRichTextCtrl(wxWindow* parent, wxWindowID id = wxID_ANY,
197 const wxString& value = wxEmptyString,
198 const wxPoint& pos = wxDefaultPosition,
199 const wxSize& size = wxDefaultSize,
200 long style = wxRE_MULTILINE,
201 const wxValidator& validator = wxDefaultValidator,
202 const wxString& name = wxTextCtrlNameStr);
23324ae1
FM
203
204 /**
205 Destructor.
206 */
adaaa686 207 virtual ~wxRichTextCtrl();
23324ae1
FM
208
209 /**
210 Adds an image to the control's buffer.
211 */
adaaa686 212 virtual wxRichTextRange AddImage(const wxImage& image);
23324ae1
FM
213
214 /**
215 Adds a new paragraph of text to the end of the buffer.
216 */
adaaa686 217 virtual wxRichTextRange AddParagraph(const wxString& text);
23324ae1
FM
218
219 /**
220 Sets the insertion point to the end of the buffer and writes the text.
221 */
adaaa686 222 virtual void AppendText(const wxString& text);
23324ae1
FM
223
224 /**
225 Applies the given alignment to the selection (undoable).
23324ae1
FM
226 For alignment values, see wxTextAttr.
227 */
adaaa686 228 virtual bool ApplyAlignmentToSelection(wxTextAttrAlignment alignment);
23324ae1
FM
229
230 /**
231 Apples bold to the selection (undoable).
232 */
adaaa686 233 virtual bool ApplyBoldToSelection();
23324ae1
FM
234
235 /**
236 Applies italic to the selection (undoable).
237 */
adaaa686 238 virtual bool ApplyItalicToSelection();
23324ae1
FM
239
240 /**
241 Applies the given style to the selection.
242 */
adaaa686 243 virtual bool ApplyStyle(wxRichTextStyleDefinition* def);
23324ae1
FM
244
245 /**
246 Applies the style sheet to the buffer, matching paragraph styles in the sheet
9e7ad1ca
FM
247 against named styles in the buffer.
248
249 This might be useful if the styles have changed.
250 If @a sheet is @NULL, the sheet set with SetStyleSheet() is used.
23324ae1
FM
251 Currently this applies paragraph styles only.
252 */
4cc4bfaf 253 bool ApplyStyleSheet(wxRichTextStyleSheet* sheet = NULL);
23324ae1
FM
254
255 /**
256 Applies underline to the selection (undoable).
257 */
adaaa686 258 virtual bool ApplyUnderlineToSelection();
23324ae1
FM
259
260 /**
261 Returns @true if undo commands are being batched.
262 */
adaaa686 263 virtual bool BatchingUndo() const;
23324ae1
FM
264
265 /**
9e7ad1ca 266 Begins using alignment.
23324ae1
FM
267 For alignment values, see wxTextAttr.
268 */
269 bool BeginAlignment(wxTextAttrAlignment alignment);
270
271 /**
272 Starts batching undo history for commands.
273 */
adaaa686 274 virtual bool BeginBatchUndo(const wxString& cmdName);
23324ae1
FM
275
276 /**
277 Begins using bold.
278 */
279 bool BeginBold();
280
281 /**
282 Begins using the named character style.
283 */
284 bool BeginCharacterStyle(const wxString& characterStyle);
285
286 /**
287 Begins using this font.
288 */
289 bool BeginFont(const wxFont& font);
290
291 /**
292 Begins using the given point size.
293 */
294 bool BeginFontSize(int pointSize);
295
296 /**
297 Begins using italic.
298 */
299 bool BeginItalic();
300
301 /**
302 Begins applying a left indent and subindent in tenths of a millimetre.
9e7ad1ca
FM
303 The subindent is an offset from the left edge of the paragraph, and is
304 used for all but the first line in a paragraph. A positive value will
738b7b98
BP
305 cause the first line to appear to the left of the subsequent lines, and
306 a negative value will cause the first line to be indented to the right
307 of the subsequent lines.
308
309 wxRichTextBuffer uses indentation to render a bulleted item. The
310 content of the paragraph, including the first line, starts at the
311 @a leftIndent plus the @a leftSubIndent.
312
313 @param leftIndent
314 The distance between the margin and the bullet.
315 @param leftSubIndent
316 The distance between the left edge of the bullet and the left edge
317 of the actual paragraph.
23324ae1
FM
318 */
319 bool BeginLeftIndent(int leftIndent, int leftSubIndent = 0);
320
321 /**
322 Begins appling line spacing. @e spacing is a multiple, where 10 means
9e7ad1ca
FM
323 single-spacing, 15 means 1.5 spacing, and 20 means double spacing.
324
325 The ::wxTextAttrLineSpacing constants are defined for convenience.
23324ae1
FM
326 */
327 bool BeginLineSpacing(int lineSpacing);
328
329 /**
9e7ad1ca
FM
330 Begins using a specified list style.
331 Optionally, you can also pass a level and a number.
23324ae1 332 */
4cc4bfaf
FM
333 bool BeginListStyle(const wxString& listStyle, int level = 1,
334 int number = 1);
23324ae1
FM
335
336 /**
9e7ad1ca
FM
337 Begins a numbered bullet.
338
339 This call will be needed for each item in the list, and the
23324ae1 340 application should take care of incrementing the numbering.
9e7ad1ca 341
4cc4bfaf
FM
342 @a bulletNumber is a number, usually starting with 1.
343 @a leftIndent and @a leftSubIndent are values in tenths of a millimetre.
9e7ad1ca
FM
344 @a bulletStyle is a bitlist of the ::wxTextAttrBulletStyle values.
345
346 wxRichTextBuffer uses indentation to render a bulleted item.
347 The left indent is the distance between the margin and the bullet.
348 The content of the paragraph, including the first line, starts
349 at leftMargin + leftSubIndent.
350 So the distance between the left edge of the bullet and the
23324ae1
FM
351 left of the actual paragraph is leftSubIndent.
352 */
353 bool BeginNumberedBullet(int bulletNumber, int leftIndent,
354 int leftSubIndent,
355 int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_ARABIC|wxTEXT_ATTR_BULLET_STYLE_PERIOD);
356
357 /**
358 Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing
9e7ad1ca 359 in tenths of a millimetre.
23324ae1
FM
360 */
361 bool BeginParagraphSpacing(int before, int after);
362
363 /**
364 Begins applying the named paragraph style.
365 */
366 bool BeginParagraphStyle(const wxString& paragraphStyle);
367
368 /**
369 Begins a right indent, specified in tenths of a millimetre.
370 */
371 bool BeginRightIndent(int rightIndent);
372
373 /**
374 Begins applying a style.
375 */
adaaa686 376 virtual bool BeginStyle(const wxTextAttr& style);
23324ae1
FM
377
378 /**
379 Starts suppressing undo history for commands.
380 */
adaaa686 381 virtual bool BeginSuppressUndo();
23324ae1
FM
382
383 /**
9e7ad1ca
FM
384 Begins applying a symbol bullet, using a character from the current font.
385 See BeginNumberedBullet() for an explanation of how indentation is used
386 to render the bulleted paragraph.
23324ae1 387 */
5267aefd 388 bool BeginSymbolBullet(const wxString& symbol, int leftIndent,
23324ae1
FM
389 int leftSubIndent,
390 int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_SYMBOL);
391
392 /**
393 Begins using this colour.
394 */
395 bool BeginTextColour(const wxColour& colour);
396
397 /**
9e7ad1ca
FM
398 Begins applying wxTEXT_ATTR_URL to the content.
399
400 Pass a URL and optionally, a character style to apply, since it is common
401 to mark a URL with a familiar style such as blue text with underlining.
23324ae1
FM
402 */
403 bool BeginURL(const wxString& url,
404 const wxString& characterStyle = wxEmptyString);
405
406 /**
407 Begins using underlining.
408 */
409 bool BeginUnderline();
410
411 /**
412 Returns @true if selected content can be copied to the clipboard.
413 */
adaaa686 414 virtual bool CanCopy() const;
23324ae1
FM
415
416 /**
417 Returns @true if selected content can be copied to the clipboard and deleted.
418 */
adaaa686 419 virtual bool CanCut() const;
23324ae1
FM
420
421 /**
422 Returns @true if selected content can be deleted.
423 */
adaaa686 424 virtual bool CanDeleteSelection() const;
23324ae1
FM
425
426 /**
427 Returns @true if the clipboard content can be pasted to the buffer.
428 */
adaaa686 429 virtual bool CanPaste() const;
23324ae1
FM
430
431 /**
432 Returns @true if there is a command in the command history that can be redone.
433 */
adaaa686 434 virtual bool CanRedo() const;
23324ae1
FM
435
436 /**
437 Returns @true if there is a command in the command history that can be undone.
438 */
adaaa686 439 virtual bool CanUndo() const;
23324ae1
FM
440
441 /**
442 Clears the buffer content, leaving a single empty paragraph. Cannot be undone.
443 */
adaaa686 444 virtual void Clear();
23324ae1
FM
445
446 //@{
447 /**
448 Clears the list style from the given range, clearing list-related attributes
449 and applying any named paragraph style associated with each paragraph.
9e7ad1ca 450
4cc4bfaf 451 @a flags is a bit list of the following:
9e7ad1ca
FM
452 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
453
454 @see SetListStyle(), PromoteList(), NumberList().
23324ae1
FM
455 */
456 bool ClearListStyle(const wxRichTextRange& range,
457 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
7c913512
FM
458 bool ClearListStyle(const wxRichTextRange& range,
459 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
23324ae1
FM
460 //@}
461
462 /**
463 Sends the event to the control.
464 */
adaaa686 465 virtual void Command(wxCommandEvent& event);
23324ae1
FM
466
467 /**
468 Copies the selected content (if any) to the clipboard.
469 */
adaaa686 470 virtual void Copy();
23324ae1
FM
471
472 /**
473 Creates the underlying window.
474 */
475 bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
476 const wxString& value = wxEmptyString,
477 const wxPoint& pos = wxDefaultPosition,
478 const wxSize& size = wxDefaultSize,
479 long style = wxRE_MULTILINE,
480 const wxValidator& validator = wxDefaultValidator,
481 const wxString& name = wxTextCtrlNameStr);
482
483 /**
484 Copies the selected content (if any) to the clipboard and deletes the selection.
485 This is undoable.
486 */
adaaa686 487 virtual void Cut();
23324ae1
FM
488
489 /**
490 Deletes the content within the given range.
491 */
adaaa686 492 virtual bool Delete(const wxRichTextRange& range);
23324ae1
FM
493
494 /**
495 Deletes content if there is a selection, e.g. when pressing a key.
496 Returns the new caret position in @e newPos, or leaves it if there
497 was no action. This is undoable.
498 */
4cc4bfaf 499 bool DeleteSelectedContent(long* newPos = NULL);
23324ae1
FM
500
501 /**
502 Deletes the content in the selection, if any. This is undoable.
503 */
adaaa686 504 virtual void DeleteSelection();
23324ae1
FM
505
506 /**
507 Sets the buffer's modified status to @false, and clears the buffer's command
508 history.
509 */
adaaa686 510 virtual void DiscardEdits();
23324ae1 511
23324ae1
FM
512 /**
513 Ends alignment.
514 */
515 bool EndAlignment();
516
517 /**
518 Ends application of all styles in the current style stack.
519 */
adaaa686 520 virtual bool EndAllStyles();
23324ae1
FM
521
522 /**
523 Ends batching undo command history.
524 */
adaaa686 525 virtual bool EndBatchUndo();
23324ae1
FM
526
527 /**
528 Ends using bold.
529 */
530 bool EndBold();
531
532 /**
533 Ends application of a named character style.
534 */
535 bool EndCharacterStyle();
536
537 /**
538 Ends using a font.
539 */
540 bool EndFont();
541
542 /**
543 Ends using a point size.
544 */
545 bool EndFontSize();
546
547 /**
548 Ends using italic.
549 */
550 bool EndItalic();
551
552 /**
553 Ends left indent.
554 */
555 bool EndLeftIndent();
556
557 /**
558 Ends line spacing.
559 */
560 bool EndLineSpacing();
561
562 /**
563 Ends using a specified list style.
564 */
565 bool EndListStyle();
566
567 /**
568 Ends application of a numbered bullet.
569 */
570 bool EndNumberedBullet();
571
572 /**
573 Ends paragraph spacing.
574 */
575 bool EndParagraphSpacing();
576
577 /**
578 Ends application of a named character style.
579 */
580 bool EndParagraphStyle();
581
582 /**
583 Ends right indent.
584 */
585 bool EndRightIndent();
586
587 /**
588 Ends the current style.
589 */
adaaa686 590 virtual bool EndStyle();
23324ae1
FM
591
592 /**
593 Ends suppressing undo command history.
594 */
adaaa686 595 virtual bool EndSuppressUndo();
23324ae1
FM
596
597 /**
598 Ends applying a symbol bullet.
599 */
600 bool EndSymbolBullet();
601
602 /**
603 Ends applying a text colour.
604 */
605 bool EndTextColour();
606
607 /**
608 Ends applying a URL.
609 */
4cc4bfaf 610 bool EndURL();
23324ae1
FM
611
612 /**
613 End applying underlining.
614 */
615 bool EndUnderline();
616
617 /**
618 Helper function for extending the selection, returning @true if the selection
9e7ad1ca 619 was changed. Selections are in caret positions.
23324ae1 620 */
fadc2df6 621 virtual bool ExtendSelection(long oldPosition, long newPosition, int flags);
23324ae1
FM
622
623 /**
9e7ad1ca
FM
624 Helper function for finding the caret position for the next word.
625 Direction is 1 (forward) or -1 (backwards).
23324ae1 626 */
adaaa686 627 virtual long FindNextWordPosition(int direction = 1) const;
23324ae1
FM
628
629 /**
630 Call this function to prevent refresh and allow fast updates, and then Thaw() to
631 refresh the control.
632 */
633 void Freeze();
634
635 /**
9e7ad1ca
FM
636 Gets the basic (overall) style.
637
638 This is the style of the whole buffer before further styles are applied,
639 unlike the default style, which only affects the style currently being
640 applied (for example, setting the default style to bold will cause
641 subsequently inserted text to be bold).
23324ae1 642 */
5267aefd 643 virtual const wxTextAttr& GetBasicStyle() const;
23324ae1
FM
644
645 //@{
646 /**
647 Returns the buffer associated with the control.
648 */
649 const wxRichTextBuffer GetBuffer();
328f5751 650 const wxRichTextBuffer& GetBuffer();
23324ae1
FM
651 //@}
652
653 /**
654 Returns the current caret position.
655 */
328f5751 656 long GetCaretPosition() const;
23324ae1
FM
657
658 /**
9e7ad1ca 659 Returns the caret height and position for the given character position.
23324ae1
FM
660 */
661 bool GetCaretPositionForIndex(long position, wxRect& rect);
662
663 /**
664 Gets the command processor associated with the control's buffer.
665 */
328f5751 666 wxCommandProcessor* GetCommandProcessor() const;
23324ae1
FM
667
668 /**
669 Returns the current default style, which can be used to change how subsequently
9e7ad1ca 670 inserted text is displayed.
23324ae1 671 */
5267aefd 672 virtual const wxTextAttr& GetDefaultStyle() const;
23324ae1
FM
673
674 /**
675 Gets the size of the buffer beyond which layout is delayed during resizing.
676 This optimizes sizing for large buffers. The default is 20000.
677 */
328f5751 678 long GetDelayedLayoutThreshold() const;
23324ae1
FM
679
680 /**
681 Gets the current filename associated with the control.
682 */
328f5751 683 wxString GetFilename() const;
23324ae1
FM
684
685 /**
686 Returns the first visible position in the current view.
687 */
328f5751 688 long GetFirstVisiblePosition() const;
23324ae1
FM
689
690 /**
9e7ad1ca
FM
691 Returns flags that change the behaviour of loading or saving.
692 See the documentation for each handler class to see what flags are
693 relevant for each handler.
23324ae1 694 */
328f5751 695 int GetHandlerFlags() const;
23324ae1
FM
696
697 /**
698 Returns the current insertion point.
699 */
adaaa686 700 virtual long GetInsertionPoint() const;
23324ae1
FM
701
702 /**
703 Returns the last position in the buffer.
704 */
adaaa686 705 virtual wxTextPos GetLastPosition() const;
23324ae1
FM
706
707 /**
708 Returns the length of the specified line in characters.
709 */
adaaa686 710 virtual int GetLineLength(long lineNo) const;
23324ae1
FM
711
712 /**
713 Returns the text for the given line.
714 */
adaaa686 715 virtual wxString GetLineText(long lineNo) const;
23324ae1
FM
716
717 /**
718 Transforms physical window position to logical (unscrolled) position.
719 */
328f5751 720 wxPoint GetLogicalPoint(const wxPoint& ptPhysical) const;
23324ae1
FM
721
722 /**
723 Returns the number of lines in the buffer.
724 */
adaaa686 725 virtual int GetNumberOfLines() const;
23324ae1
FM
726
727 /**
728 Transforms logical (unscrolled) position to physical window position.
729 */
328f5751 730 wxPoint GetPhysicalPoint(const wxPoint& ptLogical) const;
23324ae1
FM
731
732 /**
733 Gets the text for the given range.
9e7ad1ca
FM
734 The end point of range is specified as the last character position of
735 the span of text, plus one.
23324ae1 736 */
adaaa686 737 virtual wxString GetRange(long from, long to) const;
23324ae1
FM
738
739 /**
740 Returns the range of the current selection.
23324ae1
FM
741 The end point of range is specified as the last character position of the span
742 of text, plus one.
4cc4bfaf 743 If the return values @a from and @a to are the same, there is no selection.
23324ae1 744 */
adaaa686 745 virtual void GetSelection(long* from, long* to) const;
23324ae1
FM
746
747 /**
748 Returns the selection range in character positions. -1, -1 means no selection.
749 */
5267aefd 750 wxRichTextRange GetSelectionRange() const;
23324ae1
FM
751
752 /**
753 Returns the text within the current selection range, if any.
754 */
adaaa686 755 virtual wxString GetStringSelection() const;
23324ae1
FM
756
757 /**
758 Gets the attributes at the given position.
23324ae1 759 This function gets the combined style - that is, the style you see on the
9e7ad1ca
FM
760 screen as a result of combining base style, paragraph style and character
761 style attributes.
762
763 To get the character or paragraph style alone, use GetUncombinedStyle().
23324ae1 764 */
adaaa686 765 virtual bool GetStyle(long position, wxTextAttr& style);
23324ae1
FM
766
767 /**
9e7ad1ca
FM
768 Gets the attributes common to the specified range.
769 Attributes that differ in value within the range will not be included
770 in @a style flags.
23324ae1 771 */
fadc2df6
FM
772 virtual bool GetStyleForRange(const wxRichTextRange& range,
773 wxTextAttr& style);
23324ae1
FM
774
775 /**
9e7ad1ca
FM
776 Returns the style sheet associated with the control, if any.
777 A style sheet allows named character and paragraph styles to be applied.
23324ae1 778 */
328f5751 779 wxRichTextStyleSheet* GetStyleSheet() const;
23324ae1
FM
780
781 /**
782 Gets the attributes at the given position.
23324ae1 783 This function gets the @e uncombined style - that is, the attributes associated
9e7ad1ca
FM
784 with the paragraph or character content, and not necessarily the combined
785 attributes you see on the screen.
786 To get the combined attributes, use GetStyle().
787
23324ae1 788 If you specify (any) paragraph attribute in @e style's flags, this function
9e7ad1ca
FM
789 will fetch the paragraph attributes.
790 Otherwise, it will return the character attributes.
23324ae1 791 */
adaaa686 792 virtual bool GetUncombinedStyle(long position, wxTextAttr& style);
23324ae1
FM
793
794 /**
795 Returns the content of the entire control as a string.
796 */
adaaa686 797 virtual wxString GetValue() const;
23324ae1
FM
798
799 /**
9e7ad1ca
FM
800 Internal helper function returning the line for the visible caret position.
801 If the caret is shown at the very end of the line, it means the next character
802 is actually on the following line.
803 So this function gets the line we're expecting to find if this is the case.
23324ae1 804 */
328f5751 805 wxRichTextLine* GetVisibleLineForCaretPosition(long caretPosition) const;
23324ae1
FM
806
807 /**
9e7ad1ca
FM
808 Test if this whole range has character attributes of the specified kind.
809 If any of the attributes are different within the range, the test fails.
810
811 You can use this to implement, for example, bold button updating.
812 @a style must have flags indicating which attributes are of interest.
23324ae1 813 */
fadc2df6
FM
814 virtual bool HasCharacterAttributes(const wxRichTextRange& range,
815 const wxTextAttr& style) const;
23324ae1
FM
816
817 /**
9e7ad1ca
FM
818 Test if this whole range has paragraph attributes of the specified kind.
819 If any of the attributes are different within the range, the test fails.
820 You can use this to implement, for example, centering button updating.
821 @a style must have flags indicating which attributes are of interest.
23324ae1 822 */
fadc2df6
FM
823 virtual bool HasParagraphAttributes(const wxRichTextRange& range,
824 const wxTextAttr& style) const;
23324ae1
FM
825
826 /**
827 Returns @true if there is a selection.
828 */
adaaa686 829 virtual bool HasSelection() const;
23324ae1
FM
830
831 //@{
832 /**
833 Finds the character at the given position in pixels.
4cc4bfaf 834 @a pt is in device coords (not adjusted for the client area origin nor for
23324ae1
FM
835 scrolling).
836 */
328f5751
FM
837 wxTextCtrlHitTestResult HitTest(const wxPoint& pt, long* pos) const;
838 const wxTextCtrlHitTestResult HitTest(const wxPoint& pt,
839 wxTextCoord* col,
840 wxTextCoord* row) const;
23324ae1
FM
841 //@}
842
843 /**
844 Initialises the members of the control.
845 */
846 void Init();
847
23324ae1
FM
848 /**
849 Returns @true if the user has recently set the default style without moving
9e7ad1ca
FM
850 the caret, and therefore the UI needs to reflect the default style and not
851 the style at the caret.
852
23324ae1
FM
853 Below is an example of code that uses this function to determine whether the UI
854 should show that the current style is bold.
9e7ad1ca
FM
855
856 @see SetAndShowDefaultStyle().
23324ae1 857 */
328f5751 858 bool IsDefaultStyleShowing() const;
23324ae1
FM
859
860 /**
861 Returns @true if the control is editable.
862 */
adaaa686 863 virtual bool IsEditable() const;
23324ae1
FM
864
865 /**
866 Returns @true if Freeze has been called without a Thaw.
867 */
328f5751 868 bool IsFrozen() const;
23324ae1
FM
869
870 /**
871 Returns @true if the buffer has been modified.
872 */
adaaa686 873 virtual bool IsModified() const;
23324ae1
FM
874
875 /**
876 Returns @true if the control is multiline.
877 */
328f5751 878 bool IsMultiLine() const;
23324ae1
FM
879
880 /**
881 Returns @true if the given position is visible on the screen.
882 */
328f5751 883 bool IsPositionVisible(long pos) const;
23324ae1
FM
884
885 /**
9e7ad1ca 886 Returns @true if all of the selection is aligned according to the specified flag.
23324ae1 887 */
adaaa686 888 virtual bool IsSelectionAligned(wxTextAttrAlignment alignment);
23324ae1
FM
889
890 /**
891 Returns @true if all of the selection is bold.
892 */
adaaa686 893 virtual bool IsSelectionBold();
23324ae1
FM
894
895 /**
896 Returns @true if all of the selection is italic.
897 */
adaaa686 898 virtual bool IsSelectionItalics();
23324ae1
FM
899
900 /**
901 Returns @true if all of the selection is underlined.
902 */
adaaa686 903 virtual bool IsSelectionUnderlined();
23324ae1
FM
904
905 /**
9e7ad1ca
FM
906 Returns @true if the control is single-line.
907 Currently wxRichTextCtrl does not support single-line editing.
23324ae1 908 */
328f5751 909 bool IsSingleLine() const;
23324ae1
FM
910
911 /**
912 Helper function implementing keyboard navigation.
913 */
adaaa686 914 virtual bool KeyboardNavigate(int keyCode, int flags);
23324ae1
FM
915
916 /**
917 Lays out the buffer, which must be done before certain operations, such as
9e7ad1ca
FM
918 setting the caret position.
919 This function should not normally be required by the application.
23324ae1 920 */
adaaa686 921 virtual bool LayoutContent(bool onlyVisibleRect = false);
23324ae1
FM
922
923 /**
9e7ad1ca
FM
924 Inserts a line break at the current insertion point.
925
926 A line break forces wrapping within a paragraph, and can be introduced by
927 using this function, by appending the wxChar value @b wxRichTextLineBreakChar
928 to text content, or by typing Shift-Return.
23324ae1 929 */
adaaa686 930 virtual bool LineBreak();
23324ae1
FM
931
932 /**
9e7ad1ca
FM
933 Loads content into the control's buffer using the given type.
934
935 If the specified type is wxRICHTEXT_TYPE_ANY, the type is deduced from
936 the filename extension.
937
23324ae1
FM
938 This function looks for a suitable wxRichTextFileHandler object.
939 */
940 bool LoadFile(const wxString& file,
941 int type = wxRICHTEXT_TYPE_ANY);
942
943 /**
944 Marks the buffer as modified.
945 */
adaaa686 946 virtual void MarkDirty();
23324ae1
FM
947
948 /**
949 Move the caret to the given character position.
950 */
adaaa686 951 virtual bool MoveCaret(long pos, bool showAtLineStart = false);
23324ae1
FM
952
953 /**
954 Move the caret one visual step forward: this may mean setting a flag
955 and keeping the same position if we're going from the end of one line
956 to the start of the next, which may be the exact same caret position.
957 */
958 void MoveCaretBack(long oldPosition);
959
960 /**
961 Move the caret one visual step forward: this may mean setting a flag
962 and keeping the same position if we're going from the end of one line
963 to the start of the next, which may be the exact same caret position.
964 */
965 void MoveCaretForward(long oldPosition);
966
967 /**
968 Moves the caret down.
969 */
adaaa686 970 virtual bool MoveDown(int noLines = 1, int flags = 0);
23324ae1
FM
971
972 /**
973 Moves to the end of the buffer.
974 */
adaaa686 975 virtual bool MoveEnd(int flags = 0);
23324ae1
FM
976
977 /**
978 Moves to the start of the buffer.
979 */
adaaa686 980 virtual bool MoveHome(int flags = 0);
23324ae1
FM
981
982 /**
983 Moves left.
984 */
adaaa686 985 virtual bool MoveLeft(int noPositions = 1, int flags = 0);
23324ae1
FM
986
987 /**
988 Moves right.
989 */
adaaa686 990 virtual bool MoveRight(int noPositions = 1, int flags = 0);
23324ae1
FM
991
992 /**
993 Moves to the end of the line.
994 */
adaaa686 995 virtual bool MoveToLineEnd(int flags = 0);
23324ae1
FM
996
997 /**
998 Moves to the start of the line.
999 */
adaaa686 1000 virtual bool MoveToLineStart(int flags = 0);
23324ae1
FM
1001
1002 /**
1003 Moves to the end of the paragraph.
1004 */
adaaa686 1005 virtual bool MoveToParagraphEnd(int flags = 0);
23324ae1
FM
1006
1007 /**
1008 Moves to the start of the paragraph.
1009 */
adaaa686 1010 virtual bool MoveToParagraphStart(int flags = 0);
23324ae1
FM
1011
1012 /**
1013 Moves up.
1014 */
adaaa686 1015 virtual bool MoveUp(int noLines = 1, int flags = 0);
23324ae1
FM
1016
1017 /**
9e7ad1ca 1018 Inserts a new paragraph at the current insertion point. @see LineBreak().
23324ae1 1019 */
adaaa686 1020 virtual bool Newline();
23324ae1
FM
1021
1022 //@{
1023 /**
9e7ad1ca
FM
1024 Numbers the paragraphs in the given range.
1025 Pass flags to determine how the attributes are set.
1026
23324ae1
FM
1027 Either the style definition or the name of the style definition (in the current
1028 sheet) can be passed.
9e7ad1ca 1029
4cc4bfaf 1030 @a flags is a bit list of the following:
9e7ad1ca
FM
1031 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
1032 - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
1033 @a startFrom, otherwise existing attributes are used.
1034 - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
1035 as the level for all paragraphs, otherwise the current indentation will be used.
1036
1037 @see SetListStyle(), PromoteList(), ClearListStyle().
23324ae1
FM
1038 */
1039 bool NumberList(const wxRichTextRange& range,
1040 const wxRichTextListStyleDefinition* style,
1041 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
1042 int startFrom = -1,
1043 int listLevel = -1);
7c913512
FM
1044 bool Number(const wxRichTextRange& range,
1045 const wxString& styleName,
1046 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
1047 int startFrom = -1,
1048 int listLevel = -1);
23324ae1
FM
1049 //@}
1050
1051 /**
1052 Standard handler for the wxID_CLEAR command.
1053 */
1054 void OnClear(wxCommandEvent& event);
1055
1056 /**
1057 Shows a standard context menu with undo, redo, cut, copy, paste, clear, and
1058 select all commands.
1059 */
1060 void OnContextMenu(wxContextMenuEvent& event);
1061
1062 /**
1063 Standard handler for the wxID_COPY command.
1064 */
1065 void OnCopy(wxCommandEvent& event);
1066
1067 /**
1068 Standard handler for the wxID_CUT command.
1069 */
1070 void OnCut(wxCommandEvent& event);
1071
1072 /**
1073 Loads the first dropped file.
1074 */
1075 void OnDropFiles(wxDropFilesEvent& event);
1076
1077 /**
1078 Standard handler for the wxID_PASTE command.
1079 */
1080 void OnPaste(wxCommandEvent& event);
1081
1082 /**
1083 Standard handler for the wxID_REDO command.
1084 */
1085 void OnRedo(wxCommandEvent& event);
1086
1087 /**
1088 Standard handler for the wxID_SELECTALL command.
1089 */
1090 void OnSelectAll(wxCommandEvent& event);
1091
1092 /**
1093 Standard handler for the wxID_PASTE command.
1094 */
1095 void OnUndo(wxCommandEvent& event);
1096
1097 /**
1098 Standard update handler for the wxID_CLEAR command.
1099 */
1100 void OnUpdateClear(wxUpdateUIEvent& event);
1101
1102 /**
1103 Standard update handler for the wxID_COPY command.
1104 */
1105 void OnUpdateCopy(wxUpdateUIEvent& event);
1106
1107 /**
1108 Standard update handler for the wxID_CUT command.
1109 */
1110 void OnUpdateCut(wxUpdateUIEvent& event);
1111
1112 /**
1113 Standard update handler for the wxID_PASTE command.
1114 */
1115 void OnUpdatePaste(wxUpdateUIEvent& event);
1116
1117 /**
1118 Standard update handler for the wxID_REDO command.
1119 */
1120 void OnUpdateRedo(wxUpdateUIEvent& event);
1121
1122 /**
1123 Standard update handler for the wxID_SELECTALL command.
1124 */
1125 void OnUpdateSelectAll(wxUpdateUIEvent& event);
1126
1127 /**
1128 Standard update handler for the wxID_UNDO command.
1129 */
1130 void OnUpdateUndo(wxUpdateUIEvent& event);
1131
1132 /**
1133 Moves one or more pages down.
1134 */
adaaa686 1135 virtual bool PageDown(int noPages = 1, int flags = 0);
23324ae1
FM
1136
1137 /**
1138 Moves one or more pages up.
1139 */
adaaa686 1140 virtual bool PageUp(int noPages = 1, int flags = 0);
23324ae1
FM
1141
1142 /**
1143 Paints the background.
1144 */
adaaa686 1145 virtual void PaintBackground(wxDC& dc);
23324ae1
FM
1146
1147 /**
1148 Pastes content from the clipboard to the buffer.
1149 */
adaaa686 1150 virtual void Paste();
23324ae1
FM
1151
1152 /**
1153 Internal function to position the visible caret according to the current caret
1154 position.
1155 */
adaaa686 1156 virtual void PositionCaret();
23324ae1
FM
1157
1158 /**
1159 Converts a text position to zero-based column and line numbers.
1160 */
adaaa686 1161 virtual bool PositionToXY(long pos, long* x, long* y) const;
23324ae1
FM
1162
1163 //@{
1164 /**
9e7ad1ca
FM
1165 Promotes or demotes the paragraphs in the given range.
1166 A positive @a promoteBy produces a smaller indent, and a negative number
23324ae1
FM
1167 produces a larger indent. Pass flags to determine how the attributes are set.
1168 Either the style definition or the name of the style definition (in the current
1169 sheet) can be passed.
9e7ad1ca 1170
4cc4bfaf 1171 @a flags is a bit list of the following:
9e7ad1ca
FM
1172 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
1173 - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
1174 @a startFrom, otherwise existing attributes are used.
1175 - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
23324ae1 1176 as the level for all paragraphs, otherwise the current indentation will be used.
9e7ad1ca
FM
1177
1178 @see SetListStyle(), @see SetListStyle(), ClearListStyle().
23324ae1
FM
1179 */
1180 bool PromoteList(int promoteBy, const wxRichTextRange& range,
1181 const wxRichTextListStyleDefinition* style,
1182 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
1183 int listLevel = -1);
7c913512
FM
1184 bool PromoteList(int promoteBy, const wxRichTextRange& range,
1185 const wxString& styleName,
1186 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
1187 int listLevel = -1);
23324ae1
FM
1188 //@}
1189
1190 /**
1191 Redoes the current command.
1192 */
adaaa686 1193 virtual void Redo();
23324ae1
FM
1194
1195 /**
1196 Removes the content in the specified range.
1197 */
adaaa686 1198 virtual void Remove(long from, long to);
23324ae1
FM
1199
1200 /**
9e7ad1ca
FM
1201 Replaces the content in the specified range with the string specified by
1202 @a value.
23324ae1 1203 */
adaaa686 1204 virtual void Replace(long from, long to, const wxString& value);
23324ae1
FM
1205
1206 /**
9e7ad1ca
FM
1207 Saves the buffer content using the given type.
1208
1209 If the specified type is wxRICHTEXT_TYPE_ANY, the type is deduced from
1210 the filename extension.
1211
23324ae1
FM
1212 This function looks for a suitable wxRichTextFileHandler object.
1213 */
1214 bool SaveFile(const wxString& file = wxEmptyString,
1215 int type = wxRICHTEXT_TYPE_ANY);
1216
1217 /**
4cc4bfaf 1218 Scrolls @a position into view. This function takes a caret position.
23324ae1 1219 */
adaaa686 1220 virtual bool ScrollIntoView(long position, int keyCode);
23324ae1
FM
1221
1222 /**
1223 Selects all the text in the buffer.
1224 */
adaaa686 1225 virtual void SelectAll();
23324ae1
FM
1226
1227 /**
1228 Cancels any selection.
1229 */
adaaa686 1230 virtual void SelectNone();
23324ae1
FM
1231
1232 /**
4cc4bfaf 1233 Sets @a attr as the default style and tells the control that the UI should
9e7ad1ca
FM
1234 reflect this attribute until the user moves the caret.
1235
1236 @see IsDefaultStyleShowing().
23324ae1
FM
1237 */
1238 void SetAndShowDefaultStyle(const wxTextAttr& attr);
1239
1240 /**
9e7ad1ca
FM
1241 Sets the basic (overall) style.
1242
1243 This is the style of the whole buffer before further styles are applied,
1244 unlike the default style, which only affects the style currently being
1245 applied (for example, setting the default style to bold will cause
1246 subsequently inserted text to be bold).
23324ae1 1247 */
adaaa686 1248 virtual void SetBasicStyle(const wxTextAttr& style);
23324ae1
FM
1249
1250 /**
1251 The caret position is the character position just before the caret.
1252 A value of -1 means the caret is at the start of the buffer.
1253 */
1254 void SetCaretPosition(long position,
4cc4bfaf 1255 bool showAtLineStart = false);
23324ae1
FM
1256
1257 /**
1258 Sets the current default style, which can be used to change how subsequently
9e7ad1ca 1259 inserted text is displayed.
23324ae1 1260 */
adaaa686 1261 virtual bool SetDefaultStyle(const wxTextAttr& style);
23324ae1
FM
1262
1263 /**
1264 Sets the default style to the style under the cursor.
1265 */
1266 bool SetDefaultStyleToCursorStyle();
1267
1268 /**
1269 Sets the size of the buffer beyond which layout is delayed during resizing.
1270 This optimizes sizing for large buffers. The default is 20000.
1271 */
1272 void SetDelayedLayoutThreshold(long threshold);
1273
1274 /**
1275 Makes the control editable, or not.
1276 */
adaaa686 1277 virtual void SetEditable(bool editable);
23324ae1
FM
1278
1279 /**
1280 Sets the current filename.
1281 */
1282 void SetFilename(const wxString& filename);
1283
1284 /**
9e7ad1ca
FM
1285 Sets the font, and also the basic and default attributes
1286 (see wxRichTextCtrl::SetDefaultStyle).
23324ae1 1287 */
adaaa686 1288 virtual bool SetFont(const wxFont& font);
23324ae1
FM
1289
1290 /**
9e7ad1ca
FM
1291 Sets flags that change the behaviour of loading or saving.
1292
1293 See the documentation for each handler class to see what flags are
1294 relevant for each handler.
23324ae1
FM
1295 */
1296 void SetHandlerFlags(int flags);
1297
1298 /**
1299 Sets the insertion point.
1300 */
adaaa686 1301 virtual void SetInsertionPoint(long pos);
23324ae1
FM
1302
1303 /**
1304 Sets the insertion point to the end of the text control.
1305 */
adaaa686 1306 virtual void SetInsertionPointEnd();
23324ae1
FM
1307
1308 //@{
1309 /**
1310 Sets the list attributes for the given range, passing flags to determine how
1311 the attributes are set.
9e7ad1ca 1312
23324ae1
FM
1313 Either the style definition or the name of the style definition (in the current
1314 sheet) can be passed.
4cc4bfaf 1315 @a flags is a bit list of the following:
9e7ad1ca
FM
1316 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable.
1317 - wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from
1318 @a startFrom, otherwise existing attributes are used.
1319 - wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used
1320 as the level for all paragraphs, otherwise the current indentation will be used.
1321
1322 @see NumberList(), PromoteList(), ClearListStyle().
23324ae1
FM
1323 */
1324 bool SetListStyle(const wxRichTextRange& range,
1325 const wxRichTextListStyleDefinition* style,
1326 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
1327 int startFrom = -1,
1328 int listLevel = -1);
7c913512
FM
1329 bool SetListStyle(const wxRichTextRange& range,
1330 const wxString& styleName,
1331 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO,
1332 int startFrom = -1,
1333 int listLevel = -1);
23324ae1
FM
1334 //@}
1335
1336 /**
1337 Sets the selection to the given range.
23324ae1
FM
1338 The end point of range is specified as the last character position of the span
1339 of text, plus one.
9e7ad1ca 1340
23324ae1
FM
1341 So, for example, to set the selection for a character at position 5, use the
1342 range (5,6).
1343 */
adaaa686 1344 virtual void SetSelection(long from, long to);
23324ae1
FM
1345
1346 /**
1347 Sets the selection to the given range.
23324ae1
FM
1348 The end point of range is specified as the last character position of the span
1349 of text, plus one.
9e7ad1ca 1350
23324ae1
FM
1351 So, for example, to set the selection for a character at position 5, use the
1352 range (5,6).
1353 */
1354 void SetSelectionRange(const wxRichTextRange& range);
1355
1356 //@{
1357 /**
1358 Sets the attributes for the given range.
23324ae1
FM
1359 The end point of range is specified as the last character position of the span
1360 of text, plus one.
9e7ad1ca 1361
23324ae1
FM
1362 So, for example, to set the style for a character at position 5, use the range
1363 (5,6).
1364 */
1365 bool SetStyle(const wxRichTextRange& range,
1366 const wxTextAttr& style);
7c913512 1367 bool SetStyle(long start, long end, const wxTextAttr& style);
23324ae1
FM
1368 //@}
1369
1370 //@{
1371 /**
1372 Sets the attributes for the given range, passing flags to determine how the
1373 attributes are set.
9e7ad1ca 1374
23324ae1 1375 The end point of range is specified as the last character position of the span
9e7ad1ca
FM
1376 of text, plus one. So, for example, to set the style for a character at
1377 position 5, use the range (5,6).
1378
4cc4bfaf 1379 @a flags may contain a bit list of the following values:
9e7ad1ca
FM
1380 - wxRICHTEXT_SETSTYLE_NONE: no style flag.
1381 - wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this operation should be
1382 undoable.
1383 - wxRICHTEXT_SETSTYLE_OPTIMIZE: specifies that the style should not be applied
1384 if the combined style at this point is already the style in question.
1385 - wxRICHTEXT_SETSTYLE_PARAGRAPHS_ONLY: specifies that the style should only be
1386 applied to paragraphs, and not the content.
1387 This allows content styling to be preserved independently from that
1388 of e.g. a named paragraph style.
1389 - wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY: specifies that the style should only be
1390 applied to characters, and not the paragraph.
1391 This allows content styling to be preserved independently from that
1392 of e.g. a named paragraph style.
1393 - wxRICHTEXT_SETSTYLE_RESET: resets (clears) the existing style before applying
1394 the new style.
1395 - wxRICHTEXT_SETSTYLE_REMOVE: removes the specified style. Only the style flags
1396 are used in this operation.
23324ae1
FM
1397 */
1398 bool SetStyleEx(const wxRichTextRange& range,
1399 const wxTextAttr& style,
1400 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
7c913512
FM
1401 bool SetStyleEx(long start, long end,
1402 const wxTextAttr& style,
1403 int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO);
23324ae1
FM
1404 //@}
1405
1406 /**
9e7ad1ca
FM
1407 Sets the style sheet associated with the control.
1408 A style sheet allows named character and paragraph styles to be applied.
23324ae1
FM
1409 */
1410 void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
1411
1412 /**
1413 Replaces existing content with the given text.
1414 */
0004982c 1415 virtual void SetValue(const wxString& value);
23324ae1
FM
1416
1417 /**
1418 A helper function setting up scrollbars, for example after a resize.
1419 */
adaaa686 1420 virtual void SetupScrollbars(bool atTop = false);
23324ae1
FM
1421
1422 /**
1423 Scrolls the buffer so that the given position is in view.
1424 */
adaaa686 1425 virtual void ShowPosition(long pos);
23324ae1
FM
1426
1427 /**
1428 Returns @true if undo history suppression is on.
1429 */
adaaa686 1430 virtual bool SuppressingUndo() const;
23324ae1
FM
1431
1432 /**
1433 Call this function to end a Freeze and refresh the display.
1434 */
1435 void Thaw();
1436
1437 /**
1438 Undoes the command at the top of the command history, if there is one.
1439 */
adaaa686 1440 virtual void Undo();
23324ae1
FM
1441
1442 /**
1443 Moves a number of words to the left.
1444 */
adaaa686 1445 virtual bool WordLeft(int noWords = 1, int flags = 0);
23324ae1
FM
1446
1447 /**
1448 Move a nuber of words to the right.
1449 */
adaaa686 1450 virtual bool WordRight(int noWords = 1, int flags = 0);
23324ae1 1451
23324ae1 1452 /**
9e7ad1ca 1453 Loads an image from a file and writes it at the current insertion point.
23324ae1 1454 */
11e3af6e 1455 virtual bool WriteImage(const wxString& filename, wxBitmapType bitmapType);
9e7ad1ca
FM
1456
1457 /**
1458 Writes an image block at the current insertion point.
1459 */
0004982c 1460 virtual bool WriteImage(const wxRichTextImageBlock& imageBlock);
9e7ad1ca
FM
1461
1462 //@{
1463 /**
1464 Write a bitmap or image at the current insertion point.
1465 Supply an optional type to use for internal and file storage of the raw data.
1466 */
7c913512
FM
1467 bool WriteImage(const wxBitmap& bitmap,
1468 int bitmapType = wxBITMAP_TYPE_PNG);
1469 bool WriteImage(const wxImage& image,
1470 int bitmapType = wxBITMAP_TYPE_PNG);
23324ae1
FM
1471 //@}
1472
1473 /**
1474 Writes text at the current position.
1475 */
adaaa686 1476 virtual void WriteText(const wxString& text);
23324ae1
FM
1477
1478 /**
1479 Translates from column and line number to position.
1480 */
adaaa686 1481 virtual long XYToPosition(long x, long y) const;
5e6e278d
FM
1482
1483protected:
1484
1485 /**
1486 Currently this simply returns @c wxSize(10, 10).
1487 */
1488 virtual wxSize DoGetBestSize() const;
1489
1490 /**
1491 Initialises the command event.
1492 */
1493 void InitCommandEvent(wxCommandEvent& event) const;
23324ae1 1494};
e54c96f1 1495