| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: richtext/richtextstyles.h
- // Purpose: interface of wxRichTextStyleListCtrl
- // Author: wxWidgets team
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- /**
- @class wxRichTextStyleListCtrl
- This class incorporates a wxRichTextStyleListBox and a choice control that
- allows the user to select the category of style to view.
- It is demonstrated in the wxRichTextCtrl sample in @c samples/richtext.
- To use wxRichTextStyleListCtrl, add the control to your window hierarchy and
- call wxRichTextStyleListCtrl::SetStyleType with one of
- wxRichTextStyleListBox::wxRICHTEXT_STYLE_ALL,
- wxRichTextStyleListBox::wxRICHTEXT_STYLE_PARAGRAPH,
- wxRichTextStyleListBox::wxRICHTEXT_STYLE_CHARACTER and
- wxRichTextStyleListBox::wxRICHTEXT_STYLE_LIST to set the current view.
- Associate the control with a style sheet and rich text control with
- SetStyleSheet and SetRichTextCtrl, so that when a style is double-clicked,
- it is applied to the selection.
- @beginStyleTable
- @style{wxRICHTEXTSTYLELIST_HIDE_TYPE_SELECTOR}
- This style hides the category selection control.
- @endStyleTable
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextStyleListCtrl : public wxControl
- {
- public:
- //@{
- /**
- Constructors.
- */
- wxRichTextStyleListCtrl(wxWindow* parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0);
- wxRichTextStyleListCtrl();
- //@}
- /**
- Creates the windows.
- */
- bool Create(wxWindow* parent, wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0);
- /**
- Returns the associated rich text control, if any.
- */
- wxRichTextCtrl* GetRichTextCtrl() const;
- /**
- Returns the wxChoice control used for selecting the style category.
- */
- wxChoice* GetStyleChoice() const;
- /**
- Returns the wxListBox control used to view the style list.
- */
- wxRichTextStyleListBox* GetStyleListBox() const;
- /**
- Returns the associated style sheet, if any.
- */
- wxRichTextStyleSheet* GetStyleSheet() const;
- /**
- Returns the type of style to show in the list box.
- */
- wxRichTextStyleListBox::wxRichTextStyleType GetStyleType() const;
- /**
- Associates the control with a wxRichTextCtrl.
- */
- void SetRichTextCtrl(wxRichTextCtrl* ctrl);
- /**
- Associates the control with a style sheet.
- */
- void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
- /**
- Sets the style type to display.
- One of
- - wxRichTextStyleListBox::wxRICHTEXT_STYLE_ALL,
- - wxRichTextStyleListBox::wxRICHTEXT_STYLE_PARAGRAPH,
- - wxRichTextStyleListBox::wxRICHTEXT_STYLE_CHARACTER
- - wxRichTextStyleListBox::wxRICHTEXT_STYLE_LIST.
- */
- void SetStyleType(wxRichTextStyleListBox::wxRichTextStyleType styleType);
- /**
- Updates the style list box.
- */
- void UpdateStyles();
- };
- /**
- @class wxRichTextStyleDefinition
- This is a base class for paragraph and character styles.
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextStyleDefinition : public wxObject
- {
- public:
- /**
- Constructor.
- */
- wxRichTextStyleDefinition(const wxString& name = wxEmptyString);
- /**
- Destructor.
- */
- virtual ~wxRichTextStyleDefinition();
- /**
- Returns the style on which this style is based.
- */
- const wxString& GetBaseStyle() const;
- /**
- Returns the style's description.
- */
- const wxString& GetDescription() const;
- /**
- Returns the style name.
- */
- const wxString& GetName() const;
- //@{
- /**
- Returns the attributes associated with this style.
- */
- wxRichTextAttr GetStyle() const;
- const wxRichTextAttr GetStyle() const;
- //@}
- /**
- Returns the style attributes combined with the attributes of the specified base
- style, if any. This function works recursively.
- */
- virtual wxRichTextAttr GetStyleMergedWithBase(const wxRichTextStyleSheet* sheet) const;
- /**
- Sets the name of the style that this style is based on.
- */
- void SetBaseStyle(const wxString& name);
- /**
- Sets the style description.
- */
- void SetDescription(const wxString& descr);
- /**
- Sets the name of the style.
- */
- void SetName(const wxString& name);
- /**
- Sets the attributes for this style.
- */
- void SetStyle(const wxRichTextAttr& style);
- /**
- Returns the definition's properties.
- */
- wxRichTextProperties& GetProperties();
- /**
- Returns the definition's properties.
- */
- const wxRichTextProperties& GetProperties() const;
- /**
- Sets the definition's properties.
- */
- void SetProperties(const wxRichTextProperties& props);
- };
- /**
- @class wxRichTextParagraphStyleDefinition
- This class represents a paragraph style definition, usually added to a
- wxRichTextStyleSheet.
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextParagraphStyleDefinition : public wxRichTextStyleDefinition
- {
- public:
- /**
- Constructor.
- */
- wxRichTextParagraphStyleDefinition(const wxString& name = wxEmptyString);
- /**
- Destructor.
- */
- virtual ~wxRichTextParagraphStyleDefinition();
- /**
- Returns the style that should normally follow this style.
- */
- const wxString& GetNextStyle() const;
- /**
- Sets the style that should normally follow this style.
- */
- void SetNextStyle(const wxString& name);
- };
- /**
- @class wxRichTextStyleListBox
- This is a listbox that can display the styles in a wxRichTextStyleSheet,
- and apply the selection to an associated wxRichTextCtrl.
- See @c samples/richtext for an example of how to use it.
- @library{wxrichtext}
- @category{richtext}
- @see wxRichTextStyleComboCtrl, @ref overview_richtextctrl
- */
- class wxRichTextStyleListBox : public wxHtmlListBox
- {
- public:
- /// Which type of style definition is currently showing?
- enum wxRichTextStyleType
- {
- wxRICHTEXT_STYLE_ALL,
- wxRICHTEXT_STYLE_PARAGRAPH,
- wxRICHTEXT_STYLE_CHARACTER,
- wxRICHTEXT_STYLE_LIST,
- wxRICHTEXT_STYLE_BOX
- };
- /**
- Constructor.
- */
- wxRichTextStyleListBox(wxWindow* parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0);
- /**
- Destructor.
- */
- virtual ~wxRichTextStyleListBox();
- /**
- Applies the @e ith style to the associated rich text control.
- */
- void ApplyStyle(int i);
- /**
- Converts units in tenths of a millimetre to device units.
- */
- int ConvertTenthsMMToPixels(wxDC& dc, int units) const;
- /**
- Creates a suitable HTML fragment for a definition.
- */
- wxString CreateHTML(wxRichTextStyleDefinition* def) const;
- /**
- If the return value is @true, clicking on a style name in the list will
- immediately apply the style to the associated rich text control.
- */
- bool GetApplyOnSelection() const;
- /**
- Returns the wxRichTextCtrl associated with this listbox.
- */
- wxRichTextCtrl* GetRichTextCtrl() const;
- /**
- Gets a style for a listbox index.
- */
- wxRichTextStyleDefinition* GetStyle(size_t i) const;
- /**
- Returns the style sheet associated with this listbox.
- */
- wxRichTextStyleSheet* GetStyleSheet() const;
- /**
- Returns the type of style to show in the list box.
- */
- wxRichTextStyleListBox::wxRichTextStyleType GetStyleType() const;
- /**
- Implements left click behaviour, applying the clicked style to the
- wxRichTextCtrl.
- */
- void OnLeftDown(wxMouseEvent& event);
- /**
- If @a applyOnSelection is @true, clicking on a style name in the list will
- immediately apply the style to the associated rich text control.
- */
- void SetApplyOnSelection(bool applyOnSelection);
- /**
- Associates the listbox with a wxRichTextCtrl.
- */
- void SetRichTextCtrl(wxRichTextCtrl* ctrl);
- /**
- Associates the control with a style sheet.
- */
- void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
- /**
- Sets the style type to display. One of
- - wxRichTextStyleListBox::wxRICHTEXT_STYLE_ALL,
- - wxRichTextStyleListBox::wxRICHTEXT_STYLE_PARAGRAPH,
- - wxRichTextStyleListBox::wxRICHTEXT_STYLE_CHARACTER
- - wxRichTextStyleListBox::wxRICHTEXT_STYLE_LIST.
- */
- void SetStyleType(wxRichTextStyleListBox::wxRichTextStyleType styleType);
- /**
- Updates the list from the associated style sheet.
- */
- void UpdateStyles();
- protected:
- /**
- Returns the HTML for this item.
- */
- virtual wxString OnGetItem(size_t n) const;
- };
- /**
- @class wxRichTextStyleComboCtrl
- This is a combo control that can display the styles in a wxRichTextStyleSheet,
- and apply the selection to an associated wxRichTextCtrl.
- See @c samples/richtext for an example of how to use it.
- @library{wxrichtext}
- @category{richtext}
- @see wxRichTextStyleListBox, @ref overview_richtextctrl
- */
- class wxRichTextStyleComboCtrl : public wxComboCtrl
- {
- public:
- /**
- Constructor.
- */
- wxRichTextStyleComboCtrl(wxWindow* parent,
- wxWindowID id = wxID_ANY,
- const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize,
- long style = 0);
- /**
- Destructor.
- */
- virtual ~wxRichTextStyleComboCtrl();
- /**
- Returns the wxRichTextCtrl associated with this control.
- */
- wxRichTextCtrl* GetRichTextCtrl() const;
- /**
- Returns the style sheet associated with this control.
- */
- wxRichTextStyleSheet* GetStyleSheet() const;
- /**
- Associates the control with a wxRichTextCtrl.
- */
- void SetRichTextCtrl(wxRichTextCtrl* ctrl);
- /**
- Associates the control with a style sheet.
- */
- void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
- /**
- Updates the combo control from the associated style sheet.
- */
- void UpdateStyles();
- };
- /**
- @class wxRichTextCharacterStyleDefinition
- This class represents a character style definition, usually added to a
- wxRichTextStyleSheet.
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextCharacterStyleDefinition : public wxRichTextStyleDefinition
- {
- public:
- /**
- Constructor.
- */
- wxRichTextCharacterStyleDefinition(const wxString& name = wxEmptyString);
- /**
- Destructor.
- */
- virtual ~wxRichTextCharacterStyleDefinition();
- };
- /**
- @class wxRichTextListStyleDefinition
- This class represents a list style definition, usually added to a
- wxRichTextStyleSheet.
- The class inherits paragraph attributes from wxRichTextStyleParagraphDefinition,
- and adds 10 further attribute objects, one for each level of a list.
- When applying a list style to a paragraph, the list style's base and
- appropriate level attributes are merged with the paragraph's existing attributes.
- You can apply a list style to one or more paragraphs using wxRichTextCtrl::SetListStyle.
- You can also use the functions wxRichTextCtrl::NumberList, wxRichTextCtrl::PromoteList and
- wxRichTextCtrl::ClearListStyle.
- As usual, there are wxRichTextBuffer versions of these functions
- so that you can apply them directly to a buffer without requiring a control.
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextListStyleDefinition : public wxRichTextParagraphStyleDefinition
- {
- public:
- /**
- Constructor.
- */
- wxRichTextListStyleDefinition(const wxString& name = wxEmptyString);
- /**
- Destructor.
- */
- virtual ~wxRichTextListStyleDefinition();
- /**
- This function combines the given paragraph style with the list style's base
- attributes and level style matching the given indent, returning the combined attributes.
- If @a styleSheet is specified, the base style for this definition will also be
- included in the result.
- */
- wxRichTextAttr CombineWithParagraphStyle(int indent,
- const wxRichTextAttr& paraStyle,
- wxRichTextStyleSheet* styleSheet = NULL);
- /**
- This function finds the level (from 0 to 9) whose indentation attribute mostly
- closely matches @a indent (expressed in tenths of a millimetre).
- */
- int FindLevelForIndent(int indent) const;
- /**
- This function combines the list style's base attributes and the level style
- matching the given indent, returning the combined attributes.
- If @a styleSheet is specified, the base style for this definition will also be
- included in the result.
- */
- wxRichTextAttr GetCombinedStyle(int indent,
- wxRichTextStyleSheet* styleSheet = NULL);
- /**
- This function combines the list style's base attributes and the style for the
- specified level, returning the combined attributes.
- If @a styleSheet is specified, the base style for this definition will also be
- included in the result.
- */
- wxRichTextAttr GetCombinedStyleForLevel(int level,
- wxRichTextStyleSheet* styleSheet = NULL);
- /**
- Returns the style for the given level. @a level is a number between 0 and 9.
- */
- const wxRichTextAttr* GetLevelAttributes(int level) const;
- /**
- Returns the number of levels. This is hard-wired to 10.
- Returns the style for the given level. @e level is a number between 0 and 9.
- */
- int GetLevelCount() const;
- /**
- Returns @true if the given level has numbered list attributes.
- */
- bool IsNumbered(int level) const;
- /**
- Sets the style for the given level. @a level is a number between 0 and 9.
- The first and most flexible form uses a wxTextAttr object, while the second
- form is for convenient setting of the most commonly-used attributes.
- */
- void SetLevelAttributes(int level, const wxRichTextAttr& attr);
- };
- /**
- @class wxRichTextStyleSheet
- A style sheet contains named paragraph and character styles that make it
- easy for a user to apply combinations of attributes to a wxRichTextCtrl.
- You can use a wxRichTextStyleListBox in your user interface to show available
- styles to the user, and allow application of styles to the control.
- @library{wxrichtext}
- @category{richtext}
- */
- class wxRichTextStyleSheet : public wxObject
- {
- public:
- /**
- Constructor.
- */
- wxRichTextStyleSheet();
- /**
- Destructor.
- */
- virtual ~wxRichTextStyleSheet();
- /**
- Adds a definition to the character style list.
- */
- bool AddCharacterStyle(wxRichTextCharacterStyleDefinition* def);
- /**
- Adds a definition to the list style list.
- */
- bool AddListStyle(wxRichTextListStyleDefinition* def);
- /**
- Adds a definition to the paragraph style list.
- */
- bool AddParagraphStyle(wxRichTextParagraphStyleDefinition* def);
- /**
- Adds a definition to the appropriate style list.
- */
- bool AddStyle(wxRichTextStyleDefinition* def);
- /**
- Deletes all styles.
- */
- void DeleteStyles();
- /**
- Finds a character definition by name.
- */
- wxRichTextCharacterStyleDefinition* FindCharacterStyle(const wxString& name,
- bool recurse = true) const;
- /**
- Finds a list definition by name.
- */
- wxRichTextListStyleDefinition* FindListStyle(const wxString& name,
- bool recurse = true) const;
- /**
- Finds a paragraph definition by name.
- */
- wxRichTextParagraphStyleDefinition* FindParagraphStyle(const wxString& name,
- bool recurse = true) const;
- /**
- Finds a style definition by name.
- */
- wxRichTextStyleDefinition* FindStyle(const wxString& name) const;
- /**
- Returns the @e nth character style.
- */
- wxRichTextCharacterStyleDefinition* GetCharacterStyle(size_t n) const;
- /**
- Returns the number of character styles.
- */
- size_t GetCharacterStyleCount() const;
- /**
- Returns the style sheet's description.
- */
- const wxString& GetDescription() const;
- /**
- Returns the @e nth list style.
- */
- wxRichTextListStyleDefinition* GetListStyle(size_t n) const;
- /**
- Returns the number of list styles.
- */
- size_t GetListStyleCount() const;
- /**
- Returns the style sheet's name.
- */
- const wxString& GetName() const;
- /**
- Returns the @e nth paragraph style.
- */
- wxRichTextParagraphStyleDefinition* GetParagraphStyle(size_t n) const;
- /**
- Returns the number of paragraph styles.
- */
- size_t GetParagraphStyleCount() const;
- /**
- Removes a character style.
- */
- bool RemoveCharacterStyle(wxRichTextStyleDefinition* def,
- bool deleteStyle = false);
- /**
- Removes a list style.
- */
- bool RemoveListStyle(wxRichTextStyleDefinition* def,
- bool deleteStyle = false);
- /**
- Removes a paragraph style.
- */
- bool RemoveParagraphStyle(wxRichTextStyleDefinition* def,
- bool deleteStyle = false);
- /**
- Removes a style.
- */
- bool RemoveStyle(wxRichTextStyleDefinition* def,
- bool deleteStyle = false);
- /**
- Sets the style sheet's description.
- */
- void SetDescription(const wxString& descr);
- /**
- Sets the style sheet's name.
- */
- void SetName(const wxString& name);
- /**
- Returns the sheet's properties.
- */
- wxRichTextProperties& GetProperties();
- /**
- Returns the sheet's properties.
- */
- const wxRichTextProperties& GetProperties() const;
- /**
- Sets the sheet's properties.
- */
- void SetProperties(const wxRichTextProperties& props);
- };
|