]> git.saurik.com Git - wxWidgets.git/blob - src/richtext/richtextfontpage.cpp
Make sure paragraph style is reset before applying a new style
[wxWidgets.git] / src / richtext / richtextfontpage.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/richtext/richeditfontpage.cpp
3 // Purpose: Font page for wxRichTextFormattingDialog
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 2006-10-02
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 #include "wx/richtext/richtextfontpage.h"
13
14 /*!
15 * wxRichTextFontPage type definition
16 */
17
18 IMPLEMENT_DYNAMIC_CLASS( wxRichTextFontPage, wxPanel )
19
20 /*!
21 * wxRichTextFontPage event table definition
22 */
23
24 BEGIN_EVENT_TABLE( wxRichTextFontPage, wxPanel )
25 EVT_LISTBOX( ID_RICHTEXTFONTPAGE_FACELISTBOX, wxRichTextFontPage::OnFaceListBoxSelected )
26 EVT_BUTTON( ID_RICHTEXTFONTPAGE_COLOURCTRL, wxRichTextFontPage::OnColourClicked )
27
28 ////@begin wxRichTextFontPage event table entries
29 EVT_TEXT( ID_RICHTEXTFONTPAGE_FACETEXTCTRL, wxRichTextFontPage::OnFaceTextCtrlUpdated )
30
31 EVT_TEXT( ID_RICHTEXTFONTPAGE_SIZETEXTCTRL, wxRichTextFontPage::OnSizeTextCtrlUpdated )
32
33 EVT_LISTBOX( ID_RICHTEXTFONTPAGE_SIZELISTBOX, wxRichTextFontPage::OnSizeListBoxSelected )
34
35 EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_STYLECTRL, wxRichTextFontPage::OnStyleCtrlSelected )
36
37 EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_WEIGHTCTRL, wxRichTextFontPage::OnWeightCtrlSelected )
38
39 EVT_COMBOBOX( ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL, wxRichTextFontPage::OnUnderliningCtrlSelected )
40
41 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL, wxRichTextFontPage::OnStrikethroughctrlClick )
42
43 EVT_CHECKBOX( ID_RICHTEXTFONTPAGE_CAPSCTRL, wxRichTextFontPage::OnCapsctrlClick )
44
45 ////@end wxRichTextFontPage event table entries
46
47 END_EVENT_TABLE()
48
49 /*!
50 * wxRichTextFontPage constructors
51 */
52
53 wxRichTextFontPage::wxRichTextFontPage( )
54 {
55 Init();
56 }
57
58 wxRichTextFontPage::wxRichTextFontPage( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
59 {
60 Init();
61 Create(parent, id, pos, size, style);
62 }
63
64 /*!
65 * Initialise members
66 */
67
68 void wxRichTextFontPage::Init()
69 {
70 m_dontUpdate = false;
71 m_colourPresent = false;
72
73 ////@begin wxRichTextFontPage member initialisation
74 m_faceTextCtrl = NULL;
75 m_faceListBox = NULL;
76 m_sizeTextCtrl = NULL;
77 m_sizeListBox = NULL;
78 m_styleCtrl = NULL;
79 m_weightCtrl = NULL;
80 m_underliningCtrl = NULL;
81 m_colourCtrl = NULL;
82 m_strikethroughCtrl = NULL;
83 m_capitalsCtrl = NULL;
84 m_previewCtrl = NULL;
85 ////@end wxRichTextFontPage member initialisation
86 }
87
88 /*!
89 * wxRichTextFontPage creator
90 */
91
92 bool wxRichTextFontPage::Create( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style )
93 {
94 ////@begin wxRichTextFontPage creation
95 wxPanel::Create( parent, id, pos, size, style );
96
97 CreateControls();
98 if (GetSizer())
99 {
100 GetSizer()->SetSizeHints(this);
101 }
102 Centre();
103 ////@end wxRichTextFontPage creation
104 return true;
105 }
106
107 /*!
108 * Control creation for wxRichTextFontPage
109 */
110
111 void wxRichTextFontPage::CreateControls()
112 {
113 ////@begin wxRichTextFontPage content construction
114 wxRichTextFontPage* itemPanel1 = this;
115
116 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
117 itemPanel1->SetSizer(itemBoxSizer2);
118
119 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
120 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
121
122 wxBoxSizer* itemBoxSizer4 = new wxBoxSizer(wxHORIZONTAL);
123 itemBoxSizer3->Add(itemBoxSizer4, 1, wxGROW, 5);
124
125 wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
126 itemBoxSizer4->Add(itemBoxSizer5, 1, wxGROW, 5);
127
128 wxStaticText* itemStaticText6 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Font:"), wxDefaultPosition, wxDefaultSize, 0 );
129 itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
130
131 m_faceTextCtrl = new wxTextCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_FACETEXTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, 0 );
132 m_faceTextCtrl->SetHelpText(_("Type a font name."));
133 if (wxRichTextFontPage::ShowToolTips())
134 m_faceTextCtrl->SetToolTip(_("Type a font name."));
135 itemBoxSizer5->Add(m_faceTextCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
136
137 m_faceListBox = new wxRichTextFontListBox( itemPanel1, ID_RICHTEXTFONTPAGE_FACELISTBOX, wxDefaultPosition, wxSize(200, 100), 0 );
138 m_faceListBox->SetHelpText(_("Lists the available fonts."));
139 if (wxRichTextFontPage::ShowToolTips())
140 m_faceListBox->SetToolTip(_("Lists the available fonts."));
141 itemBoxSizer5->Add(m_faceListBox, 1, wxGROW|wxALL|wxFIXED_MINSIZE, 5);
142
143 wxBoxSizer* itemBoxSizer9 = new wxBoxSizer(wxVERTICAL);
144 itemBoxSizer4->Add(itemBoxSizer9, 0, wxGROW, 5);
145
146 wxStaticText* itemStaticText10 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Size:"), wxDefaultPosition, wxDefaultSize, 0 );
147 itemBoxSizer9->Add(itemStaticText10, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
148
149 m_sizeTextCtrl = new wxTextCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_SIZETEXTCTRL, _T(""), wxDefaultPosition, wxSize(50, -1), 0 );
150 m_sizeTextCtrl->SetHelpText(_("Type a size in points."));
151 if (wxRichTextFontPage::ShowToolTips())
152 m_sizeTextCtrl->SetToolTip(_("Type a size in points."));
153 itemBoxSizer9->Add(m_sizeTextCtrl, 0, wxGROW|wxLEFT|wxRIGHT|wxTOP, 5);
154
155 wxArrayString m_sizeListBoxStrings;
156 m_sizeListBox = new wxListBox( itemPanel1, ID_RICHTEXTFONTPAGE_SIZELISTBOX, wxDefaultPosition, wxSize(50, -1), m_sizeListBoxStrings, wxLB_SINGLE );
157 m_sizeListBox->SetHelpText(_("Lists font sizes in points."));
158 if (wxRichTextFontPage::ShowToolTips())
159 m_sizeListBox->SetToolTip(_("Lists font sizes in points."));
160 itemBoxSizer9->Add(m_sizeListBox, 1, wxALIGN_CENTER_HORIZONTAL|wxALL|wxFIXED_MINSIZE, 5);
161
162 wxBoxSizer* itemBoxSizer13 = new wxBoxSizer(wxHORIZONTAL);
163 itemBoxSizer3->Add(itemBoxSizer13, 0, wxGROW, 5);
164
165 wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxVERTICAL);
166 itemBoxSizer13->Add(itemBoxSizer14, 1, wxGROW, 5);
167
168 wxStaticText* itemStaticText15 = new wxStaticText( itemPanel1, wxID_STATIC, _("Font st&yle:"), wxDefaultPosition, wxDefaultSize, 0 );
169 itemBoxSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
170
171 wxArrayString m_styleCtrlStrings;
172 m_styleCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_STYLECTRL, _T(""), wxDefaultPosition, wxDefaultSize, m_styleCtrlStrings, wxCB_READONLY );
173 m_styleCtrl->SetHelpText(_("Select regular or italic style."));
174 if (wxRichTextFontPage::ShowToolTips())
175 m_styleCtrl->SetToolTip(_("Select regular or italic style."));
176 itemBoxSizer14->Add(m_styleCtrl, 0, wxGROW|wxALL, 5);
177
178 wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
179 itemBoxSizer13->Add(itemBoxSizer17, 1, wxGROW, 5);
180
181 wxStaticText* itemStaticText18 = new wxStaticText( itemPanel1, wxID_STATIC, _("Font &weight:"), wxDefaultPosition, wxDefaultSize, 0 );
182 itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
183
184 wxArrayString m_weightCtrlStrings;
185 m_weightCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_WEIGHTCTRL, _T(""), wxDefaultPosition, wxDefaultSize, m_weightCtrlStrings, wxCB_READONLY );
186 m_weightCtrl->SetHelpText(_("Select regular or bold."));
187 if (wxRichTextFontPage::ShowToolTips())
188 m_weightCtrl->SetToolTip(_("Select regular or bold."));
189 itemBoxSizer17->Add(m_weightCtrl, 0, wxGROW|wxALL, 5);
190
191 wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL);
192 itemBoxSizer13->Add(itemBoxSizer20, 1, wxGROW, 5);
193
194 wxStaticText* itemStaticText21 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Underlining:"), wxDefaultPosition, wxDefaultSize, 0 );
195 itemBoxSizer20->Add(itemStaticText21, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
196
197 wxArrayString m_underliningCtrlStrings;
198 m_underliningCtrl = new wxComboBox( itemPanel1, ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL, _T(""), wxDefaultPosition, wxDefaultSize, m_underliningCtrlStrings, wxCB_READONLY );
199 m_underliningCtrl->SetHelpText(_("Select underlining or no underlining."));
200 if (wxRichTextFontPage::ShowToolTips())
201 m_underliningCtrl->SetToolTip(_("Select underlining or no underlining."));
202 itemBoxSizer20->Add(m_underliningCtrl, 0, wxGROW|wxALL, 5);
203
204 wxBoxSizer* itemBoxSizer23 = new wxBoxSizer(wxVERTICAL);
205 itemBoxSizer13->Add(itemBoxSizer23, 0, wxGROW, 5);
206
207 wxStaticText* itemStaticText24 = new wxStaticText( itemPanel1, wxID_STATIC, _("&Colour:"), wxDefaultPosition, wxDefaultSize, 0 );
208 itemBoxSizer23->Add(itemStaticText24, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
209
210 m_colourCtrl = new wxRichTextColourSwatchCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_COLOURCTRL, wxDefaultPosition, wxSize(40, 20), wxSIMPLE_BORDER );
211 m_colourCtrl->SetHelpText(_("Click to change the text colour."));
212 if (wxRichTextFontPage::ShowToolTips())
213 m_colourCtrl->SetToolTip(_("Click to change the text colour."));
214 itemBoxSizer23->Add(m_colourCtrl, 0, wxALIGN_LEFT|wxALL, 5);
215
216 wxBoxSizer* itemBoxSizer26 = new wxBoxSizer(wxHORIZONTAL);
217 itemBoxSizer3->Add(itemBoxSizer26, 0, wxGROW, 5);
218
219 m_strikethroughCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL, _("&Strikethrough"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
220 m_strikethroughCtrl->SetValue(false);
221 m_strikethroughCtrl->SetHelpText(_("Check to show a line through the text."));
222 if (wxRichTextFontPage::ShowToolTips())
223 m_strikethroughCtrl->SetToolTip(_("Check to show a line through the text."));
224 itemBoxSizer26->Add(m_strikethroughCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
225
226 m_capitalsCtrl = new wxCheckBox( itemPanel1, ID_RICHTEXTFONTPAGE_CAPSCTRL, _("Ca&pitals"), wxDefaultPosition, wxDefaultSize, wxCHK_3STATE );
227 m_capitalsCtrl->SetValue(false);
228 m_capitalsCtrl->SetHelpText(_("Check to show the text in capitals."));
229 if (wxRichTextFontPage::ShowToolTips())
230 m_capitalsCtrl->SetToolTip(_("Check to show the text in capitals."));
231 itemBoxSizer26->Add(m_capitalsCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
232
233 itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL, 5);
234
235 m_previewCtrl = new wxRichTextFontPreviewCtrl( itemPanel1, ID_RICHTEXTFONTPAGE_PREVIEWCTRL, wxDefaultPosition, wxSize(100, 60), 0 );
236 m_previewCtrl->SetHelpText(_("Shows a preview of the font settings."));
237 if (wxRichTextFontPage::ShowToolTips())
238 m_previewCtrl->SetToolTip(_("Shows a preview of the font settings."));
239 itemBoxSizer3->Add(m_previewCtrl, 0, wxGROW|wxALL, 5);
240
241 ////@end wxRichTextFontPage content construction
242
243 m_faceListBox->UpdateFonts();
244
245 m_styleCtrl->Append(_("Regular"));
246 m_styleCtrl->Append(_("Italic"));
247
248 m_weightCtrl->Append(_("Regular"));
249 m_weightCtrl->Append(_("Bold"));
250
251 m_underliningCtrl->Append(_("Not underlined"));
252 m_underliningCtrl->Append(_("Underlined"));
253
254 wxString nStr;
255 int i;
256 for (i = 8; i < 40; i++)
257 {
258 nStr.Printf(wxT("%d"), i);
259 m_sizeListBox->Append(nStr);
260 }
261 m_sizeListBox->Append(wxT("48"));
262 m_sizeListBox->Append(wxT("72"));
263 }
264
265 /// Transfer data from/to window
266 bool wxRichTextFontPage::TransferDataFromWindow()
267 {
268 wxPanel::TransferDataFromWindow();
269
270 wxTextAttr* attr = GetAttributes();
271
272 if (m_faceListBox->GetSelection() != wxNOT_FOUND)
273 {
274 wxString faceName = m_faceListBox->GetFaceName(m_faceListBox->GetSelection());
275 if (!faceName.IsEmpty())
276 {
277 attr->SetFontFaceName(faceName);
278 }
279 }
280 else
281 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_FACE));
282
283 wxString strSize = m_sizeTextCtrl->GetValue();
284 if (!strSize.IsEmpty())
285 {
286 int sz = wxAtoi(strSize);
287 if (sz > 0)
288 {
289 attr->SetFontSize(sz);
290 }
291 }
292 else
293 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_SIZE));
294
295 if (m_styleCtrl->GetSelection() != wxNOT_FOUND)
296 {
297 int style;
298 if (m_styleCtrl->GetStringSelection() == _("Italic"))
299 style = wxITALIC;
300 else
301 style = wxNORMAL;
302
303 attr->SetFontStyle(style);
304 }
305 else
306 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_ITALIC));
307
308 if (m_weightCtrl->GetSelection() != wxNOT_FOUND)
309 {
310 int weight;
311 if (m_weightCtrl->GetStringSelection() == _("Bold"))
312 weight = wxBOLD;
313 else
314 weight = wxNORMAL;
315
316 attr->SetFontWeight(weight);
317 }
318 else
319 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_WEIGHT));
320
321 if (m_underliningCtrl->GetSelection() != wxNOT_FOUND)
322 {
323 bool underlined;
324 if (m_underliningCtrl->GetStringSelection() == _("Underlined"))
325 underlined = true;
326 else
327 underlined = false;
328
329 attr->SetFontUnderlined(underlined);
330 }
331 else
332 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_FONT_UNDERLINE));
333
334 if (m_colourPresent)
335 {
336 attr->SetTextColour(m_colourCtrl->GetBackgroundColour());
337 }
338 else
339 attr->SetFlags(attr->GetFlags() & (~ wxTEXT_ATTR_TEXT_COLOUR));
340
341 if (m_strikethroughCtrl->Get3StateValue() != wxCHK_UNDETERMINED)
342 {
343 attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
344
345 if (m_strikethroughCtrl->Get3StateValue() == wxCHK_CHECKED)
346 attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
347 else
348 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_STRIKETHROUGH);
349 }
350
351 if (m_capitalsCtrl->Get3StateValue() != wxCHK_UNDETERMINED)
352 {
353 attr->SetTextEffectFlags(attr->GetTextEffectFlags() | wxTEXT_ATTR_EFFECT_CAPITALS);
354
355 if (m_capitalsCtrl->Get3StateValue() == wxCHK_CHECKED)
356 attr->SetTextEffects(attr->GetTextEffects() | wxTEXT_ATTR_EFFECT_CAPITALS);
357 else
358 attr->SetTextEffects(attr->GetTextEffects() & ~wxTEXT_ATTR_EFFECT_CAPITALS);
359 }
360
361 return true;
362 }
363
364 bool wxRichTextFontPage::TransferDataToWindow()
365 {
366 wxPanel::TransferDataToWindow();
367
368 m_dontUpdate = true;
369 wxTextAttr* attr = GetAttributes();
370
371 if (attr->HasFontFaceName())
372 {
373 m_faceTextCtrl->SetValue(attr->GetFontFaceName());
374 m_faceListBox->SetFaceNameSelection(attr->GetFont().GetFaceName());
375 }
376 else
377 {
378 m_faceTextCtrl->SetValue(wxEmptyString);
379 m_faceListBox->SetFaceNameSelection(wxEmptyString);
380 }
381
382 if (attr->HasFontSize())
383 {
384 wxString strSize = wxString::Format(wxT("%d"), attr->GetFontSize());
385 m_sizeTextCtrl->SetValue(strSize);
386 if (m_sizeListBox->FindString(strSize) != wxNOT_FOUND)
387 m_sizeListBox->SetStringSelection(strSize);
388 }
389 else
390 {
391 m_sizeTextCtrl->SetValue(wxEmptyString);
392 m_sizeListBox->SetSelection(wxNOT_FOUND);
393 }
394
395 if (attr->HasFontWeight())
396 {
397 if (attr->GetFontWeight() == wxBOLD)
398 m_weightCtrl->SetSelection(1);
399 else
400 m_weightCtrl->SetSelection(0);
401 }
402 else
403 {
404 m_weightCtrl->SetSelection(wxNOT_FOUND);
405 }
406
407 if (attr->HasFontItalic())
408 {
409 if (attr->GetFontStyle() == wxITALIC)
410 m_styleCtrl->SetSelection(1);
411 else
412 m_styleCtrl->SetSelection(0);
413 }
414 else
415 {
416 m_styleCtrl->SetSelection(wxNOT_FOUND);
417 }
418
419 if (attr->HasFontUnderlined())
420 {
421 if (attr->GetFontUnderlined())
422 m_underliningCtrl->SetSelection(1);
423 else
424 m_underliningCtrl->SetSelection(0);
425 }
426 else
427 {
428 m_underliningCtrl->SetSelection(wxNOT_FOUND);
429 }
430
431 if (attr->HasTextColour())
432 {
433 m_colourCtrl->SetBackgroundColour(attr->GetTextColour());
434 m_colourPresent = true;
435 }
436
437 if (attr->HasTextEffects())
438 {
439 if (attr->GetTextEffectFlags() & wxTEXT_ATTR_EFFECT_STRIKETHROUGH)
440 {
441 if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_STRIKETHROUGH)
442 m_strikethroughCtrl->Set3StateValue(wxCHK_CHECKED);
443 else
444 m_strikethroughCtrl->Set3StateValue(wxCHK_UNCHECKED);
445 }
446 else
447 m_strikethroughCtrl->Set3StateValue(wxCHK_UNDETERMINED);
448
449 if (attr->GetTextEffectFlags() & wxTEXT_ATTR_EFFECT_CAPITALS)
450 {
451 if (attr->GetTextEffects() & wxTEXT_ATTR_EFFECT_CAPITALS)
452 m_capitalsCtrl->Set3StateValue(wxCHK_CHECKED);
453 else
454 m_capitalsCtrl->Set3StateValue(wxCHK_UNCHECKED);
455 }
456 else
457 m_capitalsCtrl->Set3StateValue(wxCHK_UNDETERMINED);
458 }
459 else
460 {
461 m_strikethroughCtrl->Set3StateValue(wxCHK_UNDETERMINED);
462 m_capitalsCtrl->Set3StateValue(wxCHK_UNDETERMINED);
463 }
464
465 UpdatePreview();
466
467 m_dontUpdate = false;
468
469 return true;
470 }
471
472 wxTextAttr* wxRichTextFontPage::GetAttributes()
473 {
474 return wxRichTextFormattingDialog::GetDialogAttributes(this);
475 }
476
477 /// Updates the font preview
478 void wxRichTextFontPage::UpdatePreview()
479 {
480 wxFont font(*wxNORMAL_FONT);
481
482 if (m_colourPresent)
483 m_previewCtrl->SetForegroundColour(m_colourCtrl->GetBackgroundColour());
484
485 if (m_faceListBox->GetSelection() != wxNOT_FOUND)
486 {
487 wxString faceName = m_faceListBox->GetFaceName(m_faceListBox->GetSelection());
488 font.SetFaceName(faceName);
489 }
490
491 wxString strSize = m_sizeTextCtrl->GetValue();
492 if (!strSize.IsEmpty())
493 {
494 int sz = wxAtoi(strSize);
495 if (sz > 0)
496 font.SetPointSize(sz);
497 }
498
499 if (m_styleCtrl->GetSelection() != wxNOT_FOUND)
500 {
501 int style;
502 if (m_styleCtrl->GetStringSelection() == _("Italic"))
503 style = wxITALIC;
504 else
505 style = wxNORMAL;
506
507 font.SetStyle(style);
508 }
509
510 if (m_weightCtrl->GetSelection() != wxNOT_FOUND)
511 {
512 int weight;
513 if (m_weightCtrl->GetStringSelection() == _("Bold"))
514 weight = wxBOLD;
515 else
516 weight = wxNORMAL;
517
518 font.SetWeight(weight);
519 }
520
521 if (m_underliningCtrl->GetSelection() != wxNOT_FOUND)
522 {
523 bool underlined;
524 if (m_underliningCtrl->GetStringSelection() == _("Underlined"))
525 underlined = true;
526 else
527 underlined = false;
528
529 font.SetUnderlined(underlined);
530 }
531
532 int textEffects = 0;
533
534 if (m_strikethroughCtrl->Get3StateValue() == wxCHK_CHECKED)
535 {
536 textEffects |= wxTEXT_ATTR_EFFECT_STRIKETHROUGH;
537 }
538
539 if (m_capitalsCtrl->Get3StateValue() == wxCHK_CHECKED)
540 {
541 textEffects |= wxTEXT_ATTR_EFFECT_CAPITALS;
542 }
543
544 m_previewCtrl->SetFont(font);
545 m_previewCtrl->SetTextEffects(textEffects);
546 m_previewCtrl->Refresh();
547 }
548
549 /*!
550 * Should we show tooltips?
551 */
552
553 bool wxRichTextFontPage::ShowToolTips()
554 {
555 return wxRichTextFormattingDialog::ShowToolTips();
556 }
557
558 /*!
559 * Get bitmap resources
560 */
561
562 wxBitmap wxRichTextFontPage::GetBitmapResource( const wxString& name )
563 {
564 // Bitmap retrieval
565 ////@begin wxRichTextFontPage bitmap retrieval
566 wxUnusedVar(name);
567 return wxNullBitmap;
568 ////@end wxRichTextFontPage bitmap retrieval
569 }
570
571 /*!
572 * Get icon resources
573 */
574
575 wxIcon wxRichTextFontPage::GetIconResource( const wxString& name )
576 {
577 // Icon retrieval
578 ////@begin wxRichTextFontPage icon retrieval
579 wxUnusedVar(name);
580 return wxNullIcon;
581 ////@end wxRichTextFontPage icon retrieval
582 }
583
584 /*!
585 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTFONTPAGE_FACETEXTCTRL
586 */
587
588 void wxRichTextFontPage::OnFaceTextCtrlUpdated( wxCommandEvent& WXUNUSED(event) )
589 {
590 if (m_dontUpdate)
591 return;
592
593 wxString facename = m_faceTextCtrl->GetValue();
594 if (!facename.IsEmpty())
595 {
596 if (m_faceListBox->HasFaceName(facename))
597 {
598 m_faceListBox->SetFaceNameSelection(facename);
599 UpdatePreview();
600 }
601 else
602 {
603 // Try to find a partial match
604 const wxArrayString& arr = m_faceListBox->GetFaceNames();
605 size_t i;
606 for (i = 0; i < arr.GetCount(); i++)
607 {
608 if (arr[i].Mid(0, facename.Length()).Lower() == facename.Lower())
609 {
610 m_faceListBox->ScrollToRow(i);
611 break;
612 }
613 }
614 }
615 }
616 }
617
618
619 /*!
620 * wxEVT_COMMAND_TEXT_UPDATED event handler for ID_RICHTEXTFONTPAGE_SIZETEXTCTRL
621 */
622
623 void wxRichTextFontPage::OnSizeTextCtrlUpdated( wxCommandEvent& WXUNUSED(event) )
624 {
625 if (m_dontUpdate)
626 return;
627
628 wxString strSize = m_sizeTextCtrl->GetValue();
629 if (!strSize.IsEmpty() && m_sizeListBox->FindString(strSize) != wxNOT_FOUND)
630 m_sizeListBox->SetStringSelection(strSize);
631 UpdatePreview();
632 }
633
634
635 /*!
636 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_SIZELISTBOX
637 */
638
639 void wxRichTextFontPage::OnSizeListBoxSelected( wxCommandEvent& event )
640 {
641 m_dontUpdate = true;
642
643 m_sizeTextCtrl->SetValue(event.GetString());
644
645 m_dontUpdate = false;
646
647 UpdatePreview();
648 }
649
650 /*!
651 * wxEVT_COMMAND_LISTBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_FACELISTBOX
652 */
653
654 void wxRichTextFontPage::OnFaceListBoxSelected( wxCommandEvent& WXUNUSED(event) )
655 {
656 m_dontUpdate = true;
657
658 m_faceTextCtrl->SetValue(m_faceListBox->GetFaceName(m_faceListBox->GetSelection()));
659
660 m_dontUpdate = false;
661
662 UpdatePreview();
663 }
664
665 /*!
666 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_STYLECTRL
667 */
668
669 void wxRichTextFontPage::OnStyleCtrlSelected( wxCommandEvent& WXUNUSED(event) )
670 {
671 UpdatePreview();
672 }
673
674
675 /*!
676 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_UNDERLINING_CTRL
677 */
678
679 void wxRichTextFontPage::OnUnderliningCtrlSelected( wxCommandEvent& WXUNUSED(event) )
680 {
681 UpdatePreview();
682 }
683
684
685 /*!
686 * wxEVT_COMMAND_COMBOBOX_SELECTED event handler for ID_RICHTEXTFONTPAGE_WEIGHTCTRL
687 */
688
689 void wxRichTextFontPage::OnWeightCtrlSelected( wxCommandEvent& WXUNUSED(event) )
690 {
691 UpdatePreview();
692 }
693
694 void wxRichTextFontPage::OnColourClicked( wxCommandEvent& WXUNUSED(event) )
695 {
696 m_colourPresent = true;
697
698 UpdatePreview();
699 }
700 /*!
701 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTFONTPAGE_STRIKETHROUGHCTRL
702 */
703
704 void wxRichTextFontPage::OnStrikethroughctrlClick( wxCommandEvent& WXUNUSED(event) )
705 {
706 UpdatePreview();
707 }
708
709 /*!
710 * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for ID_RICHTEXTFONTPAGE_CAPSCTRL
711 */
712
713 void wxRichTextFontPage::OnCapsctrlClick( wxCommandEvent& WXUNUSED(event) )
714 {
715 UpdatePreview();
716 }
717
718