don't use deprecated GetTextExtent() overload
[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 #include "wx/settings.h"
34 #include "wx/cmndata.h"
35 #include "wx/sizer.h"
36 #endif
37
38 #include <string.h>
39 #include <stdlib.h>
40
41 #include "wx/fontdlg.h"
42 #include "wx/generic/fontdlgg.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 dc.SetTextForeground(GetForegroundColour());
83 dc.SetClippingRegion(2, 2, size.x-4, size.y-4);
84 dc.DrawText(_("ABCDEFGabcdefg12345"),
85 10, (size.y - dc.GetTextExtent(wxT("X")).y)/2);
86 dc.DestroyClippingRegion();
87 }
88 }
89
90 //-----------------------------------------------------------------------------
91 // wxGenericFontDialog
92 //-----------------------------------------------------------------------------
93
94 IMPLEMENT_DYNAMIC_CLASS(wxGenericFontDialog, wxDialog)
95
96 BEGIN_EVENT_TABLE(wxGenericFontDialog, wxDialog)
97 EVT_CHECKBOX(wxID_FONT_UNDERLINE, wxGenericFontDialog::OnChangeFont)
98 EVT_CHOICE(wxID_FONT_STYLE, wxGenericFontDialog::OnChangeFont)
99 EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont)
100 EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont)
101 EVT_CHOICE(wxID_FONT_COLOUR, wxGenericFontDialog::OnChangeFont)
102 #if USE_SPINCTRL_FOR_POINT_SIZE
103 EVT_SPINCTRL(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeSize)
104 EVT_TEXT(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont)
105 #else
106 EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont)
107 #endif
108 EVT_CLOSE(wxGenericFontDialog::OnCloseWindow)
109 END_EVENT_TABLE()
110
111
112 #define NUM_COLS 48
113 static wxString wxColourDialogNames[NUM_COLS]={wxT("ORANGE"),
114 wxT("GOLDENROD"),
115 wxT("WHEAT"),
116 wxT("SPRING GREEN"),
117 wxT("SKY BLUE"),
118 wxT("SLATE BLUE"),
119 wxT("MEDIUM VIOLET RED"),
120 wxT("PURPLE"),
121
122 wxT("RED"),
123 wxT("YELLOW"),
124 wxT("MEDIUM SPRING GREEN"),
125 wxT("PALE GREEN"),
126 wxT("CYAN"),
127 wxT("LIGHT STEEL BLUE"),
128 wxT("ORCHID"),
129 wxT("LIGHT MAGENTA"),
130
131 wxT("BROWN"),
132 wxT("YELLOW"),
133 wxT("GREEN"),
134 wxT("CADET BLUE"),
135 wxT("MEDIUM BLUE"),
136 wxT("MAGENTA"),
137 wxT("MAROON"),
138 wxT("ORANGE RED"),
139
140 wxT("FIREBRICK"),
141 wxT("CORAL"),
142 wxT("FOREST GREEN"),
143 wxT("AQUARAMINE"),
144 wxT("BLUE"),
145 wxT("NAVY"),
146 wxT("THISTLE"),
147 wxT("MEDIUM VIOLET RED"),
148
149 wxT("INDIAN RED"),
150 wxT("GOLD"),
151 wxT("MEDIUM SEA GREEN"),
152 wxT("MEDIUM BLUE"),
153 wxT("MIDNIGHT BLUE"),
154 wxT("GREY"),
155 wxT("PURPLE"),
156 wxT("KHAKI"),
157
158 wxT("BLACK"),
159 wxT("MEDIUM FOREST GREEN"),
160 wxT("KHAKI"),
161 wxT("DARK GREY"),
162 wxT("SEA GREEN"),
163 wxT("LIGHT GREY"),
164 wxT("MEDIUM SLATE BLUE"),
165 wxT("WHITE")
166 };
167
168 /*
169 * Generic wxFontDialog
170 */
171
172 void wxGenericFontDialog::Init()
173 {
174 m_useEvents = false;
175 m_previewer = NULL;
176 Create( m_parent ) ;
177 }
178
179 wxGenericFontDialog::~wxGenericFontDialog()
180 {
181 }
182
183 void wxGenericFontDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event))
184 {
185 EndModal(wxID_CANCEL);
186 }
187
188 bool wxGenericFontDialog::DoCreate(wxWindow *parent)
189 {
190 parent = GetParentForModalDialog(parent);
191
192 if ( !wxDialog::Create( parent , wxID_ANY , _T("Choose Font") ,
193 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 DoChangeFont();
205
206 return true;
207 }
208
209 int wxGenericFontDialog::ShowModal()
210 {
211 int ret = wxDialog::ShowModal();
212
213 if (ret != wxID_CANCEL)
214 {
215 m_fontData.m_chosenFont = m_dialogFont;
216 }
217
218 return ret;
219 }
220
221 // This should be application-settable
222 static bool ShowToolTips() { return false; }
223
224 void wxGenericFontDialog::CreateWidgets()
225 {
226 wxString *families = new wxString[6],
227 *styles = new wxString[3],
228 *weights = new wxString[3];
229 families[0] = _("Roman");
230 families[1] = _("Decorative");
231 families[2] = _("Modern");
232 families[3] = _("Script");
233 families[4] = _("Swiss" );
234 families[5] = _("Teletype" );
235 styles[0] = _("Normal");
236 styles[1] = _("Italic");
237 styles[2] = _("Slant");
238 weights[0] = _("Normal");
239 weights[1] = _("Light");
240 weights[2] = _("Bold");
241
242 #if !USE_SPINCTRL_FOR_POINT_SIZE
243 wxString *pointSizes = new wxString[40];
244 int i;
245 for ( i = 0; i < 40; i++)
246 {
247 wxChar buf[5];
248 wxSprintf(buf, wxT("%d"), i + 1);
249 pointSizes[i] = buf;
250 }
251 #endif
252
253 // layout
254
255 bool is_pda = (wxSystemSettings::GetScreenType() <= wxSYS_SCREEN_PDA);
256 int noCols, noRows;
257 if (is_pda)
258 {
259 noCols = 2; noRows = 3;
260 }
261 else
262 {
263 noCols = 3; noRows = 2;
264 }
265
266 wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);
267 this->SetSizer(itemBoxSizer2);
268 this->SetAutoLayout(true);
269
270 wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);
271 itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);
272
273 wxFlexGridSizer* itemGridSizer4 = new wxFlexGridSizer(noRows, noCols, 0, 0);
274 itemBoxSizer3->Add(itemGridSizer4, 0, wxGROW, 5);
275
276 wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL);
277 itemGridSizer4->Add(itemBoxSizer5, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
278 wxStaticText* itemStaticText6 = new wxStaticText( this, wxID_STATIC, _("&Font family:"), wxDefaultPosition, wxDefaultSize, 0 );
279 itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
280
281 wxChoice* itemChoice7 = new wxChoice( this, wxID_FONT_FAMILY, wxDefaultPosition, wxDefaultSize, 5, families, 0 );
282 itemChoice7->SetHelpText(_("The font family."));
283 if (ShowToolTips())
284 itemChoice7->SetToolTip(_("The font family."));
285 itemBoxSizer5->Add(itemChoice7, 0, wxALIGN_LEFT|wxALL, 5);
286
287 wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxVERTICAL);
288 itemGridSizer4->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
289 wxStaticText* itemStaticText9 = new wxStaticText( this, wxID_STATIC, _("&Style:"), wxDefaultPosition, wxDefaultSize, 0 );
290 itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
291
292 wxChoice* itemChoice10 = new wxChoice( this, wxID_FONT_STYLE, wxDefaultPosition, wxDefaultSize, 3, styles, 0 );
293 itemChoice10->SetHelpText(_("The font style."));
294 if (ShowToolTips())
295 itemChoice10->SetToolTip(_("The font style."));
296 itemBoxSizer8->Add(itemChoice10, 0, wxALIGN_LEFT|wxALL, 5);
297
298 wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL);
299 itemGridSizer4->Add(itemBoxSizer11, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
300 wxStaticText* itemStaticText12 = new wxStaticText( this, wxID_STATIC, _("&Weight:"), wxDefaultPosition, wxDefaultSize, 0 );
301 itemBoxSizer11->Add(itemStaticText12, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
302
303 wxChoice* itemChoice13 = new wxChoice( this, wxID_FONT_WEIGHT, wxDefaultPosition, wxDefaultSize, 3, weights, 0 );
304 itemChoice13->SetHelpText(_("The font weight."));
305 if (ShowToolTips())
306 itemChoice13->SetToolTip(_("The font weight."));
307 itemBoxSizer11->Add(itemChoice13, 0, wxALIGN_LEFT|wxALL, 5);
308
309 wxBoxSizer* itemBoxSizer14 = new wxBoxSizer(wxVERTICAL);
310 itemGridSizer4->Add(itemBoxSizer14, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
311 if (m_fontData.GetEnableEffects())
312 {
313 wxStaticText* itemStaticText15 = new wxStaticText( this, wxID_STATIC, _("C&olour:"), wxDefaultPosition, wxDefaultSize, 0 );
314 itemBoxSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
315
316 wxSize colourSize = wxDefaultSize;
317 if (is_pda)
318 colourSize.x = 100;
319
320 wxChoice* itemChoice16 = new wxChoice( this, wxID_FONT_COLOUR, wxDefaultPosition, colourSize, NUM_COLS, wxColourDialogNames, 0 );
321 itemChoice16->SetHelpText(_("The font colour."));
322 if (ShowToolTips())
323 itemChoice16->SetToolTip(_("The font colour."));
324 itemBoxSizer14->Add(itemChoice16, 0, wxALIGN_LEFT|wxALL, 5);
325 }
326
327 wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL);
328 itemGridSizer4->Add(itemBoxSizer17, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5);
329 wxStaticText* itemStaticText18 = new wxStaticText( this, wxID_STATIC, _("&Point size:"), wxDefaultPosition, wxDefaultSize, 0 );
330 itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
331
332 #if USE_SPINCTRL_FOR_POINT_SIZE
333 wxSpinCtrl* spinCtrl = new wxSpinCtrl(this, wxID_FONT_SIZE, wxT("12"), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 1, 500, 12);
334 spinCtrl->SetHelpText(_("The font point size."));
335 if (ShowToolTips())
336 spinCtrl->SetToolTip(_("The font point size."));
337
338 itemBoxSizer17->Add(spinCtrl, 0, wxALIGN_LEFT|wxALL, 5);
339 #else
340 wxChoice* itemChoice19 = new wxChoice( this, wxID_FONT_SIZE, wxDefaultPosition, wxDefaultSize, 40, pointSizes, 0 );
341 itemChoice19->SetHelpText(_("The font point size."));
342 if (ShowToolTips())
343 itemChoice19->SetToolTip(_("The font point size."));
344 itemBoxSizer17->Add(itemChoice19, 0, wxALIGN_LEFT|wxALL, 5);
345 #endif
346
347 if (m_fontData.GetEnableEffects())
348 {
349 wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL);
350 itemGridSizer4->Add(itemBoxSizer20, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
351 wxCheckBox* itemCheckBox21 = new wxCheckBox( this, wxID_FONT_UNDERLINE, _("&Underline"), wxDefaultPosition, wxDefaultSize, 0 );
352 itemCheckBox21->SetValue(false);
353 itemCheckBox21->SetHelpText(_("Whether the font is underlined."));
354 if (ShowToolTips())
355 itemCheckBox21->SetToolTip(_("Whether the font is underlined."));
356 itemBoxSizer20->Add(itemCheckBox21, 0, wxALIGN_LEFT|wxALL, 5);
357 }
358
359 if (!is_pda)
360 itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
361
362 wxStaticText* itemStaticText23 = new wxStaticText( this, wxID_STATIC, _("Preview:"), wxDefaultPosition, wxDefaultSize, 0 );
363 itemBoxSizer3->Add(itemStaticText23, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5);
364
365 wxFontPreviewer* itemWindow24 = new wxFontPreviewer( this );
366 m_previewer = itemWindow24;
367 itemWindow24->SetHelpText(_("Shows the font preview."));
368 if (ShowToolTips())
369 itemWindow24->SetToolTip(_("Shows the font preview."));
370 itemBoxSizer3->Add(itemWindow24, 1, wxGROW|wxALL, 5);
371
372 wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
373 itemBoxSizer3->Add(itemBoxSizer25, 0, wxGROW, 5);
374 itemBoxSizer25->Add(5, 5, 1, wxGROW|wxALL, 5);
375
376 #ifdef __WXMAC__
377 wxButton* itemButton28 = new wxButton( this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
378 if (ShowToolTips())
379 itemButton28->SetToolTip(_("Click to cancel the font selection."));
380 itemBoxSizer25->Add(itemButton28, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
381
382 wxButton* itemButton27 = new wxButton( this, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
383 itemButton27->SetDefault();
384 itemButton27->SetHelpText(_("Click to confirm the font selection."));
385 if (ShowToolTips())
386 itemButton27->SetToolTip(_("Click to confirm the font selection."));
387 itemBoxSizer25->Add(itemButton27, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
388 #else
389 wxButton* itemButton27 = new wxButton( this, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
390 itemButton27->SetDefault();
391 itemButton27->SetHelpText(_("Click to confirm the font selection."));
392 if (ShowToolTips())
393 itemButton27->SetToolTip(_("Click to confirm the font selection."));
394 itemBoxSizer25->Add(itemButton27, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
395
396 wxButton* itemButton28 = new wxButton( this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
397 if (ShowToolTips())
398 itemButton28->SetToolTip(_("Click to cancel the font selection."));
399 itemBoxSizer25->Add(itemButton28, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
400 #endif
401
402 m_familyChoice = (wxChoice*) FindWindow(wxID_FONT_FAMILY);
403 m_styleChoice = (wxChoice*) FindWindow(wxID_FONT_STYLE);
404 m_weightChoice = (wxChoice*) FindWindow(wxID_FONT_WEIGHT);
405 m_colourChoice = (wxChoice*) FindWindow(wxID_FONT_COLOUR);
406 m_underLineCheckBox = (wxCheckBox*) FindWindow(wxID_FONT_UNDERLINE);
407
408 m_familyChoice->SetStringSelection( wxFontFamilyIntToString(m_dialogFont.GetFamily()) );
409 m_styleChoice->SetStringSelection(wxFontStyleIntToString(m_dialogFont.GetStyle()));
410 m_weightChoice->SetStringSelection(wxFontWeightIntToString(m_dialogFont.GetWeight()));
411
412 if (m_colourChoice)
413 {
414 wxString name(wxTheColourDatabase->FindName(m_fontData.GetColour()));
415 if (name.length())
416 m_colourChoice->SetStringSelection(name);
417 else
418 m_colourChoice->SetStringSelection(wxT("BLACK"));
419 }
420
421 if (m_underLineCheckBox)
422 {
423 m_underLineCheckBox->SetValue(m_dialogFont.GetUnderlined());
424 }
425
426 #if USE_SPINCTRL_FOR_POINT_SIZE
427 spinCtrl->SetValue(m_dialogFont.GetPointSize());
428 #else
429 m_pointSizeChoice = (wxChoice*) FindWindow(wxID_FONT_SIZE);
430 m_pointSizeChoice->SetSelection(m_dialogFont.GetPointSize()-1);
431 #endif
432
433 GetSizer()->SetItemMinSize(m_previewer, is_pda ? 100 : 430, is_pda ? 40 : 100);
434 GetSizer()->SetSizeHints(this);
435 GetSizer()->Fit(this);
436
437 Centre(wxBOTH);
438
439 delete[] families;
440 delete[] styles;
441 delete[] weights;
442 #if !USE_SPINCTRL_FOR_POINT_SIZE
443 delete[] pointSizes;
444 #endif
445
446 // Don't block events any more
447 m_useEvents = true;
448
449 }
450
451 void wxGenericFontDialog::InitializeFont()
452 {
453 int fontFamily = wxSWISS;
454 int fontWeight = wxNORMAL;
455 int fontStyle = wxNORMAL;
456 int fontSize = 12;
457 bool fontUnderline = false;
458
459 if (m_fontData.m_initialFont.Ok())
460 {
461 fontFamily = m_fontData.m_initialFont.GetFamily();
462 fontWeight = m_fontData.m_initialFont.GetWeight();
463 fontStyle = m_fontData.m_initialFont.GetStyle();
464 fontSize = m_fontData.m_initialFont.GetPointSize();
465 fontUnderline = m_fontData.m_initialFont.GetUnderlined();
466 }
467
468 m_dialogFont = wxFont(fontSize, fontFamily, fontStyle,
469 fontWeight, fontUnderline);
470
471 if (m_previewer)
472 m_previewer->SetFont(m_dialogFont);
473 }
474
475 void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event))
476 {
477 DoChangeFont();
478 }
479
480 void wxGenericFontDialog::DoChangeFont()
481 {
482 if (!m_useEvents) return;
483
484 int fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST m_familyChoice->GetStringSelection());
485 int fontWeight = wxFontWeightStringToInt(WXSTRINGCAST m_weightChoice->GetStringSelection());
486 int fontStyle = wxFontStyleStringToInt(WXSTRINGCAST m_styleChoice->GetStringSelection());
487 #if USE_SPINCTRL_FOR_POINT_SIZE
488 wxSpinCtrl* fontSizeCtrl = wxDynamicCast(FindWindow(wxID_FONT_SIZE), wxSpinCtrl);
489 int fontSize = fontSizeCtrl->GetValue();
490 #else
491 int fontSize = wxAtoi(m_pointSizeChoice->GetStringSelection());
492 #endif
493
494 // Start with previous underline setting, we want to retain it even if we can't edit it
495 // m_dialogFont is always initialized because of the call to InitializeFont
496 int fontUnderline = m_dialogFont.GetUnderlined();
497
498 if (m_underLineCheckBox)
499 {
500 fontUnderline = m_underLineCheckBox->GetValue();
501 }
502
503 m_dialogFont = wxFont(fontSize, fontFamily, fontStyle, fontWeight, (fontUnderline != 0));
504 m_previewer->SetFont(m_dialogFont);
505
506 if ( m_colourChoice )
507 {
508 if ( !m_colourChoice->GetStringSelection().empty() )
509 {
510 wxColour col = wxTheColourDatabase->Find(m_colourChoice->GetStringSelection());
511 if (col.Ok())
512 {
513 m_fontData.m_fontColour = col;
514 }
515 }
516 }
517 // Update color here so that we can also use the color originally passed in
518 // (EnableEffects may be false)
519 if (m_fontData.m_fontColour.Ok())
520 m_previewer->SetForegroundColour(m_fontData.m_fontColour);
521
522 m_previewer->Refresh();
523 }
524
525 #if USE_SPINCTRL_FOR_POINT_SIZE
526 void wxGenericFontDialog::OnChangeSize(wxSpinEvent& WXUNUSED(event))
527 {
528 DoChangeFont();
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