]> git.saurik.com Git - wxWidgets.git/blame - src/richtext/richtextbulletspage.cpp
Use generic collapsible pane for wxUniv based builds.
[wxWidgets.git] / src / richtext / richtextbulletspage.cpp
CommitLineData
97ff49b3 1/////////////////////////////////////////////////////////////////////////////
b68603d5 2// Name: src/richtext/richtextbulletspage.cpp
97ff49b3
JS
3// Purpose:
4// Author: Julian Smart
5// Modified by:
6// Created: 10/4/2006 10:32:31 AM
b68603d5 7// RCS-ID: $Id$
97ff49b3 8// Copyright: (c) Julian Smart
b68603d5 9// Licence: wxWindows licence
97ff49b3
JS
10/////////////////////////////////////////////////////////////////////////////
11
b68603d5
WS
12#if wxUSE_RICHTEXT
13
14#include "wx/richtext/richtextbulletspage.h"
15
97ff49b3 16#include "wx/richtext/richtextsymboldlg.h"
97ff49b3 17
97ff49b3
JS
18/*!
19 * wxRichTextBulletsPage type definition
20 */
21
22IMPLEMENT_DYNAMIC_CLASS( wxRichTextBulletsPage, wxPanel )
23
24/*!
25 * wxRichTextBulletsPage event table definition
26 */
27
28BEGIN_EVENT_TABLE( wxRichTextBulletsPage, wxPanel )
29
30////@begin wxRichTextBulletsPage event table entries
31 EVT_LISTBOX( ID_RICHTEXTBULLETSPAGE_STYLELISTBOX, wxRichTextBulletsPage::OnStylelistboxSelected )
32
f089713f
JS
33 EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_PERIODCTRL, wxRichTextBulletsPage::OnPeriodctrlClick )
34 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_PERIODCTRL, wxRichTextBulletsPage::OnPeriodctrlUpdate )
35
36 EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, wxRichTextBulletsPage::OnParenthesesctrlClick )
37 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, wxRichTextBulletsPage::OnParenthesesctrlUpdate )
38
39 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC, wxRichTextBulletsPage::OnNumberstaticUpdate )
40
41 EVT_SPINCTRL( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUpdated )
42 EVT_SPIN_UP( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUp )
43 EVT_SPIN_DOWN( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlDown )
44 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlTextUpdated )
45 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUpdate )
46
97ff49b3
JS
47 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, wxRichTextBulletsPage::OnSymbolstaticUpdate )
48
49 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlSelected )
50 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlUpdated )
51 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlUpdate )
52
53 EVT_BUTTON( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, wxRichTextBulletsPage::OnChooseSymbolClick )
54 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, wxRichTextBulletsPage::OnChooseSymbolUpdate )
55
56 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlSelected )
57 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlUpdated )
58 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlUIUpdate )
59
f089713f 60 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NAMESTATIC, wxRichTextBulletsPage::OnNamestaticUpdate )
97ff49b3 61
f089713f
JS
62 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_NAMECTRL, wxRichTextBulletsPage::OnNamectrlSelected )
63 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_NAMECTRL, wxRichTextBulletsPage::OnNamectrlUpdated )
64 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NAMECTRL, wxRichTextBulletsPage::OnNamectrlUIUpdate )
97ff49b3
JS
65
66////@end wxRichTextBulletsPage event table entries
67
68END_EVENT_TABLE()
69
70/*!
71 * wxRichTextBulletsPage constructors
72 */
73
74wxRichTextBulletsPage::wxRichTextBulletsPage( )
75{
76 Init();
77}
78
79wxRichTextBulletsPage::wxRichTextBulletsPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
80{
81 Init();
82 Create(parent, id, pos, size, style);
83}
84
85/*!
86 * Initialise members
87 */
5778b3c8 88
97ff49b3
JS
89void wxRichTextBulletsPage::Init()
90{
91 m_hasBulletStyle = false;
92 m_hasBulletNumber = false;
93 m_hasBulletSymbol = false;
94 m_dontUpdate = false;
95
96////@begin wxRichTextBulletsPage member initialisation
97 m_styleListBox = NULL;
f089713f
JS
98 m_periodCtrl = NULL;
99 m_parenthesesCtrl = NULL;
100 m_numberCtrl = NULL;
97ff49b3
JS
101 m_symbolCtrl = NULL;
102 m_symbolFontCtrl = NULL;
f089713f 103 m_bulletNameCtrl = NULL;
97ff49b3
JS
104 m_previewCtrl = NULL;
105////@end wxRichTextBulletsPage member initialisation
106}
107
108/*!
109 * wxRichTextBulletsPage creator
110 */
111
112bool wxRichTextBulletsPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
113{
114////@begin wxRichTextBulletsPage creation
115 wxPanel::Create( parent, id, pos, size, style );
116
117 CreateControls();
118 if (GetSizer())
119 {
120 GetSizer()->SetSizeHints(this);
121 }
122 Centre();
123////@end wxRichTextBulletsPage creation
124 return true;
125}
126
127/*!
128 * Control creation for wxRichTextBulletsPage
129 */
130
131void wxRichTextBulletsPage::CreateControls()
132{
133////@begin wxRichTextBulletsPage content construction
134 wxRichTextBulletsPage* itemPanel1 = this;
135
136 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
137 itemPanel1->SetSizer(itemBoxSizer2);
138
139 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
140 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
141
142 wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
143 itemBoxSizer3->Add(itemBoxSizer4, 0, wxGROW, 5);
144
145 wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
146 itemBoxSizer4->Add(itemBoxSizer5, 0, wxGROW, 5);
147
148 wxStaticText* itemStaticText6 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Bullet style:"), wxDefaultPosition, wxDefaultSize, 0 );
149 itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
150
151 wxString* m_styleListBoxStrings = NULL;
f089713f 152 m_styleListBox = new wxListBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_STYLELISTBOX, wxDefaultPosition, wxSize(-1, 130), 0, m_styleListBoxStrings, wxLB_SINGLE );
dadd4f55
JS
153 m_styleListBox->SetHelpText(_("The available bullet styles."));
154 if (ShowToolTips())
155 m_styleListBox->SetToolTip(_("The available bullet styles."));
f089713f
JS
156 itemBoxSizer5->Add(m_styleListBox, 1, wxGROW|wxALL, 5);
157
158 wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
159 itemBoxSizer5->Add(itemBoxSizer8, 0, wxGROW, 5);
160
161 m_periodCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_PERIODCTRL, _("Peri&od"), wxDefaultPosition, wxDefaultSize, 0 );
162 m_periodCtrl->SetValue(false);
163 m_periodCtrl->SetHelpText(_("Check to add a period after the bullet."));
164 if (ShowToolTips())
165 m_periodCtrl->SetToolTip(_("Check to add a period after the bullet."));
166 itemBoxSizer8->Add(m_periodCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
167
168 m_parenthesesCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, _("&Parentheses"), wxDefaultPosition, wxDefaultSize, 0 );
169 m_parenthesesCtrl->SetValue(false);
170 m_parenthesesCtrl->SetHelpText(_("Check to enclose the bullet in parentheses."));
171 if (ShowToolTips())
172 m_parenthesesCtrl->SetToolTip(_("Check to enclose the bullet in parentheses."));
173 itemBoxSizer8->Add(m_parenthesesCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
174
175 itemBoxSizer5->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL, 5);
176
177 wxStaticText* itemStaticText12 = new wxStaticText( itemPanel1, ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC, _("&Number:"), wxDefaultPosition, wxDefaultSize, 0 );
178 itemBoxSizer5->Add(itemStaticText12, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
179
180 m_numberCtrl = new wxSpinCtrl( itemPanel1, ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, _T("0"), wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, 0, 100000, 0 );
181 m_numberCtrl->SetHelpText(_("The list item number."));
182 if (ShowToolTips())
183 m_numberCtrl->SetToolTip(_("The list item number."));
184 itemBoxSizer5->Add(m_numberCtrl, 0, wxGROW|wxALL, 5);
97ff49b3
JS
185
186 itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
187
f089713f
JS
188 wxStaticLine* itemStaticLine15 = new wxStaticLine( itemPanel1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
189 itemBoxSizer4->Add(itemStaticLine15, 0, wxGROW|wxLEFT|wxRIGHT, 5);
97ff49b3
JS
190
191 itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
192
f089713f
JS
193 wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
194 itemBoxSizer4->Add(itemBoxSizer17, 0, wxGROW, 5);
97ff49b3 195
f089713f
JS
196 wxStaticText* itemStaticText18 = new wxStaticText( itemPanel1, ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, _("&Symbol:"), wxDefaultPosition, wxDefaultSize, 0 );
197 itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
97ff49b3 198
f089713f
JS
199 wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxHORIZONTAL);
200 itemBoxSizer17->Add(itemBoxSizer19, 0, wxGROW, 5);
97ff49b3
JS
201
202 wxString* m_symbolCtrlStrings = NULL;
f089713f 203 m_symbolCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, _T(""), wxDefaultPosition, wxSize(60, -1), 0, m_symbolCtrlStrings, wxCB_DROPDOWN );
dadd4f55
JS
204 m_symbolCtrl->SetHelpText(_("The bullet character."));
205 if (ShowToolTips())
206 m_symbolCtrl->SetToolTip(_("The bullet character."));
f089713f 207 itemBoxSizer19->Add(m_symbolCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxFIXED_MINSIZE, 5);
97ff49b3 208
f089713f
JS
209 wxButton* itemButton21 = new wxButton( itemPanel1, ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, _("Ch&oose..."), wxDefaultPosition, wxDefaultSize, 0 );
210 itemButton21->SetHelpText(_("Click to browse for a symbol."));
dadd4f55 211 if (ShowToolTips())
f089713f
JS
212 itemButton21->SetToolTip(_("Click to browse for a symbol."));
213 itemBoxSizer19->Add(itemButton21, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
97ff49b3 214
f089713f 215 itemBoxSizer17->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL, 5);
97ff49b3 216
f089713f
JS
217 wxStaticText* itemStaticText23 = new wxStaticText( itemPanel1, ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, _("Symbol &font:"), wxDefaultPosition, wxDefaultSize, 0 );
218 itemBoxSizer17->Add(itemStaticText23, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
97ff49b3
JS
219
220 wxString* m_symbolFontCtrlStrings = NULL;
f089713f 221 m_symbolFontCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_symbolFontCtrlStrings, wxCB_DROPDOWN );
dadd4f55
JS
222 m_symbolFontCtrl->SetHelpText(_("Available fonts."));
223 if (ShowToolTips())
224 m_symbolFontCtrl->SetToolTip(_("Available fonts."));
f089713f 225 itemBoxSizer17->Add(m_symbolFontCtrl, 0, wxGROW|wxALL, 5);
97ff49b3 226
f089713f 227 itemBoxSizer17->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
97ff49b3 228
f089713f
JS
229 wxStaticText* itemStaticText26 = new wxStaticText( itemPanel1, ID_RICHTEXTBULLETSPAGE_NAMESTATIC, _("S&tandard bullet name:"), wxDefaultPosition, wxDefaultSize, 0 );
230 itemBoxSizer17->Add(itemStaticText26, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
97ff49b3 231
f089713f
JS
232 wxString* m_bulletNameCtrlStrings = NULL;
233 m_bulletNameCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTBULLETSPAGE_NAMECTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0, m_bulletNameCtrlStrings, wxCB_DROPDOWN );
234 m_bulletNameCtrl->SetHelpText(_("A standard bullet name."));
dadd4f55 235 if (ShowToolTips())
f089713f
JS
236 m_bulletNameCtrl->SetToolTip(_("A standard bullet name."));
237 itemBoxSizer17->Add(m_bulletNameCtrl, 0, wxGROW|wxALL, 5);
97ff49b3
JS
238
239 itemBoxSizer3->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
240
241 m_previewCtrl = new wxRichTextCtrl( itemPanel1, ID_RICHTEXTBULLETSPAGE_PREVIEW_CTRL, wxEmptyString, wxDefaultPosition, wxSize(350, 180), wxSUNKEN_BORDER );
242 m_previewCtrl->SetHelpText(_("Shows a preview of the bullet settings."));
243 if (ShowToolTips())
244 m_previewCtrl->SetToolTip(_("Shows a preview of the bullet settings."));
245 itemBoxSizer3->Add(m_previewCtrl, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
246
247////@end wxRichTextBulletsPage content construction
248
249 m_styleListBox->Append(_("(None)"));
250 m_styleListBox->Append(_("Arabic"));
251 m_styleListBox->Append(_("Upper case letters"));
252 m_styleListBox->Append(_("Lower case letters"));
253 m_styleListBox->Append(_("Upper case roman numerals"));
254 m_styleListBox->Append(_("Lower case roman numerals"));
255 m_styleListBox->Append(_("Symbol"));
256 m_styleListBox->Append(_("Bitmap"));
f089713f 257 m_styleListBox->Append(_("Standard"));
97ff49b3
JS
258
259 m_symbolCtrl->Append(_("*"));
260 m_symbolCtrl->Append(_("-"));
261 m_symbolCtrl->Append(_(">"));
262 m_symbolCtrl->Append(_("+"));
263 m_symbolCtrl->Append(_("~"));
f089713f
JS
264
265 m_bulletNameCtrl->Append(_("standard/round"));
266 m_bulletNameCtrl->Append(_("standard/square"));
5778b3c8 267
dadd4f55 268 wxArrayString facenames = wxRichTextCtrl::GetAvailableFontNames();
97ff49b3 269 facenames.Sort();
5778b3c8 270
97ff49b3
JS
271 m_symbolFontCtrl->Append(facenames);
272}
273
274/// Transfer data from/to window
275bool wxRichTextBulletsPage::TransferDataFromWindow()
276{
277 wxPanel::TransferDataFromWindow();
278
279 wxTextAttrEx* attr = GetAttributes();
280
281 if (m_hasBulletStyle)
282 {
283 long bulletStyle = 0;
284
285 int index = m_styleListBox->GetSelection();
286 if (index == 1)
287 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ARABIC;
288 else if (index == 2)
289 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER;
290 else if (index == 3)
291 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER;
292 else if (index == 4)
293 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER;
294 else if (index == 5)
295 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER;
296 else if (index == 6)
297 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_SYMBOL;
298 else if (index == 7)
299 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_BITMAP;
f089713f
JS
300 else if (index == 8)
301 {
302 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_STANDARD;
303 attr->SetBulletName(m_bulletNameCtrl->GetValue());
304 }
97ff49b3
JS
305
306 if (m_parenthesesCtrl->GetValue())
307 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_PARENTHESES;
308 if (m_periodCtrl->GetValue())
309 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_PERIOD;
310
311 attr->SetBulletStyle(bulletStyle);
312 }
313
314 if (m_hasBulletNumber)
315 {
316 attr->SetBulletNumber(m_numberCtrl->GetValue());
317 }
318
319 if (m_hasBulletSymbol)
320 {
321 wxChar c(wxT('*'));
b68603d5 322 if (m_symbolCtrl->GetValue().length() > 0)
97ff49b3
JS
323 c = m_symbolCtrl->GetValue()[0];
324 attr->SetBulletSymbol(c);
325 attr->SetBulletFont(m_symbolFontCtrl->GetValue());
326 }
327 return true;
328}
329
330bool wxRichTextBulletsPage::TransferDataToWindow()
331{
332 m_dontUpdate = true;
333
334 wxPanel::TransferDataToWindow();
335
336 wxTextAttrEx* attr = GetAttributes();
337
338 if (attr->HasBulletStyle())
339 {
f089713f 340 m_hasBulletStyle = true;
97ff49b3
JS
341 int index = -1;
342 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ARABIC)
343 index = 1;
344 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER)
345 index = 2;
346 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER)
347 index = 3;
348 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER)
349 index = 4;
350 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER)
351 index = 5;
352 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_SYMBOL)
353 index = 6;
354 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_BITMAP)
355 index = 7;
f089713f
JS
356 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_STANDARD)
357 index = 8;
97ff49b3
JS
358 m_styleListBox->SetSelection(index);
359
360 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PARENTHESES)
361 m_parenthesesCtrl->SetValue(true);
362 else
363 m_parenthesesCtrl->SetValue(false);
364
365 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PERIOD)
366 m_periodCtrl->SetValue(true);
367 else
5778b3c8 368 m_periodCtrl->SetValue(false);
97ff49b3
JS
369 }
370 else
f089713f
JS
371 {
372 m_hasBulletStyle = false;
97ff49b3 373 m_styleListBox->SetSelection(-1);
f089713f 374 }
97ff49b3
JS
375
376 if (attr->HasBulletSymbol())
377 {
378 wxChar c = attr->GetBulletSymbol();
379 wxString s;
380 s << c;
381 m_symbolCtrl->SetValue(s);
382 m_symbolFontCtrl->SetValue(attr->GetBulletFont());
383 }
384 else
385 m_symbolCtrl->SetValue(wxEmptyString);
386
387 if (attr->HasBulletNumber())
388 m_numberCtrl->SetValue(attr->GetBulletNumber());
389 else
390 m_numberCtrl->SetValue(0);
391
f089713f
JS
392 if (attr->HasBulletName())
393 m_bulletNameCtrl->SetValue(attr->GetBulletName());
394 else
395 m_bulletNameCtrl->SetValue(wxEmptyString);
396
97ff49b3
JS
397 UpdatePreview();
398
399 m_dontUpdate = false;
400
401 return true;
402}
403
404/// Updates the bullet preview
405void wxRichTextBulletsPage::UpdatePreview()
406{
407 static const wxChar* s_para1 = wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \
408Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus.");
409
410 static const wxChar* s_para2 = wxT("\nDuis pharetra consequat dui. Cum sociis natoque penatibus \
411et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum.");
412
413 static const wxChar* s_para3 = wxT("\nInteger convallis dolor at augue \
414iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n");
415
416 TransferDataFromWindow();
417 wxTextAttrEx attr(*GetAttributes());
418 attr.SetFlags(attr.GetFlags() &
f089713f 419 (wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_SYMBOL|wxTEXT_ATTR_BULLET_NAME|
97ff49b3
JS
420 wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|
421 wxTEXT_ATTR_LINE_SPACING));
422
423 wxFont font(m_previewCtrl->GetFont());
424 font.SetPointSize(9);
425 m_previewCtrl->SetFont(font);
426
dadd4f55
JS
427 wxTextAttrEx normalParaAttr;
428 normalParaAttr.SetFont(font);
429 normalParaAttr.SetTextColour(wxColour(wxT("LIGHT GREY")));
97ff49b3 430
dadd4f55 431 m_previewCtrl->Freeze();
97ff49b3
JS
432 m_previewCtrl->Clear();
433
dadd4f55 434 m_previewCtrl->BeginStyle(normalParaAttr);
97ff49b3 435 m_previewCtrl->WriteText(s_para1);
dadd4f55 436 m_previewCtrl->EndStyle();
41a85215 437
97ff49b3
JS
438 m_previewCtrl->BeginStyle(attr);
439 m_previewCtrl->WriteText(s_para2);
440 m_previewCtrl->EndStyle();
dadd4f55
JS
441
442 m_previewCtrl->BeginStyle(normalParaAttr);
97ff49b3 443 m_previewCtrl->WriteText(s_para3);
dadd4f55
JS
444 m_previewCtrl->EndStyle();
445
446 m_previewCtrl->Thaw();
97ff49b3
JS
447}
448
449wxTextAttrEx* wxRichTextBulletsPage::GetAttributes()
450{
451 return wxRichTextFormattingDialog::GetDialogAttributes(this);
452}
453
454/*!
455 * Should we show tooltips?
456 */
457
458bool wxRichTextBulletsPage::ShowToolTips()
459{
dadd4f55 460 return wxRichTextFormattingDialog::ShowToolTips();
97ff49b3
JS
461}
462
463/*!
464 * Get bitmap resources
465 */
466
467wxBitmap wxRichTextBulletsPage::GetBitmapResource( const wxString& name )
468{
469 // Bitmap retrieval
470////@begin wxRichTextBulletsPage bitmap retrieval
471 wxUnusedVar(name);
472 return wxNullBitmap;
473////@end wxRichTextBulletsPage bitmap retrieval
474}
475
476/*!
477 * Get icon resources
478 */
479
480wxIcon wxRichTextBulletsPage::GetIconResource( const wxString& name )
481{
482 // Icon retrieval
483////@begin wxRichTextBulletsPage icon retrieval
484 wxUnusedVar(name);
485 return wxNullIcon;
486////@end wxRichTextBulletsPage icon retrieval
487}
488
489/*!
490 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_STYLELISTBOX
491 */
492
493void wxRichTextBulletsPage::OnStylelistboxSelected( wxCommandEvent& WXUNUSED(event) )
494{
495 if (!m_dontUpdate)
496 {
497 m_hasBulletStyle = true;
498
499 if (m_styleListBox->GetSelection() == 6)
500 m_hasBulletSymbol = true;
501
502 UpdatePreview();
503 }
504}
505
506/*!
507 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
508 */
509
510void wxRichTextBulletsPage::OnSymbolctrlSelected( wxCommandEvent& WXUNUSED(event) )
511{
512 if (!m_dontUpdate)
513 {
514 m_hasBulletSymbol = true;
515 UpdatePreview();
516 }
517}
518
519/*!
520 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
521 */
522
523void wxRichTextBulletsPage::OnSymbolctrlUpdated( wxCommandEvent& WXUNUSED(event) )
524{
525 if (!m_dontUpdate)
526 {
527 m_hasBulletSymbol = true;
528 UpdatePreview();
529 }
530}
531
532/*!
533 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
534 */
535
536void wxRichTextBulletsPage::OnSymbolctrlUpdate( wxUpdateUIEvent& event )
537{
538 OnSymbolUpdate(event);
539}
540
541/*!
542 * wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
543 */
544
545void wxRichTextBulletsPage::OnNumberctrlUpdated( wxSpinEvent& WXUNUSED(event) )
546{
547 if (!m_dontUpdate)
548 {
549 m_hasBulletNumber = true;
550 UpdatePreview();
551 }
552}
553
554/*!
555 * wxEVT_SCROLL_LINEUP event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
556 */
557
558void wxRichTextBulletsPage::OnNumberctrlUp( wxSpinEvent& WXUNUSED(event) )
559{
560 if (!m_dontUpdate)
561 {
562 m_hasBulletNumber = true;
563 UpdatePreview();
564 }
565}
566
567/*!
568 * wxEVT_SCROLL_LINEDOWN event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
569 */
570
571void wxRichTextBulletsPage::OnNumberctrlDown( wxSpinEvent& WXUNUSED(event) )
572{
573 if (!m_dontUpdate)
574 {
575 m_hasBulletNumber = true;
576 UpdatePreview();
577 }
578}
579
580/*!
581 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
582 */
583
584void wxRichTextBulletsPage::OnNumberctrlTextUpdated( wxCommandEvent& WXUNUSED(event) )
585{
586 if (!m_dontUpdate)
587 {
588 m_hasBulletNumber = true;
589 UpdatePreview();
590 }
591}
592
593/*!
594 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
595 */
596
597void wxRichTextBulletsPage::OnNumberctrlUpdate( wxUpdateUIEvent& event )
598{
599 OnNumberUpdate(event);
600}
601
602/*!
603 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
604 */
605
606void wxRichTextBulletsPage::OnParenthesesctrlClick( wxCommandEvent& WXUNUSED(event) )
607{
608 if (!m_dontUpdate)
609 {
610 m_hasBulletStyle = true;
611 UpdatePreview();
612 }
613}
614
615/*!
616 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
617 */
618
619void wxRichTextBulletsPage::OnParenthesesctrlUpdate( wxUpdateUIEvent& event )
620{
621 int sel = m_styleListBox->GetSelection();
622 event.Enable(m_hasBulletStyle && (sel != 6 && sel != 7 && sel != 0));
623}
624
625/*!
626 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
627 */
628
629void wxRichTextBulletsPage::OnPeriodctrlClick( wxCommandEvent& WXUNUSED(event) )
630{
631 if (!m_dontUpdate)
632 {
633 m_hasBulletStyle = true;
634 UpdatePreview();
635 }
636}
637
638/*!
639 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
640 */
641
642void wxRichTextBulletsPage::OnPeriodctrlUpdate( wxUpdateUIEvent& event )
643{
644 int sel = m_styleListBox->GetSelection();
645 event.Enable(m_hasBulletStyle && (sel != 6 && sel != 7 && sel != 0));
646}
647
648/*!
649 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
650 */
651
652void wxRichTextBulletsPage::OnChooseSymbolClick( wxCommandEvent& WXUNUSED(event) )
653{
654 int sel = m_styleListBox->GetSelection();
655 if (m_hasBulletStyle && sel == 6)
656 {
657 wxString symbol = m_symbolCtrl->GetValue();
658 wxString fontName = m_symbolFontCtrl->GetValue();
659 wxSymbolPickerDialog dlg(symbol, fontName, fontName, this);
660
661 if (dlg.ShowModal() == wxID_OK)
662 {
663 m_dontUpdate = true;
5778b3c8 664
97ff49b3
JS
665 m_symbolCtrl->SetValue(dlg.GetSymbol());
666 m_symbolFontCtrl->SetValue(dlg.GetFontName());
5778b3c8 667
97ff49b3
JS
668 UpdatePreview();
669
670 m_dontUpdate = false;
671 }
672 }
673}
674
675/*!
676 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
677 */
678
679void wxRichTextBulletsPage::OnChooseSymbolUpdate( wxUpdateUIEvent& event )
680{
681 OnSymbolUpdate(event);
682}
683/*!
684 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
685 */
686
687void wxRichTextBulletsPage::OnSymbolfontctrlSelected( wxCommandEvent& WXUNUSED(event) )
688{
689 if (m_dontUpdate)
690 return;
691 UpdatePreview();
692}
693
694/*!
695 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
696 */
697
698void wxRichTextBulletsPage::OnSymbolfontctrlUpdated( wxCommandEvent& WXUNUSED(event) )
699{
700 if (m_dontUpdate)
701 return;
702 UpdatePreview();
703}
704
705
706/*!
707 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
708 */
709
710void wxRichTextBulletsPage::OnSymbolfontctrlUIUpdate( wxUpdateUIEvent& event )
711{
712 OnSymbolUpdate(event);
713}
714
715/// Update for symbol-related controls
716void wxRichTextBulletsPage::OnSymbolUpdate( wxUpdateUIEvent& event )
717{
718 int sel = m_styleListBox->GetSelection();
719 event.Enable(m_hasBulletStyle && (sel == 6));
720}
721
722/// Update for number-related controls
723void wxRichTextBulletsPage::OnNumberUpdate( wxUpdateUIEvent& event )
724{
725 int sel = m_styleListBox->GetSelection();
f089713f 726 event.Enable( m_hasBulletStyle && (sel != 6 && sel != 7 && sel != 8 && sel != 0));
97ff49b3
JS
727}
728
f089713f
JS
729/// Update for standard bullet-related controls
730void wxRichTextBulletsPage::OnStandardBulletUpdate( wxUpdateUIEvent& event )
731{
732 int sel = m_styleListBox->GetSelection();
733 event.Enable( sel == 8 );
734}
735
736
97ff49b3
JS
737/*!
738 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC
739 */
740
741void wxRichTextBulletsPage::OnSymbolstaticUpdate( wxUpdateUIEvent& event )
742{
743 OnSymbolUpdate(event);
744}
745
746
747/*!
748 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC
749 */
750
751void wxRichTextBulletsPage::OnNumberstaticUpdate( wxUpdateUIEvent& event )
752{
753 OnNumberUpdate(event);
754}
755
f089713f
JS
756/*!
757 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NAMESTATIC
758 */
759
760void wxRichTextBulletsPage::OnNamestaticUpdate( wxUpdateUIEvent& event )
761{
762 OnStandardBulletUpdate(event);
763}
764
765
766/*!
767 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
768 */
769
770void wxRichTextBulletsPage::OnNamectrlSelected( wxCommandEvent& WXUNUSED(event) )
771{
772 if (m_dontUpdate)
773 return;
774 UpdatePreview();
775}
776
777/*!
778 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
779 */
780
781void wxRichTextBulletsPage::OnNamectrlUpdated( wxCommandEvent& WXUNUSED(event) )
782{
783 if (m_dontUpdate)
784 return;
785 UpdatePreview();
786}
787
788/*!
789 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
790 */
791
792void wxRichTextBulletsPage::OnNamectrlUIUpdate( wxUpdateUIEvent& event )
793{
794 OnStandardBulletUpdate(event);
795}
796
b68603d5 797#endif // wxUSE_RICHTEXT