1 /////////////////////////////////////////////////////////////////////////////
2 // Name: richtext/richtextstyles.h
3 // Purpose: interface of wxRichTextStyleListCtrl
4 // Author: wxWidgets team
6 // Licence: wxWindows licence
7 /////////////////////////////////////////////////////////////////////////////
10 @class wxRichTextStyleListCtrl
12 This class incorporates a wxRichTextStyleListBox and a choice control that
13 allows the user to select the category of style to view.
15 It is demonstrated in the wxRichTextCtrl sample in @c samples/richtext.
17 To use wxRichTextStyleListCtrl, add the control to your window hierarchy and
18 call wxRichTextStyleListCtrl::SetStyleType with one of
19 wxRichTextStyleListBox::wxRICHTEXT_STYLE_ALL,
20 wxRichTextStyleListBox::wxRICHTEXT_STYLE_PARAGRAPH,
21 wxRichTextStyleListBox::wxRICHTEXT_STYLE_CHARACTER and
22 wxRichTextStyleListBox::wxRICHTEXT_STYLE_LIST to set the current view.
24 Associate the control with a style sheet and rich text control with
25 SetStyleSheet and SetRichTextCtrl, so that when a style is double-clicked,
26 it is applied to the selection.
29 @style{wxRICHTEXTSTYLELIST_HIDE_TYPE_SELECTOR}
30 This style hides the category selection control.
36 class wxRichTextStyleListCtrl
: public wxControl
43 wxRichTextStyleListCtrl(wxWindow
* parent
,
44 wxWindowID id
= wxID_ANY
,
45 const wxPoint
& pos
= wxDefaultPosition
,
46 const wxSize
& size
= wxDefaultSize
,
48 wxRichTextStyleListCtrl();
54 bool Create(wxWindow
* parent
, wxWindowID id
= wxID_ANY
,
55 const wxPoint
& pos
= wxDefaultPosition
,
56 const wxSize
& size
= wxDefaultSize
,
60 Returns the associated rich text control, if any.
62 wxRichTextCtrl
* GetRichTextCtrl() const;
65 Returns the wxChoice control used for selecting the style category.
67 wxChoice
* GetStyleChoice() const;
70 Returns the wxListBox control used to view the style list.
72 wxRichTextStyleListBox
* GetStyleListBox() const;
75 Returns the associated style sheet, if any.
77 wxRichTextStyleSheet
* GetStyleSheet() const;
80 Returns the type of style to show in the list box.
82 wxRichTextStyleListBox::wxRichTextStyleType
GetStyleType() const;
85 Associates the control with a wxRichTextCtrl.
87 void SetRichTextCtrl(wxRichTextCtrl
* ctrl
);
90 Associates the control with a style sheet.
92 void SetStyleSheet(wxRichTextStyleSheet
* styleSheet
);
95 Sets the style type to display.
98 - wxRichTextStyleListBox::wxRICHTEXT_STYLE_ALL,
99 - wxRichTextStyleListBox::wxRICHTEXT_STYLE_PARAGRAPH,
100 - wxRichTextStyleListBox::wxRICHTEXT_STYLE_CHARACTER
101 - wxRichTextStyleListBox::wxRICHTEXT_STYLE_LIST.
103 void SetStyleType(wxRichTextStyleListBox::wxRichTextStyleType styleType
);
106 Updates the style list box.
114 @class wxRichTextStyleDefinition
116 This is a base class for paragraph and character styles.
121 class wxRichTextStyleDefinition
: public wxObject
127 wxRichTextStyleDefinition(const wxString
& name
= wxEmptyString
);
132 virtual ~wxRichTextStyleDefinition();
135 Returns the style on which this style is based.
137 const wxString
& GetBaseStyle() const;
140 Returns the style's description.
142 const wxString
& GetDescription() const;
145 Returns the style name.
147 const wxString
& GetName() const;
151 Returns the attributes associated with this style.
153 wxRichTextAttr
GetStyle() const;
154 const wxRichTextAttr
GetStyle() const;
158 Returns the style attributes combined with the attributes of the specified base
159 style, if any. This function works recursively.
161 virtual wxRichTextAttr
GetStyleMergedWithBase(const wxRichTextStyleSheet
* sheet
) const;
164 Sets the name of the style that this style is based on.
166 void SetBaseStyle(const wxString
& name
);
169 Sets the style description.
171 void SetDescription(const wxString
& descr
);
174 Sets the name of the style.
176 void SetName(const wxString
& name
);
179 Sets the attributes for this style.
181 void SetStyle(const wxRichTextAttr
& style
);
184 Returns the definition's properties.
186 wxRichTextProperties
& GetProperties();
189 Returns the definition's properties.
191 const wxRichTextProperties
& GetProperties() const;
194 Sets the definition's properties.
196 void SetProperties(const wxRichTextProperties
& props
);
202 @class wxRichTextParagraphStyleDefinition
204 This class represents a paragraph style definition, usually added to a
205 wxRichTextStyleSheet.
210 class wxRichTextParagraphStyleDefinition
: public wxRichTextStyleDefinition
216 wxRichTextParagraphStyleDefinition(const wxString
& name
= wxEmptyString
);
221 virtual ~wxRichTextParagraphStyleDefinition();
224 Returns the style that should normally follow this style.
226 const wxString
& GetNextStyle() const;
229 Sets the style that should normally follow this style.
231 void SetNextStyle(const wxString
& name
);
237 @class wxRichTextStyleListBox
239 This is a listbox that can display the styles in a wxRichTextStyleSheet,
240 and apply the selection to an associated wxRichTextCtrl.
242 See @c samples/richtext for an example of how to use it.
247 @see wxRichTextStyleComboCtrl, @ref overview_richtextctrl
249 class wxRichTextStyleListBox
: public wxHtmlListBox
253 /// Which type of style definition is currently showing?
254 enum wxRichTextStyleType
256 wxRICHTEXT_STYLE_ALL
,
257 wxRICHTEXT_STYLE_PARAGRAPH
,
258 wxRICHTEXT_STYLE_CHARACTER
,
259 wxRICHTEXT_STYLE_LIST
,
266 wxRichTextStyleListBox(wxWindow
* parent
,
267 wxWindowID id
= wxID_ANY
,
268 const wxPoint
& pos
= wxDefaultPosition
,
269 const wxSize
& size
= wxDefaultSize
,
275 virtual ~wxRichTextStyleListBox();
278 Applies the @e ith style to the associated rich text control.
280 void ApplyStyle(int i
);
283 Converts units in tenths of a millimetre to device units.
285 int ConvertTenthsMMToPixels(wxDC
& dc
, int units
) const;
288 Creates a suitable HTML fragment for a definition.
290 wxString
CreateHTML(wxRichTextStyleDefinition
* def
) const;
293 If the return value is @true, clicking on a style name in the list will
294 immediately apply the style to the associated rich text control.
296 bool GetApplyOnSelection() const;
299 Returns the wxRichTextCtrl associated with this listbox.
301 wxRichTextCtrl
* GetRichTextCtrl() const;
304 Gets a style for a listbox index.
306 wxRichTextStyleDefinition
* GetStyle(size_t i
) const;
309 Returns the style sheet associated with this listbox.
311 wxRichTextStyleSheet
* GetStyleSheet() const;
314 Returns the type of style to show in the list box.
316 wxRichTextStyleListBox::wxRichTextStyleType
GetStyleType() const;
319 Implements left click behaviour, applying the clicked style to the
322 void OnLeftDown(wxMouseEvent
& event
);
325 If @a applyOnSelection is @true, clicking on a style name in the list will
326 immediately apply the style to the associated rich text control.
328 void SetApplyOnSelection(bool applyOnSelection
);
331 Associates the listbox with a wxRichTextCtrl.
333 void SetRichTextCtrl(wxRichTextCtrl
* ctrl
);
336 Associates the control with a style sheet.
338 void SetStyleSheet(wxRichTextStyleSheet
* styleSheet
);
341 Sets the style type to display. One of
342 - wxRichTextStyleListBox::wxRICHTEXT_STYLE_ALL,
343 - wxRichTextStyleListBox::wxRICHTEXT_STYLE_PARAGRAPH,
344 - wxRichTextStyleListBox::wxRICHTEXT_STYLE_CHARACTER
345 - wxRichTextStyleListBox::wxRICHTEXT_STYLE_LIST.
347 void SetStyleType(wxRichTextStyleListBox::wxRichTextStyleType styleType
);
350 Updates the list from the associated style sheet.
357 Returns the HTML for this item.
359 virtual wxString
OnGetItem(size_t n
) const;
365 @class wxRichTextStyleComboCtrl
367 This is a combo control that can display the styles in a wxRichTextStyleSheet,
368 and apply the selection to an associated wxRichTextCtrl.
370 See @c samples/richtext for an example of how to use it.
375 @see wxRichTextStyleListBox, @ref overview_richtextctrl
377 class wxRichTextStyleComboCtrl
: public wxComboCtrl
383 wxRichTextStyleComboCtrl(wxWindow
* parent
,
384 wxWindowID id
= wxID_ANY
,
385 const wxPoint
& pos
= wxDefaultPosition
,
386 const wxSize
& size
= wxDefaultSize
,
392 virtual ~wxRichTextStyleComboCtrl();
395 Returns the wxRichTextCtrl associated with this control.
397 wxRichTextCtrl
* GetRichTextCtrl() const;
400 Returns the style sheet associated with this control.
402 wxRichTextStyleSheet
* GetStyleSheet() const;
405 Associates the control with a wxRichTextCtrl.
407 void SetRichTextCtrl(wxRichTextCtrl
* ctrl
);
410 Associates the control with a style sheet.
412 void SetStyleSheet(wxRichTextStyleSheet
* styleSheet
);
415 Updates the combo control from the associated style sheet.
423 @class wxRichTextCharacterStyleDefinition
425 This class represents a character style definition, usually added to a
426 wxRichTextStyleSheet.
431 class wxRichTextCharacterStyleDefinition
: public wxRichTextStyleDefinition
437 wxRichTextCharacterStyleDefinition(const wxString
& name
= wxEmptyString
);
442 virtual ~wxRichTextCharacterStyleDefinition();
448 @class wxRichTextListStyleDefinition
450 This class represents a list style definition, usually added to a
451 wxRichTextStyleSheet.
453 The class inherits paragraph attributes from wxRichTextStyleParagraphDefinition,
454 and adds 10 further attribute objects, one for each level of a list.
455 When applying a list style to a paragraph, the list style's base and
456 appropriate level attributes are merged with the paragraph's existing attributes.
458 You can apply a list style to one or more paragraphs using wxRichTextCtrl::SetListStyle.
459 You can also use the functions wxRichTextCtrl::NumberList, wxRichTextCtrl::PromoteList and
460 wxRichTextCtrl::ClearListStyle.
462 As usual, there are wxRichTextBuffer versions of these functions
463 so that you can apply them directly to a buffer without requiring a control.
468 class wxRichTextListStyleDefinition
: public wxRichTextParagraphStyleDefinition
474 wxRichTextListStyleDefinition(const wxString
& name
= wxEmptyString
);
479 virtual ~wxRichTextListStyleDefinition();
482 This function combines the given paragraph style with the list style's base
483 attributes and level style matching the given indent, returning the combined attributes.
485 If @a styleSheet is specified, the base style for this definition will also be
486 included in the result.
488 wxRichTextAttr
CombineWithParagraphStyle(int indent
,
489 const wxRichTextAttr
& paraStyle
,
490 wxRichTextStyleSheet
* styleSheet
= NULL
);
493 This function finds the level (from 0 to 9) whose indentation attribute mostly
494 closely matches @a indent (expressed in tenths of a millimetre).
496 int FindLevelForIndent(int indent
) const;
499 This function combines the list style's base attributes and the level style
500 matching the given indent, returning the combined attributes.
502 If @a styleSheet is specified, the base style for this definition will also be
503 included in the result.
505 wxRichTextAttr
GetCombinedStyle(int indent
,
506 wxRichTextStyleSheet
* styleSheet
= NULL
);
509 This function combines the list style's base attributes and the style for the
510 specified level, returning the combined attributes.
512 If @a styleSheet is specified, the base style for this definition will also be
513 included in the result.
516 wxRichTextAttr
GetCombinedStyleForLevel(int level
,
517 wxRichTextStyleSheet
* styleSheet
= NULL
);
520 Returns the style for the given level. @a level is a number between 0 and 9.
522 const wxRichTextAttr
* GetLevelAttributes(int level
) const;
525 Returns the number of levels. This is hard-wired to 10.
526 Returns the style for the given level. @e level is a number between 0 and 9.
528 int GetLevelCount() const;
531 Returns @true if the given level has numbered list attributes.
533 bool IsNumbered(int level
) const;
536 Sets the style for the given level. @a level is a number between 0 and 9.
537 The first and most flexible form uses a wxTextAttr object, while the second
538 form is for convenient setting of the most commonly-used attributes.
540 void SetLevelAttributes(int level
, const wxRichTextAttr
& attr
);
546 @class wxRichTextStyleSheet
548 A style sheet contains named paragraph and character styles that make it
549 easy for a user to apply combinations of attributes to a wxRichTextCtrl.
551 You can use a wxRichTextStyleListBox in your user interface to show available
552 styles to the user, and allow application of styles to the control.
557 class wxRichTextStyleSheet
: public wxObject
563 wxRichTextStyleSheet();
568 virtual ~wxRichTextStyleSheet();
571 Adds a definition to the character style list.
573 bool AddCharacterStyle(wxRichTextCharacterStyleDefinition
* def
);
576 Adds a definition to the list style list.
578 bool AddListStyle(wxRichTextListStyleDefinition
* def
);
581 Adds a definition to the paragraph style list.
583 bool AddParagraphStyle(wxRichTextParagraphStyleDefinition
* def
);
586 Adds a definition to the appropriate style list.
588 bool AddStyle(wxRichTextStyleDefinition
* def
);
596 Finds a character definition by name.
598 wxRichTextCharacterStyleDefinition
* FindCharacterStyle(const wxString
& name
,
599 bool recurse
= true) const;
602 Finds a list definition by name.
604 wxRichTextListStyleDefinition
* FindListStyle(const wxString
& name
,
605 bool recurse
= true) const;
608 Finds a paragraph definition by name.
610 wxRichTextParagraphStyleDefinition
* FindParagraphStyle(const wxString
& name
,
611 bool recurse
= true) const;
614 Finds a style definition by name.
616 wxRichTextStyleDefinition
* FindStyle(const wxString
& name
) const;
619 Returns the @e nth character style.
621 wxRichTextCharacterStyleDefinition
* GetCharacterStyle(size_t n
) const;
624 Returns the number of character styles.
626 size_t GetCharacterStyleCount() const;
629 Returns the style sheet's description.
631 const wxString
& GetDescription() const;
634 Returns the @e nth list style.
636 wxRichTextListStyleDefinition
* GetListStyle(size_t n
) const;
639 Returns the number of list styles.
641 size_t GetListStyleCount() const;
644 Returns the style sheet's name.
646 const wxString
& GetName() const;
649 Returns the @e nth paragraph style.
651 wxRichTextParagraphStyleDefinition
* GetParagraphStyle(size_t n
) const;
654 Returns the number of paragraph styles.
656 size_t GetParagraphStyleCount() const;
659 Removes a character style.
661 bool RemoveCharacterStyle(wxRichTextStyleDefinition
* def
,
662 bool deleteStyle
= false);
665 Removes a list style.
667 bool RemoveListStyle(wxRichTextStyleDefinition
* def
,
668 bool deleteStyle
= false);
671 Removes a paragraph style.
673 bool RemoveParagraphStyle(wxRichTextStyleDefinition
* def
,
674 bool deleteStyle
= false);
679 bool RemoveStyle(wxRichTextStyleDefinition
* def
,
680 bool deleteStyle
= false);
683 Sets the style sheet's description.
685 void SetDescription(const wxString
& descr
);
688 Sets the style sheet's name.
690 void SetName(const wxString
& name
);
693 Returns the sheet's properties.
695 wxRichTextProperties
& GetProperties();
698 Returns the sheet's properties.
700 const wxRichTextProperties
& GetProperties() const;
703 Sets the sheet's properties.
705 void SetProperties(const wxRichTextProperties
& props
);