]> git.saurik.com Git - wxWidgets.git/blame_incremental - src/richtext/richtextbulletspage.cpp
Fix initial state of radio toolbar tools in wxGTK.
[wxWidgets.git] / src / richtext / richtextbulletspage.cpp
... / ...
CommitLineData
1/////////////////////////////////////////////////////////////////////////////
2// Name: src/richtext/richtextbulletspage.cpp
3// Purpose:
4// Author: Julian Smart
5// Modified by:
6// Created: 10/4/2006 10:32:31 AM
7// RCS-ID: $Id$
8// Copyright: (c) Julian Smart
9// Licence: wxWindows licence
10/////////////////////////////////////////////////////////////////////////////
11
12#if wxUSE_RICHTEXT
13
14#include "wx/spinctrl.h"
15#include "wx/utils.h"
16#include "wx/richtext/richtextbulletspage.h"
17#include "wx/richtext/richtextsymboldlg.h"
18
19/*!
20 * wxRichTextBulletsPage type definition
21 */
22
23IMPLEMENT_DYNAMIC_CLASS( wxRichTextBulletsPage, wxRichTextDialogPage )
24
25/*!
26 * wxRichTextBulletsPage event table definition
27 */
28
29BEGIN_EVENT_TABLE( wxRichTextBulletsPage, wxRichTextDialogPage )
30
31////@begin wxRichTextBulletsPage event table entries
32 EVT_LISTBOX( ID_RICHTEXTBULLETSPAGE_STYLELISTBOX, wxRichTextBulletsPage::OnStylelistboxSelected )
33
34 EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_PERIODCTRL, wxRichTextBulletsPage::OnPeriodctrlClick )
35 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_PERIODCTRL, wxRichTextBulletsPage::OnPeriodctrlUpdate )
36
37 EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, wxRichTextBulletsPage::OnParenthesesctrlClick )
38 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, wxRichTextBulletsPage::OnParenthesesctrlUpdate )
39
40 EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_RIGHTPARENTHESISCTRL, wxRichTextBulletsPage::OnRightParenthesisCtrlClick )
41 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_RIGHTPARENTHESISCTRL, wxRichTextBulletsPage::OnRightParenthesisCtrlUpdate )
42
43 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_BULLETALIGNMENTCTRL, wxRichTextBulletsPage::OnBulletAlignmentCtrlSelected )
44
45 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, wxRichTextBulletsPage::OnSymbolstaticUpdate )
46
47 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlSelected )
48 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlUpdated )
49 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxRichTextBulletsPage::OnSymbolctrlUpdate )
50
51 EVT_BUTTON( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, wxRichTextBulletsPage::OnChooseSymbolClick )
52 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, wxRichTextBulletsPage::OnChooseSymbolUpdate )
53
54 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlSelected )
55 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlUpdated )
56 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxRichTextBulletsPage::OnSymbolfontctrlUIUpdate )
57
58 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NAMESTATIC, wxRichTextBulletsPage::OnNamestaticUpdate )
59
60 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_NAMECTRL, wxRichTextBulletsPage::OnNamectrlSelected )
61 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_NAMECTRL, wxRichTextBulletsPage::OnNamectrlUpdated )
62 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NAMECTRL, wxRichTextBulletsPage::OnNamectrlUIUpdate )
63
64 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC, wxRichTextBulletsPage::OnNumberstaticUpdate )
65
66 EVT_SPINCTRL( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUpdated )
67 EVT_SPIN_UP( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUp )
68 EVT_SPIN_DOWN( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlDown )
69 EVT_TEXT( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlTextUpdated )
70 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxRichTextBulletsPage::OnNumberctrlUpdate )
71
72////@end wxRichTextBulletsPage event table entries
73
74END_EVENT_TABLE()
75
76IMPLEMENT_HELP_PROVISION(wxRichTextBulletsPage)
77
78/*!
79 * wxRichTextBulletsPage constructors
80 */
81
82wxRichTextBulletsPage::wxRichTextBulletsPage( )
83{
84 Init();
85}
86
87wxRichTextBulletsPage::wxRichTextBulletsPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
88{
89 Init();
90 Create(parent, id, pos, size, style);
91}
92
93/*!
94 * Initialise members
95 */
96
97void wxRichTextBulletsPage::Init()
98{
99 m_hasBulletStyle = false;
100 m_hasBulletNumber = false;
101 m_hasBulletSymbol = false;
102 m_dontUpdate = false;
103
104////@begin wxRichTextBulletsPage member initialisation
105 m_styleListBox = NULL;
106 m_periodCtrl = NULL;
107 m_parenthesesCtrl = NULL;
108 m_rightParenthesisCtrl = NULL;
109 m_bulletAlignmentCtrl = NULL;
110 m_symbolCtrl = NULL;
111 m_symbolFontCtrl = NULL;
112 m_bulletNameCtrl = NULL;
113 m_numberCtrl = NULL;
114 m_previewCtrl = NULL;
115////@end wxRichTextBulletsPage member initialisation
116}
117
118/*!
119 * wxRichTextBulletsPage creator
120 */
121
122bool wxRichTextBulletsPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
123{
124////@begin wxRichTextBulletsPage creation
125 wxRichTextDialogPage::Create( parent, id, pos, size, style );
126
127 CreateControls();
128 if (GetSizer())
129 {
130 GetSizer()->SetSizeHints(this);
131 }
132 Centre();
133////@end wxRichTextBulletsPage creation
134 return true;
135}
136
137/*!
138 * Control creation for wxRichTextBulletsPage
139 */
140
141void wxRichTextBulletsPage::CreateControls()
142{
143 m_dontUpdate = true;
144
145////@begin wxRichTextBulletsPage content construction
146 wxRichTextBulletsPage* itemRichTextDialogPage1 = this;
147
148 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
149 itemRichTextDialogPage1->SetSizer(itemBoxSizer2);
150
151 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
152 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
153
154 wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
155 itemBoxSizer3->Add(itemBoxSizer4, 0, wxGROW, 5);
156
157 wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
158 itemBoxSizer4->Add(itemBoxSizer5, 0, wxGROW, 5);
159
160 wxStaticText* itemStaticText6 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("&Bullet style:"), wxDefaultPosition, wxDefaultSize, 0 );
161 itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
162
163 wxArrayString m_styleListBoxStrings;
164 m_styleListBox = new wxListBox( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_STYLELISTBOX, wxDefaultPosition, wxSize(-1, 90), m_styleListBoxStrings, wxLB_SINGLE );
165 m_styleListBox->SetHelpText(_("The available bullet styles."));
166 if (wxRichTextBulletsPage::ShowToolTips())
167 m_styleListBox->SetToolTip(_("The available bullet styles."));
168 itemBoxSizer5->Add(m_styleListBox, 1, wxGROW|wxALL, 5);
169
170 wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxHORIZONTAL);
171 itemBoxSizer5->Add(itemBoxSizer8, 0, wxGROW, 5);
172
173 m_periodCtrl = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_PERIODCTRL, _("Peri&od"), wxDefaultPosition, wxDefaultSize, 0 );
174 m_periodCtrl->SetValue(false);
175 m_periodCtrl->SetHelpText(_("Check to add a period after the bullet."));
176 if (wxRichTextBulletsPage::ShowToolTips())
177 m_periodCtrl->SetToolTip(_("Check to add a period after the bullet."));
178 itemBoxSizer8->Add(m_periodCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
179
180 m_parenthesesCtrl = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL, _("(*)"), wxDefaultPosition, wxDefaultSize, 0 );
181 m_parenthesesCtrl->SetValue(false);
182 m_parenthesesCtrl->SetHelpText(_("Check to enclose the bullet in parentheses."));
183 if (wxRichTextBulletsPage::ShowToolTips())
184 m_parenthesesCtrl->SetToolTip(_("Check to enclose the bullet in parentheses."));
185 itemBoxSizer8->Add(m_parenthesesCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
186
187 m_rightParenthesisCtrl = new wxCheckBox( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_RIGHTPARENTHESISCTRL, _("*)"), wxDefaultPosition, wxDefaultSize, 0 );
188 m_rightParenthesisCtrl->SetValue(false);
189 m_rightParenthesisCtrl->SetHelpText(_("Check to add a right parenthesis."));
190 if (wxRichTextBulletsPage::ShowToolTips())
191 m_rightParenthesisCtrl->SetToolTip(_("Check to add a right parenthesis."));
192 itemBoxSizer8->Add(m_rightParenthesisCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
193
194 itemBoxSizer5->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL, 5);
195
196 wxStaticText* itemStaticText13 = new wxStaticText( itemRichTextDialogPage1, wxID_STATIC, _("Bullet &Alignment:"), wxDefaultPosition, wxDefaultSize, 0 );
197 itemBoxSizer5->Add(itemStaticText13, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
198
199 wxArrayString m_bulletAlignmentCtrlStrings;
200 m_bulletAlignmentCtrlStrings.Add(_("Left"));
201 m_bulletAlignmentCtrlStrings.Add(_("Centre"));
202 m_bulletAlignmentCtrlStrings.Add(_("Right"));
203 m_bulletAlignmentCtrl = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_BULLETALIGNMENTCTRL, _("Left"), wxDefaultPosition, wxSize(60, -1), m_bulletAlignmentCtrlStrings, wxCB_READONLY );
204 m_bulletAlignmentCtrl->SetStringSelection(_("Left"));
205 m_bulletAlignmentCtrl->SetHelpText(_("The bullet character."));
206 if (wxRichTextBulletsPage::ShowToolTips())
207 m_bulletAlignmentCtrl->SetToolTip(_("The bullet character."));
208 itemBoxSizer5->Add(m_bulletAlignmentCtrl, 0, wxGROW|wxALL|wxFIXED_MINSIZE, 5);
209
210 itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
211
212 wxStaticLine* itemStaticLine16 = new wxStaticLine( itemRichTextDialogPage1, wxID_STATIC, wxDefaultPosition, wxDefaultSize, wxLI_VERTICAL );
213 itemBoxSizer4->Add(itemStaticLine16, 0, wxGROW|wxLEFT|wxRIGHT, 5);
214
215 itemBoxSizer4->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL|wxTOP|wxBOTTOM, 5);
216
217 wxBoxSizer* itemBoxSizer18 = new wxBoxSizer(wxVERTICAL);
218 itemBoxSizer4->Add(itemBoxSizer18, 0, wxGROW, 5);
219
220 wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxHORIZONTAL);
221 itemBoxSizer18->Add(itemBoxSizer19, 0, wxGROW, 5);
222
223 wxStaticText* itemStaticText20 = new wxStaticText( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, _("&Symbol:"), wxDefaultPosition, wxDefaultSize, 0 );
224 itemBoxSizer19->Add(itemStaticText20, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
225
226 wxArrayString m_symbolCtrlStrings;
227 m_symbolCtrl = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL, wxEmptyString, wxDefaultPosition, wxSize(60, -1), m_symbolCtrlStrings, wxCB_DROPDOWN );
228 m_symbolCtrl->SetHelpText(_("The bullet character."));
229 if (wxRichTextBulletsPage::ShowToolTips())
230 m_symbolCtrl->SetToolTip(_("The bullet character."));
231 itemBoxSizer19->Add(m_symbolCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL|wxFIXED_MINSIZE, 5);
232
233 wxButton* itemButton22 = new wxButton( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL, _("Ch&oose..."), wxDefaultPosition, wxDefaultSize, 0 );
234 itemButton22->SetHelpText(_("Click to browse for a symbol."));
235 if (wxRichTextBulletsPage::ShowToolTips())
236 itemButton22->SetToolTip(_("Click to browse for a symbol."));
237 itemBoxSizer19->Add(itemButton22, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
238
239 itemBoxSizer18->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL, 5);
240
241 wxStaticText* itemStaticText24 = new wxStaticText( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC, _("Symbol &font:"), wxDefaultPosition, wxDefaultSize, 0 );
242 itemBoxSizer18->Add(itemStaticText24, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
243
244 wxArrayString m_symbolFontCtrlStrings;
245 m_symbolFontCtrl = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_symbolFontCtrlStrings, wxCB_DROPDOWN );
246 m_symbolFontCtrl->SetHelpText(_("Available fonts."));
247 if (wxRichTextBulletsPage::ShowToolTips())
248 m_symbolFontCtrl->SetToolTip(_("Available fonts."));
249 itemBoxSizer18->Add(m_symbolFontCtrl, 0, wxGROW|wxALL, 5);
250
251 itemBoxSizer18->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL, 5);
252
253 wxStaticText* itemStaticText27 = new wxStaticText( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_NAMESTATIC, _("S&tandard bullet name:"), wxDefaultPosition, wxDefaultSize, 0 );
254 itemBoxSizer18->Add(itemStaticText27, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
255
256 wxArrayString m_bulletNameCtrlStrings;
257 m_bulletNameCtrl = new wxComboBox( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_NAMECTRL, wxEmptyString, wxDefaultPosition, wxDefaultSize, m_bulletNameCtrlStrings, wxCB_DROPDOWN );
258 m_bulletNameCtrl->SetHelpText(_("A standard bullet name."));
259 if (wxRichTextBulletsPage::ShowToolTips())
260 m_bulletNameCtrl->SetToolTip(_("A standard bullet name."));
261 itemBoxSizer18->Add(m_bulletNameCtrl, 0, wxGROW|wxALL, 5);
262
263 itemBoxSizer18->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL, 5);
264
265 wxStaticText* itemStaticText30 = new wxStaticText( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC, _("&Number:"), wxDefaultPosition, wxDefaultSize, 0 );
266 itemBoxSizer18->Add(itemStaticText30, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
267
268 m_numberCtrl = new wxSpinCtrl( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_NUMBERCTRL, wxT("0"), wxDefaultPosition, wxSize(50, -1), wxSP_ARROW_KEYS, 0, 100000, 0 );
269 m_numberCtrl->SetHelpText(_("The list item number."));
270 if (wxRichTextBulletsPage::ShowToolTips())
271 m_numberCtrl->SetToolTip(_("The list item number."));
272 itemBoxSizer18->Add(m_numberCtrl, 0, wxGROW|wxALL, 5);
273
274 itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL, 5);
275
276 m_previewCtrl = new wxRichTextCtrl( itemRichTextDialogPage1, ID_RICHTEXTBULLETSPAGE_PREVIEW_CTRL, wxEmptyString, wxDefaultPosition, wxSize(350, 100), wxBORDER_THEME|wxVSCROLL|wxTE_READONLY );
277 m_previewCtrl->SetHelpText(_("Shows a preview of the bullet settings."));
278 if (wxRichTextBulletsPage::ShowToolTips())
279 m_previewCtrl->SetToolTip(_("Shows a preview of the bullet settings."));
280 itemBoxSizer3->Add(m_previewCtrl, 1, wxGROW|wxALL, 5);
281
282////@end wxRichTextBulletsPage content construction
283
284 if (wxGetDisplaySize().y < 600)
285 m_previewCtrl->SetMinSize(wxSize(350, 50));
286
287 m_styleListBox->Append(_("(None)"));
288 m_styleListBox->Append(_("Arabic"));
289 m_styleListBox->Append(_("Upper case letters"));
290 m_styleListBox->Append(_("Lower case letters"));
291 m_styleListBox->Append(_("Upper case roman numerals"));
292 m_styleListBox->Append(_("Lower case roman numerals"));
293 m_styleListBox->Append(_("Numbered outline"));
294 m_styleListBox->Append(_("Symbol"));
295 m_styleListBox->Append(_("Bitmap"));
296 m_styleListBox->Append(_("Standard"));
297
298 m_symbolCtrl->Append(_("*"));
299 m_symbolCtrl->Append(_("-"));
300 m_symbolCtrl->Append(_(">"));
301 m_symbolCtrl->Append(_("+"));
302 m_symbolCtrl->Append(_("~"));
303
304 wxArrayString standardBulletNames;
305 if (wxRichTextBuffer::GetRenderer())
306 wxRichTextBuffer::GetRenderer()->EnumerateStandardBulletNames(standardBulletNames);
307
308 size_t i;
309 for (i = 0; i < standardBulletNames.GetCount(); i++)
310 m_bulletNameCtrl->Append(wxGetTranslation(standardBulletNames[i]));
311
312 wxArrayString facenames = wxRichTextCtrl::GetAvailableFontNames();
313 facenames.Sort();
314
315 m_symbolFontCtrl->Append(facenames);
316
317 m_dontUpdate = false;
318}
319
320/// Transfer data from/to window
321bool wxRichTextBulletsPage::TransferDataFromWindow()
322{
323 wxPanel::TransferDataFromWindow();
324
325 wxRichTextAttr* attr = GetAttributes();
326
327 int index = m_styleListBox->GetSelection();
328 if (index < 1)
329 {
330 m_hasBulletStyle = false;
331 m_hasBulletNumber = false;
332 m_hasBulletSymbol = false;
333 attr->SetBulletStyle(wxTEXT_ATTR_BULLET_STYLE_NONE);
334 attr->SetFlags(attr->GetFlags() & ~(wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_TEXT|wxTEXT_ATTR_BULLET_NAME));
335 }
336 else
337 {
338 m_hasBulletStyle = true;
339 }
340
341 if (m_hasBulletStyle)
342 {
343 long bulletStyle = wxRICHTEXT_BULLETINDEX_NONE;
344
345 if (index == wxRICHTEXT_BULLETINDEX_ARABIC)
346 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ARABIC;
347
348 else if (index == wxRICHTEXT_BULLETINDEX_UPPER_CASE)
349 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER;
350
351 else if (index == wxRICHTEXT_BULLETINDEX_LOWER_CASE)
352 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER;
353
354 else if (index == wxRICHTEXT_BULLETINDEX_UPPER_CASE_ROMAN)
355 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER;
356
357 else if (index == wxRICHTEXT_BULLETINDEX_LOWER_CASE_ROMAN)
358 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER;
359
360 else if (index == wxRICHTEXT_BULLETINDEX_OUTLINE)
361 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_OUTLINE;
362
363 else if (index == wxRICHTEXT_BULLETINDEX_SYMBOL)
364 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_SYMBOL;
365
366 else if (index == wxRICHTEXT_BULLETINDEX_BITMAP)
367 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_BITMAP;
368
369 else if (index == wxRICHTEXT_BULLETINDEX_STANDARD)
370 {
371 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_STANDARD;
372 wxArrayString standardBulletNames;
373 if (wxRichTextBuffer::GetRenderer() && m_bulletNameCtrl->GetSelection() != wxNOT_FOUND)
374 {
375 int sel = m_bulletNameCtrl->GetSelection();
376 wxString selName = m_bulletNameCtrl->GetString(sel);
377
378 // Try to get the untranslated name using the current selection index of the combobox.
379 // into account.
380 wxRichTextBuffer::GetRenderer()->EnumerateStandardBulletNames(standardBulletNames);
381 if (sel < (int) standardBulletNames.GetCount() && m_bulletNameCtrl->GetValue() == selName)
382 attr->SetBulletName(standardBulletNames[sel]);
383 else
384 attr->SetBulletName(m_bulletNameCtrl->GetValue());
385 }
386 else
387 attr->SetBulletName(m_bulletNameCtrl->GetValue());
388 }
389
390 if (m_parenthesesCtrl->GetValue())
391 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_PARENTHESES;
392 if (m_rightParenthesisCtrl->GetValue())
393 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_RIGHT_PARENTHESIS;
394 if (m_periodCtrl->GetValue())
395 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_PERIOD;
396
397 if (m_bulletAlignmentCtrl->GetSelection() == 1)
398 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ALIGN_CENTRE;
399 else if (m_bulletAlignmentCtrl->GetSelection() == 2)
400 bulletStyle |= wxTEXT_ATTR_BULLET_STYLE_ALIGN_RIGHT;
401 // Left is implied
402
403 attr->SetBulletStyle(bulletStyle);
404 }
405
406 if (m_hasBulletNumber)
407 {
408 attr->SetBulletNumber(m_numberCtrl->GetValue());
409 }
410
411 if (m_hasBulletSymbol)
412 {
413 attr->SetBulletText(m_symbolCtrl->GetValue());
414 attr->SetBulletFont(m_symbolFontCtrl->GetValue());
415 }
416
417 return true;
418}
419
420bool wxRichTextBulletsPage::TransferDataToWindow()
421{
422 m_dontUpdate = true;
423
424 wxPanel::TransferDataToWindow();
425
426 wxRichTextAttr* attr = GetAttributes();
427
428 if (attr->HasBulletStyle())
429 {
430 m_hasBulletStyle = true;
431 int index = wxRICHTEXT_BULLETINDEX_NONE;
432
433 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ARABIC)
434 index = wxRICHTEXT_BULLETINDEX_ARABIC;
435
436 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER)
437 index = wxRICHTEXT_BULLETINDEX_UPPER_CASE;
438
439 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER)
440 index = wxRICHTEXT_BULLETINDEX_LOWER_CASE;
441
442 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER)
443 index = wxRICHTEXT_BULLETINDEX_UPPER_CASE_ROMAN;
444
445 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER)
446 index = wxRICHTEXT_BULLETINDEX_LOWER_CASE_ROMAN;
447
448 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_OUTLINE)
449 index = wxRICHTEXT_BULLETINDEX_OUTLINE;
450
451 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_SYMBOL)
452 index = wxRICHTEXT_BULLETINDEX_SYMBOL;
453
454 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_BITMAP)
455 index = wxRICHTEXT_BULLETINDEX_BITMAP;
456
457 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_STANDARD)
458 index = wxRICHTEXT_BULLETINDEX_STANDARD;
459
460 m_styleListBox->SetSelection(index);
461
462 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PARENTHESES)
463 m_parenthesesCtrl->SetValue(true);
464 else
465 m_parenthesesCtrl->SetValue(false);
466
467 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_RIGHT_PARENTHESIS)
468 m_rightParenthesisCtrl->SetValue(true);
469 else
470 m_rightParenthesisCtrl->SetValue(false);
471
472 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PERIOD)
473 m_periodCtrl->SetValue(true);
474 else
475 m_periodCtrl->SetValue(false);
476
477 if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ALIGN_CENTRE)
478 m_bulletAlignmentCtrl->SetSelection(1);
479 else if (attr->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ALIGN_RIGHT)
480 m_bulletAlignmentCtrl->SetSelection(2);
481 else
482 m_bulletAlignmentCtrl->SetSelection(0);
483 }
484 else
485 {
486 m_hasBulletStyle = false;
487 m_styleListBox->SetSelection(-1);
488 m_bulletAlignmentCtrl->SetSelection(-1);
489 }
490
491 if (attr->HasBulletText())
492 {
493 m_symbolCtrl->SetValue(attr->GetBulletText());
494 m_symbolFontCtrl->SetValue(attr->GetBulletFont());
495 }
496 else
497 m_symbolCtrl->SetValue(wxEmptyString);
498
499 if (attr->HasBulletNumber())
500 m_numberCtrl->SetValue(attr->GetBulletNumber());
501 else
502 m_numberCtrl->SetValue(0);
503
504 if (attr->HasBulletName())
505 {
506 wxArrayString standardBulletNames;
507 if (wxRichTextBuffer::GetRenderer())
508 {
509 // Try to set the control by index in order to take translated combo control strings
510 // into account.
511 wxRichTextBuffer::GetRenderer()->EnumerateStandardBulletNames(standardBulletNames);
512 int idx = standardBulletNames.Index(attr->GetBulletName());
513 if (idx != -1 && idx < (int) m_bulletNameCtrl->GetCount())
514 m_bulletNameCtrl->SetSelection(idx);
515 else
516 m_bulletNameCtrl->SetValue(attr->GetBulletName());
517 }
518 else
519 m_bulletNameCtrl->SetValue(attr->GetBulletName());
520 }
521 else
522 m_bulletNameCtrl->SetValue(wxEmptyString);
523
524 UpdatePreview();
525
526 m_dontUpdate = false;
527
528 return true;
529}
530
531/// Updates the bullet preview
532void wxRichTextBulletsPage::UpdatePreview()
533{
534 static const wxChar* s_para1 = wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \
535Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus.\n");
536
537 static const wxChar* s_para2 = wxT("Duis pharetra consequat dui. Cum sociis natoque penatibus \
538et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum.\n");
539
540 static const wxChar* s_para3 = wxT("Integer convallis dolor at augue \
541iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n");
542
543 TransferDataFromWindow();
544 wxRichTextAttr attr(*GetAttributes());
545 attr.SetFlags(attr.GetFlags() &
546 (wxTEXT_ATTR_BULLET_STYLE|wxTEXT_ATTR_BULLET_NUMBER|wxTEXT_ATTR_BULLET_TEXT|wxTEXT_ATTR_BULLET_NAME|
547 wxTEXT_ATTR_ALIGNMENT|wxTEXT_ATTR_LEFT_INDENT|wxTEXT_ATTR_RIGHT_INDENT|wxTEXT_ATTR_PARA_SPACING_BEFORE|wxTEXT_ATTR_PARA_SPACING_AFTER|
548 wxTEXT_ATTR_LINE_SPACING));
549
550 wxFont font(m_previewCtrl->GetFont());
551 font.SetPointSize(9);
552 m_previewCtrl->SetFont(font);
553
554 wxRichTextAttr normalParaAttr;
555 normalParaAttr.SetFont(font);
556 normalParaAttr.SetTextColour(wxColour(wxT("LIGHT GREY")));
557
558 m_previewCtrl->Freeze();
559 m_previewCtrl->Clear();
560
561 m_previewCtrl->BeginStyle(normalParaAttr);
562 m_previewCtrl->WriteText(s_para1);
563 m_previewCtrl->EndStyle();
564
565 m_previewCtrl->BeginStyle(attr);
566 m_previewCtrl->WriteText(s_para2);
567 m_previewCtrl->EndStyle();
568
569 m_previewCtrl->BeginStyle(normalParaAttr);
570 m_previewCtrl->WriteText(s_para3);
571 m_previewCtrl->EndStyle();
572
573 m_previewCtrl->NumberList(wxRichTextRange(0, m_previewCtrl->GetLastPosition()+1));
574
575 m_previewCtrl->Thaw();
576}
577
578wxRichTextAttr* wxRichTextBulletsPage::GetAttributes()
579{
580 return wxRichTextFormattingDialog::GetDialogAttributes(this);
581}
582
583/*!
584 * Should we show tooltips?
585 */
586
587bool wxRichTextBulletsPage::ShowToolTips()
588{
589 return wxRichTextFormattingDialog::ShowToolTips();
590}
591
592/*!
593 * Get bitmap resources
594 */
595
596wxBitmap wxRichTextBulletsPage::GetBitmapResource( const wxString& name )
597{
598 // Bitmap retrieval
599////@begin wxRichTextBulletsPage bitmap retrieval
600 wxUnusedVar(name);
601 return wxNullBitmap;
602////@end wxRichTextBulletsPage bitmap retrieval
603}
604
605/*!
606 * Get icon resources
607 */
608
609wxIcon wxRichTextBulletsPage::GetIconResource( const wxString& name )
610{
611 // Icon retrieval
612////@begin wxRichTextBulletsPage icon retrieval
613 wxUnusedVar(name);
614 return wxNullIcon;
615////@end wxRichTextBulletsPage icon retrieval
616}
617
618/*!
619 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_STYLELISTBOX
620 */
621
622void wxRichTextBulletsPage::OnStylelistboxSelected( wxCommandEvent& WXUNUSED(event) )
623{
624 if (!m_dontUpdate)
625 {
626 m_hasBulletStyle = true;
627
628 if (m_styleListBox->GetSelection() == wxRICHTEXT_BULLETINDEX_SYMBOL)
629 m_hasBulletSymbol = true;
630
631 UpdatePreview();
632 }
633}
634
635/*!
636 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
637 */
638
639void wxRichTextBulletsPage::OnSymbolctrlSelected( wxCommandEvent& WXUNUSED(event) )
640{
641 if (!m_dontUpdate)
642 {
643 m_hasBulletSymbol = true;
644 UpdatePreview();
645 }
646}
647
648/*!
649 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
650 */
651
652void wxRichTextBulletsPage::OnSymbolctrlUpdated( wxCommandEvent& WXUNUSED(event) )
653{
654 if (!m_dontUpdate)
655 {
656 m_hasBulletSymbol = true;
657 UpdatePreview();
658 }
659}
660
661/*!
662 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
663 */
664
665void wxRichTextBulletsPage::OnSymbolctrlUpdate( wxUpdateUIEvent& event )
666{
667 OnSymbolUpdate(event);
668}
669
670/*!
671 * wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
672 */
673
674void wxRichTextBulletsPage::OnNumberctrlUpdated( wxSpinEvent& WXUNUSED(event) )
675{
676 if (!m_dontUpdate)
677 {
678 m_hasBulletNumber = true;
679 UpdatePreview();
680 }
681}
682
683/*!
684 * wxEVT_SCROLL_LINEUP event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
685 */
686
687void wxRichTextBulletsPage::OnNumberctrlUp( wxSpinEvent& WXUNUSED(event) )
688{
689 if (!m_dontUpdate)
690 {
691 m_hasBulletNumber = true;
692 UpdatePreview();
693 }
694}
695
696/*!
697 * wxEVT_SCROLL_LINEDOWN event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
698 */
699
700void wxRichTextBulletsPage::OnNumberctrlDown( wxSpinEvent& WXUNUSED(event) )
701{
702 if (!m_dontUpdate)
703 {
704 m_hasBulletNumber = true;
705 UpdatePreview();
706 }
707}
708
709/*!
710 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
711 */
712
713void wxRichTextBulletsPage::OnNumberctrlTextUpdated( wxCommandEvent& WXUNUSED(event) )
714{
715 if (!m_dontUpdate)
716 {
717 m_hasBulletNumber = true;
718 UpdatePreview();
719 }
720}
721
722/*!
723 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
724 */
725
726void wxRichTextBulletsPage::OnNumberctrlUpdate( wxUpdateUIEvent& event )
727{
728 OnNumberUpdate(event);
729}
730
731/*!
732 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
733 */
734
735void wxRichTextBulletsPage::OnParenthesesctrlClick( wxCommandEvent& WXUNUSED(event) )
736{
737 if (!m_dontUpdate)
738 {
739 m_hasBulletStyle = true;
740 UpdatePreview();
741 }
742}
743
744/*!
745 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
746 */
747
748void wxRichTextBulletsPage::OnParenthesesctrlUpdate( wxUpdateUIEvent& event )
749{
750 int sel = m_styleListBox->GetSelection();
751 event.Enable(m_hasBulletStyle && (sel != wxRICHTEXT_BULLETINDEX_SYMBOL &&
752 sel != wxRICHTEXT_BULLETINDEX_BITMAP &&
753 sel != wxRICHTEXT_BULLETINDEX_NONE));
754}
755
756/*!
757 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
758 */
759
760void wxRichTextBulletsPage::OnPeriodctrlClick( wxCommandEvent& WXUNUSED(event) )
761{
762 if (!m_dontUpdate)
763 {
764 m_hasBulletStyle = true;
765 UpdatePreview();
766 }
767}
768
769/*!
770 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
771 */
772
773void wxRichTextBulletsPage::OnPeriodctrlUpdate( wxUpdateUIEvent& event )
774{
775 int sel = m_styleListBox->GetSelection();
776 event.Enable(m_hasBulletStyle && (sel != wxRICHTEXT_BULLETINDEX_SYMBOL &&
777 sel != wxRICHTEXT_BULLETINDEX_BITMAP &&
778 sel != wxRICHTEXT_BULLETINDEX_NONE));
779}
780
781/*!
782 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
783 */
784
785void wxRichTextBulletsPage::OnChooseSymbolClick( wxCommandEvent& WXUNUSED(event) )
786{
787 int sel = m_styleListBox->GetSelection();
788 if (m_hasBulletStyle && sel == wxRICHTEXT_BULLETINDEX_SYMBOL)
789 {
790 wxString symbol = m_symbolCtrl->GetValue();
791 wxString fontName = m_symbolFontCtrl->GetValue();
792 wxSymbolPickerDialog dlg(symbol, fontName, fontName, this);
793
794 if (dlg.ShowModal() == wxID_OK)
795 {
796 m_dontUpdate = true;
797
798 m_symbolCtrl->SetValue(dlg.GetSymbol());
799 m_symbolFontCtrl->SetValue(dlg.GetFontName());
800
801 UpdatePreview();
802
803 m_dontUpdate = false;
804 }
805 }
806}
807
808/*!
809 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
810 */
811
812void wxRichTextBulletsPage::OnChooseSymbolUpdate( wxUpdateUIEvent& event )
813{
814 OnSymbolUpdate(event);
815}
816/*!
817 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
818 */
819
820void wxRichTextBulletsPage::OnSymbolfontctrlSelected( wxCommandEvent& WXUNUSED(event) )
821{
822 if (m_dontUpdate)
823 return;
824 UpdatePreview();
825}
826
827/*!
828 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
829 */
830
831void wxRichTextBulletsPage::OnSymbolfontctrlUpdated( wxCommandEvent& WXUNUSED(event) )
832{
833 if (m_dontUpdate)
834 return;
835 UpdatePreview();
836}
837
838
839/*!
840 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
841 */
842
843void wxRichTextBulletsPage::OnSymbolfontctrlUIUpdate( wxUpdateUIEvent& event )
844{
845 OnSymbolUpdate(event);
846}
847
848/// Update for symbol-related controls
849void wxRichTextBulletsPage::OnSymbolUpdate( wxUpdateUIEvent& event )
850{
851 int sel = m_styleListBox->GetSelection();
852 event.Enable(m_hasBulletStyle && (sel == wxRICHTEXT_BULLETINDEX_SYMBOL));
853}
854
855/// Update for number-related controls
856void wxRichTextBulletsPage::OnNumberUpdate( wxUpdateUIEvent& event )
857{
858 int sel = m_styleListBox->GetSelection();
859 event.Enable( m_hasBulletStyle && (sel != wxRICHTEXT_BULLETINDEX_SYMBOL &&
860 sel != wxRICHTEXT_BULLETINDEX_BITMAP &&
861 sel != wxRICHTEXT_BULLETINDEX_STANDARD &&
862 sel != wxRICHTEXT_BULLETINDEX_NONE));
863}
864
865/// Update for standard bullet-related controls
866void wxRichTextBulletsPage::OnStandardBulletUpdate( wxUpdateUIEvent& event )
867{
868 int sel = m_styleListBox->GetSelection();
869 event.Enable( sel == wxRICHTEXT_BULLETINDEX_STANDARD );
870}
871
872
873/*!
874 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC
875 */
876
877void wxRichTextBulletsPage::OnSymbolstaticUpdate( wxUpdateUIEvent& event )
878{
879 OnSymbolUpdate(event);
880}
881
882
883/*!
884 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC
885 */
886
887void wxRichTextBulletsPage::OnNumberstaticUpdate( wxUpdateUIEvent& event )
888{
889 OnNumberUpdate(event);
890}
891
892/*!
893 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NAMESTATIC
894 */
895
896void wxRichTextBulletsPage::OnNamestaticUpdate( wxUpdateUIEvent& event )
897{
898 OnStandardBulletUpdate(event);
899}
900
901
902/*!
903 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
904 */
905
906void wxRichTextBulletsPage::OnNamectrlSelected( wxCommandEvent& WXUNUSED(event) )
907{
908 if (m_dontUpdate)
909 return;
910 UpdatePreview();
911}
912
913/*!
914 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
915 */
916
917void wxRichTextBulletsPage::OnNamectrlUpdated( wxCommandEvent& WXUNUSED(event) )
918{
919 if (m_dontUpdate)
920 return;
921 UpdatePreview();
922}
923
924/*!
925 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
926 */
927
928void wxRichTextBulletsPage::OnNamectrlUIUpdate( wxUpdateUIEvent& event )
929{
930 OnStandardBulletUpdate(event);
931}
932
933#endif // wxUSE_RICHTEXT
934/*!
935 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_RIGHT_PARENTHESIS_CTRL
936 */
937
938void wxRichTextBulletsPage::OnRightParenthesisCtrlClick( wxCommandEvent& WXUNUSED(event) )
939{
940 if (!m_dontUpdate)
941 {
942 m_hasBulletStyle = true;
943 UpdatePreview();
944 }
945}
946
947/*!
948 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_RIGHT_PARENTHESIS_CTRL
949 */
950
951void wxRichTextBulletsPage::OnRightParenthesisCtrlUpdate( wxUpdateUIEvent& event )
952{
953 int sel = m_styleListBox->GetSelection();
954 event.Enable(m_hasBulletStyle && (sel != wxRICHTEXT_BULLETINDEX_SYMBOL &&
955 sel != wxRICHTEXT_BULLETINDEX_BITMAP &&
956 sel != wxRICHTEXT_BULLETINDEX_NONE));
957}
958
959/*!
960 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_COMBOBOX
961 */
962
963void wxRichTextBulletsPage::OnBulletAlignmentCtrlSelected( wxCommandEvent& WXUNUSED(event) )
964{
965 if (m_dontUpdate)
966 return;
967 UpdatePreview();
968}
969
970