]>
Commit | Line | Data |
---|---|---|
23324ae1 FM |
1 | ///////////////////////////////////////////////////////////////////////////// |
2 | // Name: richtext/richtextbuffer.h | |
21b447dc | 3 | // Purpose: interface of wxRichTextBuffer |
23324ae1 FM |
4 | // Author: wxWidgets team |
5 | // RCS-ID: $Id$ | |
6 | // Licence: wxWindows license | |
7 | ///////////////////////////////////////////////////////////////////////////// | |
8 | ||
9 | /** | |
10 | @class wxRichTextBuffer | |
11 | @headerfile richtextbuffer.h wx/richtext/richtextbuffer.h | |
7c913512 | 12 | |
23324ae1 | 13 | This class represents the whole buffer associated with a wxRichTextCtrl. |
7c913512 | 14 | |
23324ae1 | 15 | @library{wxrichtext} |
21b447dc | 16 | @category{richtext} |
7c913512 | 17 | |
e54c96f1 | 18 | @see wxTextAttr, wxRichTextCtrl |
23324ae1 | 19 | */ |
7c913512 | 20 | class wxRichTextBuffer |
23324ae1 FM |
21 | { |
22 | public: | |
23 | //@{ | |
24 | /** | |
25 | Default constructors. | |
26 | */ | |
27 | wxRichTextBuffer(const wxRichTextBuffer& obj); | |
7c913512 | 28 | wxRichTextBuffer(); |
23324ae1 FM |
29 | //@} |
30 | ||
31 | /** | |
32 | Destructor. | |
33 | */ | |
34 | ~wxRichTextBuffer(); | |
35 | ||
36 | /** | |
37 | Adds an event handler to the buffer's list of handlers. A buffer associated with | |
38 | a contol has the control as the only event handler, but the application is free | |
39 | to add more if further notification is required. All handlers are notified | |
40 | of an event originating from the buffer, such as the replacement of a style | |
41 | sheet | |
7c913512 | 42 | during loading. The buffer never deletes any of the event handlers, unless |
23324ae1 FM |
43 | RemoveEventHandler() is |
44 | called with @true as the second argument. | |
45 | */ | |
46 | bool AddEventHandler(wxEvtHandler* handler); | |
47 | ||
48 | /** | |
49 | Adds a file handler. | |
50 | */ | |
51 | void AddHandler(wxRichTextFileHandler* handler); | |
52 | ||
53 | /** | |
54 | Adds a paragraph of text. | |
55 | */ | |
56 | wxRichTextRange AddParagraph(const wxString& text); | |
57 | ||
58 | /** | |
59 | Returns @true if the buffer is currently collapsing commands into a single | |
60 | notional command. | |
61 | */ | |
328f5751 | 62 | bool BatchingUndo() const; |
23324ae1 FM |
63 | |
64 | /** | |
65 | Begins using alignment. | |
66 | */ | |
67 | bool BeginAlignment(wxTextAttrAlignment alignment); | |
68 | ||
69 | /** | |
70 | Begins collapsing undo/redo commands. Note that this may not work properly | |
71 | if combining commands that delete or insert content, changing ranges for | |
72 | subsequent actions. | |
4cc4bfaf | 73 | @a cmdName should be the name of the combined command that will appear |
23324ae1 FM |
74 | next to Undo and Redo in the edit menu. |
75 | */ | |
76 | bool BeginBatchUndo(const wxString& cmdName); | |
77 | ||
78 | /** | |
79 | Begin applying bold. | |
80 | */ | |
81 | bool BeginBold(); | |
82 | ||
83 | /** | |
84 | Begins applying the named character style. | |
85 | */ | |
86 | bool BeginCharacterStyle(const wxString& characterStyle); | |
87 | ||
88 | /** | |
89 | Begins using this font. | |
90 | */ | |
91 | bool BeginFont(const wxFont& font); | |
92 | ||
93 | /** | |
94 | Begins using the given point size. | |
95 | */ | |
96 | bool BeginFontSize(int pointSize); | |
97 | ||
98 | /** | |
99 | Begins using italic. | |
100 | */ | |
101 | bool BeginItalic(); | |
102 | ||
103 | /** | |
4cc4bfaf | 104 | Begin using @a leftIndent for the left indent, and optionally @a leftSubIndent |
23324ae1 FM |
105 | for |
106 | the sub-indent. Both are expressed in tenths of a millimetre. | |
23324ae1 FM |
107 | The sub-indent is an offset from the left of the paragraph, and is used for all |
108 | but the | |
109 | first line in a paragraph. A positive value will cause the first line to appear | |
110 | to the left | |
111 | of the subsequent lines, and a negative value will cause the first line to be | |
112 | indented | |
113 | relative to the subsequent lines. | |
114 | */ | |
115 | bool BeginLeftIndent(int leftIndent, int leftSubIndent = 0); | |
116 | ||
117 | /** | |
118 | Begins line spacing using the specified value. @e spacing is a multiple, where | |
119 | 10 means single-spacing, | |
120 | 15 means 1.5 spacing, and 20 means double spacing. The following constants are | |
121 | defined for convenience: | |
122 | */ | |
123 | bool BeginLineSpacing(int lineSpacing); | |
124 | ||
125 | /** | |
126 | Begins using a specified list style. Optionally, you can also pass a level and | |
127 | a number. | |
128 | */ | |
4cc4bfaf FM |
129 | bool BeginListStyle(const wxString& listStyle, int level = 1, |
130 | int number = 1); | |
23324ae1 FM |
131 | |
132 | /** | |
133 | Begins a numbered bullet. This call will be needed for each item in the list, | |
134 | and the | |
135 | application should take care of incrementing the numbering. | |
4cc4bfaf FM |
136 | @a bulletNumber is a number, usually starting with 1. |
137 | @a leftIndent and @a leftSubIndent are values in tenths of a millimetre. | |
138 | @a bulletStyle is a bitlist of the following values: | |
23324ae1 FM |
139 | |
140 | wxRichTextBuffer uses indentation to render a bulleted item. The left indent is | |
141 | the distance between | |
142 | the margin and the bullet. The content of the paragraph, including the first | |
143 | line, starts | |
144 | at leftMargin + leftSubIndent. So the distance between the left edge of the | |
145 | bullet and the | |
146 | left of the actual paragraph is leftSubIndent. | |
147 | */ | |
148 | bool BeginNumberedBullet(int bulletNumber, int leftIndent, | |
149 | int leftSubIndent, | |
150 | int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_ARABIC|wxTEXT_ATTR_BULLET_STYLE_PERIOD); | |
151 | ||
152 | /** | |
153 | Begins paragraph spacing; pass the before-paragraph and after-paragraph spacing | |
154 | in tenths of | |
155 | a millimetre. | |
156 | */ | |
157 | bool BeginParagraphSpacing(int before, int after); | |
158 | ||
159 | /** | |
160 | Begins applying the named paragraph style. | |
161 | */ | |
162 | bool BeginParagraphStyle(const wxString& paragraphStyle); | |
163 | ||
164 | /** | |
165 | Begins a right indent, specified in tenths of a millimetre. | |
166 | */ | |
167 | bool BeginRightIndent(int rightIndent); | |
168 | ||
169 | /** | |
170 | Begins applying a standard bullet, using one of the standard bullet names | |
171 | (currently @c standard/circle or @c standard/square. | |
172 | See BeginNumberedBullet() for an explanation of how indentation is used to | |
173 | render the bulleted paragraph. | |
174 | */ | |
175 | bool BeginStandardBullet(const wxString& bulletName, | |
176 | int leftIndent, | |
177 | int leftSubIndent, | |
178 | int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_STANDARD); | |
179 | ||
180 | /** | |
181 | Begins using a specified style. | |
182 | */ | |
183 | bool BeginStyle(const wxTextAttr& style); | |
184 | ||
185 | /** | |
186 | Begins suppressing undo/redo commands. The way undo is suppressed may be | |
187 | implemented | |
188 | differently by each command. If not dealt with by a command implementation, then | |
189 | it will be implemented automatically by not storing the command in the undo | |
190 | history | |
191 | when the action is submitted to the command processor. | |
192 | */ | |
193 | bool BeginSuppressUndo(); | |
194 | ||
195 | /** | |
196 | Begins applying a symbol bullet, using a character from the current font. See | |
197 | BeginNumberedBullet() for | |
198 | an explanation of how indentation is used to render the bulleted paragraph. | |
199 | */ | |
200 | bool BeginSymbolBullet(wxChar symbol, int leftIndent, | |
201 | int leftSubIndent, | |
202 | int bulletStyle = wxTEXT_ATTR_BULLET_STYLE_SYMBOL); | |
203 | ||
204 | /** | |
205 | Begins using the specified text foreground colour. | |
206 | */ | |
207 | bool BeginTextColour(const wxColour& colour); | |
208 | ||
209 | /** | |
210 | Begins applying wxTEXT_ATTR_URL to the content. Pass a URL and optionally, a | |
211 | character style to apply, | |
212 | since it is common to mark a URL with a familiar style such as blue text with | |
213 | underlining. | |
214 | */ | |
215 | bool BeginURL(const wxString& url, | |
216 | const wxString& characterStyle = wxEmptyString); | |
217 | ||
218 | /** | |
219 | Begins using underline. | |
220 | */ | |
221 | bool BeginUnderline(); | |
222 | ||
223 | /** | |
224 | Returns @true if content can be pasted from the clipboard. | |
225 | */ | |
328f5751 | 226 | bool CanPasteFromClipboard() const; |
23324ae1 FM |
227 | |
228 | /** | |
229 | Cleans up the file handlers. | |
230 | */ | |
231 | void CleanUpHandlers(); | |
232 | ||
233 | /** | |
234 | Clears the buffer. | |
235 | */ | |
236 | void Clear(); | |
237 | ||
238 | //@{ | |
239 | /** | |
240 | Clears the list style from the given range, clearing list-related attributes | |
241 | and applying any named paragraph style associated with each paragraph. | |
4cc4bfaf | 242 | @a flags is a bit list of the following: |
23324ae1 | 243 | wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable. |
23324ae1 FM |
244 | See also SetListStyle(), PromoteList(), NumberList(). |
245 | */ | |
246 | bool ClearListStyle(const wxRichTextRange& range, | |
247 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO); | |
7c913512 FM |
248 | bool ClearListStyle(const wxRichTextRange& range, |
249 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO); | |
23324ae1 FM |
250 | //@} |
251 | ||
252 | /** | |
253 | Clears the style stack. | |
254 | */ | |
255 | void ClearStyleStack(); | |
256 | ||
257 | /** | |
258 | Clones the object. | |
259 | */ | |
328f5751 | 260 | wxRichTextObject* Clone() const; |
23324ae1 FM |
261 | |
262 | /** | |
263 | Copies the given buffer. | |
264 | */ | |
265 | void Copy(const wxRichTextBuffer& obj); | |
266 | ||
267 | /** | |
268 | Copy the given range to the clipboard. | |
269 | */ | |
270 | bool CopyToClipboard(const wxRichTextRange& range); | |
271 | ||
272 | /** | |
273 | Submits a command to delete the given range. | |
274 | */ | |
275 | bool DeleteRangeWithUndo(const wxRichTextRange& range, | |
276 | wxRichTextCtrl* ctrl); | |
277 | ||
278 | //@{ | |
279 | /** | |
280 | Dumps the contents of the buffer for debugging purposes. | |
281 | */ | |
282 | void Dump(); | |
7c913512 | 283 | void Dump(wxTextOutputStream& stream); |
23324ae1 FM |
284 | //@} |
285 | ||
286 | /** | |
287 | Ends alignment. | |
288 | */ | |
289 | bool EndAlignment(); | |
290 | ||
291 | /** | |
292 | Ends all styles that have been started with a Begin... command. | |
293 | */ | |
294 | bool EndAllStyles(); | |
295 | ||
296 | /** | |
297 | Ends collapsing undo/redo commands, and submits the combined command. | |
298 | */ | |
299 | bool EndBatchUndo(); | |
300 | ||
301 | /** | |
302 | Ends using bold. | |
303 | */ | |
304 | bool EndBold(); | |
305 | ||
306 | /** | |
307 | Ends using the named character style. | |
308 | */ | |
309 | bool EndCharacterStyle(); | |
310 | ||
311 | /** | |
312 | Ends using a font. | |
313 | */ | |
314 | bool EndFont(); | |
315 | ||
316 | /** | |
317 | Ends using a point size. | |
318 | */ | |
319 | bool EndFontSize(); | |
320 | ||
321 | /** | |
322 | Ends using italic. | |
323 | */ | |
324 | bool EndItalic(); | |
325 | ||
326 | /** | |
327 | Ends using a left indent. | |
328 | */ | |
329 | bool EndLeftIndent(); | |
330 | ||
331 | /** | |
332 | Ends using a line spacing. | |
333 | */ | |
334 | bool EndLineSpacing(); | |
335 | ||
336 | /** | |
337 | Ends using a specified list style. | |
338 | */ | |
339 | bool EndListStyle(); | |
340 | ||
341 | /** | |
342 | Ends a numbered bullet. | |
343 | */ | |
344 | bool EndNumberedBullet(); | |
345 | ||
346 | /** | |
347 | Ends paragraph spacing. | |
348 | */ | |
349 | bool EndParagraphSpacing(); | |
350 | ||
351 | /** | |
352 | Ends applying a named character style. | |
353 | */ | |
354 | bool EndParagraphStyle(); | |
355 | ||
356 | /** | |
357 | Ends using a right indent. | |
358 | */ | |
359 | bool EndRightIndent(); | |
360 | ||
361 | /** | |
362 | Ends using a standard bullet. | |
363 | */ | |
364 | bool EndStandardBullet(); | |
365 | ||
366 | /** | |
367 | Ends the current style. | |
368 | */ | |
369 | bool EndStyle(); | |
370 | ||
371 | /** | |
372 | Ends suppressing undo/redo commands. | |
373 | */ | |
374 | bool EndSuppressUndo(); | |
375 | ||
376 | /** | |
377 | Ends using a symbol bullet. | |
378 | */ | |
379 | bool EndSymbolBullet(); | |
380 | ||
381 | /** | |
382 | Ends using a text foreground colour. | |
383 | */ | |
384 | bool EndTextColour(); | |
385 | ||
386 | /** | |
387 | Ends applying a URL. | |
388 | */ | |
4cc4bfaf | 389 | bool EndURL(); |
23324ae1 FM |
390 | |
391 | /** | |
392 | Ends using underline. | |
393 | */ | |
394 | bool EndUnderline(); | |
395 | ||
396 | //@{ | |
397 | /** | |
398 | Finds a handler by name. | |
399 | */ | |
400 | wxRichTextFileHandler* FindHandler(int imageType); | |
7c913512 FM |
401 | wxRichTextFileHandler* FindHandler(const wxString& extension, |
402 | int imageType); | |
403 | wxRichTextFileHandler* FindHandler(const wxString& name); | |
23324ae1 FM |
404 | //@} |
405 | ||
406 | /** | |
407 | Finds a handler by filename or, if supplied, type. | |
408 | */ | |
409 | wxRichTextFileHandler* FindHandlerFilenameOrType(const wxString& filename, | |
7c913512 | 410 | int imageType); |
23324ae1 FM |
411 | |
412 | /** | |
413 | Gets the basic (overall) style. This is the style of the whole | |
414 | buffer before further styles are applied, unlike the default style, which | |
415 | only affects the style currently being applied (for example, setting the default | |
416 | style to bold will cause subsequently inserted text to be bold). | |
417 | */ | |
328f5751 | 418 | const wxTextAttr GetBasicStyle() const; |
23324ae1 FM |
419 | |
420 | /** | |
421 | Gets the collapsed command. | |
422 | */ | |
328f5751 | 423 | wxRichTextCommand* GetBatchedCommand() const; |
23324ae1 FM |
424 | |
425 | /** | |
426 | Gets the command processor. A text buffer always creates its own command | |
427 | processor when it is | |
428 | initialized. | |
429 | */ | |
328f5751 | 430 | wxCommandProcessor* GetCommandProcessor() const; |
23324ae1 FM |
431 | |
432 | /** | |
433 | Returns the current default style, affecting the style currently being applied | |
434 | (for example, setting the default | |
435 | style to bold will cause subsequently inserted text to be bold). | |
436 | */ | |
328f5751 | 437 | const wxTextAttr GetDefaultStyle() const; |
23324ae1 FM |
438 | |
439 | /** | |
4cc4bfaf | 440 | Gets a wildcard incorporating all visible handlers. If @a types is present, |
23324ae1 FM |
441 | it will be filled with the file type corresponding to each filter. This can be |
442 | used to determine the type to pass to @ref getextwildcard() LoadFile given a | |
443 | selected filter. | |
444 | */ | |
4cc4bfaf FM |
445 | wxString GetExtWildcard(bool combine = false, bool save = false, |
446 | wxArrayInt* types = NULL); | |
23324ae1 FM |
447 | |
448 | /** | |
449 | Returns the list of file handlers. | |
450 | */ | |
451 | wxList GetHandlers(); | |
452 | ||
453 | /** | |
454 | Returns the object to be used to render certain aspects of the content, such as | |
455 | bullets. | |
456 | */ | |
457 | static wxRichTextRenderer* GetRenderer(); | |
458 | ||
459 | /** | |
460 | Gets the attributes at the given position. | |
23324ae1 FM |
461 | This function gets the combined style - that is, the style you see on the |
462 | screen as a result | |
463 | of combining base style, paragraph style and character style attributes. To get | |
464 | the character | |
465 | or paragraph style alone, use GetUncombinedStyle(). | |
466 | */ | |
467 | bool GetStyle(long position, wxTextAttr& style); | |
468 | ||
469 | /** | |
470 | This function gets a style representing the common, combined attributes in the | |
471 | given range. | |
472 | Attributes which have different values within the specified range will not be | |
473 | included the style | |
474 | flags. | |
23324ae1 FM |
475 | The function is used to get the attributes to display in the formatting dialog: |
476 | the user | |
477 | can edit the attributes common to the selection, and optionally specify the | |
478 | values of further | |
479 | attributes to be applied uniformly. | |
23324ae1 FM |
480 | To apply the edited attributes, you can use SetStyle() specifying |
481 | the wxRICHTEXT_SETSTYLE_OPTIMIZE flag, which will only apply attributes that | |
482 | are different | |
483 | from the @e combined attributes within the range. So, the user edits the | |
484 | effective, displayed attributes | |
485 | for the range, but his choice won't be applied unnecessarily to content. As an | |
486 | example, | |
487 | say the style for a paragraph specifies bold, but the paragraph text doesn't | |
488 | specify a weight. The | |
489 | combined style is bold, and this is what the user will see on-screen and in the | |
490 | formatting | |
491 | dialog. The user now specifies red text, in addition to bold. When applying with | |
492 | SetStyle, the content font weight attributes won't be changed to bold because | |
493 | this is already specified | |
494 | by the paragraph. However the text colour attributes @e will be changed to | |
495 | show red. | |
496 | */ | |
497 | bool GetStyleForRange(const wxRichTextRange& range, | |
498 | wxTextAttr& style); | |
499 | ||
500 | /** | |
501 | Returns the current style sheet associated with the buffer, if any. | |
502 | */ | |
328f5751 | 503 | wxRichTextStyleSheet* GetStyleSheet() const; |
23324ae1 FM |
504 | |
505 | /** | |
506 | Get the size of the style stack, for example to check correct nesting. | |
507 | */ | |
328f5751 | 508 | size_t GetStyleStackSize() const; |
23324ae1 FM |
509 | |
510 | /** | |
511 | Gets the attributes at the given position. | |
23324ae1 FM |
512 | This function gets the @e uncombined style - that is, the attributes associated |
513 | with the | |
514 | paragraph or character content, and not necessarily the combined attributes you | |
515 | see on the | |
516 | screen. To get the combined attributes, use GetStyle(). | |
23324ae1 FM |
517 | If you specify (any) paragraph attribute in @e style's flags, this function |
518 | will fetch | |
519 | the paragraph attributes. Otherwise, it will return the character attributes. | |
520 | */ | |
521 | bool GetUncombinedStyle(long position, wxTextAttr& style); | |
522 | ||
523 | /** | |
4cc4bfaf | 524 | Finds the text position for the given position, putting the position in @a |
23324ae1 | 525 | textPosition if |
4cc4bfaf | 526 | one is found. @a pt is in logical units (a zero y position is |
23324ae1 | 527 | at the beginning of the buffer). |
23324ae1 FM |
528 | The function returns one of the following values: |
529 | */ | |
530 | int HitTest(wxDC& dc, const wxPoint& pt, long& textPosition); | |
531 | ||
532 | /** | |
533 | Initialisation. | |
534 | */ | |
535 | void Init(); | |
536 | ||
537 | /** | |
538 | Initialises the standard handlers. Currently, only the plain text | |
539 | loading/saving handler | |
540 | is initialised by default. | |
541 | */ | |
542 | void InitStandardHandlers(); | |
543 | ||
544 | /** | |
545 | Inserts a handler at the front of the list. | |
546 | */ | |
547 | void InsertHandler(wxRichTextFileHandler* handler); | |
548 | ||
549 | /** | |
550 | Submits a command to insert the given image. | |
551 | */ | |
552 | bool InsertImageWithUndo(long pos, | |
553 | const wxRichTextImageBlock& imageBlock, | |
554 | wxRichTextCtrl* ctrl); | |
555 | ||
556 | /** | |
557 | Submits a command to insert a newline. | |
558 | */ | |
559 | bool InsertNewlineWithUndo(long pos, wxRichTextCtrl* ctrl); | |
560 | ||
561 | /** | |
562 | Submits a command to insert the given text. | |
563 | */ | |
564 | bool InsertTextWithUndo(long pos, const wxString& text, | |
565 | wxRichTextCtrl* ctrl); | |
566 | ||
567 | /** | |
568 | Returns @true if the buffer has been modified. | |
569 | */ | |
328f5751 | 570 | bool IsModified() const; |
23324ae1 FM |
571 | |
572 | //@{ | |
573 | /** | |
574 | Loads content from a file. | |
575 | */ | |
576 | bool LoadFile(wxInputStream& stream, | |
577 | int type = wxRICHTEXT_TYPE_ANY); | |
7c913512 FM |
578 | bool LoadFile(const wxString& filename, |
579 | int type = wxRICHTEXT_TYPE_ANY); | |
23324ae1 FM |
580 | //@} |
581 | ||
582 | /** | |
583 | Marks the buffer as modified or unmodified. | |
584 | */ | |
4cc4bfaf | 585 | void Modify(bool modify = true); |
23324ae1 FM |
586 | |
587 | //@{ | |
588 | /** | |
589 | Numbers the paragraphs in the given range. Pass flags to determine how the | |
590 | attributes are set. | |
591 | Either the style definition or the name of the style definition (in the current | |
592 | sheet) can be passed. | |
4cc4bfaf | 593 | @a flags is a bit list of the following: |
23324ae1 FM |
594 | wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable. |
595 | wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e | |
596 | startFrom, otherwise existing attributes are used. | |
4cc4bfaf | 597 | wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used |
23324ae1 | 598 | as the level for all paragraphs, otherwise the current indentation will be used. |
23324ae1 FM |
599 | See also SetListStyle(), PromoteList(), ClearListStyle(). |
600 | */ | |
601 | bool NumberList(const wxRichTextRange& range, | |
602 | const wxRichTextListStyleDefinition* style, | |
603 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO, | |
604 | int startFrom = -1, | |
605 | int listLevel = -1); | |
7c913512 FM |
606 | bool Number(const wxRichTextRange& range, |
607 | const wxString& styleName, | |
608 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO, | |
609 | int startFrom = -1, | |
610 | int listLevel = -1); | |
23324ae1 FM |
611 | //@} |
612 | ||
613 | /** | |
614 | Pastes the clipboard content to the buffer at the given position. | |
615 | */ | |
616 | bool PasteFromClipboard(long position); | |
617 | ||
618 | //@{ | |
619 | /** | |
4cc4bfaf | 620 | Promotes or demotes the paragraphs in the given range. A positive @a promoteBy |
23324ae1 FM |
621 | produces a smaller indent, and a negative number |
622 | produces a larger indent. Pass flags to determine how the attributes are set. | |
623 | Either the style definition or the name of the style definition (in the current | |
624 | sheet) can be passed. | |
4cc4bfaf | 625 | @a flags is a bit list of the following: |
23324ae1 FM |
626 | wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable. |
627 | wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e | |
628 | startFrom, otherwise existing attributes are used. | |
4cc4bfaf | 629 | wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used |
23324ae1 | 630 | as the level for all paragraphs, otherwise the current indentation will be used. |
23324ae1 FM |
631 | See also SetListStyle(), See also SetListStyle(), ClearListStyle(). |
632 | */ | |
633 | bool PromoteList(int promoteBy, const wxRichTextRange& range, | |
634 | const wxRichTextListStyleDefinition* style, | |
635 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO, | |
636 | int listLevel = -1); | |
7c913512 FM |
637 | bool PromoteList(int promoteBy, const wxRichTextRange& range, |
638 | const wxString& styleName, | |
639 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO, | |
640 | int listLevel = -1); | |
23324ae1 FM |
641 | //@} |
642 | ||
643 | /** | |
644 | Removes an event handler from the buffer's list of handlers, deleting the | |
4cc4bfaf | 645 | object if @a deleteHandler is @true. |
23324ae1 FM |
646 | */ |
647 | bool RemoveEventHandler(wxEvtHandler* handler, | |
4cc4bfaf | 648 | bool deleteHandler = false); |
23324ae1 FM |
649 | |
650 | /** | |
651 | Removes a handler. | |
652 | */ | |
653 | bool RemoveHandler(const wxString& name); | |
654 | ||
655 | /** | |
656 | Clears the buffer, adds a new blank paragraph, and clears the command history. | |
657 | */ | |
658 | void ResetAndClearCommands(); | |
659 | ||
660 | //@{ | |
661 | /** | |
662 | Saves content to a file. | |
663 | */ | |
664 | bool SaveFile(wxOutputStream& stream, | |
665 | int type = wxRICHTEXT_TYPE_ANY); | |
7c913512 FM |
666 | bool SaveFile(const wxString& filename, |
667 | int type = wxRICHTEXT_TYPE_ANY); | |
23324ae1 FM |
668 | //@} |
669 | ||
670 | /** | |
671 | Sets the basic (overall) style. This is the style of the whole | |
672 | buffer before further styles are applied, unlike the default style, which | |
673 | only affects the style currently being applied (for example, setting the default | |
674 | style to bold will cause subsequently inserted text to be bold). | |
675 | */ | |
676 | void SetBasicStyle(const wxTextAttr& style); | |
677 | ||
678 | /** | |
679 | Sets the default style, affecting the style currently being applied (for | |
680 | example, setting the default | |
681 | style to bold will cause subsequently inserted text to be bold). | |
23324ae1 FM |
682 | This is not cumulative - setting the default style will replace the previous |
683 | default style. | |
684 | */ | |
685 | void SetDefaultStyle(const wxTextAttr& style); | |
686 | ||
687 | //@{ | |
688 | /** | |
689 | Sets the list attributes for the given range, passing flags to determine how | |
690 | the attributes are set. | |
691 | Either the style definition or the name of the style definition (in the current | |
692 | sheet) can be passed. | |
4cc4bfaf | 693 | @a flags is a bit list of the following: |
23324ae1 FM |
694 | wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this command will be undoable. |
695 | wxRICHTEXT_SETSTYLE_RENUMBER: specifies that numbering should start from @e | |
696 | startFrom, otherwise existing attributes are used. | |
4cc4bfaf | 697 | wxRICHTEXT_SETSTYLE_SPECIFY_LEVEL: specifies that @a listLevel should be used |
23324ae1 | 698 | as the level for all paragraphs, otherwise the current indentation will be used. |
23324ae1 FM |
699 | See also NumberList(), PromoteList(), ClearListStyle(). |
700 | */ | |
701 | bool SetListStyle(const wxRichTextRange& range, | |
702 | const wxRichTextListStyleDefinition* style, | |
703 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO, | |
704 | int startFrom = -1, | |
705 | int listLevel = -1); | |
7c913512 FM |
706 | bool SetListStyle(const wxRichTextRange& range, |
707 | const wxString& styleName, | |
708 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO, | |
709 | int startFrom = -1, | |
710 | int listLevel = -1); | |
23324ae1 FM |
711 | //@} |
712 | ||
713 | /** | |
4cc4bfaf | 714 | Sets @a renderer as the object to be used to render certain aspects of the |
23324ae1 FM |
715 | content, such as bullets. |
716 | You can override default rendering by deriving a new class from | |
717 | wxRichTextRenderer or wxRichTextStdRenderer, | |
718 | overriding one or more virtual functions, and setting an instance of the class | |
719 | using this function. | |
720 | */ | |
721 | static void SetRenderer(wxRichTextRenderer* renderer); | |
722 | ||
723 | /** | |
724 | Sets the attributes for the given range. Pass flags to determine how the | |
725 | attributes are set. | |
23324ae1 FM |
726 | The end point of range is specified as the last character position of the span |
727 | of text. | |
728 | So, for example, to set the style for a character at position 5, use the range | |
729 | (5,5). | |
730 | This differs from the wxRichTextCtrl API, where you would specify (5,6). | |
4cc4bfaf | 731 | @a flags may contain a bit list of the following values: |
23324ae1 FM |
732 | wxRICHTEXT_SETSTYLE_NONE: no style flag. |
733 | wxRICHTEXT_SETSTYLE_WITH_UNDO: specifies that this operation should be | |
734 | undoable. | |
735 | wxRICHTEXT_SETSTYLE_OPTIMIZE: specifies that the style should not be applied | |
736 | if the | |
737 | combined style at this point is already the style in question. | |
738 | wxRICHTEXT_SETSTYLE_PARAGRAPHS_ONLY: specifies that the style should only be | |
739 | applied to paragraphs, | |
740 | and not the content. This allows content styling to be preserved independently | |
741 | from that of e.g. a named paragraph style. | |
742 | wxRICHTEXT_SETSTYLE_CHARACTERS_ONLY: specifies that the style should only be | |
743 | applied to characters, | |
744 | and not the paragraph. This allows content styling to be preserved | |
745 | independently from that of e.g. a named paragraph style. | |
746 | wxRICHTEXT_SETSTYLE_RESET: resets (clears) the existing style before applying | |
747 | the new style. | |
748 | wxRICHTEXT_SETSTYLE_REMOVE: removes the specified style. Only the style flags | |
749 | are used in this operation. | |
750 | */ | |
751 | bool SetStyle(const wxRichTextRange& range, | |
752 | const wxTextAttr& style, | |
753 | int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO); | |
754 | ||
755 | /** | |
756 | Sets the current style sheet, if any. This will allow the application to use | |
757 | named character and paragraph styles found in the style sheet. | |
758 | */ | |
759 | void SetStyleSheet(wxRichTextStyleSheet* styleSheet); | |
760 | ||
761 | /** | |
762 | Submit an action immediately, or delay it according to whether collapsing is on. | |
763 | */ | |
764 | bool SubmitAction(wxRichTextAction* action); | |
765 | ||
766 | /** | |
767 | Returns @true if undo suppression is currently on. | |
768 | */ | |
328f5751 | 769 | bool SuppressingUndo() const; |
23324ae1 FM |
770 | }; |
771 | ||
772 | ||
e54c96f1 | 773 | |
23324ae1 FM |
774 | /** |
775 | @class wxRichTextFileHandler | |
776 | @headerfile richtextbuffer.h wx/richtext/richtextbuffer.h | |
7c913512 | 777 | |
23324ae1 FM |
778 | This is the base class for file handlers, for loading and/or saving content |
779 | associated with a wxRichTextBuffer. | |
7c913512 | 780 | |
23324ae1 | 781 | @library{wxrichtext} |
21b447dc | 782 | @category{richtext} |
23324ae1 FM |
783 | */ |
784 | class wxRichTextFileHandler : public wxObject | |
785 | { | |
786 | public: | |
787 | /** | |
788 | Constructor. | |
789 | */ | |
790 | wxRichTextFileHandler(const wxString& name = wxEmptyString, | |
791 | const wxString& ext = wxEmptyString, | |
792 | int type = 0); | |
793 | ||
794 | /** | |
795 | Override this function and return @true if this handler can we handle @e | |
796 | filename. By default, | |
797 | this function checks the extension. | |
798 | */ | |
328f5751 | 799 | bool CanHandle(const wxString& filename) const; |
23324ae1 FM |
800 | |
801 | /** | |
802 | Override and return @true if this handler can load content. | |
803 | */ | |
328f5751 | 804 | bool CanLoad() const; |
23324ae1 FM |
805 | |
806 | /** | |
807 | Override and return @true if this handler can save content. | |
808 | */ | |
328f5751 | 809 | bool CanSave() const; |
23324ae1 FM |
810 | |
811 | /** | |
4cc4bfaf | 812 | Override to load content from @a stream into @e buffer. |
23324ae1 FM |
813 | */ |
814 | bool DoLoadFile(wxRichTextBuffer* buffer, wxInputStream& stream); | |
815 | ||
816 | /** | |
4cc4bfaf | 817 | Override to save content to @a stream from @e buffer. |
23324ae1 FM |
818 | */ |
819 | bool DoSaveFile(wxRichTextBuffer* buffer, wxOutputStream& stream); | |
820 | ||
821 | /** | |
822 | Returns the encoding associated with the handler (if any). | |
823 | */ | |
328f5751 | 824 | const wxString GetEncoding() const; |
23324ae1 FM |
825 | |
826 | /** | |
827 | Returns the extension associated with the handler. | |
828 | */ | |
328f5751 | 829 | wxString GetExtension() const; |
23324ae1 FM |
830 | |
831 | /** | |
832 | Returns flags that change the behaviour of loading or saving. See the | |
833 | documentation for each | |
834 | handler class to see what flags are relevant for each handler. | |
835 | */ | |
328f5751 | 836 | int GetFlags() const; |
23324ae1 FM |
837 | |
838 | /** | |
839 | Returns the name of the handler. | |
840 | */ | |
328f5751 | 841 | wxString GetName() const; |
23324ae1 FM |
842 | |
843 | /** | |
844 | Returns the type of the handler. | |
845 | */ | |
328f5751 | 846 | int GetType() const; |
23324ae1 FM |
847 | |
848 | /** | |
849 | Returns @true if this handler should be visible to the user. | |
850 | */ | |
328f5751 | 851 | bool IsVisible() const; |
23324ae1 FM |
852 | |
853 | //@{ | |
854 | /** | |
855 | Loads content from a stream or file. Not all handlers will implement file | |
856 | loading. | |
857 | */ | |
858 | bool LoadFile(wxRichTextBuffer* buffer, wxInputStream& stream); | |
7c913512 FM |
859 | bool LoadFile(wxRichTextBuffer* buffer, |
860 | const wxString& filename); | |
23324ae1 FM |
861 | //@} |
862 | ||
863 | //@{ | |
864 | /** | |
865 | Saves content to a stream or file. Not all handlers will implement file saving. | |
866 | */ | |
867 | bool SaveFile(wxRichTextBuffer* buffer, wxOutputStream& stream); | |
7c913512 FM |
868 | bool SaveFile(wxRichTextBuffer* buffer, |
869 | const wxString& filename); | |
23324ae1 FM |
870 | //@} |
871 | ||
872 | /** | |
873 | Sets the encoding to use when saving a file. If empty, a suitable encoding is | |
874 | chosen. | |
875 | */ | |
876 | void SetEncoding(const wxString& encoding); | |
877 | ||
878 | /** | |
879 | Sets the default extension to recognise. | |
880 | */ | |
881 | void SetExtension(const wxString& ext); | |
882 | ||
883 | /** | |
884 | Sets flags that change the behaviour of loading or saving. See the | |
885 | documentation for each | |
886 | handler class to see what flags are relevant for each handler. | |
23324ae1 FM |
887 | You call this function directly if you are using a file handler explicitly |
888 | (without | |
889 | going through the text control or buffer LoadFile/SaveFile API). Or, you can | |
890 | call the control or buffer's SetHandlerFlags function to set the flags that will | |
891 | be used for subsequent load and save operations. | |
892 | */ | |
893 | void SetFlags(int flags); | |
894 | ||
895 | /** | |
896 | Sets the name of the handler. | |
897 | */ | |
898 | void SetName(const wxString& name); | |
899 | ||
900 | /** | |
901 | Sets the handler type. | |
902 | */ | |
903 | void SetType(int type); | |
904 | ||
905 | /** | |
906 | Sets whether the handler should be visible to the user (via the application's | |
907 | load and save | |
908 | dialogs). | |
909 | */ | |
910 | void SetVisible(bool visible); | |
911 | }; | |
912 | ||
913 | ||
e54c96f1 | 914 | |
23324ae1 FM |
915 | /** |
916 | @class wxRichTextRange | |
917 | @headerfile richtextbuffer.h wx/richtext/richtextbuffer.h | |
7c913512 | 918 | |
23324ae1 | 919 | This class stores beginning and end positions for a range of data. |
7c913512 | 920 | |
23324ae1 | 921 | @library{wxrichtext} |
21b447dc | 922 | @category{richtext} |
23324ae1 | 923 | */ |
7c913512 | 924 | class wxRichTextRange |
23324ae1 FM |
925 | { |
926 | public: | |
927 | //@{ | |
928 | /** | |
929 | Constructors. | |
930 | */ | |
931 | wxRichTextRange(long start, long end); | |
7c913512 FM |
932 | wxRichTextRange(const wxRichTextRange& range); |
933 | wxRichTextRange(); | |
23324ae1 FM |
934 | //@} |
935 | ||
936 | /** | |
937 | Destructor. | |
938 | */ | |
939 | ~wxRichTextRange(); | |
940 | ||
941 | /** | |
942 | Returns @true if the given position is within this range. Does not | |
943 | match if the range is empty. | |
944 | */ | |
328f5751 | 945 | bool Contains(long pos) const; |
23324ae1 FM |
946 | |
947 | /** | |
948 | Converts the internal range, which uses the first and last character positions | |
949 | of the range, | |
950 | to the API-standard range, whose end is one past the last character in the | |
951 | range. | |
952 | In other words, one is added to the end position. | |
953 | */ | |
328f5751 | 954 | wxRichTextRange FromInternal() const; |
23324ae1 FM |
955 | |
956 | /** | |
957 | Returns the end position. | |
958 | */ | |
328f5751 | 959 | long GetEnd() const; |
23324ae1 FM |
960 | |
961 | /** | |
962 | Returns the length of the range. | |
963 | */ | |
328f5751 | 964 | long GetLength() const; |
23324ae1 FM |
965 | |
966 | /** | |
967 | Returns the start of the range. | |
968 | */ | |
328f5751 | 969 | long GetStart() const; |
23324ae1 FM |
970 | |
971 | /** | |
972 | Returns @true if this range is completely outside @e range. | |
973 | */ | |
328f5751 | 974 | bool IsOutside(const wxRichTextRange& range) const; |
23324ae1 FM |
975 | |
976 | /** | |
977 | Returns @true if this range is completely within @e range. | |
978 | */ | |
328f5751 | 979 | bool IsWithin(const wxRichTextRange& range) const; |
23324ae1 FM |
980 | |
981 | /** | |
982 | Limits this range to be within @e range. | |
983 | */ | |
984 | bool LimitTo(const wxRichTextRange& range); | |
985 | ||
986 | /** | |
987 | Sets the end of the range. | |
988 | */ | |
989 | void SetEnd(long end); | |
990 | ||
991 | /** | |
992 | Sets the range. | |
993 | */ | |
994 | void SetRange(long start, long end); | |
995 | ||
996 | /** | |
997 | Sets the start of the range. | |
998 | */ | |
999 | void SetStart(long start); | |
1000 | ||
1001 | /** | |
1002 | Swaps the start and end. | |
1003 | */ | |
1004 | void Swap(); | |
1005 | ||
1006 | /** | |
1007 | Converts the API-standard range, whose end is one past the last character in | |
1008 | the range, | |
1009 | to the internal form, which uses the first and last character positions of the | |
1010 | range. | |
1011 | In other words, one is subtracted from the end position. | |
1012 | */ | |
328f5751 | 1013 | wxRichTextRange ToInternal() const; |
23324ae1 FM |
1014 | |
1015 | /** | |
4cc4bfaf | 1016 | Adds @a range to this range. |
23324ae1 | 1017 | */ |
328f5751 | 1018 | wxRichTextRange operator+(const wxRichTextRange& range) const; |
23324ae1 FM |
1019 | |
1020 | /** | |
4cc4bfaf | 1021 | Subtracts @a range from this range. |
23324ae1 | 1022 | */ |
328f5751 | 1023 | wxRichTextRange operator-(const wxRichTextRange& range) const; |
23324ae1 FM |
1024 | |
1025 | /** | |
4cc4bfaf | 1026 | Assigns @a range to this range. |
23324ae1 FM |
1027 | */ |
1028 | void operator=(const wxRichTextRange& range); | |
1029 | ||
1030 | /** | |
4cc4bfaf | 1031 | Returns @true if @a range is the same as this range. |
23324ae1 | 1032 | */ |
328f5751 | 1033 | bool operator==(const wxRichTextRange& range) const; |
23324ae1 | 1034 | }; |
e54c96f1 | 1035 |