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