1 /////////////////////////////////////////////////////////////////////////////
2 // Name:        wx/richtext/richtextstyledlg.h
3 // Purpose:
4 // Author:      Julian Smart
5 // Modified by:
6 // Created:     10/5/2006 12:05:31 PM
7 // RCS-ID:      $Id: richtextstyledlg.h 52117 2008-02-26 15:04:54Z JS $
8 // Copyright:   (c) Julian Smart
9 // Licence:     wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11 
12 #ifndef _RICHTEXTSTYLEDLG_H_
13 #define _RICHTEXTSTYLEDLG_H_
14 
15 /*!
16  * Includes
17  */
18 
19 ////@begin includes
20 ////@end includes
21 
22 #include "wx/richtext/richtextbuffer.h"
23 #include "wx/richtext/richtextstyles.h"
24 #include "wx/richtext/richtextctrl.h"
25 
26 /*!
27  * Forward declarations
28  */
29 
30 ////@begin forward declarations
31 class wxBoxSizer;
32 class wxRichTextStyleListCtrl;
33 class wxRichTextCtrl;
34 ////@end forward declarations
35 
36 class WXDLLIMPEXP_FWD_CORE wxButton;
37 class WXDLLIMPEXP_FWD_CORE wxCheckBox;
38 
39 /*!
40  * Control identifiers
41  */
42 
43 ////@begin control identifiers
44 #define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_STYLE wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER|wxSYSTEM_MENU|wxCLOSE_BOX
45 #define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_TITLE _("Style Organiser")
46 #define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_IDNAME ID_RICHTEXTSTYLEORGANISERDIALOG
47 #define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_SIZE wxSize(400, 300)
48 #define SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_POSITION wxDefaultPosition
49 ////@end control identifiers
50 
51 /*!
52  * Flags for specifying permitted operations
53  */
54 
55 #define wxRICHTEXT_ORGANISER_DELETE_STYLES  0x0001
56 #define wxRICHTEXT_ORGANISER_CREATE_STYLES  0x0002
57 #define wxRICHTEXT_ORGANISER_APPLY_STYLES   0x0004
58 #define wxRICHTEXT_ORGANISER_EDIT_STYLES    0x0008
59 #define wxRICHTEXT_ORGANISER_RENAME_STYLES  0x0010
60 #define wxRICHTEXT_ORGANISER_OK_CANCEL      0x0020
61 #define wxRICHTEXT_ORGANISER_RENUMBER       0x0040
62 
63 // The permitted style types to show
64 #define wxRICHTEXT_ORGANISER_SHOW_CHARACTER 0x0100
65 #define wxRICHTEXT_ORGANISER_SHOW_PARAGRAPH 0x0200
66 #define wxRICHTEXT_ORGANISER_SHOW_LIST      0x0400
67 #define wxRICHTEXT_ORGANISER_SHOW_ALL       0x0800
68 
69 // Common combinations
70 #define wxRICHTEXT_ORGANISER_ORGANISE (wxRICHTEXT_ORGANISER_SHOW_ALL|wxRICHTEXT_ORGANISER_DELETE_STYLES|wxRICHTEXT_ORGANISER_CREATE_STYLES|wxRICHTEXT_ORGANISER_APPLY_STYLES|wxRICHTEXT_ORGANISER_EDIT_STYLES|wxRICHTEXT_ORGANISER_RENAME_STYLES)
71 #define wxRICHTEXT_ORGANISER_BROWSE (wxRICHTEXT_ORGANISER_SHOW_ALL|wxRICHTEXT_ORGANISER_OK_CANCEL)
72 #define wxRICHTEXT_ORGANISER_BROWSE_NUMBERING (wxRICHTEXT_ORGANISER_SHOW_LIST|wxRICHTEXT_ORGANISER_OK_CANCEL|wxRICHTEXT_ORGANISER_RENUMBER)
73 
74 /*!
75  * wxRichTextStyleOrganiserDialog class declaration
76  */
77 
78 class WXDLLIMPEXP_RICHTEXT wxRichTextStyleOrganiserDialog: public wxDialog
79 {
80     DECLARE_DYNAMIC_CLASS( wxRichTextStyleOrganiserDialog )
81     DECLARE_EVENT_TABLE()
82 
83 public:
84     /// Constructors
85     wxRichTextStyleOrganiserDialog( );
86     wxRichTextStyleOrganiserDialog( int flags, wxRichTextStyleSheet* sheet, wxRichTextCtrl* ctrl, wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& caption = SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_TITLE, const wxPoint& pos = SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_SIZE, long style = SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_STYLE );
87 
88     /// Creation
89     bool Create( int flags, wxRichTextStyleSheet* sheet, wxRichTextCtrl* ctrl, wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& caption = SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_TITLE, const wxPoint& pos = SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_POSITION, const wxSize& size = SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_SIZE, long style = SYMBOL_WXRICHTEXTSTYLEORGANISERDIALOG_STYLE );
90 
91     /// Creates the controls and sizers
92     void CreateControls();
93 
94     /// Initialise member variables
95     void Init();
96 
97     /// Transfer data from/to window
98     virtual bool TransferDataFromWindow();
99     virtual bool TransferDataToWindow();
100 
101     /// Set/get style sheet
SetStyleSheet(wxRichTextStyleSheet * sheet)102     void SetStyleSheet(wxRichTextStyleSheet* sheet) { m_richTextStyleSheet = sheet; }
GetStyleSheet()103     wxRichTextStyleSheet* GetStyleSheet() const { return m_richTextStyleSheet; }
104 
105     /// Set/get control
SetRichTextCtrl(wxRichTextCtrl * ctrl)106     void SetRichTextCtrl(wxRichTextCtrl* ctrl) { m_richTextCtrl = ctrl; }
GetRichTextCtrl()107     wxRichTextCtrl* GetRichTextCtrl() const { return m_richTextCtrl; }
108 
109     /// Set/get flags
SetFlags(int flags)110     void SetFlags(int flags) { m_flags = flags; }
GetFlags()111     int GetFlags() const { return m_flags; }
112 
113     /// Show preview for given or selected preview
114     void ShowPreview(int sel = -1);
115 
116     /// Clears the preview
117     void ClearPreview();
118 
119     /// List selection
120     void OnListSelection(wxCommandEvent& event);
121 
122     /// Get/set restart numbering boolean
GetRestartNumbering()123     bool GetRestartNumbering() const { return m_restartNumbering; }
SetRestartNumbering(bool restartNumbering)124     void SetRestartNumbering(bool restartNumbering) { m_restartNumbering = restartNumbering; }
125 
126     /// Get selected style name or definition
127     wxString GetSelectedStyle() const;
128     wxRichTextStyleDefinition* GetSelectedStyleDefinition() const;
129 
130     /// Apply the style
131     bool ApplyStyle(wxRichTextCtrl* ctrl = NULL);
132 
133     /// Should we show tooltips?
ShowToolTips()134     static bool ShowToolTips() { return sm_showToolTips; }
135 
136     /// Determines whether tooltips will be shown
SetShowToolTips(bool show)137     static void SetShowToolTips(bool show) { sm_showToolTips = show; }
138 
139 ////@begin wxRichTextStyleOrganiserDialog event handler declarations
140 
141     /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_CHAR
142     void OnNewCharClick( wxCommandEvent& event );
143 
144     /// wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_CHAR
145     void OnNewCharUpdate( wxUpdateUIEvent& event );
146 
147     /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_PARA
148     void OnNewParaClick( wxCommandEvent& event );
149 
150     /// wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_PARA
151     void OnNewParaUpdate( wxUpdateUIEvent& event );
152 
153     /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_LIST
154     void OnNewListClick( wxCommandEvent& event );
155 
156     /// wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_LIST
157     void OnNewListUpdate( wxUpdateUIEvent& event );
158 
159     /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_APPLY
160     void OnApplyClick( wxCommandEvent& event );
161 
162     /// wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_APPLY
163     void OnApplyUpdate( wxUpdateUIEvent& event );
164 
165     /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_RENAME
166     void OnRenameClick( wxCommandEvent& event );
167 
168     /// wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_RENAME
169     void OnRenameUpdate( wxUpdateUIEvent& event );
170 
171     /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_EDIT
172     void OnEditClick( wxCommandEvent& event );
173 
174     /// wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_EDIT
175     void OnEditUpdate( wxUpdateUIEvent& event );
176 
177     /// wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_DELETE
178     void OnDeleteClick( wxCommandEvent& event );
179 
180     /// wxEVT_UPDATE_UI event handler for ID_RICHTEXTSTYLEORGANISERDIALOG_DELETE
181     void OnDeleteUpdate( wxUpdateUIEvent& event );
182 
183 ////@end wxRichTextStyleOrganiserDialog event handler declarations
184 
185 ////@begin wxRichTextStyleOrganiserDialog member function declarations
186 
187     /// Retrieves bitmap resources
188     wxBitmap GetBitmapResource( const wxString& name );
189 
190     /// Retrieves icon resources
191     wxIcon GetIconResource( const wxString& name );
192 ////@end wxRichTextStyleOrganiserDialog member function declarations
193 
194 ////@begin wxRichTextStyleOrganiserDialog member variables
195     wxBoxSizer* m_innerSizer;
196     wxBoxSizer* m_buttonSizerParent;
197     wxRichTextStyleListCtrl* m_stylesListBox;
198     wxRichTextCtrl* m_previewCtrl;
199     wxBoxSizer* m_buttonSizer;
200     wxButton* m_newCharacter;
201     wxButton* m_newParagraph;
202     wxButton* m_newList;
203     wxButton* m_applyStyle;
204     wxButton* m_renameStyle;
205     wxButton* m_editStyle;
206     wxButton* m_deleteStyle;
207     wxButton* m_closeButton;
208     wxBoxSizer* m_bottomButtonSizer;
209     wxCheckBox* m_restartNumberingCtrl;
210     wxButton* m_okButton;
211     wxButton* m_cancelButton;
212     /// Control identifiers
213     enum {
214         ID_RICHTEXTSTYLEORGANISERDIALOG = 10500,
215         ID_RICHTEXTSTYLEORGANISERDIALOG_STYLES = 10501,
216         ID_RICHTEXTSTYLEORGANISERDIALOG_CURRENT_STYLE = 10510,
217         ID_RICHTEXTSTYLEORGANISERDIALOG_PREVIEW = 10509,
218         ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_CHAR = 10504,
219         ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_PARA = 10505,
220         ID_RICHTEXTSTYLEORGANISERDIALOG_NEW_LIST = 10508,
221         ID_RICHTEXTSTYLEORGANISERDIALOG_APPLY = 10503,
222         ID_RICHTEXTSTYLEORGANISERDIALOG_RENAME = 10502,
223         ID_RICHTEXTSTYLEORGANISERDIALOG_EDIT = 10506,
224         ID_RICHTEXTSTYLEORGANISERDIALOG_DELETE = 10507,
225         ID_RICHTEXTSTYLEORGANISERDIALOG_RESTART_NUMBERING = 10511
226     };
227 ////@end wxRichTextStyleOrganiserDialog member variables
228 
229 private:
230 
231     wxRichTextCtrl*         m_richTextCtrl;
232     wxRichTextStyleSheet*   m_richTextStyleSheet;
233 
234     bool                    m_dontUpdate;
235     int                     m_flags;
236     static bool             sm_showToolTips;
237     bool                    m_restartNumbering;
238 };
239 
240 #endif
241     // _RICHTEXTSTYLEDLG_H_
242