1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/richtext/richtextbulletspage.cpp
4 // Author: Julian Smart
6 // Created: 10/4/2006 10:32:31 AM
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
14 #include "wx/spinctrl.h"
16 #include "wx/richtext/richtextbulletspage.h"
17 #include "wx/richtext/richtextsymboldlg.h"
20 * wxRichTextBulletsPage type definition
23 IMPLEMENT_DYNAMIC_CLASS( wxRichTextBulletsPage
, wxRichTextDialogPage
)
26 * wxRichTextBulletsPage event table definition
29 BEGIN_EVENT_TABLE( wxRichTextBulletsPage
, wxRichTextDialogPage
)
31 ////@begin wxRichTextBulletsPage event table entries
32 EVT_LISTBOX( ID_RICHTEXTBULLETSPAGE_STYLELISTBOX
, wxRichTextBulletsPage::OnStylelistboxSelected
)
34 EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_PERIODCTRL
, wxRichTextBulletsPage::OnPeriodctrlClick
)
35 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_PERIODCTRL
, wxRichTextBulletsPage::OnPeriodctrlUpdate
)
37 EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
, wxRichTextBulletsPage::OnParenthesesctrlClick
)
38 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
, wxRichTextBulletsPage::OnParenthesesctrlUpdate
)
40 EVT_CHECKBOX( ID_RICHTEXTBULLETSPAGE_RIGHTPARENTHESISCTRL
, wxRichTextBulletsPage::OnRightParenthesisCtrlClick
)
41 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_RIGHTPARENTHESISCTRL
, wxRichTextBulletsPage::OnRightParenthesisCtrlUpdate
)
43 EVT_COMBOBOX( ID_RICHTEXTBULLETSPAGE_BULLETALIGNMENTCTRL
, wxRichTextBulletsPage::OnBulletAlignmentCtrlSelected
)
45 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC
, wxRichTextBulletsPage::OnSymbolstaticUpdate
)
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
)
51 EVT_BUTTON( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
, wxRichTextBulletsPage::OnChooseSymbolClick
)
52 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
, wxRichTextBulletsPage::OnChooseSymbolUpdate
)
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
)
58 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NAMESTATIC
, wxRichTextBulletsPage::OnNamestaticUpdate
)
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
)
64 EVT_UPDATE_UI( ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC
, wxRichTextBulletsPage::OnNumberstaticUpdate
)
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
)
72 ////@end wxRichTextBulletsPage event table entries
76 IMPLEMENT_HELP_PROVISION(wxRichTextBulletsPage
)
79 * wxRichTextBulletsPage constructors
82 wxRichTextBulletsPage::wxRichTextBulletsPage( )
87 wxRichTextBulletsPage::wxRichTextBulletsPage( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
90 Create(parent
, id
, pos
, size
, style
);
97 void wxRichTextBulletsPage::Init()
99 m_hasBulletStyle
= false;
100 m_hasBulletNumber
= false;
101 m_hasBulletSymbol
= false;
102 m_dontUpdate
= false;
104 ////@begin wxRichTextBulletsPage member initialisation
105 m_styleListBox
= NULL
;
107 m_parenthesesCtrl
= NULL
;
108 m_rightParenthesisCtrl
= NULL
;
109 m_bulletAlignmentCtrl
= NULL
;
111 m_symbolFontCtrl
= NULL
;
112 m_bulletNameCtrl
= NULL
;
114 m_previewCtrl
= NULL
;
115 ////@end wxRichTextBulletsPage member initialisation
119 * wxRichTextBulletsPage creator
122 bool wxRichTextBulletsPage::Create( wxWindow
* parent
, wxWindowID id
, const wxPoint
& pos
, const wxSize
& size
, long style
)
124 ////@begin wxRichTextBulletsPage creation
125 wxRichTextDialogPage::Create( parent
, id
, pos
, size
, style
);
130 GetSizer()->SetSizeHints(this);
133 ////@end wxRichTextBulletsPage creation
138 * Control creation for wxRichTextBulletsPage
141 void wxRichTextBulletsPage::CreateControls()
145 ////@begin wxRichTextBulletsPage content construction
146 wxRichTextBulletsPage
* itemRichTextDialogPage1
= this;
148 wxBoxSizer
* itemBoxSizer2
= new wxBoxSizer(wxVERTICAL
);
149 itemRichTextDialogPage1
->SetSizer(itemBoxSizer2
);
151 wxBoxSizer
* itemBoxSizer3
= new wxBoxSizer(wxVERTICAL
);
152 itemBoxSizer2
->Add(itemBoxSizer3
, 1, wxGROW
|wxALL
, 5);
154 wxBoxSizer
* itemBoxSizer4
= new wxBoxSizer(wxHORIZONTAL
);
155 itemBoxSizer3
->Add(itemBoxSizer4
, 0, wxGROW
, 5);
157 wxBoxSizer
* itemBoxSizer5
= new wxBoxSizer(wxVERTICAL
);
158 itemBoxSizer4
->Add(itemBoxSizer5
, 0, wxGROW
, 5);
160 wxStaticText
* itemStaticText6
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("&Bullet style:"), wxDefaultPosition
, wxDefaultSize
, 0 );
161 itemBoxSizer5
->Add(itemStaticText6
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
, 5);
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);
170 wxBoxSizer
* itemBoxSizer8
= new wxBoxSizer(wxHORIZONTAL
);
171 itemBoxSizer5
->Add(itemBoxSizer8
, 0, wxGROW
, 5);
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);
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);
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);
194 itemBoxSizer5
->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL
, 5);
196 wxStaticText
* itemStaticText13
= new wxStaticText( itemRichTextDialogPage1
, wxID_STATIC
, _("Bullet &Alignment:"), wxDefaultPosition
, wxDefaultSize
, 0 );
197 itemBoxSizer5
->Add(itemStaticText13
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
, 5);
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);
210 itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5);
212 wxStaticLine
* itemStaticLine16
= new wxStaticLine( itemRichTextDialogPage1
, wxID_STATIC
, wxDefaultPosition
, wxDefaultSize
, wxLI_VERTICAL
);
213 itemBoxSizer4
->Add(itemStaticLine16
, 0, wxGROW
|wxLEFT
|wxRIGHT
, 5);
215 itemBoxSizer4
->Add(2, 1, 1, wxALIGN_CENTER_VERTICAL
|wxTOP
|wxBOTTOM
, 5);
217 wxBoxSizer
* itemBoxSizer18
= new wxBoxSizer(wxVERTICAL
);
218 itemBoxSizer4
->Add(itemBoxSizer18
, 0, wxGROW
, 5);
220 wxBoxSizer
* itemBoxSizer19
= new wxBoxSizer(wxHORIZONTAL
);
221 itemBoxSizer18
->Add(itemBoxSizer19
, 0, wxGROW
, 5);
223 wxStaticText
* itemStaticText20
= new wxStaticText( itemRichTextDialogPage1
, ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC
, _("&Symbol:"), wxDefaultPosition
, wxDefaultSize
, 0 );
224 itemBoxSizer19
->Add(itemStaticText20
, 0, wxALIGN_CENTER_VERTICAL
|wxALL
, 5);
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);
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);
239 itemBoxSizer18
->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL
, 5);
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);
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);
251 itemBoxSizer18
->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL
, 5);
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);
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);
263 itemBoxSizer18
->Add(5, 5, 1, wxALIGN_CENTER_HORIZONTAL
, 5);
265 wxStaticText
* itemStaticText30
= new wxStaticText( itemRichTextDialogPage1
, ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC
, _("&Number:"), wxDefaultPosition
, wxDefaultSize
, 0 );
266 itemBoxSizer18
->Add(itemStaticText30
, 0, wxALIGN_LEFT
|wxLEFT
|wxRIGHT
|wxTOP
, 5);
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);
274 itemBoxSizer3
->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL
, 5);
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);
282 ////@end wxRichTextBulletsPage content construction
284 if (wxGetDisplaySize().y
< 600)
285 m_previewCtrl
->SetMinSize(wxSize(350, 50));
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"));
298 m_symbolCtrl
->Append(_("*"));
299 m_symbolCtrl
->Append(_("-"));
300 m_symbolCtrl
->Append(_(">"));
301 m_symbolCtrl
->Append(_("+"));
302 m_symbolCtrl
->Append(_("~"));
304 wxArrayString standardBulletNames
;
305 if (wxRichTextBuffer::GetRenderer())
306 wxRichTextBuffer::GetRenderer()->EnumerateStandardBulletNames(standardBulletNames
);
309 for (i
= 0; i
< standardBulletNames
.GetCount(); i
++)
310 m_bulletNameCtrl
->Append(wxGetTranslation(standardBulletNames
[i
]));
312 wxArrayString facenames
= wxRichTextCtrl::GetAvailableFontNames();
315 m_symbolFontCtrl
->Append(facenames
);
317 m_dontUpdate
= false;
320 /// Transfer data from/to window
321 bool wxRichTextBulletsPage::TransferDataFromWindow()
323 wxPanel::TransferDataFromWindow();
325 wxRichTextAttr
* attr
= GetAttributes();
327 int index
= m_styleListBox
->GetSelection();
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
));
338 m_hasBulletStyle
= true;
341 if (m_hasBulletStyle
)
343 long bulletStyle
= wxRICHTEXT_BULLETINDEX_NONE
;
345 if (index
== wxRICHTEXT_BULLETINDEX_ARABIC
)
346 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_ARABIC
;
348 else if (index
== wxRICHTEXT_BULLETINDEX_UPPER_CASE
)
349 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER
;
351 else if (index
== wxRICHTEXT_BULLETINDEX_LOWER_CASE
)
352 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER
;
354 else if (index
== wxRICHTEXT_BULLETINDEX_UPPER_CASE_ROMAN
)
355 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER
;
357 else if (index
== wxRICHTEXT_BULLETINDEX_LOWER_CASE_ROMAN
)
358 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER
;
360 else if (index
== wxRICHTEXT_BULLETINDEX_OUTLINE
)
361 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_OUTLINE
;
363 else if (index
== wxRICHTEXT_BULLETINDEX_SYMBOL
)
364 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_SYMBOL
;
366 else if (index
== wxRICHTEXT_BULLETINDEX_BITMAP
)
368 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_BITMAP
;
369 if (m_bulletNameCtrl
->GetValue().IsEmpty())
370 attr
->SetFlags(attr
->GetFlags() & ~wxTEXT_ATTR_BULLET_NAME
);
372 attr
->SetBulletName(m_bulletNameCtrl
->GetValue());
375 else if (index
== wxRICHTEXT_BULLETINDEX_STANDARD
)
377 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_STANDARD
;
378 wxArrayString standardBulletNames
;
379 if (wxRichTextBuffer::GetRenderer() && m_bulletNameCtrl
->GetSelection() != wxNOT_FOUND
)
381 int sel
= m_bulletNameCtrl
->GetSelection();
382 wxString selName
= m_bulletNameCtrl
->GetString(sel
);
384 // Try to get the untranslated name using the current selection index of the combobox.
386 wxRichTextBuffer::GetRenderer()->EnumerateStandardBulletNames(standardBulletNames
);
387 if (sel
< (int) standardBulletNames
.GetCount() && m_bulletNameCtrl
->GetValue() == selName
)
388 attr
->SetBulletName(standardBulletNames
[sel
]);
390 attr
->SetBulletName(m_bulletNameCtrl
->GetValue());
393 attr
->SetBulletName(m_bulletNameCtrl
->GetValue());
396 if (m_parenthesesCtrl
->GetValue())
397 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_PARENTHESES
;
398 if (m_rightParenthesisCtrl
->GetValue())
399 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_RIGHT_PARENTHESIS
;
400 if (m_periodCtrl
->GetValue())
401 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_PERIOD
;
403 if (m_bulletAlignmentCtrl
->GetSelection() == 1)
404 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_ALIGN_CENTRE
;
405 else if (m_bulletAlignmentCtrl
->GetSelection() == 2)
406 bulletStyle
|= wxTEXT_ATTR_BULLET_STYLE_ALIGN_RIGHT
;
409 attr
->SetBulletStyle(bulletStyle
);
412 if (m_hasBulletNumber
)
414 attr
->SetBulletNumber(m_numberCtrl
->GetValue());
417 if (m_hasBulletSymbol
)
419 attr
->SetBulletText(m_symbolCtrl
->GetValue());
420 attr
->SetBulletFont(m_symbolFontCtrl
->GetValue());
426 bool wxRichTextBulletsPage::TransferDataToWindow()
430 wxPanel::TransferDataToWindow();
432 wxRichTextAttr
* attr
= GetAttributes();
434 if (attr
->HasBulletStyle())
436 m_hasBulletStyle
= true;
437 int index
= wxRICHTEXT_BULLETINDEX_NONE
;
439 if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ARABIC
)
440 index
= wxRICHTEXT_BULLETINDEX_ARABIC
;
442 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_UPPER
)
443 index
= wxRICHTEXT_BULLETINDEX_UPPER_CASE
;
445 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_LETTERS_LOWER
)
446 index
= wxRICHTEXT_BULLETINDEX_LOWER_CASE
;
448 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_UPPER
)
449 index
= wxRICHTEXT_BULLETINDEX_UPPER_CASE_ROMAN
;
451 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ROMAN_LOWER
)
452 index
= wxRICHTEXT_BULLETINDEX_LOWER_CASE_ROMAN
;
454 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_OUTLINE
)
455 index
= wxRICHTEXT_BULLETINDEX_OUTLINE
;
457 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_SYMBOL
)
458 index
= wxRICHTEXT_BULLETINDEX_SYMBOL
;
460 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_BITMAP
)
461 index
= wxRICHTEXT_BULLETINDEX_BITMAP
;
463 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_STANDARD
)
464 index
= wxRICHTEXT_BULLETINDEX_STANDARD
;
466 m_styleListBox
->SetSelection(index
);
468 if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PARENTHESES
)
469 m_parenthesesCtrl
->SetValue(true);
471 m_parenthesesCtrl
->SetValue(false);
473 if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_RIGHT_PARENTHESIS
)
474 m_rightParenthesisCtrl
->SetValue(true);
476 m_rightParenthesisCtrl
->SetValue(false);
478 if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_PERIOD
)
479 m_periodCtrl
->SetValue(true);
481 m_periodCtrl
->SetValue(false);
483 if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ALIGN_CENTRE
)
484 m_bulletAlignmentCtrl
->SetSelection(1);
485 else if (attr
->GetBulletStyle() & wxTEXT_ATTR_BULLET_STYLE_ALIGN_RIGHT
)
486 m_bulletAlignmentCtrl
->SetSelection(2);
488 m_bulletAlignmentCtrl
->SetSelection(0);
492 m_hasBulletStyle
= false;
493 m_styleListBox
->SetSelection(-1);
494 m_bulletAlignmentCtrl
->SetSelection(-1);
497 if (attr
->HasBulletText())
499 m_symbolCtrl
->SetValue(attr
->GetBulletText());
500 m_symbolFontCtrl
->SetValue(attr
->GetBulletFont());
503 m_symbolCtrl
->SetValue(wxEmptyString
);
505 if (attr
->HasBulletNumber())
506 m_numberCtrl
->SetValue(attr
->GetBulletNumber());
508 m_numberCtrl
->SetValue(0);
510 if (attr
->HasBulletName())
512 wxArrayString standardBulletNames
;
513 if (wxRichTextBuffer::GetRenderer())
515 // Try to set the control by index in order to take translated combo control strings
517 wxRichTextBuffer::GetRenderer()->EnumerateStandardBulletNames(standardBulletNames
);
518 int idx
= standardBulletNames
.Index(attr
->GetBulletName());
519 if (idx
!= -1 && idx
< (int) m_bulletNameCtrl
->GetCount())
520 m_bulletNameCtrl
->SetSelection(idx
);
522 m_bulletNameCtrl
->SetValue(attr
->GetBulletName());
525 m_bulletNameCtrl
->SetValue(attr
->GetBulletName());
528 m_bulletNameCtrl
->SetValue(wxEmptyString
);
532 m_dontUpdate
= false;
537 /// Updates the bullet preview
538 void wxRichTextBulletsPage::UpdatePreview()
540 static const wxChar
* s_para1
= wxT("Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \
541 Nullam ante sapien, vestibulum nonummy, pulvinar sed, luctus ut, lacus.\n");
543 static const wxChar
* s_para2
= wxT("Duis pharetra consequat dui. Cum sociis natoque penatibus \
544 et magnis dis parturient montes, nascetur ridiculus mus. Nullam vitae justo id mauris lobortis interdum.\n");
546 static const wxChar
* s_para3
= wxT("Integer convallis dolor at augue \
547 iaculis malesuada. Donec bibendum ipsum ut ante porta fringilla.\n");
549 TransferDataFromWindow();
550 wxRichTextAttr
attr(*GetAttributes());
551 attr
.SetFlags(attr
.GetFlags() &
552 (wxTEXT_ATTR_BULLET_STYLE
|wxTEXT_ATTR_BULLET_NUMBER
|wxTEXT_ATTR_BULLET_TEXT
|wxTEXT_ATTR_BULLET_NAME
|
553 wxTEXT_ATTR_ALIGNMENT
|wxTEXT_ATTR_LEFT_INDENT
|wxTEXT_ATTR_RIGHT_INDENT
|wxTEXT_ATTR_PARA_SPACING_BEFORE
|wxTEXT_ATTR_PARA_SPACING_AFTER
|
554 wxTEXT_ATTR_LINE_SPACING
));
556 wxFont
font(m_previewCtrl
->GetFont());
557 font
.SetPointSize(9);
558 m_previewCtrl
->SetFont(font
);
560 wxRichTextAttr normalParaAttr
;
561 normalParaAttr
.SetFont(font
);
562 normalParaAttr
.SetTextColour(wxColour(wxT("LIGHT GREY")));
564 m_previewCtrl
->Freeze();
565 m_previewCtrl
->Clear();
567 m_previewCtrl
->BeginStyle(normalParaAttr
);
568 m_previewCtrl
->WriteText(s_para1
);
569 m_previewCtrl
->EndStyle();
571 m_previewCtrl
->BeginStyle(attr
);
572 m_previewCtrl
->WriteText(s_para2
);
573 m_previewCtrl
->EndStyle();
575 m_previewCtrl
->BeginStyle(normalParaAttr
);
576 m_previewCtrl
->WriteText(s_para3
);
577 m_previewCtrl
->EndStyle();
579 m_previewCtrl
->NumberList(wxRichTextRange(0, m_previewCtrl
->GetLastPosition()+1));
581 m_previewCtrl
->Thaw();
584 wxRichTextAttr
* wxRichTextBulletsPage::GetAttributes()
586 return wxRichTextFormattingDialog::GetDialogAttributes(this);
590 * Should we show tooltips?
593 bool wxRichTextBulletsPage::ShowToolTips()
595 return wxRichTextFormattingDialog::ShowToolTips();
599 * Get bitmap resources
602 wxBitmap
wxRichTextBulletsPage::GetBitmapResource( const wxString
& name
)
605 ////@begin wxRichTextBulletsPage bitmap retrieval
608 ////@end wxRichTextBulletsPage bitmap retrieval
615 wxIcon
wxRichTextBulletsPage::GetIconResource( const wxString
& name
)
618 ////@begin wxRichTextBulletsPage icon retrieval
621 ////@end wxRichTextBulletsPage icon retrieval
625 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_STYLELISTBOX
628 void wxRichTextBulletsPage::OnStylelistboxSelected( wxCommandEvent
& WXUNUSED(event
) )
632 m_hasBulletStyle
= true;
634 if (m_styleListBox
->GetSelection() == wxRICHTEXT_BULLETINDEX_SYMBOL
)
635 m_hasBulletSymbol
= true;
642 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
645 void wxRichTextBulletsPage::OnSymbolctrlSelected( wxCommandEvent
& WXUNUSED(event
) )
649 m_hasBulletSymbol
= true;
655 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
658 void wxRichTextBulletsPage::OnSymbolctrlUpdated( wxCommandEvent
& WXUNUSED(event
) )
662 m_hasBulletSymbol
= true;
668 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLCTRL
671 void wxRichTextBulletsPage::OnSymbolctrlUpdate( wxUpdateUIEvent
& event
)
673 OnSymbolUpdate(event
);
677 * wxEVT_COMMAND_SPINCTRL_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
680 void wxRichTextBulletsPage::OnNumberctrlUpdated( wxSpinEvent
& WXUNUSED(event
) )
684 m_hasBulletNumber
= true;
690 * wxEVT_SCROLL_LINEUP event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
693 void wxRichTextBulletsPage::OnNumberctrlUp( wxSpinEvent
& WXUNUSED(event
) )
697 m_hasBulletNumber
= true;
703 * wxEVT_SCROLL_LINEDOWN event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
706 void wxRichTextBulletsPage::OnNumberctrlDown( wxSpinEvent
& WXUNUSED(event
) )
710 m_hasBulletNumber
= true;
716 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
719 void wxRichTextBulletsPage::OnNumberctrlTextUpdated( wxCommandEvent
& WXUNUSED(event
) )
723 m_hasBulletNumber
= true;
729 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERCTRL
732 void wxRichTextBulletsPage::OnNumberctrlUpdate( wxUpdateUIEvent
& event
)
734 OnNumberUpdate(event
);
738 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
741 void wxRichTextBulletsPage::OnParenthesesctrlClick( wxCommandEvent
& WXUNUSED(event
) )
745 m_hasBulletStyle
= true;
751 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PARENTHESESCTRL
754 void wxRichTextBulletsPage::OnParenthesesctrlUpdate( wxUpdateUIEvent
& event
)
756 int sel
= m_styleListBox
->GetSelection();
757 event
.Enable(m_hasBulletStyle
&& (sel
!= wxRICHTEXT_BULLETINDEX_SYMBOL
&&
758 sel
!= wxRICHTEXT_BULLETINDEX_BITMAP
&&
759 sel
!= wxRICHTEXT_BULLETINDEX_NONE
));
763 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
766 void wxRichTextBulletsPage::OnPeriodctrlClick( wxCommandEvent
& WXUNUSED(event
) )
770 m_hasBulletStyle
= true;
776 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_PERIODCTRL
779 void wxRichTextBulletsPage::OnPeriodctrlUpdate( wxUpdateUIEvent
& event
)
781 int sel
= m_styleListBox
->GetSelection();
782 event
.Enable(m_hasBulletStyle
&& (sel
!= wxRICHTEXT_BULLETINDEX_SYMBOL
&&
783 sel
!= wxRICHTEXT_BULLETINDEX_BITMAP
&&
784 sel
!= wxRICHTEXT_BULLETINDEX_NONE
));
788 * wxEVT_COMMAND_BUTTON_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
791 void wxRichTextBulletsPage::OnChooseSymbolClick( wxCommandEvent
& WXUNUSED(event
) )
793 int sel
= m_styleListBox
->GetSelection();
794 if (m_hasBulletStyle
&& sel
== wxRICHTEXT_BULLETINDEX_SYMBOL
)
796 wxString symbol
= m_symbolCtrl
->GetValue();
797 wxString fontName
= m_symbolFontCtrl
->GetValue();
798 wxSymbolPickerDialog
dlg(symbol
, fontName
, fontName
, this);
800 if (dlg
.ShowModal() == wxID_OK
)
804 m_symbolCtrl
->SetValue(dlg
.GetSymbol());
805 m_symbolFontCtrl
->SetValue(dlg
.GetFontName());
809 m_dontUpdate
= false;
815 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_CHOOSE_SYMBOL
818 void wxRichTextBulletsPage::OnChooseSymbolUpdate( wxUpdateUIEvent
& event
)
820 OnSymbolUpdate(event
);
823 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
826 void wxRichTextBulletsPage::OnSymbolfontctrlSelected( wxCommandEvent
& WXUNUSED(event
) )
834 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
837 void wxRichTextBulletsPage::OnSymbolfontctrlUpdated( wxCommandEvent
& WXUNUSED(event
) )
846 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLFONTCTRL
849 void wxRichTextBulletsPage::OnSymbolfontctrlUIUpdate( wxUpdateUIEvent
& event
)
851 OnSymbolUpdate(event
);
854 /// Update for symbol-related controls
855 void wxRichTextBulletsPage::OnSymbolUpdate( wxUpdateUIEvent
& event
)
857 int sel
= m_styleListBox
->GetSelection();
858 event
.Enable(m_hasBulletStyle
&& (sel
== wxRICHTEXT_BULLETINDEX_SYMBOL
));
861 /// Update for number-related controls
862 void wxRichTextBulletsPage::OnNumberUpdate( wxUpdateUIEvent
& event
)
864 int sel
= m_styleListBox
->GetSelection();
865 event
.Enable( m_hasBulletStyle
&& (sel
!= wxRICHTEXT_BULLETINDEX_SYMBOL
&&
866 sel
!= wxRICHTEXT_BULLETINDEX_BITMAP
&&
867 sel
!= wxRICHTEXT_BULLETINDEX_STANDARD
&&
868 sel
!= wxRICHTEXT_BULLETINDEX_NONE
));
871 /// Update for standard bullet-related controls
872 void wxRichTextBulletsPage::OnStandardBulletUpdate( wxUpdateUIEvent
& event
)
874 int sel
= m_styleListBox
->GetSelection();
875 event
.Enable( sel
== wxRICHTEXT_BULLETINDEX_STANDARD
|| sel
== wxRICHTEXT_BULLETINDEX_BITMAP
);
880 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_SYMBOLSTATIC
883 void wxRichTextBulletsPage::OnSymbolstaticUpdate( wxUpdateUIEvent
& event
)
885 OnSymbolUpdate(event
);
890 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NUMBERSTATIC
893 void wxRichTextBulletsPage::OnNumberstaticUpdate( wxUpdateUIEvent
& event
)
895 OnNumberUpdate(event
);
899 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NAMESTATIC
902 void wxRichTextBulletsPage::OnNamestaticUpdate( wxUpdateUIEvent
& event
)
904 OnStandardBulletUpdate(event
);
909 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
912 void wxRichTextBulletsPage::OnNamectrlSelected( wxCommandEvent
& WXUNUSED(event
) )
920 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
923 void wxRichTextBulletsPage::OnNamectrlUpdated( wxCommandEvent
& WXUNUSED(event
) )
931 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_NAMECTRL
934 void wxRichTextBulletsPage::OnNamectrlUIUpdate( wxUpdateUIEvent
& event
)
936 OnStandardBulletUpdate(event
);
939 #endif // wxUSE_RICHTEXT
941 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTBULLETSPAGE_RIGHT_PARENTHESIS_CTRL
944 void wxRichTextBulletsPage::OnRightParenthesisCtrlClick( wxCommandEvent
& WXUNUSED(event
) )
948 m_hasBulletStyle
= true;
954 * wxEVT_UPDATE_UI event handler for ID_RICHTEXTBULLETSPAGE_RIGHT_PARENTHESIS_CTRL
957 void wxRichTextBulletsPage::OnRightParenthesisCtrlUpdate( wxUpdateUIEvent
& event
)
959 int sel
= m_styleListBox
->GetSelection();
960 event
.Enable(m_hasBulletStyle
&& (sel
!= wxRICHTEXT_BULLETINDEX_SYMBOL
&&
961 sel
!= wxRICHTEXT_BULLETINDEX_BITMAP
&&
962 sel
!= wxRICHTEXT_BULLETINDEX_NONE
));
966 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_COMBOBOX
969 void wxRichTextBulletsPage::OnBulletAlignmentCtrlSelected( wxCommandEvent
& WXUNUSED(event
) )