X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/42688aea2d1703c2942e281658ca8183f728f8fa..0a7ee6e0f400f0d10b158bc0396be22f59d6ad8f:/include/wx/richtext/richtextformatdlg.h diff --git a/include/wx/richtext/richtextformatdlg.h b/include/wx/richtext/richtextformatdlg.h index 0e3aec20ce..ec785a5b00 100644 --- a/include/wx/richtext/richtextformatdlg.h +++ b/include/wx/richtext/richtextformatdlg.h @@ -22,6 +22,7 @@ #include "wx/propdlg.h" #include "wx/bookctrl.h" +#include "wx/withimages.h" #if wxUSE_HTML #include "wx/htmllbox.h" @@ -29,9 +30,11 @@ #include "wx/richtext/richtextbuffer.h" #include "wx/richtext/richtextstyles.h" +#include "wx/richtext/richtextuicustomization.h" -class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog; -class WXDLLIMPEXP_CORE wxImageList; +class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextFormattingDialog; +class WXDLLIMPEXP_FWD_CORE wxComboBox; +class WXDLLIMPEXP_FWD_CORE wxCheckBox; /*! * Flags determining the pages and buttons to be created in the dialog @@ -43,8 +46,12 @@ class WXDLLIMPEXP_CORE wxImageList; #define wxRICHTEXT_FORMAT_BULLETS 0x0008 #define wxRICHTEXT_FORMAT_INDENTS_SPACING 0x0010 #define wxRICHTEXT_FORMAT_LIST_STYLE 0x0020 +#define wxRICHTEXT_FORMAT_MARGINS 0x0040 +#define wxRICHTEXT_FORMAT_SIZE 0x0080 +#define wxRICHTEXT_FORMAT_BORDERS 0x0100 +#define wxRICHTEXT_FORMAT_BACKGROUND 0x0200 -#define wxRICHTEXT_FORMAT_HELP_BUTTON 0x0100 +#define wxRICHTEXT_FORMAT_HELP_BUTTON 0x1000 /*! * Indices for bullet styles in list control @@ -81,7 +88,7 @@ public: wxRichTextFormattingDialogFactory() {} virtual ~wxRichTextFormattingDialogFactory() {} -// Overrideables +// Overridables /// Create all pages, under the dialog's book control, also calling AddPage virtual bool CreatePages(long pages, wxRichTextFormattingDialog* dialog); @@ -99,7 +106,7 @@ public: virtual int GetPageImage(int WXUNUSED(id)) const { return -1; } /// Invoke help for the dialog - virtual bool ShowHelp(int WXUNUSED(page), wxRichTextFormattingDialog* WXUNUSED(dialog)) { return false; } + virtual bool ShowHelp(int page, wxRichTextFormattingDialog* dialog); /// Set the sheet style, called at the start of wxRichTextFormattingDialog::Create virtual bool SetSheetStyle(wxRichTextFormattingDialog* dialog); @@ -112,13 +119,18 @@ public: * Formatting dialog for a wxRichTextCtrl */ -class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog: public wxPropertySheetDialog +class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog: public wxPropertySheetDialog, + public wxWithImages { DECLARE_CLASS(wxRichTextFormattingDialog) +DECLARE_HELP_PROVISION() + public: + enum { Option_AllowPixelFontSize = 0x0001 }; + wxRichTextFormattingDialog() { Init(); } - wxRichTextFormattingDialog(long flags, wxWindow* parent, const wxString& title = _("Formatting"), wxWindowID id = wxID_ANY, + wxRichTextFormattingDialog(long flags, wxWindow* parent, const wxString& title = wxGetTranslation(wxT("Formatting")), wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE) { @@ -130,7 +142,7 @@ public: void Init(); - bool Create(long flags, wxWindow* parent, const wxString& title = _("Formatting"), wxWindowID id = wxID_ANY, + bool Create(long flags, wxWindow* parent, const wxString& title = wxGetTranslation(wxT("Formatting")), wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = wxDEFAULT_DIALOG_STYLE); @@ -138,7 +150,7 @@ public: virtual bool GetStyle(wxRichTextCtrl* ctrl, const wxRichTextRange& range); /// Set the attributes and optionally update the display - virtual bool SetStyle(const wxTextAttrEx& style, bool update = true); + virtual bool SetStyle(const wxRichTextAttr& style, bool update = true); /// Set the style definition and optionally update the display virtual bool SetStyleDefinition(const wxRichTextStyleDefinition& styleDef, wxRichTextStyleSheet* sheet, bool update = true); @@ -155,10 +167,29 @@ public: /// Apply attributes to the given range virtual bool ApplyStyle(wxRichTextCtrl* ctrl, const wxRichTextRange& range, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO|wxRICHTEXT_SETSTYLE_OPTIMIZE); + /// Apply attributes to the object being edited, if any + virtual bool ApplyStyle(wxRichTextCtrl* ctrl, int flags = wxRICHTEXT_SETSTYLE_WITH_UNDO); + /// Gets and sets the attributes - const wxTextAttrEx& GetAttributes() const { return m_attributes; } - wxTextAttrEx& GetAttributes() { return m_attributes; } - void SetAttributes(const wxTextAttrEx& attr) { m_attributes = attr; } + const wxRichTextAttr& GetAttributes() const { return m_attributes; } + wxRichTextAttr& GetAttributes() { return m_attributes; } + void SetAttributes(const wxRichTextAttr& attr) { m_attributes = attr; } + + /// Sets the dialog options, determining what the interface presents to the user. + /// Currently the only option is Option_AllowPixelFontSize. + void SetOptions(int options) { m_options = options; } + + /// Gets the dialog options, determining what the interface presents to the user. + /// Currently the only option is Option_AllowPixelFontSize. + int GetOptions() const { return m_options; } + + /// Returns @true if the given option is present. + bool HasOption(int option) const { return (m_options & option) != 0; } + + /// If editing the attributes for a particular object, such as an image, + /// set the object so the code can initialize attributes such as size correctly. + wxRichTextObject* GetObject() const { return m_object; } + void SetObject(wxRichTextObject* obj) { m_object = obj; } /// Transfers the data and from to the window virtual bool TransferDataToWindow(); @@ -170,10 +201,7 @@ public: /// Respond to help command void OnHelp(wxCommandEvent& event); - - /// Set/get image list - void SetImageList(wxImageList* imageList) { m_imageList = imageList; } - wxImageList* GetImageList() const { return m_imageList; } + void OnUpdateHelp(wxUpdateUIEvent& event); /// Get/set formatting factory object static void SetFormattingDialogFactory(wxRichTextFormattingDialogFactory* factory); @@ -183,7 +211,10 @@ public: static wxRichTextFormattingDialog* GetDialog(wxWindow* win); /// Helper for pages to get the attributes - static wxTextAttrEx* GetDialogAttributes(wxWindow* win); + static wxRichTextAttr* GetDialogAttributes(wxWindow* win); + + /// Helper for pages to get the reset attributes + static wxRichTextAttr* GetDialogResetAttributes(wxWindow* win); /// Helper for pages to get the style static wxRichTextStyleDefinition* GetDialogStyleDefinition(wxWindow* win); @@ -194,16 +225,29 @@ public: /// Determines whether tooltips will be shown static void SetShowToolTips(bool show) { sm_showToolTips = show; } + /// Set the dimension into the value and units controls + static void SetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox); + + /// Get the dimension from the value and units controls + static void GetDimensionValue(wxTextAttrDimension& dim, wxTextCtrl* valueCtrl, wxComboBox* unitsCtrl, wxCheckBox* checkBox); + + /// Convert CM to MM + static bool ConvertFromString(const wxString& string, int& ret, int scale); + /// Map book control page index to our page id void AddPageId(int id) { m_pageIds.Add(id); } + /// Find a page by class + wxWindow* FindPage(wxClassInfo* info) const; + protected: - wxImageList* m_imageList; - wxTextAttrEx m_attributes; + wxRichTextAttr m_attributes; wxRichTextStyleDefinition* m_styleDefinition; wxRichTextStyleSheet* m_styleSheet; + wxRichTextObject* m_object; wxArrayInt m_pageIds; // mapping of book control indexes to page ids + int m_options; // UI options static wxRichTextFormattingDialogFactory* ms_FormattingDialogFactory; static bool sm_showToolTips; @@ -218,12 +262,7 @@ DECLARE_EVENT_TABLE() class WXDLLIMPEXP_RICHTEXT wxRichTextFontPreviewCtrl : public wxWindow { public: - wxRichTextFontPreviewCtrl(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = 0) : - wxWindow(parent, id, pos, sz, style) - { - SetBackgroundColour(*wxWHITE); - m_textEffects = 0; - } + wxRichTextFontPreviewCtrl(wxWindow *parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& sz = wxDefaultSize, long style = 0); void SetTextEffects(int effects) { m_textEffects = effects; } int GetTextEffects() const { return m_textEffects; }