On WinCE, generic font dialog didn't work because the point size wxChoice
[wxWidgets.git] / src / generic / fontdlgg.cpp
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: src/generic/fontdlgg.cpp
3 // Purpose: Generic font dialog
4 // Author: Julian Smart
5 // Modified by:
6 // Created: 04/01/98
7 // RCS-ID: $Id$
8 // Copyright: (c) Julian Smart
9 // Licence: wxWindows licence
10 /////////////////////////////////////////////////////////////////////////////
11
12 // For compilers that support precompilation, includes "wx.h".
13 #include "wx/wxprec.h"
14
15 #ifdef __BORLANDC__
16 #pragma hdrstop
17 #endif
18
19 #if wxUSE_FONTDLG && (!defined(__WXGTK__) || defined(__WXGPE__) || defined(__WXUNIVERSAL__))
20
21 #ifndef WX_PRECOMP
22 #include <stdio.h>
23 #include "wx/utils.h"
24 #include "wx/dialog.h"
25 #include "wx/listbox.h"
26 #include "wx/button.h"
27 #include "wx/stattext.h"
28 #include "wx/layout.h"
29 #include "wx/dcclient.h"
30 #include "wx/choice.h"
31 #include "wx/checkbox.h"
32 #include "wx/intl.h"
33 #endif
34
35 #include <string.h>
36 #include <stdlib.h>
37
38 #include "wx/cmndata.h"
39 #include "wx/sizer.h"
40 #include "wx/fontdlg.h"
41 #include "wx/generic/fontdlgg.h"
42 #include "wx/settings.h"
43
44 #if USE_SPINCTRL_FOR_POINT_SIZE
45 #include "wx/spinctrl.h"
46 #endif
47
48 //-----------------------------------------------------------------------------
49 // helper class - wxFontPreviewer
50 //-----------------------------------------------------------------------------
51
52 class WXDLLEXPORT wxFontPreviewer : public wxWindow
53 {
54 public:
55 wxFontPreviewer(wxWindow *parent, const wxSize& sz = wxDefaultSize) : wxWindow(parent, wxID_ANY, wxDefaultPosition, sz)
56 {
57 }
58
59 private:
60 void OnPaint(wxPaintEvent& event);
61 DECLARE_EVENT_TABLE()
62 };
63
64 BEGIN_EVENT_TABLE(wxFontPreviewer, wxWindow)
65 EVT_PAINT(wxFontPreviewer::OnPaint)
66 END_EVENT_TABLE()
67
68 void wxFontPreviewer::OnPaint(wxPaintEvent& WXUNUSED(event))
69 {
70 wxPaintDC dc(this);
71
72 wxSize size = GetSize();
73 wxFont font = GetFont();
74
75 dc.SetPen(*wxBLACK_PEN);
76 dc.SetBrush(*wxWHITE_BRUSH);
77 dc.DrawRectangle(0, 0, size.x, size.y);
78
79 if ( font.Ok() )
80 {
81 dc.SetFont(font);
82 // Calculate vertical centre
83 long w = 0, h = 0;
84 dc.GetTextExtent( wxT("X"), &w, &h);
85 dc.SetTextForeground(GetForegroundColour());
86 dc.SetClippingRegion(2, 2, size.x-4, size.y-4);
87 dc.DrawText(_("ABCDEFGabcdefg12345"),
88 10, size.y/2 - h/2);
89 dc.DestroyClippingRegion();
90 }
91 }
92
93 //-----------------------------------------------------------------------------
94 // wxGenericFontDialog
95 //-----------------------------------------------------------------------------
96
97 IMPLEMENT_DYNAMIC_CLASS(wxGenericFontDialog, wxDialog)
98
99 BEGIN_EVENT_TABLE(wxGenericFontDialog, wxDialog)
100 EVT_CHECKBOX(wxID_FONT_UNDERLINE, wxGenericFontDialog::OnChangeFont)
101 EVT_CHOICE(wxID_FONT_STYLE, wxGenericFontDialog::OnChangeFont)
102 EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont)
103 EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont)
104 EVT_CHOICE(wxID_FONT_COLOUR, wxGenericFontDialog::OnChangeFont)
105 #if USE_SPINCTRL_FOR_POINT_SIZE
106 EVT_SPINCTRL(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeSize)
107 EVT_TEXT(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont)
108 #else
109 EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont)
110 #endif
111 EVT_CLOSE(wxGenericFontDialog::OnCloseWindow)
112 END_EVENT_TABLE()
113
114
115 #define NUM_COLS 48
116 static wxString wxColourDialogNames[NUM_COLS]={wxT("ORANGE"),
117 wxT("GOLDENROD"),
118 wxT("WHEAT"),
119 wxT("SPRING GREEN"),
120 wxT("SKY BLUE"),
121 wxT("SLATE BLUE"),
122 wxT("MEDIUM VIOLET RED"),
123 wxT("PURPLE"),
124
125 wxT("RED"),
126 wxT("YELLOW"),
127 wxT("MEDIUM SPRING GREEN"),
128 wxT("PALE GREEN"),
129 wxT("CYAN"),
130 wxT("LIGHT STEEL BLUE"),
131 wxT("ORCHID"),
132 wxT("LIGHT MAGENTA"),
133
134 wxT("BROWN"),
135 wxT("YELLOW"),
136 wxT("GREEN"),
137 wxT("CADET BLUE"),
138 wxT("MEDIUM BLUE"),
139 wxT("MAGENTA"),
140 wxT("MAROON"),
141 wxT("ORANGE RED"),
142
143 wxT("FIREBRICK"),
144 wxT("CORAL"),
145 wxT("FOREST GREEN"),
146 wxT("AQUARAMINE"),
147 wxT("BLUE"),
148 wxT("NAVY"),
149 wxT("THISTLE"),
150 wxT("MEDIUM VIOLET RED"),
151
152 wxT("INDIAN RED"),
153 wxT("GOLD"),
154 wxT("MEDIUM SEA GREEN"),
155 wxT("MEDIUM BLUE"),
156 wxT("MIDNIGHT BLUE"),
157 wxT("GREY"),
158 wxT("PURPLE"),
159 wxT("KHAKI"),
160
161 wxT("BLACK"),
162 wxT("MEDIUM FOREST GREEN"),
163 wxT("KHAKI"),
164 wxT("DARK GREY"),
165 wxT("SEA GREEN"),
166 wxT("LIGHT GREY"),
167 wxT("MEDIUM SLATE BLUE"),
168 wxT("WHITE")
169 };
170
171 /*
172 * Generic wxFontDialog
173 */
174
175 void wxGenericFontDialog::Init()
176 {
177 m_useEvents = false;
178 m_previewer = NULL;
179 Create( m_parent ) ;
180 }
181
182 wxGenericFontDialog::~wxGenericFontDialog()
183 {
184 }
185
186 void wxGenericFontDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
187 {
188 EndModal(wxID_CANCEL);
189 }
190
191 bool wxGenericFontDialog::DoCreate(wxWindow *parent)
192 {
193 if ( !wxDialog::Create( parent , wxID_ANY , _T("Choose Font") , wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE,
194 _T("fontdialog") ) )
195 {
196 wxFAIL_MSG( wxT("wxFontDialog creation failed") );
197 return false;
198 }
199
200 InitializeFont();
201 CreateWidgets();
202
203 // sets initial font in preview area
204 wxCommandEvent dummy;
205 OnChangeFont(dummy);
206
207 return true;
208 }
209
210 int wxGenericFontDialog::ShowModal()
211 {
212 int ret = wxDialog::ShowModal();
213
214 if (ret != wxID_CANCEL)
215 {
216 m_fontData.m_chosenFont = dialogFont;
217 }
218
219 return ret;
220 }
221
222 // This should be application-settable
223 static bool ShowToolTips() { return false; }
224
225 void wxGenericFontDialog::CreateWidgets()
226 {
227 wxString
228 *families = new wxString[6],
229 *styles = new wxString[3],
230 *weights = new wxString[3];
231 families[0] = _("Roman");
232 families[1] = _("Decorative");
233 families[2] = _("Modern");
234 families[3] = _("Script");
235 families[4] = _("Swiss" );
236 families[5] = _("Teletype" );
237 styles[0] = _("Normal");
238 styles[1] = _("Italic");
239 styles[2] = _("Slant");
240 weights[0] = _("Normal");
241 weights[1] = _("Light");
242 weights[2] = _("Bold");
243
244 #if !USE_SPINCTRL_FOR_POINT_SIZE
245 wxString *pointSizes = new wxString[40];
246 int i;
247 for ( i = 0; i < 40; i++)
248 {
249 wxChar buf[5];
250 wxSprintf(buf, wxT("%d"), i + 1);
251 pointSizes[i] = buf;
252 }
253 #endif
254
255 // layout
256
257 bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
258 int noCols, noRows;
259 if (is_pda)
260 {
261 noCols = 2; noRows = 3;
262 }
263 else
264 {
265 noCols = 3; noRows = 2;
266 }
267
268 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
269 this->SetSizer(itemBoxSizer2);
270 this->SetAutoLayout(TRUE);
271
272 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
273 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
274
275 wxFlexGridSizer* itemGridSizer4 = new wxFlexGridSizer(noRows, noCols, 0, 0);
276 itemBoxSizer3->Add(itemGridSizer4, 0, wxGROW, 5);
277
278 wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
279 itemGridSizer4->Add(itemBoxSizer5, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
280 wxStaticText* itemStaticText6 = new wxStaticText( this, wxID_STATIC, _("&Font family:"), wxDefaultPosition, wxDefaultSize, 0 );
281 itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
282
283 wxChoice* itemChoice7 = new wxChoice( this, wxID_FONT_FAMILY, wxDefaultPosition, wxDefaultSize, 5, families, 0 );
284 itemChoice7->SetHelpText(_("The font family."));
285 if (ShowToolTips())
286 itemChoice7->SetToolTip(_("The font family."));
287 itemBoxSizer5->Add(itemChoice7, 0, wxALIGN_LEFT|wxALL, 5);
288
289 wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxVERTICAL);
290 itemGridSizer4->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
291 wxStaticText* itemStaticText9 = new wxStaticText( this, wxID_STATIC, _("&Style:"), wxDefaultPosition, wxDefaultSize, 0 );
292 itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
293
294 wxChoice* itemChoice10 = new wxChoice( this, wxID_FONT_STYLE, wxDefaultPosition, wxDefaultSize, 3, styles, 0 );
295 itemChoice10->SetHelpText(_("The font style."));
296 if (ShowToolTips())
297 itemChoice10->SetToolTip(_("The font style."));
298 itemBoxSizer8->Add(itemChoice10, 0, wxALIGN_LEFT|wxALL, 5);
299
300 wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
301 itemGridSizer4->Add(itemBoxSizer11, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
302 wxStaticText* itemStaticText12 = new wxStaticText( this, wxID_STATIC, _("&Weight:"), wxDefaultPosition, wxDefaultSize, 0 );
303 itemBoxSizer11->Add(itemStaticText12, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
304
305 wxChoice* itemChoice13 = new wxChoice( this, wxID_FONT_WEIGHT, wxDefaultPosition, wxDefaultSize, 3, weights, 0 );
306 itemChoice13->SetHelpText(_("The font weight."));
307 if (ShowToolTips())
308 itemChoice13->SetToolTip(_("The font weight."));
309 itemBoxSizer11->Add(itemChoice13, 0, wxALIGN_LEFT|wxALL, 5);
310
311 wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxVERTICAL);
312 itemGridSizer4->Add(itemBoxSizer14, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
313 if (m_fontData.GetEnableEffects())
314 {
315 wxStaticText* itemStaticText15 = new wxStaticText( this, wxID_STATIC, _("C&olour:"), wxDefaultPosition, wxDefaultSize, 0 );
316 itemBoxSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
317
318 wxSize colourSize = wxDefaultSize;
319 if (is_pda)
320 colourSize.x = 100;
321
322 wxChoice* itemChoice16 = new wxChoice( this, wxID_FONT_COLOUR, wxDefaultPosition, colourSize, NUM_COLS, wxColourDialogNames, 0 );
323 itemChoice16->SetHelpText(_("The font colour."));
324 if (ShowToolTips())
325 itemChoice16->SetToolTip(_("The font colour."));
326 itemBoxSizer14->Add(itemChoice16, 0, wxALIGN_LEFT|wxALL, 5);
327 }
328
329 wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
330 itemGridSizer4->Add(itemBoxSizer17, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
331 wxStaticText* itemStaticText18 = new wxStaticText( this, wxID_STATIC, _("&Point size:"), wxDefaultPosition, wxDefaultSize, 0 );
332 itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
333
334 #if USE_SPINCTRL_FOR_POINT_SIZE
335 wxSpinCtrl* spinCtrl = new wxSpinCtrl(this, wxID_FONT_SIZE, wxT("12"), wxDefaultPosition, wxSize(80, -1), wxSP_ARROW_KEYS, 1, 500, 12);
336 spinCtrl->SetHelpText(_("The font point size."));
337 if (ShowToolTips())
338 spinCtrl->SetToolTip(_("The font point size."));
339
340 itemBoxSizer17->Add(spinCtrl, 0, wxALIGN_LEFT|wxALL, 5);
341 #else
342 wxChoice* itemChoice19 = new wxChoice( this, wxID_FONT_SIZE, wxDefaultPosition, wxDefaultSize, 40, pointSizes, 0 );
343 itemChoice19->SetHelpText(_("The font point size."));
344 if (ShowToolTips())
345 itemChoice19->SetToolTip(_("The font point size."));
346 itemBoxSizer17->Add(itemChoice19, 0, wxALIGN_LEFT|wxALL, 5);
347 #endif
348
349 if (m_fontData.GetEnableEffects())
350 {
351 wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL);
352 itemGridSizer4->Add(itemBoxSizer20, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
353 wxCheckBox* itemCheckBox21 = new wxCheckBox( this, wxID_FONT_UNDERLINE, _("&Underline"), wxDefaultPosition, wxDefaultSize, 0 );
354 itemCheckBox21->SetValue(FALSE);
355 itemCheckBox21->SetHelpText(_("Whether the font is underlined."));
356 if (ShowToolTips())
357 itemCheckBox21->SetToolTip(_("Whether the font is underlined."));
358 itemBoxSizer20->Add(itemCheckBox21, 0, wxALIGN_LEFT|wxALL, 5);
359 }
360
361 if (!is_pda)
362 itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
363
364 wxStaticText* itemStaticText23 = new wxStaticText( this, wxID_STATIC, _("Preview:"), wxDefaultPosition, wxDefaultSize, 0 );
365 itemBoxSizer3->Add(itemStaticText23, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
366
367 wxFontPreviewer* itemWindow24 = new wxFontPreviewer( this );
368 m_previewer = itemWindow24;
369 itemWindow24->SetHelpText(_("Shows the font preview."));
370 if (ShowToolTips())
371 itemWindow24->SetToolTip(_("Shows the font preview."));
372 itemBoxSizer3->Add(itemWindow24, 1, wxGROW|wxALL, 5);
373
374 wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
375 itemBoxSizer3->Add(itemBoxSizer25, 0, wxGROW, 5);
376 itemBoxSizer25->Add(5, 5, 1, wxGROW|wxALL, 5);
377
378 #ifdef __WXMAC__
379 wxButton* itemButton28 = new wxButton( this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
380 if (ShowToolTips())
381 itemButton28->SetToolTip(_("Click to cancel the font selection."));
382 itemBoxSizer25->Add(itemButton28, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
383
384 wxButton* itemButton27 = new wxButton( this, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
385 itemButton27->SetDefault();
386 itemButton27->SetHelpText(_("Click to confirm the font selection."));
387 if (ShowToolTips())
388 itemButton27->SetToolTip(_("Click to confirm the font selection."));
389 itemBoxSizer25->Add(itemButton27, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
390 #else
391 wxButton* itemButton27 = new wxButton( this, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
392 itemButton27->SetDefault();
393 itemButton27->SetHelpText(_("Click to confirm the font selection."));
394 if (ShowToolTips())
395 itemButton27->SetToolTip(_("Click to confirm the font selection."));
396 itemBoxSizer25->Add(itemButton27, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
397
398 wxButton* itemButton28 = new wxButton( this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
399 if (ShowToolTips())
400 itemButton28->SetToolTip(_("Click to cancel the font selection."));
401 itemBoxSizer25->Add(itemButton28, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
402 #endif
403
404 familyChoice = (wxChoice*) FindWindow(wxID_FONT_FAMILY);
405 styleChoice = (wxChoice*) FindWindow(wxID_FONT_STYLE);
406 weightChoice = (wxChoice*) FindWindow(wxID_FONT_WEIGHT);
407 colourChoice = (wxChoice*) FindWindow(wxID_FONT_COLOUR);
408 underLineCheckBox = (wxCheckBox*) FindWindow(wxID_FONT_UNDERLINE);
409
410 familyChoice->SetStringSelection( wxFontFamilyIntToString(dialogFont.GetFamily()) );
411 styleChoice->SetStringSelection(wxFontStyleIntToString(dialogFont.GetStyle()));
412 weightChoice->SetStringSelection(wxFontWeightIntToString(dialogFont.GetWeight()));
413
414 if (colourChoice)
415 {
416 wxString name(wxTheColourDatabase->FindName(m_fontData.GetColour()));
417 if (name.length())
418 colourChoice->SetStringSelection(name);
419 else
420 colourChoice->SetStringSelection(wxT("BLACK"));
421 }
422
423 if (underLineCheckBox)
424 {
425 underLineCheckBox->SetValue(dialogFont.GetUnderlined());
426 }
427
428 #if USE_SPINCTRL_FOR_POINT_SIZE
429 spinCtrl->SetValue(dialogFont.GetPointSize());
430 #else
431 pointSizeChoice = (wxChoice*) FindWindow(wxID_FONT_SIZE);
432 pointSizeChoice->SetSelection(dialogFont.GetPointSize()-1);
433 #endif
434
435 #if !defined(__SMARTPHONE__) && !defined(__POCKETPC__)
436 GetSizer()->SetItemMinSize(m_previewer, is_pda ? 100 : 430, is_pda ? 40 : 100);
437 GetSizer()->SetSizeHints(this);
438 GetSizer()->Fit(this);
439
440 Centre(wxBOTH);
441 #endif
442
443 delete[] families;
444 delete[] styles;
445 delete[] weights;
446 #if !USE_SPINCTRL_FOR_POINT_SIZE
447 delete[] pointSizes;
448 #endif
449
450 // Don't block events any more
451 m_useEvents = true;
452
453 }
454
455 void wxGenericFontDialog::InitializeFont()
456 {
457 int fontFamily = wxSWISS;
458 int fontWeight = wxNORMAL;
459 int fontStyle = wxNORMAL;
460 int fontSize = 12;
461 bool fontUnderline = false;
462
463 if (m_fontData.m_initialFont.Ok())
464 {
465 fontFamily = m_fontData.m_initialFont.GetFamily();
466 fontWeight = m_fontData.m_initialFont.GetWeight();
467 fontStyle = m_fontData.m_initialFont.GetStyle();
468 fontSize = m_fontData.m_initialFont.GetPointSize();
469 fontUnderline = m_fontData.m_initialFont.GetUnderlined();
470 }
471
472 dialogFont = wxFont(fontSize, fontFamily, fontStyle,
473 fontWeight, fontUnderline);
474
475 if (m_previewer)
476 m_previewer->SetFont(dialogFont);
477 }
478
479 void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event))
480 {
481 if (!m_useEvents) return;
482
483 int fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST familyChoice->GetStringSelection());
484 int fontWeight = wxFontWeightStringToInt(WXSTRINGCAST weightChoice->GetStringSelection());
485 int fontStyle = wxFontStyleStringToInt(WXSTRINGCAST styleChoice->GetStringSelection());
486 #if USE_SPINCTRL_FOR_POINT_SIZE
487 wxSpinCtrl* fontSizeCtrl = wxDynamicCast(FindWindow(wxID_FONT_SIZE), wxSpinCtrl);
488 int fontSize = fontSizeCtrl->GetValue();
489 #else
490 int fontSize = wxAtoi(pointSizeChoice->GetStringSelection());
491 #endif
492
493 // Start with previous underline setting, we want to retain it even if we can't edit it
494 // dialogFont is always initialized because of the call to InitializeFont
495 int fontUnderline = dialogFont.GetUnderlined();
496
497 if (underLineCheckBox)
498 {
499 fontUnderline = underLineCheckBox->GetValue();
500 }
501
502 dialogFont = wxFont(fontSize, fontFamily, fontStyle, fontWeight, (fontUnderline != 0));
503 m_previewer->SetFont(dialogFont);
504
505 if ( colourChoice )
506 {
507 if ( !colourChoice->GetStringSelection().empty() )
508 {
509 wxColour col = wxTheColourDatabase->Find(colourChoice->GetStringSelection());
510 if (col.Ok())
511 {
512 m_fontData.m_fontColour = col;
513 }
514 }
515 }
516 // Update color here so that we can also use the color originally passed in
517 // (EnableEffects may be false)
518 if (m_fontData.m_fontColour.Ok())
519 m_previewer->SetForegroundColour(m_fontData.m_fontColour);
520
521 m_previewer->Refresh();
522 }
523
524 #if USE_SPINCTRL_FOR_POINT_SIZE
525 void wxGenericFontDialog::OnChangeSize(wxSpinEvent& WXUNUSED(event))
526 {
527 wxCommandEvent cmdEvent;
528 OnChangeFont(cmdEvent);
529 }
530 #endif
531
532 const wxChar *wxFontWeightIntToString(int weight)
533 {
534 switch (weight)
535 {
536 case wxLIGHT:
537 return wxT("Light");
538 case wxBOLD:
539 return wxT("Bold");
540 case wxNORMAL:
541 default:
542 return wxT("Normal");
543 }
544 }
545
546 const wxChar *wxFontStyleIntToString(int style)
547 {
548 switch (style)
549 {
550 case wxITALIC:
551 return wxT("Italic");
552 case wxSLANT:
553 return wxT("Slant");
554 case wxNORMAL:
555 default:
556 return wxT("Normal");
557 }
558 }
559
560 const wxChar *wxFontFamilyIntToString(int family)
561 {
562 switch (family)
563 {
564 case wxROMAN:
565 return wxT("Roman");
566 case wxDECORATIVE:
567 return wxT("Decorative");
568 case wxMODERN:
569 return wxT("Modern");
570 case wxSCRIPT:
571 return wxT("Script");
572 case wxTELETYPE:
573 return wxT("Teletype");
574 case wxSWISS:
575 default:
576 return wxT("Swiss");
577 }
578 }
579
580 int wxFontFamilyStringToInt(wxChar *family)
581 {
582 if (!family)
583 return wxSWISS;
584
585 if (wxStrcmp(family, wxT("Roman")) == 0)
586 return wxROMAN;
587 else if (wxStrcmp(family, wxT("Decorative")) == 0)
588 return wxDECORATIVE;
589 else if (wxStrcmp(family, wxT("Modern")) == 0)
590 return wxMODERN;
591 else if (wxStrcmp(family, wxT("Script")) == 0)
592 return wxSCRIPT;
593 else if (wxStrcmp(family, wxT("Teletype")) == 0)
594 return wxTELETYPE;
595 else return wxSWISS;
596 }
597
598 int wxFontStyleStringToInt(wxChar *style)
599 {
600 if (!style)
601 return wxNORMAL;
602 if (wxStrcmp(style, wxT("Italic")) == 0)
603 return wxITALIC;
604 else if (wxStrcmp(style, wxT("Slant")) == 0)
605 return wxSLANT;
606 else
607 return wxNORMAL;
608 }
609
610 int wxFontWeightStringToInt(wxChar *weight)
611 {
612 if (!weight)
613 return wxNORMAL;
614 if (wxStrcmp(weight, wxT("Bold")) == 0)
615 return wxBOLD;
616 else if (wxStrcmp(weight, wxT("Light")) == 0)
617 return wxLIGHT;
618 else
619 return wxNORMAL;
620 }
621
622 #endif
623 // wxUSE_FONTDLG
624