| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760 |
- /////////////////////////////////////////////////////////////////////////////
- // Name: wx/richtext/richtextstyles.h
- // Purpose: Style management for wxRichTextCtrl
- // Author: Julian Smart
- // Modified by:
- // Created: 2005-09-30
- // Copyright: (c) Julian Smart
- // Licence: wxWindows licence
- /////////////////////////////////////////////////////////////////////////////
- #ifndef _WX_RICHTEXTSTYLES_H_
- #define _WX_RICHTEXTSTYLES_H_
- /*!
- * Includes
- */
- #include "wx/defs.h"
- #if wxUSE_RICHTEXT
- #include "wx/richtext/richtextbuffer.h"
- #if wxUSE_HTML
- #include "wx/htmllbox.h"
- #endif
- #if wxUSE_COMBOCTRL
- #include "wx/combo.h"
- #endif
- #include "wx/choice.h"
- /*!
- * Forward declarations
- */
- class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextCtrl;
- class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextBuffer;
- /*!
- * wxRichTextStyleDefinition class declaration
- * A base class for paragraph and character styles.
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextStyleDefinition: public wxObject
- {
- DECLARE_CLASS(wxRichTextStyleDefinition)
- public:
- /// Copy constructors
- wxRichTextStyleDefinition(const wxRichTextStyleDefinition& def)
- : wxObject()
- {
- Init();
- Copy(def);
- }
- /// Default constructor
- wxRichTextStyleDefinition(const wxString& name = wxEmptyString) { Init(); m_name = name; }
- /// Destructor
- virtual ~wxRichTextStyleDefinition() {}
- /// Initialises members
- void Init() {}
- /// Copies from def
- void Copy(const wxRichTextStyleDefinition& def);
- /// Equality test
- bool Eq(const wxRichTextStyleDefinition& def) const;
- /// Assignment operator
- void operator =(const wxRichTextStyleDefinition& def) { Copy(def); }
- /// Equality operator
- bool operator ==(const wxRichTextStyleDefinition& def) const { return Eq(def); }
- /// Override to clone the object
- virtual wxRichTextStyleDefinition* Clone() const = 0;
- /// Sets and gets the name of the style
- void SetName(const wxString& name) { m_name = name; }
- const wxString& GetName() const { return m_name; }
- /// Sets and gets the style description
- void SetDescription(const wxString& descr) { m_description = descr; }
- const wxString& GetDescription() const { return m_description; }
- /// Sets and gets the name of the style that this style is based on
- void SetBaseStyle(const wxString& name) { m_baseStyle = name; }
- const wxString& GetBaseStyle() const { return m_baseStyle; }
- /// Sets and gets the style
- void SetStyle(const wxRichTextAttr& style) { m_style = style; }
- const wxRichTextAttr& GetStyle() const { return m_style; }
- wxRichTextAttr& GetStyle() { return m_style; }
- /// Gets the style combined with the base style
- virtual wxRichTextAttr GetStyleMergedWithBase(const wxRichTextStyleSheet* sheet) const;
- /**
- Returns the definition's properties.
- */
- wxRichTextProperties& GetProperties() { return m_properties; }
- /**
- Returns the definition's properties.
- */
- const wxRichTextProperties& GetProperties() const { return m_properties; }
- /**
- Sets the definition's properties.
- */
- void SetProperties(const wxRichTextProperties& props) { m_properties = props; }
- protected:
- wxString m_name;
- wxString m_baseStyle;
- wxString m_description;
- wxRichTextAttr m_style;
- wxRichTextProperties m_properties;
- };
- /*!
- * wxRichTextCharacterStyleDefinition class declaration
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextCharacterStyleDefinition: public wxRichTextStyleDefinition
- {
- DECLARE_DYNAMIC_CLASS(wxRichTextCharacterStyleDefinition)
- public:
- /// Copy constructor
- wxRichTextCharacterStyleDefinition(const wxRichTextCharacterStyleDefinition& def): wxRichTextStyleDefinition(def) {}
- /// Default constructor
- wxRichTextCharacterStyleDefinition(const wxString& name = wxEmptyString):
- wxRichTextStyleDefinition(name) {}
- /// Destructor
- virtual ~wxRichTextCharacterStyleDefinition() {}
- /// Clones the object
- virtual wxRichTextStyleDefinition* Clone() const { return new wxRichTextCharacterStyleDefinition(*this); }
- protected:
- };
- /*!
- * wxRichTextParagraphStyleDefinition class declaration
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextParagraphStyleDefinition: public wxRichTextStyleDefinition
- {
- DECLARE_DYNAMIC_CLASS(wxRichTextParagraphStyleDefinition)
- public:
- /// Copy constructor
- wxRichTextParagraphStyleDefinition(const wxRichTextParagraphStyleDefinition& def): wxRichTextStyleDefinition(def) { m_nextStyle = def.m_nextStyle; }
- /// Default constructor
- wxRichTextParagraphStyleDefinition(const wxString& name = wxEmptyString):
- wxRichTextStyleDefinition(name) {}
- // Destructor
- virtual ~wxRichTextParagraphStyleDefinition() {}
- /// Sets and gets the next style
- void SetNextStyle(const wxString& name) { m_nextStyle = name; }
- const wxString& GetNextStyle() const { return m_nextStyle; }
- /// Copies from def
- void Copy(const wxRichTextParagraphStyleDefinition& def);
- /// Assignment operator
- void operator =(const wxRichTextParagraphStyleDefinition& def) { Copy(def); }
- /// Equality operator
- bool operator ==(const wxRichTextParagraphStyleDefinition& def) const;
- /// Clones the object
- virtual wxRichTextStyleDefinition* Clone() const { return new wxRichTextParagraphStyleDefinition(*this); }
- protected:
- /// The next style to use when adding a paragraph after this style.
- wxString m_nextStyle;
- };
- /*!
- * wxRichTextListStyleDefinition class declaration
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextListStyleDefinition: public wxRichTextParagraphStyleDefinition
- {
- DECLARE_DYNAMIC_CLASS(wxRichTextListStyleDefinition)
- public:
- /// Copy constructor
- wxRichTextListStyleDefinition(const wxRichTextListStyleDefinition& def): wxRichTextParagraphStyleDefinition(def) { Init(); Copy(def); }
- /// Default constructor
- wxRichTextListStyleDefinition(const wxString& name = wxEmptyString):
- wxRichTextParagraphStyleDefinition(name) { Init(); }
- /// Destructor
- virtual ~wxRichTextListStyleDefinition() {}
- /// Copies from def
- void Copy(const wxRichTextListStyleDefinition& def);
- /// Assignment operator
- void operator =(const wxRichTextListStyleDefinition& def) { Copy(def); }
- /// Equality operator
- bool operator ==(const wxRichTextListStyleDefinition& def) const;
- /// Clones the object
- virtual wxRichTextStyleDefinition* Clone() const { return new wxRichTextListStyleDefinition(*this); }
- /// Sets/gets the attributes for the given level
- void SetLevelAttributes(int i, const wxRichTextAttr& attr);
- wxRichTextAttr* GetLevelAttributes(int i);
- const wxRichTextAttr* GetLevelAttributes(int i) const;
- /// Convenience function for setting the major attributes for a list level specification
- void SetAttributes(int i, int leftIndent, int leftSubIndent, int bulletStyle, const wxString& bulletSymbol = wxEmptyString);
- /// Finds the level corresponding to the given indentation
- int FindLevelForIndent(int indent) const;
- /// Combine the base and list style with a paragraph style, using the given indent (from which
- /// an appropriate level is found)
- wxRichTextAttr CombineWithParagraphStyle(int indent, const wxRichTextAttr& paraStyle, wxRichTextStyleSheet* styleSheet = NULL);
- /// Combine the base and list style, using the given indent (from which
- /// an appropriate level is found)
- wxRichTextAttr GetCombinedStyle(int indent, wxRichTextStyleSheet* styleSheet = NULL);
- /// Combine the base and list style, using the given level from which
- /// an appropriate level is found)
- wxRichTextAttr GetCombinedStyleForLevel(int level, wxRichTextStyleSheet* styleSheet = NULL);
- /// Gets the number of available levels
- int GetLevelCount() const { return 10; }
- /// Is this a numbered list?
- bool IsNumbered(int i) const;
- protected:
- /// The styles for each level (up to 10)
- wxRichTextAttr m_levelStyles[10];
- };
- /*!
- * wxRichTextBoxStyleDefinition class declaration, for box attributes in objects such as wxRichTextBox.
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextBoxStyleDefinition: public wxRichTextStyleDefinition
- {
- DECLARE_DYNAMIC_CLASS(wxRichTextBoxStyleDefinition)
- public:
- /// Copy constructor
- wxRichTextBoxStyleDefinition(const wxRichTextBoxStyleDefinition& def): wxRichTextStyleDefinition(def) { Copy(def); }
- /// Default constructor
- wxRichTextBoxStyleDefinition(const wxString& name = wxEmptyString):
- wxRichTextStyleDefinition(name) {}
- // Destructor
- virtual ~wxRichTextBoxStyleDefinition() {}
- /// Copies from def
- void Copy(const wxRichTextBoxStyleDefinition& def);
- /// Assignment operator
- void operator =(const wxRichTextBoxStyleDefinition& def) { Copy(def); }
- /// Equality operator
- bool operator ==(const wxRichTextBoxStyleDefinition& def) const;
- /// Clones the object
- virtual wxRichTextStyleDefinition* Clone() const { return new wxRichTextBoxStyleDefinition(*this); }
- protected:
- };
- /*!
- * The style sheet
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextStyleSheet: public wxObject
- {
- DECLARE_CLASS( wxRichTextStyleSheet )
- public:
- /// Constructors
- wxRichTextStyleSheet(const wxRichTextStyleSheet& sheet)
- : wxObject()
- {
- Init();
- Copy(sheet);
- }
- wxRichTextStyleSheet() { Init(); }
- virtual ~wxRichTextStyleSheet();
- /// Initialisation
- void Init();
- /// Copy
- void Copy(const wxRichTextStyleSheet& sheet);
- /// Assignment
- void operator=(const wxRichTextStyleSheet& sheet) { Copy(sheet); }
- /// Equality
- bool operator==(const wxRichTextStyleSheet& sheet) const;
- /// Add a definition to the character style list
- bool AddCharacterStyle(wxRichTextCharacterStyleDefinition* def);
- /// Add a definition to the paragraph style list
- bool AddParagraphStyle(wxRichTextParagraphStyleDefinition* def);
- /// Add a definition to the list style list
- bool AddListStyle(wxRichTextListStyleDefinition* def);
- /// Add a definition to the box style list
- bool AddBoxStyle(wxRichTextBoxStyleDefinition* def);
- /// Add a definition to the appropriate style list
- bool AddStyle(wxRichTextStyleDefinition* def);
- /// Remove a character style
- bool RemoveCharacterStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false) { return RemoveStyle(m_characterStyleDefinitions, def, deleteStyle); }
- /// Remove a paragraph style
- bool RemoveParagraphStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false) { return RemoveStyle(m_paragraphStyleDefinitions, def, deleteStyle); }
- /// Remove a list style
- bool RemoveListStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false) { return RemoveStyle(m_listStyleDefinitions, def, deleteStyle); }
- /// Remove a box style
- bool RemoveBoxStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false) { return RemoveStyle(m_boxStyleDefinitions, def, deleteStyle); }
- /// Remove a style
- bool RemoveStyle(wxRichTextStyleDefinition* def, bool deleteStyle = false);
- /// Find a character definition by name
- wxRichTextCharacterStyleDefinition* FindCharacterStyle(const wxString& name, bool recurse = true) const { return (wxRichTextCharacterStyleDefinition*) FindStyle(m_characterStyleDefinitions, name, recurse); }
- /// Find a paragraph definition by name
- wxRichTextParagraphStyleDefinition* FindParagraphStyle(const wxString& name, bool recurse = true) const { return (wxRichTextParagraphStyleDefinition*) FindStyle(m_paragraphStyleDefinitions, name, recurse); }
- /// Find a list definition by name
- wxRichTextListStyleDefinition* FindListStyle(const wxString& name, bool recurse = true) const { return (wxRichTextListStyleDefinition*) FindStyle(m_listStyleDefinitions, name, recurse); }
- /// Find a box definition by name
- wxRichTextBoxStyleDefinition* FindBoxStyle(const wxString& name, bool recurse = true) const { return (wxRichTextBoxStyleDefinition*) FindStyle(m_boxStyleDefinitions, name, recurse); }
- /// Find any definition by name
- wxRichTextStyleDefinition* FindStyle(const wxString& name, bool recurse = true) const;
- /// Return the number of character styles
- size_t GetCharacterStyleCount() const { return m_characterStyleDefinitions.GetCount(); }
- /// Return the number of paragraph styles
- size_t GetParagraphStyleCount() const { return m_paragraphStyleDefinitions.GetCount(); }
- /// Return the number of list styles
- size_t GetListStyleCount() const { return m_listStyleDefinitions.GetCount(); }
- /// Return the number of box styles
- size_t GetBoxStyleCount() const { return m_boxStyleDefinitions.GetCount(); }
- /// Return the nth character style
- wxRichTextCharacterStyleDefinition* GetCharacterStyle(size_t n) const { return (wxRichTextCharacterStyleDefinition*) m_characterStyleDefinitions.Item(n)->GetData(); }
- /// Return the nth paragraph style
- wxRichTextParagraphStyleDefinition* GetParagraphStyle(size_t n) const { return (wxRichTextParagraphStyleDefinition*) m_paragraphStyleDefinitions.Item(n)->GetData(); }
- /// Return the nth list style
- wxRichTextListStyleDefinition* GetListStyle(size_t n) const { return (wxRichTextListStyleDefinition*) m_listStyleDefinitions.Item(n)->GetData(); }
- /// Return the nth box style
- wxRichTextBoxStyleDefinition* GetBoxStyle(size_t n) const { return (wxRichTextBoxStyleDefinition*) m_boxStyleDefinitions.Item(n)->GetData(); }
- /// Delete all styles
- void DeleteStyles();
- /// Insert into list of style sheets
- bool InsertSheet(wxRichTextStyleSheet* before);
- /// Append to list of style sheets
- bool AppendSheet(wxRichTextStyleSheet* after);
- /// Unlink from the list of style sheets
- void Unlink();
- /// Get/set next sheet
- wxRichTextStyleSheet* GetNextSheet() const { return m_nextSheet; }
- void SetNextSheet(wxRichTextStyleSheet* sheet) { m_nextSheet = sheet; }
- /// Get/set previous sheet
- wxRichTextStyleSheet* GetPreviousSheet() const { return m_previousSheet; }
- void SetPreviousSheet(wxRichTextStyleSheet* sheet) { m_previousSheet = sheet; }
- /// Sets and gets the name of the style sheet
- void SetName(const wxString& name) { m_name = name; }
- const wxString& GetName() const { return m_name; }
- /// Sets and gets the style description
- void SetDescription(const wxString& descr) { m_description = descr; }
- const wxString& GetDescription() const { return m_description; }
- /**
- Returns the sheet's properties.
- */
- wxRichTextProperties& GetProperties() { return m_properties; }
- /**
- Returns the sheet's properties.
- */
- const wxRichTextProperties& GetProperties() const { return m_properties; }
- /**
- Sets the sheet's properties.
- */
- void SetProperties(const wxRichTextProperties& props) { m_properties = props; }
- /// Implementation
- /// Add a definition to one of the style lists
- bool AddStyle(wxList& list, wxRichTextStyleDefinition* def);
- /// Remove a style
- bool RemoveStyle(wxList& list, wxRichTextStyleDefinition* def, bool deleteStyle);
- /// Find a definition by name
- wxRichTextStyleDefinition* FindStyle(const wxList& list, const wxString& name, bool recurse = true) const;
- protected:
- wxString m_description;
- wxString m_name;
- wxList m_characterStyleDefinitions;
- wxList m_paragraphStyleDefinitions;
- wxList m_listStyleDefinitions;
- wxList m_boxStyleDefinitions;
- wxRichTextStyleSheet* m_previousSheet;
- wxRichTextStyleSheet* m_nextSheet;
- wxRichTextProperties m_properties;
- };
- #if wxUSE_HTML
- /*!
- * wxRichTextStyleListBox class declaration
- * A listbox to display styles.
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextStyleListBox: public wxHtmlListBox
- {
- DECLARE_CLASS(wxRichTextStyleListBox)
- DECLARE_EVENT_TABLE()
- 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
- };
- wxRichTextStyleListBox()
- {
- Init();
- }
- wxRichTextStyleListBox(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0);
- virtual ~wxRichTextStyleListBox();
- void Init()
- {
- m_styleSheet = NULL;
- m_richTextCtrl = NULL;
- m_applyOnSelection = false;
- m_styleType = wxRICHTEXT_STYLE_PARAGRAPH;
- m_autoSetSelection = true;
- }
- bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0);
- /// Creates a suitable HTML fragment for a definition
- wxString CreateHTML(wxRichTextStyleDefinition* def) const;
- /// Associates the control with a style sheet
- void SetStyleSheet(wxRichTextStyleSheet* styleSheet) { m_styleSheet = styleSheet; }
- wxRichTextStyleSheet* GetStyleSheet() const { return m_styleSheet; }
- /// Associates the control with a wxRichTextCtrl
- void SetRichTextCtrl(wxRichTextCtrl* ctrl) { m_richTextCtrl = ctrl; }
- wxRichTextCtrl* GetRichTextCtrl() const { return m_richTextCtrl; }
- /// Get style for index
- wxRichTextStyleDefinition* GetStyle(size_t i) const ;
- /// Get index for style name
- int GetIndexForStyle(const wxString& name) const ;
- /// Set selection for string, returning the index.
- int SetStyleSelection(const wxString& name);
- /// Updates the list
- void UpdateStyles();
- /// Apply the style
- void ApplyStyle(int i);
- /// Left click
- void OnLeftDown(wxMouseEvent& event);
- /// Left double-click
- void OnLeftDoubleClick(wxMouseEvent& event);
- /// Auto-select from style under caret in idle time
- void OnIdle(wxIdleEvent& event);
- /// Convert units in tends of a millimetre to device units
- int ConvertTenthsMMToPixels(wxDC& dc, int units) const;
- /// Can we set the selection based on the editor caret position?
- /// Need to override this if being used in a combobox popup
- virtual bool CanAutoSetSelection() { return m_autoSetSelection; }
- virtual void SetAutoSetSelection(bool autoSet) { m_autoSetSelection = autoSet; }
- /// Set whether the style should be applied as soon as the item is selected (the default)
- void SetApplyOnSelection(bool applyOnSel) { m_applyOnSelection = applyOnSel; }
- bool GetApplyOnSelection() const { return m_applyOnSelection; }
- /// Set the style type to display
- void SetStyleType(wxRichTextStyleType styleType) { m_styleType = styleType; UpdateStyles(); }
- wxRichTextStyleType GetStyleType() const { return m_styleType; }
- /// Helper for listbox and combo control
- static wxString GetStyleToShowInIdleTime(wxRichTextCtrl* ctrl, wxRichTextStyleType styleType);
- protected:
- /// Returns the HTML for this item
- virtual wxString OnGetItem(size_t n) const;
- private:
- wxRichTextStyleSheet* m_styleSheet;
- wxRichTextCtrl* m_richTextCtrl;
- bool m_applyOnSelection; // if true, applies style on selection
- wxRichTextStyleType m_styleType; // style type to display
- bool m_autoSetSelection;
- wxArrayString m_styleNames;
- };
- /*!
- * wxRichTextStyleListCtrl class declaration
- * This is a container for the list control plus a combobox to switch between
- * style types.
- */
- #define wxRICHTEXTSTYLELIST_HIDE_TYPE_SELECTOR 0x1000
- class WXDLLIMPEXP_RICHTEXT wxRichTextStyleListCtrl: public wxControl
- {
- DECLARE_CLASS(wxRichTextStyleListCtrl)
- DECLARE_EVENT_TABLE()
- public:
- /// Constructors
- wxRichTextStyleListCtrl()
- {
- Init();
- }
- wxRichTextStyleListCtrl(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0);
- /// Constructors
- virtual ~wxRichTextStyleListCtrl();
- /// Member initialisation
- void Init()
- {
- m_styleListBox = NULL;
- m_styleChoice = NULL;
- m_dontUpdate = false;
- }
- /// Creates the windows
- bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0);
- /// Updates the style list box
- void UpdateStyles();
- /// Associates the control with a style sheet
- void SetStyleSheet(wxRichTextStyleSheet* styleSheet);
- wxRichTextStyleSheet* GetStyleSheet() const;
- /// Associates the control with a wxRichTextCtrl
- void SetRichTextCtrl(wxRichTextCtrl* ctrl);
- wxRichTextCtrl* GetRichTextCtrl() const;
- /// Set/get the style type to display
- void SetStyleType(wxRichTextStyleListBox::wxRichTextStyleType styleType);
- wxRichTextStyleListBox::wxRichTextStyleType GetStyleType() const;
- /// Get the choice index for style type
- int StyleTypeToIndex(wxRichTextStyleListBox::wxRichTextStyleType styleType);
- /// Get the style type for choice index
- wxRichTextStyleListBox::wxRichTextStyleType StyleIndexToType(int i);
- /// Get the listbox
- wxRichTextStyleListBox* GetStyleListBox() const { return m_styleListBox; }
- /// Get the choice
- wxChoice* GetStyleChoice() const { return m_styleChoice; }
- /// React to style type choice
- void OnChooseType(wxCommandEvent& event);
- /// Lay out the controls
- void OnSize(wxSizeEvent& event);
- private:
- wxRichTextStyleListBox* m_styleListBox;
- wxChoice* m_styleChoice;
- bool m_dontUpdate;
- };
- #if wxUSE_COMBOCTRL
- /*!
- * Style drop-down for a wxComboCtrl
- */
- class wxRichTextStyleComboPopup : public wxRichTextStyleListBox, public wxComboPopup
- {
- public:
- virtual void Init()
- {
- m_itemHere = -1; // hot item in list
- m_value = -1;
- }
- virtual bool Create( wxWindow* parent );
- virtual wxWindow *GetControl() { return this; }
- virtual void SetStringValue( const wxString& s );
- virtual wxString GetStringValue() const;
- /// Can we set the selection based on the editor caret position?
- // virtual bool CanAutoSetSelection() { return ((m_combo == NULL) || !m_combo->IsPopupShown()); }
- virtual bool CanAutoSetSelection() { return false; }
- //
- // Popup event handlers
- //
- // Mouse hot-tracking
- void OnMouseMove(wxMouseEvent& event);
- // On mouse left, set the value and close the popup
- void OnMouseClick(wxMouseEvent& WXUNUSED(event));
- protected:
- int m_itemHere; // hot item in popup
- int m_value;
- private:
- DECLARE_EVENT_TABLE()
- };
- /*!
- * wxRichTextStyleComboCtrl
- * A combo for applying styles.
- */
- class WXDLLIMPEXP_RICHTEXT wxRichTextStyleComboCtrl: public wxComboCtrl
- {
- DECLARE_CLASS(wxRichTextStyleComboCtrl)
- DECLARE_EVENT_TABLE()
- public:
- wxRichTextStyleComboCtrl()
- {
- Init();
- }
- wxRichTextStyleComboCtrl(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = wxCB_READONLY)
- {
- Init();
- Create(parent, id, pos, size, style);
- }
- virtual ~wxRichTextStyleComboCtrl() {}
- void Init()
- {
- m_stylePopup = NULL;
- }
- bool Create(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition,
- const wxSize& size = wxDefaultSize, long style = 0);
- /// Updates the list
- void UpdateStyles() { m_stylePopup->UpdateStyles(); }
- /// Associates the control with a style sheet
- void SetStyleSheet(wxRichTextStyleSheet* styleSheet) { m_stylePopup->SetStyleSheet(styleSheet); }
- wxRichTextStyleSheet* GetStyleSheet() const { return m_stylePopup->GetStyleSheet(); }
- /// Associates the control with a wxRichTextCtrl
- void SetRichTextCtrl(wxRichTextCtrl* ctrl) { m_stylePopup->SetRichTextCtrl(ctrl); }
- wxRichTextCtrl* GetRichTextCtrl() const { return m_stylePopup->GetRichTextCtrl(); }
- /// Gets the style popup
- wxRichTextStyleComboPopup* GetStylePopup() const { return m_stylePopup; }
- /// Auto-select from style under caret in idle time
- void OnIdle(wxIdleEvent& event);
- protected:
- wxRichTextStyleComboPopup* m_stylePopup;
- };
- #endif
- // wxUSE_COMBOCTRL
- #endif
- // wxUSE_HTML
- #endif
- // wxUSE_RICHTEXT
- #endif
- // _WX_RICHTEXTSTYLES_H_
|