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