]> git.saurik.com Git - wxWidgets.git/blobdiff - include/wx/richtext/richtextformatdlg.h
Implement SelectAll for OSX WebKit.
[wxWidgets.git] / include / wx / richtext / richtextformatdlg.h
index 234594ddb81380cca0eea3537997754296874cf1..9b0898e491d19e213ddcc3291a4794e5859727c1 100644 (file)
 #if wxUSE_RICHTEXT
 
 #include "wx/propdlg.h"
+#include "wx/bookctrl.h"
+
 #if wxUSE_HTML
 #include "wx/htmllbox.h"
 #endif
 
 #include "wx/richtext/richtextbuffer.h"
 #include "wx/richtext/richtextstyles.h"
+#include "wx/richtext/richtextuicustomization.h"
 
-class WXDLLEXPORT wxNotebookEvent;
-class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog;
+class WXDLLIMPEXP_FWD_RICHTEXT wxRichTextFormattingDialog;
+class WXDLLIMPEXP_FWD_CORE wxImageList;
+class WXDLLIMPEXP_FWD_CORE wxComboBox;
+class WXDLLIMPEXP_FWD_CORE wxCheckBox;
 
 /*!
- * Flags determining the pages to be created in the dialog
+ * Flags determining the pages and buttons to be created in the dialog
  */
 
 #define wxRICHTEXT_FORMAT_STYLE_EDITOR      0x0001
@@ -40,6 +45,30 @@ class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog;
 #define wxRICHTEXT_FORMAT_TABS              0x0004
 #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       0x1000
+
+/*!
+ * Indices for bullet styles in list control
+ */
+
+enum {
+    wxRICHTEXT_BULLETINDEX_NONE = 0,
+    wxRICHTEXT_BULLETINDEX_ARABIC,
+    wxRICHTEXT_BULLETINDEX_UPPER_CASE,
+    wxRICHTEXT_BULLETINDEX_LOWER_CASE,
+    wxRICHTEXT_BULLETINDEX_UPPER_CASE_ROMAN,
+    wxRICHTEXT_BULLETINDEX_LOWER_CASE_ROMAN,
+    wxRICHTEXT_BULLETINDEX_OUTLINE,
+    wxRICHTEXT_BULLETINDEX_SYMBOL,
+    wxRICHTEXT_BULLETINDEX_BITMAP,
+    wxRICHTEXT_BULLETINDEX_STANDARD
+};
 
 /*!
  * Shorthand for common combinations of pages
@@ -59,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);
@@ -77,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);
@@ -93,10 +122,12 @@ public:
 class WXDLLIMPEXP_RICHTEXT wxRichTextFormattingDialog: public wxPropertySheetDialog
 {
 DECLARE_CLASS(wxRichTextFormattingDialog)
+DECLARE_HELP_PROVISION()
+
 public:
     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)
     {
@@ -108,7 +139,7 @@ public:
 
     void Init();
 
-    bool Create(long flags, wxWindow* parent, const wxString& title, wxWindowID id,
+    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);
 
@@ -116,7 +147,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);
@@ -132,11 +163,24 @@ 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; }
+#if 0
+    /// Gets and sets the attributes that the user wants to reset
+    const wxRichTextAttr& GetResetAttributes() const { return m_resetAttributes; }
+    wxRichTextAttr& GetResetAttributes() { return m_resetAttributes; }
+    void SetResetAttributes(const wxRichTextAttr& attr) { m_resetAttributes = attr; }
+#endif
+    /// 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();
@@ -144,7 +188,11 @@ public:
 
     /// Apply the styles when a different tab is selected, so the previews are
     /// up to date
-    void OnTabChanged(wxNotebookEvent& event);
+    void OnTabChanged(wxBookCtrlEvent& event);
+
+    /// Respond to help command
+    void OnHelp(wxCommandEvent& event);
+    void OnUpdateHelp(wxUpdateUIEvent& event);
 
     /// Set/get image list
     void SetImageList(wxImageList* imageList) { m_imageList = imageList; }
@@ -158,19 +206,47 @@ 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);
 
+    /// Should we show tooltips?
+    static bool ShowToolTips() { return sm_showToolTips; }
+
+    /// 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;
+    //wxRichTextAttr                              m_resetAttributes;
     wxRichTextStyleDefinition*                  m_styleDefinition;
     wxRichTextStyleSheet*                       m_styleSheet;
+    wxRichTextObject*                           m_object;
+    wxArrayInt                                  m_pageIds; // mapping of book control indexes to page ids
 
     static wxRichTextFormattingDialogFactory*   ms_FormattingDialogFactory;
+    static bool                                 sm_showToolTips;
 
 DECLARE_EVENT_TABLE()
 };
@@ -182,13 +258,14 @@ 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);
-    }
+    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; }
 
 private:
+    int m_textEffects;
+
     void OnPaint(wxPaintEvent& event);
     DECLARE_EVENT_TABLE()
 };
@@ -204,7 +281,6 @@ public:
     wxRichTextColourSwatchCtrl(wxWindow* parent, wxWindowID id, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0);
     ~wxRichTextColourSwatchCtrl();
 
-    void OnPaint(wxPaintEvent& event);
     void OnMouseEvent(wxMouseEvent& event);
 
     void SetColour(const wxColour& colour) { m_colour = colour; SetBackgroundColour(m_colour); }
@@ -277,4 +353,3 @@ private:
 
 #endif
     // _WX_RICHTEXTFORMATDLG_H_
-