]> git.saurik.com Git - wxWidgets.git/blame - src/richtext/richtextliststylepage.cpp
replacing old core graphics with new graphics context implementation
[wxWidgets.git] / src / richtext / richtextliststylepage.cpp
CommitLineData
dadd4f55 1/////////////////////////////////////////////////////////////////////////////
41a85215
WS
2// Name: src/richtext/richtextliststylepage.cpp
3// Purpose:
dadd4f55 4// Author: Julian Smart
41a85215 5// Modified by:
dadd4f55 6// Created: 10/18/2006 11:36:37 AM
41a85215 7// RCS-ID: $Id$
dadd4f55 8// Copyright: (c) Julian Smart
41a85215 9// Licence: wxWindows licence
dadd4f55
JS
10/////////////////////////////////////////////////////////////////////////////
11
41a85215 12#include "wx/richtext/richtextliststylepage.h"
dadd4f55
JS
13
14////@begin XPM images
15////@end XPM images
16
17/*!
18 * wxRichTextListStylePage type definition
19 */
20
21IMPLEMENT_DYNAMIC_CLASS( wxRichTextListStylePage, wxPanel )
22
23/*!
24 * wxRichTextListStylePage event table definition
25 */
26
27BEGIN_EVENT_TABLE( wxRichTextListStylePage, wxPanel )
28
29////@begin wxRichTextListStylePage event table entries
30 EVT_SPINCTRL( ID_RICHTEXTLISTSTYLEPAGE_LEVEL, wxRichTextListStylePage::OnLevelUpdated )
31 EVT_SPIN_UP( ID_RICHTEXTLISTSTYLEPAGE_LEVEL, wxRichTextListStylePage::OnLevelUp )
32 EVT_SPIN_DOWN( ID_RICHTEXTLISTSTYLEPAGE_LEVEL, wxRichTextListStylePage::OnLevelDown )
33 EVT_TEXT( ID_RICHTEXTLISTSTYLEPAGE_LEVEL, wxRichTextListStylePage::OnLevelTextUpdated )
34 EVT_UPDATE_UI( ID_RICHTEXTLISTSTYLEPAGE_LEVEL, wxRichTextListStylePage::OnLevelUIUpdate )
35
36 EVT_BUTTON( ID_RICHTEXTLISTSTYLEPAGE_CHOOSE_FONT, wxRichTextListStylePage::OnChooseFontClick )
37
38 EVT_LISTBOX( ID_RICHTEXTLISTSTYLEPAGE_STYLELISTBOX, wxRichTextListStylePage::OnStylelistboxSelected )
39
40 EVT_UPDATE_UI( ID_RICHTEXTLISTSTYLEPAGE_SYMBOLSTATIC, wxRichTextListStylePage::OnSymbolstaticUpdate )
41
42 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextListStylePage::OnSymbolctrlSelected )
43 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextListStylePage::OnSymbolctrlUpdated )
44 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextListStylePage::OnSymbolctrlUIUpdate )
45
46 EVT_BUTTON( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, wxRichTextListStylePage::OnChooseSymbolClick )
47 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, wxRichTextListStylePage::OnChooseSymbolUpdate )
48
49 EVT_COMBOBOX( ID_RICHTEXTLISTSTYLEPAGE_SYMBOLFONTCTRL, wxRichTextListStylePage::OnSymbolfontctrlSelected )
50 EVT_TEXT( ID_RICHTEXTLISTSTYLEPAGE_SYMBOLFONTCTRL, wxRichTextListStylePage::OnSymbolfontctrlUpdated )
51 EVT_UPDATE_UI( ID_RICHTEXTLISTSTYLEPAGE_SYMBOLFONTCTRL, wxRichTextListStylePage::OnSymbolfontctrlUIUpdate )
52
53 EVT_CHECKBOX( ID_RICHTEXTLISTSTYLEPAGE_PARENTHESESCTRL, wxRichTextListStylePage::OnParenthesesctrlClick )
54 EVT_UPDATE_UI( ID_RICHTEXTLISTSTYLEPAGE_PARENTHESESCTRL, wxRichTextListStylePage::OnParenthesesctrlUpdate )
55
56 EVT_CHECKBOX( ID_RICHTEXTLISTSTYLEPAGE_PERIODCTRL, wxRichTextListStylePage::OnPeriodctrlClick )
57 EVT_UPDATE_UI( ID_RICHTEXTLISTSTYLEPAGE_PERIODCTRL, wxRichTextListStylePage::OnPeriodctrlUpdate )
58
59 EVT_RADIOBUTTON( ID_RICHTEXTLISTSTYLEPAGE_ALIGNLEFT, wxRichTextListStylePage::OnRichtextliststylepageAlignleftSelected )
60
61 EVT_RADIOBUTTON( ID_RICHTEXTLISTSTYLEPAGE_ALIGNRIGHT, wxRichTextListStylePage::OnRichtextliststylepageAlignrightSelected )
62
63 EVT_RADIOBUTTON( ID_RICHTEXTLISTSTYLEPAGE_JUSTIFIED, wxRichTextListStylePage::OnRichtextliststylepageJustifiedSelected )
64
65 EVT_RADIOBUTTON( ID_RICHTEXTLISTSTYLEPAGE_CENTERED, wxRichTextListStylePage::OnRichtextliststylepageCenteredSelected )
66
67 EVT_RADIOBUTTON( ID_RICHTEXTLISTSTYLEPAGE_ALIGNINDETERMINATE, wxRichTextListStylePage::OnRichtextliststylepageAlignindeterminateSelected )
68
69 EVT_TEXT( ID_RICHTEXTLISTSTYLEPAGE_INDENTLEFT, wxRichTextListStylePage::OnIndentLeftUpdated )
70
71 EVT_TEXT( ID_RICHTEXTLISTSTYLEPAGE_INDENTFIRSTLINE, wxRichTextListStylePage::OnIndentFirstLineUpdated )
72
73 EVT_TEXT( ID_RICHTEXTLISTSTYLEPAGE_INDENTRIGHT, wxRichTextListStylePage::OnIndentRightUpdated )
74
75 EVT_TEXT( ID_RICHTEXTLISTSTYLEPAGE_SPACINGBEFORE, wxRichTextListStylePage::OnSpacingBeforeUpdated )
76
77 EVT_TEXT( ID_RICHTEXTLISTSTYLEPAGE_SPACINGAFTER, wxRichTextListStylePage::OnSpacingAfterUpdated )
78
79 EVT_COMBOBOX( ID_RICHTEXTLISTSTYLEPAGE_LINESPACING, wxRichTextListStylePage::OnLineSpacingSelected )
80
81////@end wxRichTextListStylePage event table entries
82
83END_EVENT_TABLE()
84
85/*!
86 * wxRichTextListStylePage constructors
87 */
88
89wxRichTextListStylePage::wxRichTextListStylePage( )
90{
91 Init();
92}
93
94wxRichTextListStylePage::wxRichTextListStylePage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
95{
96 Init();
97 Create(parent, id, pos, size, style);
98}
99
100/*!
101 * wxRichTextListStylePage creator
102 */
103
104bool wxRichTextListStylePage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
105{
106////@begin wxRichTextListStylePage creation
107 wxPanel::Create( parent, id, pos, size, style );
108
109 CreateControls();
110 if (GetSizer())
111 {
112 GetSizer()->SetSizeHints(this);
113 }
114 Centre();
115////@end wxRichTextListStylePage creation
116 return true;
117}
118
119/*!
41a85215 120 * Member initialisation
dadd4f55
JS
121 */
122
123void wxRichTextListStylePage::Init()
124{
125 m_dontUpdate = false;
126 m_currentLevel = 1;
127
128////@begin wxRichTextListStylePage member initialisation
129 m_levelCtrl = NULL;
130 m_styleListBox = NULL;
131 m_symbolCtrl = NULL;
132 m_symbolFontCtrl = NULL;
133 m_parenthesesCtrl = NULL;
134 m_periodCtrl = NULL;
135 m_alignmentLeft = NULL;
136 m_alignmentRight = NULL;
137 m_alignmentJustified = NULL;
138 m_alignmentCentred = NULL;
139 m_alignmentIndeterminate = NULL;
140 m_indentLeft = NULL;
141 m_indentLeftFirst = NULL;
142 m_indentRight = NULL;
143 m_spacingBefore = NULL;
144 m_spacingAfter = NULL;
145 m_spacingLine = NULL;
146 m_previewCtrl = NULL;
147////@end wxRichTextListStylePage member initialisation
148}
149/*!
150 * Control creation for wxRichTextListStylePage
151 */
152
153void wxRichTextListStylePage::CreateControls()
41a85215 154{
dadd4f55
JS
155////@begin wxRichTextListStylePage content construction
156 wxRichTextListStylePage* itemPanel1 = this;
157
158 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
159 itemPanel1->SetSizer(itemBoxSizer2);
160
161 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
162 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
163
164 wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
165 itemBoxSizer3->Add(itemBoxSizer4, 0, wxALIGN_CENTER_HORIZONTAL, 5);
166
167 wxStaticText* itemStaticText5 = new wxStaticText( itemPanel1, wxID_STATIC, _("&List level:"), wxDefaultPosition, wxDefaultSize, 0 );
168 itemBoxSizer4->Add(itemStaticText5, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
169
170 m_levelCtrl = new wxSpinCtrl( itemPanel1, ID_RICHTEXTLISTSTYLEPAGE_LEVEL, _T("1"), wxDefaultPosition, wxSize(60, -1), wxSP_ARROW_KEYS, 1, 10, 1 );
171 m_levelCtrl->SetHelpText(_("Selects the list level to edit."));
172 if (ShowToolTips())
173 m_levelCtrl->SetToolTip(_("Selects the list level to edit."));
174 itemBoxSizer4->Add(m_levelCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
175
176 itemBoxSizer4->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
177
178 wxButton* itemButton8 = new wxButton( itemPanel1, ID_RICHTEXTLISTSTYLEPAGE_CHOOSE_FONT, _("&Font for Level..."), wxDefaultPosition, wxDefaultSize, 0 );
179 itemButton8->SetHelpText(_("Click to choose the font for this level."));
180 if (ShowToolTips())
181 itemButton8->SetToolTip(_("Click to choose the font for this level."));
182 itemBoxSizer4->Add(itemButton8, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
183
9c08a816 184 wxNotebook* itemNotebook9 = new wxNotebook( itemPanel1, ID_RICHTEXTLISTSTYLEPAGE_NOTEBOOK, wxDefaultPosition, wxDefaultSize, wxBK_TOP );
dadd4f55
JS
185
186 wxPanel* itemPanel10 = new wxPanel( itemNotebook9, ID_RICHTEXTLISTSTYLEPAGE_BULLETS, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL );
187 wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
188 itemPanel10->SetSizer(itemBoxSizer11);
189
190 wxBoxSizer* itemBoxSizer12 = new wxBoxSizer(wxHORIZONTAL);
191 itemBoxSizer11->Add(itemBoxSizer12, 1, wxGROW, 5);
192 wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxVERTICAL);
193 itemBoxSizer12->Add(itemBoxSizer13, 0, wxGROW, 5);
194 wxStaticText* itemStaticText14 = new wxStaticText( itemPanel10, wxID_STATIC, _("&Bullet style:"), wxDefaultPosition, wxDefaultSize, 0 );
195 itemBoxSizer13->Add(itemStaticText14, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
196
197 wxString* m_styleListBoxStrings = NULL;
198 m_styleListBox = new wxListBox( itemPanel10, ID_RICHTEXTLISTSTYLEPAGE_STYLELISTBOX, wxDefaultPosition, wxDefaultSize, 0, m_styleListBoxStrings, wxLB_SINGLE );
199 m_styleListBox->SetHelpText(_("The available bullet styles."));
200 if (ShowToolTips())
201 m_styleListBox->SetToolTip(_("The available bullet styles."));
202 itemBoxSizer13->Add(m_styleListBox, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
203
204 itemBoxSizer12->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
205
206 wxStaticLine* itemStaticLine17 = new wxStaticLine( itemPanel10, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
207 itemBoxSizer12->Add(itemStaticLine17, 0, wxGROW|wxALL, 5);
208
209 itemBoxSizer12->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
210
211 wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxVERTICAL);
212 itemBoxSizer12->Add(itemBoxSizer19, 0, wxGROW, 5);
213 wxStaticText* itemStaticText20 = new wxStaticText( itemPanel10, ID_RICHTEXTLISTSTYLEPAGE_SYMBOLSTATIC, _("&Symbol:"), wxDefaultPosition, wxDefaultSize, 0 );
214 itemBoxSizer19->Add(itemStaticText20, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
215
216 wxBoxSizer* itemBoxSizer21 = new wxBoxSizer(wxHORIZONTAL);
217 itemBoxSizer19->Add(itemBoxSizer21, 0, wxGROW, 5);
218 wxString* m_symbolCtrlStrings = NULL;
41a85215 219 m_symbolCtrl = new wxComboBox( itemPanel10, ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxEmptyString, wxDefaultPosition, wxSize(60, -1), 0, m_symbolCtrlStrings, wxCB_DROPDOWN );
dadd4f55
JS
220 m_symbolCtrl->SetHelpText(_("The bullet character."));
221 if (ShowToolTips())
222 m_symbolCtrl->SetToolTip(_("The bullet character."));
223 itemBoxSizer21->Add(m_symbolCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxFIXED_MINSIZE, 5);
224
225 wxButton* itemButton23 = new wxButton( itemPanel10, ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, _("Ch&oose..."), wxDefaultPosition, wxDefaultSize, 0 );
226 itemButton23->SetHelpText(_("Click to browse for a symbol."));
227 if (ShowToolTips())
228 itemButton23->SetToolTip(_("Click to browse for a symbol."));
229 itemBoxSizer21->Add(itemButton23, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
230
231 itemBoxSizer19->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
232
233 wxStaticText* itemStaticText25 = new wxStaticText( itemPanel10, ID_RICHTEXTLISTSTYLEPAGE_SYMBOLSTATIC, _("Symbol &font:"), wxDefaultPosition, wxDefaultSize, 0 );
234 itemBoxSizer19->Add(itemStaticText25, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
235
236 wxString* m_symbolFontCtrlStrings = NULL;
41a85215 237 m_symbolFontCtrl = new wxComboBox( itemPanel10, ID_RICHTEXTLISTSTYLEPAGE_SYMBOLFONTCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, m_symbolFontCtrlStrings, wxCB_DROPDOWN );
dadd4f55
JS
238 if (ShowToolTips())
239 m_symbolFontCtrl->SetToolTip(_("Available fonts."));
240 itemBoxSizer19->Add(m_symbolFontCtrl, 0, wxGROW|wxALL, 5);
241
242 itemBoxSizer12->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
243
244 wxStaticLine* itemStaticLine28 = new wxStaticLine( itemPanel10, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
245 itemBoxSizer12->Add(itemStaticLine28, 0, wxGROW|wxALL, 5);
246
247 itemBoxSizer12->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
248
249 wxBoxSizer* itemBoxSizer30 = new wxBoxSizer(wxVERTICAL);
250 itemBoxSizer12->Add(itemBoxSizer30, 0, wxALIGN_TOP|wxRIGHT|wxTOP|wxBOTTOM, 5);
251 m_parenthesesCtrl = new wxCheckBox( itemPanel10, ID_RICHTEXTLISTSTYLEPAGE_PARENTHESESCTRL, _("&Parentheses"), wxDefaultPosition, wxDefaultSize, 0 );
252 m_parenthesesCtrl->SetValue(false);
253 m_parenthesesCtrl->SetHelpText(_("Check to enclose the bullet in parentheses."));
254 if (ShowToolTips())
255 m_parenthesesCtrl->SetToolTip(_("Check to enclose the bullet in parentheses."));
256 itemBoxSizer30->Add(m_parenthesesCtrl, 0, wxALIGN_LEFT|wxALL, 5);
257
258 m_periodCtrl = new wxCheckBox( itemPanel10, ID_RICHTEXTLISTSTYLEPAGE_PERIODCTRL, _("Peri&od"), wxDefaultPosition, wxDefaultSize, 0 );
259 m_periodCtrl->SetValue(false);
260 m_periodCtrl->SetHelpText(_("Check to add a period after the bullet."));
261 if (ShowToolTips())
262 m_periodCtrl->SetToolTip(_("Check to add a period after the bullet."));
263 itemBoxSizer30->Add(m_periodCtrl, 0, wxALIGN_LEFT|wxALL, 5);
264
265 itemNotebook9->AddPage(itemPanel10, _("Bullet style"));
266
267 wxPanel* itemPanel33 = new wxPanel( itemNotebook9, ID_RICHTEXTLISTSTYLEPAGE_SPACING, wxDefaultPosition, wxDefaultSize, wxNO_BORDER|wxTAB_TRAVERSAL );
268 wxBoxSizer* itemBoxSizer34 = new wxBoxSizer(wxVERTICAL);
269 itemPanel33->SetSizer(itemBoxSizer34);
270
271 wxBoxSizer* itemBoxSizer35 = new wxBoxSizer(wxHORIZONTAL);
272 itemBoxSizer34->Add(itemBoxSizer35, 0, wxGROW, 5);
273 wxBoxSizer* itemBoxSizer36 = new wxBoxSizer(wxVERTICAL);
274 itemBoxSizer35->Add(itemBoxSizer36, 0, wxGROW, 5);
275 wxStaticText* itemStaticText37 = new wxStaticText( itemPanel33, wxID_STATIC, _("&Alignment"), wxDefaultPosition, wxDefaultSize, 0 );
276 itemBoxSizer36->Add(itemStaticText37, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
277
278 wxBoxSizer* itemBoxSizer38 = new wxBoxSizer(wxHORIZONTAL);
279 itemBoxSizer36->Add(itemBoxSizer38, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
280 itemBoxSizer38->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL, 5);
281
282 wxBoxSizer* itemBoxSizer40 = new wxBoxSizer(wxVERTICAL);
283 itemBoxSizer38->Add(itemBoxSizer40, 0, wxALIGN_CENTER_VERTICAL|wxTOP, 5);
284 m_alignmentLeft = new wxRadioButton( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_ALIGNLEFT, _("&Left"), wxDefaultPosition, wxDefaultSize, wxRB_GROUP );
285 m_alignmentLeft->SetValue(false);
286 m_alignmentLeft->SetHelpText(_("Left-align text."));
287 if (ShowToolTips())
288 m_alignmentLeft->SetToolTip(_("Left-align text."));
289 itemBoxSizer40->Add(m_alignmentLeft, 0, wxALIGN_LEFT|wxALL, 5);
290
291 m_alignmentRight = new wxRadioButton( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_ALIGNRIGHT, _("&Right"), wxDefaultPosition, wxDefaultSize, 0 );
292 m_alignmentRight->SetValue(false);
293 m_alignmentRight->SetHelpText(_("Right-align text."));
294 if (ShowToolTips())
295 m_alignmentRight->SetToolTip(_("Right-align text."));
296 itemBoxSizer40->Add(m_alignmentRight, 0, wxALIGN_LEFT|wxALL, 5);
297
298 m_alignmentJustified = new wxRadioButton( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_JUSTIFIED, _("&Justified"), wxDefaultPosition, wxDefaultSize, 0 );
299 m_alignmentJustified->SetValue(false);
300 m_alignmentJustified->SetHelpText(_("Justify text left and right."));
301 if (ShowToolTips())
302 m_alignmentJustified->SetToolTip(_("Justify text left and right."));
303 itemBoxSizer40->Add(m_alignmentJustified, 0, wxALIGN_LEFT|wxALL, 5);
304
305 m_alignmentCentred = new wxRadioButton( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_CENTERED, _("Cen&tred"), wxDefaultPosition, wxDefaultSize, 0 );
306 m_alignmentCentred->SetValue(false);
307 m_alignmentCentred->SetHelpText(_("Centre text."));
308 if (ShowToolTips())
309 m_alignmentCentred->SetToolTip(_("Centre text."));
310 itemBoxSizer40->Add(m_alignmentCentred, 0, wxALIGN_LEFT|wxALL, 5);
311
312 m_alignmentIndeterminate = new wxRadioButton( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_ALIGNINDETERMINATE, _("&Indeterminate"), wxDefaultPosition, wxDefaultSize, 0 );
313 m_alignmentIndeterminate->SetValue(false);
314 m_alignmentIndeterminate->SetHelpText(_("Use the current alignment setting."));
315 if (ShowToolTips())
316 m_alignmentIndeterminate->SetToolTip(_("Use the current alignment setting."));
317 itemBoxSizer40->Add(m_alignmentIndeterminate, 0, wxALIGN_LEFT|wxALL, 5);
318
319 itemBoxSizer35->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
320
321 wxStaticLine* itemStaticLine47 = new wxStaticLine( itemPanel33, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
322 itemBoxSizer35->Add(itemStaticLine47, 0, wxGROW|wxLEFT|wxBOTTOM, 5);
323
324 itemBoxSizer35->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
325
326 wxBoxSizer* itemBoxSizer49 = new wxBoxSizer(wxVERTICAL);
327 itemBoxSizer35->Add(itemBoxSizer49, 0, wxGROW, 5);
328 wxStaticText* itemStaticText50 = new wxStaticText( itemPanel33, wxID_STATIC, _("&Indentation (tenths of a mm)"), wxDefaultPosition, wxDefaultSize, 0 );
329 itemBoxSizer49->Add(itemStaticText50, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
330
331 wxBoxSizer* itemBoxSizer51 = new wxBoxSizer(wxHORIZONTAL);
332 itemBoxSizer49->Add(itemBoxSizer51, 0, wxALIGN_LEFT|wxALL, 5);
333 itemBoxSizer51->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL, 5);
334
335 wxFlexGridSizer* itemFlexGridSizer53 = new wxFlexGridSizer(2, 2, 0, 0);
336 itemBoxSizer51->Add(itemFlexGridSizer53, 0, wxALIGN_CENTER_VERTICAL, 5);
337 wxStaticText* itemStaticText54 = new wxStaticText( itemPanel33, wxID_STATIC, _("&Left:"), wxDefaultPosition, wxDefaultSize, 0 );
338 itemFlexGridSizer53->Add(itemStaticText54, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
339
340 wxBoxSizer* itemBoxSizer55 = new wxBoxSizer(wxHORIZONTAL);
341 itemFlexGridSizer53->Add(itemBoxSizer55, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
41a85215 342 m_indentLeft = new wxTextCtrl( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_INDENTLEFT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
dadd4f55
JS
343 m_indentLeft->SetHelpText(_("The left indent."));
344 if (ShowToolTips())
345 m_indentLeft->SetToolTip(_("The left indent."));
346 itemBoxSizer55->Add(m_indentLeft, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
347
348 wxStaticText* itemStaticText57 = new wxStaticText( itemPanel33, wxID_STATIC, _("Left (&first line):"), wxDefaultPosition, wxDefaultSize, 0 );
349 itemFlexGridSizer53->Add(itemStaticText57, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
350
351 wxBoxSizer* itemBoxSizer58 = new wxBoxSizer(wxHORIZONTAL);
352 itemFlexGridSizer53->Add(itemBoxSizer58, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
41a85215 353 m_indentLeftFirst = new wxTextCtrl( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_INDENTFIRSTLINE, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
dadd4f55
JS
354 m_indentLeftFirst->SetHelpText(_("The first line indent."));
355 if (ShowToolTips())
356 m_indentLeftFirst->SetToolTip(_("The first line indent."));
357 itemBoxSizer58->Add(m_indentLeftFirst, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
358
359 wxStaticText* itemStaticText60 = new wxStaticText( itemPanel33, wxID_STATIC, _("&Right:"), wxDefaultPosition, wxDefaultSize, 0 );
360 itemFlexGridSizer53->Add(itemStaticText60, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
361
362 wxBoxSizer* itemBoxSizer61 = new wxBoxSizer(wxHORIZONTAL);
363 itemFlexGridSizer53->Add(itemBoxSizer61, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
41a85215 364 m_indentRight = new wxTextCtrl( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_INDENTRIGHT, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
dadd4f55
JS
365 m_indentRight->SetHelpText(_("The right indent."));
366 if (ShowToolTips())
367 m_indentRight->SetToolTip(_("The right indent."));
368 itemBoxSizer61->Add(m_indentRight, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
369
370 itemBoxSizer35->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
371
372 wxStaticLine* itemStaticLine64 = new wxStaticLine( itemPanel33, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
373 itemBoxSizer35->Add(itemStaticLine64, 0, wxGROW|wxTOP|wxBOTTOM, 5);
374
375 itemBoxSizer35->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
376
377 wxBoxSizer* itemBoxSizer66 = new wxBoxSizer(wxVERTICAL);
378 itemBoxSizer35->Add(itemBoxSizer66, 0, wxGROW, 5);
379 wxStaticText* itemStaticText67 = new wxStaticText( itemPanel33, wxID_STATIC, _("&Spacing (tenths of a mm)"), wxDefaultPosition, wxDefaultSize, 0 );
380 itemBoxSizer66->Add(itemStaticText67, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
381
382 wxBoxSizer* itemBoxSizer68 = new wxBoxSizer(wxHORIZONTAL);
383 itemBoxSizer66->Add(itemBoxSizer68, 0, wxALIGN_LEFT|wxALL, 5);
384 itemBoxSizer68->Add(5, 5, 0, wxALIGN_CENTER_VERTICAL, 5);
385
386 wxFlexGridSizer* itemFlexGridSizer70 = new wxFlexGridSizer(2, 2, 0, 0);
387 itemBoxSizer68->Add(itemFlexGridSizer70, 0, wxALIGN_CENTER_VERTICAL, 5);
388 wxStaticText* itemStaticText71 = new wxStaticText( itemPanel33, wxID_STATIC, _("Before a paragraph:"), wxDefaultPosition, wxDefaultSize, 0 );
389 itemFlexGridSizer70->Add(itemStaticText71, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
390
391 wxBoxSizer* itemBoxSizer72 = new wxBoxSizer(wxHORIZONTAL);
392 itemFlexGridSizer70->Add(itemBoxSizer72, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
41a85215 393 m_spacingBefore = new wxTextCtrl( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_SPACINGBEFORE, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
dadd4f55
JS
394 m_spacingBefore->SetHelpText(_("The spacing before the paragraph."));
395 if (ShowToolTips())
396 m_spacingBefore->SetToolTip(_("The spacing before the paragraph."));
397 itemBoxSizer72->Add(m_spacingBefore, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
398
399 wxStaticText* itemStaticText74 = new wxStaticText( itemPanel33, wxID_STATIC, _("After a paragraph:"), wxDefaultPosition, wxDefaultSize, 0 );
400 itemFlexGridSizer70->Add(itemStaticText74, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
401
402 wxBoxSizer* itemBoxSizer75 = new wxBoxSizer(wxHORIZONTAL);
403 itemFlexGridSizer70->Add(itemBoxSizer75, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
41a85215 404 m_spacingAfter = new wxTextCtrl( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_SPACINGAFTER, wxEmptyString, wxDefaultPosition, wxSize(50, -1), 0 );
dadd4f55
JS
405 m_spacingAfter->SetHelpText(_("The spacing after the paragraph."));
406 if (ShowToolTips())
407 m_spacingAfter->SetToolTip(_("The spacing after the paragraph."));
408 itemBoxSizer75->Add(m_spacingAfter, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
409
410 wxStaticText* itemStaticText77 = new wxStaticText( itemPanel33, wxID_STATIC, _("Line spacing:"), wxDefaultPosition, wxDefaultSize, 0 );
411 itemFlexGridSizer70->Add(itemStaticText77, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);
412
413 wxBoxSizer* itemBoxSizer78 = new wxBoxSizer(wxHORIZONTAL);
414 itemFlexGridSizer70->Add(itemBoxSizer78, 0, wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL, 5);
415 wxString m_spacingLineStrings[] = {
416 _("Single"),
417 _("1.5"),
418 _("2")
419 };
420 m_spacingLine = new wxComboBox( itemPanel33, ID_RICHTEXTLISTSTYLEPAGE_LINESPACING, _("Single"), wxDefaultPosition, wxDefaultSize, 3, m_spacingLineStrings, wxCB_READONLY );
421 m_spacingLine->SetStringSelection(_("Single"));
422 m_spacingLine->SetHelpText(_("The line spacing."));
423 if (ShowToolTips())
424 m_spacingLine->SetToolTip(_("The line spacing."));
425 itemBoxSizer78->Add(m_spacingLine, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
426
427 itemNotebook9->AddPage(itemPanel33, _("Spacing"));
428
429 itemBoxSizer3->Add(itemNotebook9, 0, wxGROW|wxALL, 5);
430
431 m_previewCtrl = new wxRichTextCtrl( itemPanel1, ID_RICHTEXTLISTSTYLEPAGE_RICHTEXTCTRL, wxEmptyString, wxDefaultPosition, wxSize(350, 180), wxSUNKEN_BORDER );
432 m_previewCtrl->SetHelpText(_("Shows a preview of the bullet settings."));
433 if (ShowToolTips())
434 m_previewCtrl->SetToolTip(_("Shows a preview of the bullet settings."));
435 itemBoxSizer3->Add(m_previewCtrl, 0, wxGROW|wxALL, 5);
436
437////@end wxRichTextListStylePage content construction
438
439 m_styleListBox->Append(_("(None)"));
440 m_styleListBox->Append(_("Arabic"));
441 m_styleListBox->Append(_("Upper case letters"));
442 m_styleListBox->Append(_("Lower case letters"));
443 m_styleListBox->Append(_("Upper case roman numerals"));
444 m_styleListBox->Append(_("Lower case roman numerals"));
445 m_styleListBox->Append(_("Symbol"));
446 m_styleListBox->Append(_("Bitmap"));
447
448 m_symbolCtrl->Append(_("*"));
449 m_symbolCtrl->Append(_("-"));
450 m_symbolCtrl->Append(_(">"));
451 m_symbolCtrl->Append(_("+"));
452 m_symbolCtrl->Append(_("~"));
453
454 wxArrayString facenames = wxRichTextCtrl::GetAvailableFontNames();
455 facenames.Sort();
456
457 m_symbolFontCtrl->Append(facenames);
458}
459
460/// Updates the font preview
461void wxRichTextListStylePage::UpdatePreview()
462{
463 static const wxChar* s_para1 = wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \
464Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus.");
465
466 static const wxChar* s_para2 = wxT("Duis pharetra consequat dui. Nullam vitae justo id mauris lobortis interdum.");
467
468 static const wxChar* s_para3 = wxT("\nInteger convallis dolor at augue \
469iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n");
470
471 wxRichTextListStyleDefinition* def = wxDynamicCast(wxRichTextFormattingDialog::GetDialogStyleDefinition(this),
472 wxRichTextListStyleDefinition);
41a85215 473
dadd4f55
JS
474 wxTextAttrEx attr(def->GetStyle());
475 attr.SetFlags(attr.GetFlags() &
476 (wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|
477 wxTEXT_ATTR_LINE_SPACING|
478 wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_SYMBOL));
479
480 wxFont font(m_previewCtrl->GetFont());
481 font.SetPointSize(9);
482 m_previewCtrl->SetFont(font);
483
484 wxTextAttrEx normalParaAttr;
485 normalParaAttr.SetFont(font);
486 normalParaAttr.SetTextColour(wxColour(wxT("LIGHT GREY")));
487
488 m_previewCtrl->Freeze();
489 m_previewCtrl->Clear();
490
491 m_previewCtrl->BeginStyle(normalParaAttr);
492 m_previewCtrl->WriteText(s_para1);
493 m_previewCtrl->EndStyle();
41a85215 494
dadd4f55 495 m_previewCtrl->BeginStyle(attr);
41a85215 496
dadd4f55
JS
497 int i;
498 for (i = 0; i < 10; i++)
499 {
500 wxTextAttrEx levelAttr = * def->GetLevelAttributes(i);
501 levelAttr.SetBulletNumber(1);
502 m_previewCtrl->BeginStyle(levelAttr);
503 m_previewCtrl->WriteText(wxString::Format(wxT("\nList level %d. "), i+1) + s_para2);
504 m_previewCtrl->EndStyle();
505 }
506 m_previewCtrl->EndStyle();
507
508 m_previewCtrl->BeginStyle(normalParaAttr);
509 m_previewCtrl->WriteText(s_para3);
510 m_previewCtrl->EndStyle();
511
512 m_previewCtrl->Thaw();
513}
514
515/// Transfer data from/to window
516bool wxRichTextListStylePage::TransferDataFromWindow()
517{
518 wxPanel::TransferDataFromWindow();
519
520 m_currentLevel = m_levelCtrl->GetValue();
521
522 wxTextAttrEx* attr = GetAttributesForSelection();
523
524 if (m_alignmentLeft->GetValue())
525 attr->SetAlignment(wxTEXT_ALIGNMENT_LEFT);
526 else if (m_alignmentCentred->GetValue())
527 attr->SetAlignment(wxTEXT_ALIGNMENT_CENTRE);
528 else if (m_alignmentRight->GetValue())
529 attr->SetAlignment(wxTEXT_ALIGNMENT_RIGHT);
530 else if (m_alignmentJustified->GetValue())
531 attr->SetAlignment(wxTEXT_ALIGNMENT_JUSTIFIED);
532 else
533 {
534 attr->SetAlignment(wxTEXT_ALIGNMENT_DEFAULT);
535 attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_ALIGNMENT));
536 }
537
538 wxString leftIndent(m_indentLeft->GetValue());
539 wxString leftFirstIndent(m_indentLeftFirst->GetValue());
540 if (!leftIndent.empty())
541 {
542 int visualLeftIndent = wxAtoi(leftIndent);
543 int visualLeftFirstIndent = wxAtoi(leftFirstIndent);
544 int actualLeftIndent = visualLeftFirstIndent;
545 int actualLeftSubIndent = visualLeftIndent - visualLeftFirstIndent;
546
547 attr->SetLeftIndent(actualLeftIndent, actualLeftSubIndent);
548 }
549 else
550 attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_LEFT_INDENT));
551
552 wxString rightIndent(m_indentRight->GetValue());
553 if (!rightIndent.empty())
554 attr->SetRightIndent(wxAtoi(rightIndent));
555 else
556 attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_RIGHT_INDENT));
557
558 wxString spacingAfter(m_spacingAfter->GetValue());
559 if (!spacingAfter.empty())
560 attr->SetParagraphSpacingAfter(wxAtoi(spacingAfter));
561 else
562 attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_AFTER));
563
564 wxString spacingBefore(m_spacingBefore->GetValue());
565 if (!spacingBefore.empty())
566 attr->SetParagraphSpacingBefore(wxAtoi(spacingBefore));
567 else
568 attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_PARA_SPACING_BEFORE));
569
570 int spacingIndex = m_spacingLine->GetSelection();
571 int lineSpacing = 0;
572 if (spacingIndex == 0)
573 lineSpacing = 10;
574 else if (spacingIndex == 1)
575 lineSpacing = 15;
576 else if (spacingIndex == 2)
577 lineSpacing = 20;
578
579 if (lineSpacing == 0)
580 attr->SetFlags(attr->GetFlags() & (~wxTEXT_ATTR_LINE_SPACING));
581 else
582 attr->SetLineSpacing(lineSpacing);
583
584 /// BULLETS
585 if (true) // m_hasBulletStyle)
586 {
587 long bulletStyle = 0;
588
589 int index = m_styleListBox->GetSelection();
590 if (index == 1)
591 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ARABIC;
592 else if (index == 2)
593 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER;
594 else if (index == 3)
595 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER;
596 else if (index == 4)
597 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER;
598 else if (index == 5)
599 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER;
600 else if (index == 6)
601 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_SYMBOL;
602 else if (index == 7)
603 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_BITMAP;
604
605 if (m_parenthesesCtrl->GetValue())
606 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_PARENTHESES;
607 if (m_periodCtrl->GetValue())
608 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_PERIOD;
609
610 attr->SetBulletStyle(bulletStyle);
611 }
612
613 // if (m_hasBulletSymbol)
614 {
615 wxChar c(wxT('*'));
616 if (m_symbolCtrl->GetValue().length() > 0)
617 c = m_symbolCtrl->GetValue()[0];
618 attr->SetBulletSymbol(c);
619 attr->SetBulletFont(m_symbolFontCtrl->GetValue());
620 }
41a85215 621
dadd4f55
JS
622 return true;
623}
624
625bool wxRichTextListStylePage::TransferDataToWindow()
626{
627 DoTransferDataToWindow();
628 UpdatePreview();
41a85215 629
dadd4f55
JS
630 return true;
631}
632
633/// Just transfer to the window
634void wxRichTextListStylePage::DoTransferDataToWindow()
635{
636 m_dontUpdate = true;
637
638 wxPanel::TransferDataToWindow();
41a85215 639
dadd4f55
JS
640 m_levelCtrl->SetValue(m_currentLevel);
641
642 wxTextAttrEx* attr = GetAttributesForSelection();
643
644 if (attr->HasAlignment())
645 {
646 if (attr->GetAlignment() == wxTEXT_ALIGNMENT_LEFT)
647 m_alignmentLeft->SetValue(true);
648 else if (attr->GetAlignment() == wxTEXT_ALIGNMENT_RIGHT)
649 m_alignmentRight->SetValue(true);
650 else if (attr->GetAlignment() == wxTEXT_ALIGNMENT_CENTRE)
651 m_alignmentCentred->SetValue(true);
652 else if (attr->GetAlignment() == wxTEXT_ALIGNMENT_JUSTIFIED)
653 m_alignmentJustified->SetValue(true);
654 else
655 m_alignmentIndeterminate->SetValue(true);
656 }
657 else
658 m_alignmentIndeterminate->SetValue(true);
659
660 if (attr->HasLeftIndent())
661 {
662 wxString leftIndent(wxString::Format(wxT("%ld"), attr->GetLeftIndent() + attr->GetLeftSubIndent()));
663 wxString leftFirstIndent(wxString::Format(wxT("%ld"), attr->GetLeftIndent()));
664
665 m_indentLeft->SetValue(leftIndent);
666 m_indentLeftFirst->SetValue(leftFirstIndent);
667 }
668 else
669 {
670 m_indentLeft->SetValue(wxEmptyString);
671 m_indentLeftFirst->SetValue(wxEmptyString);
672 }
673
674 if (attr->HasRightIndent())
675 {
676 wxString rightIndent(wxString::Format(wxT("%ld"), attr->GetRightIndent()));
677
678 m_indentRight->SetValue(rightIndent);
679 }
680 else
681 m_indentRight->SetValue(wxEmptyString);
682
683 if (attr->HasParagraphSpacingAfter())
684 {
685 wxString spacingAfter(wxString::Format(wxT("%d"), attr->GetParagraphSpacingAfter()));
686
687 m_spacingAfter->SetValue(spacingAfter);
688 }
689 else
690 m_spacingAfter->SetValue(wxEmptyString);
691
692 if (attr->HasParagraphSpacingBefore())
693 {
694 wxString spacingBefore(wxString::Format(wxT("%d"), attr->GetParagraphSpacingBefore()));
695
696 m_spacingBefore->SetValue(spacingBefore);
697 }
698 else
699 m_spacingBefore->SetValue(wxEmptyString);
700
701 if (attr->HasLineSpacing())
702 {
703 int index = 0;
704
705 int lineSpacing = attr->GetLineSpacing();
706 if (lineSpacing == 10)
707 index = 0;
708 else if (lineSpacing == 15)
709 index = 1;
710 else if (lineSpacing == 20)
711 index = 2;
712 else
713 index = -1;
714
715 m_spacingLine->SetSelection(index);
716 }
717 else
718 m_spacingLine->SetSelection(-1);
719
720 /// BULLETS
721 if (attr->HasBulletStyle())
722 {
723 int index = -1;
724 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ARABIC)
725 index = 1;
726 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER)
727 index = 2;
728 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER)
729 index = 3;
730 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER)
731 index = 4;
732 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER)
733 index = 5;
734 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_SYMBOL)
735 index = 6;
736 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_BITMAP)
737 index = 7;
738 m_styleListBox->SetSelection(index);
739
740 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PARENTHESES)
741 m_parenthesesCtrl->SetValue(true);
742 else
743 m_parenthesesCtrl->SetValue(false);
744
745 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PERIOD)
746 m_periodCtrl->SetValue(true);
747 else
748 m_periodCtrl->SetValue(false);
749 }
750 else
751 m_styleListBox->SetSelection(-1);
752
753 if (attr->HasBulletSymbol())
754 {
755 wxChar c = attr->GetBulletSymbol();
756 wxString s;
757 s << c;
758 m_symbolCtrl->SetValue(s);
759 m_symbolFontCtrl->SetValue(attr->GetBulletFont());
760 }
761 else
762 m_symbolCtrl->SetValue(wxEmptyString);
763
764 m_dontUpdate = false;
765}
766
767/// Get attributes for selected level
768wxTextAttrEx* wxRichTextListStylePage::GetAttributesForSelection()
769{
770 wxRichTextListStyleDefinition* def = wxDynamicCast(wxRichTextFormattingDialog::GetDialogStyleDefinition(this),
771 wxRichTextListStyleDefinition);
41a85215 772
dadd4f55 773 int value = m_levelCtrl->GetValue();
41a85215 774
dadd4f55
JS
775 if (def)
776 return def->GetLevelAttributes(value-1);
777 else
778 return NULL;
779}
780
781/// Just transfer from the window and update the preview
782void wxRichTextListStylePage::TransferAndPreview()
783{
784 if (!m_dontUpdate)
785 {
786 TransferDataFromWindow();
787 UpdatePreview();
788 }
789}
790
791
792/*!
793 * wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_RICHTEXTLISTSTYLEPAGE_LEVEL
794 */
795
796void wxRichTextListStylePage::OnLevelUpdated( wxSpinEvent& WXUNUSED(event) )
797{
798 if (!m_dontUpdate)
799 {
800 m_currentLevel = m_levelCtrl->GetValue();
801 TransferDataToWindow();
802 }
803}
804
805/*!
806 * wxEVT_SCROLL_LINEUP event handler for ID_RICHTEXTLISTSTYLEPAGE_LEVEL
807 */
808
d33700db 809void wxRichTextListStylePage::OnLevelUp( wxSpinEvent& event )
dadd4f55
JS
810{
811 if (!m_dontUpdate)
812 {
d33700db 813 m_currentLevel = event.GetPosition();
dadd4f55
JS
814 TransferDataToWindow();
815 }
816}
817
818/*!
819 * wxEVT_SCROLL_LINEDOWN event handler for ID_RICHTEXTLISTSTYLEPAGE_LEVEL
820 */
821
d33700db 822void wxRichTextListStylePage::OnLevelDown( wxSpinEvent& event )
dadd4f55
JS
823{
824 if (!m_dontUpdate)
825 {
d33700db 826 m_currentLevel = event.GetPosition();
dadd4f55
JS
827 TransferDataToWindow();
828 }
829}
830
831/*!
832 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTLISTSTYLEPAGE_LEVEL
833 */
834
d33700db 835void wxRichTextListStylePage::OnLevelTextUpdated( wxCommandEvent& event )
dadd4f55 836{
d33700db
JS
837 // Can cause problems
838#if 0
dadd4f55
JS
839 if (!m_dontUpdate)
840 {
d33700db 841 m_currentLevel = event.GetInt();
dadd4f55
JS
842 TransferDataToWindow();
843 }
d33700db 844#endif
dadd4f55
JS
845}
846
847/*!
848 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE_LEVEL
849 */
850
851void wxRichTextListStylePage::OnLevelUIUpdate( wxUpdateUIEvent& event )
852{
853////@begin wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE_LEVEL in wxRichTextListStylePage.
854 // Before editing this code, remove the block markers.
855 event.Skip();
41a85215 856////@end wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE_LEVEL in wxRichTextListStylePage.
dadd4f55
JS
857}
858
859/*!
860 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTLISTSTYLEPAGE_STYLELISTBOX
861 */
862
863void wxRichTextListStylePage::OnStylelistboxSelected( wxCommandEvent& WXUNUSED(event) )
864{
865 TransferAndPreview();
866}
867
868/*!
869 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE_SYMBOLSTATIC
870 */
871
872void wxRichTextListStylePage::OnSymbolstaticUpdate( wxUpdateUIEvent& event )
873{
874 OnSymbolUpdate(event);
875}
876
877/*!
878 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
879 */
880
881void wxRichTextListStylePage::OnSymbolctrlSelected( wxCommandEvent& WXUNUSED(event) )
882{
883 TransferAndPreview();
884}
885
886/*!
887 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
888 */
889
890void wxRichTextListStylePage::OnSymbolctrlUpdated( wxCommandEvent& WXUNUSED(event) )
891{
892 TransferAndPreview();
893}
894
895/*!
896 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
897 */
898
899void wxRichTextListStylePage::OnSymbolctrlUIUpdate( wxUpdateUIEvent& event )
900{
901 OnSymbolUpdate(event);
902}
903
904/*!
905 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
906 */
907
908void wxRichTextListStylePage::OnChooseSymbolClick( wxCommandEvent& WXUNUSED(event) )
909{
910 int sel = m_styleListBox->GetSelection();
911 if (sel == 6)
912 {
913 wxString symbol = m_symbolCtrl->GetValue();
914 wxString fontName = m_symbolFontCtrl->GetValue();
915 wxSymbolPickerDialog dlg(symbol, fontName, fontName, this);
916
917 if (dlg.ShowModal() == wxID_OK)
918 {
919 m_dontUpdate = true;
920
921 m_symbolCtrl->SetValue(dlg.GetSymbol());
922 m_symbolFontCtrl->SetValue(dlg.GetFontName());
923
924 TransferAndPreview();
925
926 m_dontUpdate = false;
927 }
928 }
929}
930
931/*!
932 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
933 */
934
935void wxRichTextListStylePage::OnChooseSymbolUpdate( wxUpdateUIEvent& event )
936{
937 OnSymbolUpdate(event);
938}
939
940/*!
941 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTLISTSTYLEPAGE_SYMBOLFONTCTRL
942 */
943
944void wxRichTextListStylePage::OnSymbolfontctrlSelected( wxCommandEvent& WXUNUSED(event) )
945{
946 TransferAndPreview();
947}
948
949/*!
950 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTLISTSTYLEPAGE_SYMBOLFONTCTRL
951 */
952
953void wxRichTextListStylePage::OnSymbolfontctrlUpdated( wxCommandEvent& WXUNUSED(event) )
954{
955 TransferAndPreview();
956}
957
958/*!
959 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE_SYMBOLFONTCTRL
960 */
961
962void wxRichTextListStylePage::OnSymbolfontctrlUIUpdate( wxUpdateUIEvent& event )
963{
964 OnSymbolUpdate(event);
965}
966
967/*!
968 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTLISTSTYLEPAGE__PARENTHESESCTRL
969 */
970
971void wxRichTextListStylePage::OnParenthesesctrlClick( wxCommandEvent& WXUNUSED(event) )
972{
973 TransferAndPreview();
974}
975
976/*!
977 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE__PARENTHESESCTRL
978 */
979
980void wxRichTextListStylePage::OnParenthesesctrlUpdate( wxUpdateUIEvent& event )
981{
982////@begin wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE__PARENTHESESCTRL in wxRichTextListStylePage.
983 // Before editing this code, remove the block markers.
984 event.Skip();
41a85215 985////@end wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE__PARENTHESESCTRL in wxRichTextListStylePage.
dadd4f55
JS
986}
987
988/*!
989 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTLISTSTYLEPAGE_PERIODCTRL
990 */
991
992void wxRichTextListStylePage::OnPeriodctrlClick( wxCommandEvent& WXUNUSED(event) )
993{
994 TransferAndPreview();
995}
996
997/*!
998 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE_PERIODCTRL
999 */
1000
1001void wxRichTextListStylePage::OnPeriodctrlUpdate( wxUpdateUIEvent& event )
1002{
1003////@begin wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE_PERIODCTRL in wxRichTextListStylePage.
1004 // Before editing this code, remove the block markers.
1005 event.Skip();
41a85215 1006////@end wxEVT_UPDATE_UI event handler for ID_RICHTEXTLISTSTYLEPAGE_PERIODCTRL in wxRichTextListStylePage.
dadd4f55
JS
1007}
1008
1009/*!
1010 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTLISTSTYLEPAGE_ALIGNLEFT
1011 */
1012
1013void wxRichTextListStylePage::OnRichtextliststylepageAlignleftSelected( wxCommandEvent& WXUNUSED(event) )
1014{
1015 TransferAndPreview();
1016}
1017
1018/*!
1019 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTLISTSTYLEPAGE_ALIGNRIGHT
1020 */
1021
1022void wxRichTextListStylePage::OnRichtextliststylepageAlignrightSelected( wxCommandEvent& WXUNUSED(event) )
1023{
1024 TransferAndPreview();
1025}
1026
1027/*!
1028 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTLISTSTYLEPAGE_JUSTIFIED
1029 */
1030
1031void wxRichTextListStylePage::OnRichtextliststylepageJustifiedSelected( wxCommandEvent& WXUNUSED(event) )
1032{
1033 TransferAndPreview();
1034}
1035
1036/*!
1037 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTLISTSTYLEPAGE_CENTERED
1038 */
1039
1040void wxRichTextListStylePage::OnRichtextliststylepageCenteredSelected( wxCommandEvent& WXUNUSED(event) )
1041{
1042 TransferAndPreview();
1043}
1044
1045/*!
1046 * wxEVT_COMMAND_RADIOBUTTON_SELECTED event handler for ID_RICHTEXTLISTSTYLEPAGE_ALIGNINDETERMINATE
1047 */
1048
1049void wxRichTextListStylePage::OnRichtextliststylepageAlignindeterminateSelected( wxCommandEvent& WXUNUSED(event) )
1050{
1051 TransferAndPreview();
1052}
1053
1054/*!
1055 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTLISTSTYLEPAGE_INDENTLEFT
1056 */
1057
1058void wxRichTextListStylePage::OnIndentLeftUpdated( wxCommandEvent& WXUNUSED(event) )
1059{
1060 TransferAndPreview();
1061}
1062
1063/*!
1064 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTLISTSTYLEPAGE_INDENTFIRSTLINE
1065 */
1066
1067void wxRichTextListStylePage::OnIndentFirstLineUpdated( wxCommandEvent& WXUNUSED(event) )
1068{
1069 TransferAndPreview();
1070}
1071
1072/*!
1073 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTLISTSTYLEPAGE_INDENTRIGHT
1074 */
1075
1076void wxRichTextListStylePage::OnIndentRightUpdated( wxCommandEvent& WXUNUSED(event) )
1077{
1078 TransferAndPreview();
1079}
1080
1081/*!
1082 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTLISTSTYLEPAGE_SPACINGBEFORE
1083 */
1084
1085void wxRichTextListStylePage::OnSpacingBeforeUpdated( wxCommandEvent& WXUNUSED(event) )
1086{
1087 TransferAndPreview();
1088}
1089
1090/*!
1091 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTLISTSTYLEPAGE_SPACINGAFTER
1092 */
1093
1094void wxRichTextListStylePage::OnSpacingAfterUpdated( wxCommandEvent& WXUNUSED(event) )
1095{
1096 TransferAndPreview();
1097}
1098
1099/*!
1100 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTLISTSTYLEPAGE_LINESPACING
1101 */
1102
1103void wxRichTextListStylePage::OnLineSpacingSelected( wxCommandEvent& WXUNUSED(event) )
1104{
1105 TransferAndPreview();
1106}
1107
1108/*!
1109 * Should we show tooltips?
1110 */
1111
1112bool wxRichTextListStylePage::ShowToolTips()
1113{
1114 return wxRichTextFormattingDialog::ShowToolTips();
1115}
1116
1117/*!
1118 * Get bitmap resources
1119 */
1120
1121wxBitmap wxRichTextListStylePage::GetBitmapResource( const wxString& name )
1122{
1123 // Bitmap retrieval
1124////@begin wxRichTextListStylePage bitmap retrieval
1125 wxUnusedVar(name);
1126 return wxNullBitmap;
1127////@end wxRichTextListStylePage bitmap retrieval
1128}
1129
1130/*!
1131 * Get icon resources
1132 */
1133
1134wxIcon wxRichTextListStylePage::GetIconResource( const wxString& name )
1135{
1136 // Icon retrieval
1137////@begin wxRichTextListStylePage icon retrieval
1138 wxUnusedVar(name);
1139 return wxNullIcon;
1140////@end wxRichTextListStylePage icon retrieval
1141}
1142
1143/// Update for symbol-related controls
1144void wxRichTextListStylePage::OnSymbolUpdate( wxUpdateUIEvent& event )
1145{
1146 int sel = m_styleListBox->GetSelection();
1147 event.Enable(sel == 6);
1148}
1149
1150/// Update for number-related controls
1151void wxRichTextListStylePage::OnNumberUpdate( wxUpdateUIEvent& event )
1152{
1153 int sel = m_styleListBox->GetSelection();
1154 event.Enable((sel != 6 && sel != 7 && sel != 0));
1155}
1156
1157/*!
1158 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTLISTSTYLEPAGE_CHOOSE_FONT
1159 */
1160
1161void wxRichTextListStylePage::OnChooseFontClick( wxCommandEvent& WXUNUSED(event) )
1162{
1163 wxTextAttrEx* attr = GetAttributesForSelection();
1164
1165 int pages = wxRICHTEXT_FORMAT_FONT;
1166 wxRichTextFormattingDialog formatDlg;
1167 formatDlg.SetStyle(*attr, false);
1168 formatDlg.Create(pages, this);
1169
1170 if (formatDlg.ShowModal() == wxID_OK)
1171 {
1172 (*attr) = formatDlg.GetAttributes();
1173 TransferAndPreview();
1174 }
1175}