X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/cececf4db53f743669f2b86dae1c8851f5ae58fc..de1cc37868e66796a66af8fc13a642a1d6a3d1db:/src/generic/fontdlgg.cpp diff --git a/src/generic/fontdlgg.cpp b/src/generic/fontdlgg.cpp index ee82641890..2a986588cf 100644 --- a/src/generic/fontdlgg.cpp +++ b/src/generic/fontdlgg.cpp @@ -20,6 +20,7 @@ #ifndef WX_PRECOMP #include + #include "wx/crt.h" #include "wx/utils.h" #include "wx/dialog.h" #include "wx/listbox.h" @@ -30,16 +31,15 @@ #include "wx/choice.h" #include "wx/checkbox.h" #include "wx/intl.h" + #include "wx/settings.h" + #include "wx/sizer.h" #endif #include #include -#include "wx/cmndata.h" -#include "wx/sizer.h" #include "wx/fontdlg.h" #include "wx/generic/fontdlgg.h" -#include "wx/settings.h" #if USE_SPINCTRL_FOR_POINT_SIZE #include "wx/spinctrl.h" @@ -79,17 +79,108 @@ void wxFontPreviewer::OnPaint(wxPaintEvent& WXUNUSED(event)) if ( font.Ok() ) { dc.SetFont(font); - // Calculate vertical centre - long w = 0, h = 0; - dc.GetTextExtent( wxT("X"), &w, &h); dc.SetTextForeground(GetForegroundColour()); dc.SetClippingRegion(2, 2, size.x-4, size.y-4); dc.DrawText(_("ABCDEFGabcdefg12345"), - 10, size.y/2 - h/2); + 10, (size.y - dc.GetTextExtent(wxT("X")).y)/2); dc.DestroyClippingRegion(); } } +//----------------------------------------------------------------------------- +// helper functions +//----------------------------------------------------------------------------- + +static const wxChar *wxFontWeightIntToString(int weight) +{ + switch (weight) + { + case wxLIGHT: + return wxT("Light"); + case wxBOLD: + return wxT("Bold"); + case wxNORMAL: + default: + return wxT("Normal"); + } +} + +static const wxChar *wxFontStyleIntToString(int style) +{ + switch (style) + { + case wxITALIC: + return wxT("Italic"); + case wxSLANT: + return wxT("Slant"); + case wxNORMAL: + default: + return wxT("Normal"); + } +} + +static const wxChar *wxFontFamilyIntToString(int family) +{ + switch (family) + { + case wxROMAN: + return wxT("Roman"); + case wxDECORATIVE: + return wxT("Decorative"); + case wxMODERN: + return wxT("Modern"); + case wxSCRIPT: + return wxT("Script"); + case wxTELETYPE: + return wxT("Teletype"); + case wxSWISS: + default: + return wxT("Swiss"); + } +} + +static int wxFontFamilyStringToInt(const wxString& family) +{ + if (family.empty()) + return wxSWISS; + + if (wxStrcmp(family, wxT("Roman")) == 0) + return wxROMAN; + else if (wxStrcmp(family, wxT("Decorative")) == 0) + return wxDECORATIVE; + else if (wxStrcmp(family, wxT("Modern")) == 0) + return wxMODERN; + else if (wxStrcmp(family, wxT("Script")) == 0) + return wxSCRIPT; + else if (wxStrcmp(family, wxT("Teletype")) == 0) + return wxTELETYPE; + else return wxSWISS; +} + +static int wxFontStyleStringToInt(const wxString& style) +{ + if (style.empty()) + return wxNORMAL; + if (wxStrcmp(style, wxT("Italic")) == 0) + return wxITALIC; + else if (wxStrcmp(style, wxT("Slant")) == 0) + return wxSLANT; + else + return wxNORMAL; +} + +static int wxFontWeightStringToInt(const wxString& weight) +{ + if (weight.empty()) + return wxNORMAL; + if (wxStrcmp(weight, wxT("Bold")) == 0) + return wxBOLD; + else if (wxStrcmp(weight, wxT("Light")) == 0) + return wxLIGHT; + else + return wxNORMAL; +} + //----------------------------------------------------------------------------- // wxGenericFontDialog //----------------------------------------------------------------------------- @@ -190,8 +281,11 @@ void wxGenericFontDialog::OnCloseWindow(wxCloseEvent& WXUNUSED(event)) bool wxGenericFontDialog::DoCreate(wxWindow *parent) { - if ( !wxDialog::Create( parent , wxID_ANY , _T("Choose Font") , wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, - _T("fontdialog") ) ) + parent = GetParentForModalDialog(parent, 0); + + if ( !wxDialog::Create( parent , wxID_ANY , wxT("Choose Font") , + wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE, + wxT("fontdialog") ) ) { wxFAIL_MSG( wxT("wxFontDialog creation failed") ); return false; @@ -276,7 +370,7 @@ void wxGenericFontDialog::CreateWidgets() wxBoxSizer* itemBoxSizer5 = new wxBoxSizer(wxVERTICAL); itemGridSizer4->Add(itemBoxSizer5, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5); wxStaticText* itemStaticText6 = new wxStaticText( this, wxID_STATIC, _("&Font family:"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer5->Add(itemStaticText6, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5); wxChoice* itemChoice7 = new wxChoice( this, wxID_FONT_FAMILY, wxDefaultPosition, wxDefaultSize, 5, families, 0 ); itemChoice7->SetHelpText(_("The font family.")); @@ -287,7 +381,7 @@ void wxGenericFontDialog::CreateWidgets() wxBoxSizer* itemBoxSizer8 = new wxBoxSizer(wxVERTICAL); itemGridSizer4->Add(itemBoxSizer8, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5); wxStaticText* itemStaticText9 = new wxStaticText( this, wxID_STATIC, _("&Style:"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer8->Add(itemStaticText9, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5); wxChoice* itemChoice10 = new wxChoice( this, wxID_FONT_STYLE, wxDefaultPosition, wxDefaultSize, 3, styles, 0 ); itemChoice10->SetHelpText(_("The font style.")); @@ -298,7 +392,7 @@ void wxGenericFontDialog::CreateWidgets() wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxVERTICAL); itemGridSizer4->Add(itemBoxSizer11, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5); wxStaticText* itemStaticText12 = new wxStaticText( this, wxID_STATIC, _("&Weight:"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer11->Add(itemStaticText12, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer11->Add(itemStaticText12, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5); wxChoice* itemChoice13 = new wxChoice( this, wxID_FONT_WEIGHT, wxDefaultPosition, wxDefaultSize, 3, weights, 0 ); itemChoice13->SetHelpText(_("The font weight.")); @@ -311,7 +405,7 @@ void wxGenericFontDialog::CreateWidgets() if (m_fontData.GetEnableEffects()) { wxStaticText* itemStaticText15 = new wxStaticText( this, wxID_STATIC, _("C&olour:"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer14->Add(itemStaticText15, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5); wxSize colourSize = wxDefaultSize; if (is_pda) @@ -327,7 +421,7 @@ void wxGenericFontDialog::CreateWidgets() wxBoxSizer* itemBoxSizer17 = new wxBoxSizer(wxVERTICAL); itemGridSizer4->Add(itemBoxSizer17, 0, wxALIGN_CENTER_HORIZONTAL|wxGROW, 5); wxStaticText* itemStaticText18 = new wxStaticText( this, wxID_STATIC, _("&Point size:"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5); #if USE_SPINCTRL_FOR_POINT_SIZE wxSpinCtrl* spinCtrl = new wxSpinCtrl(this, wxID_FONT_SIZE, wxT("12"), wxDefaultPosition, wxSize(80, wxDefaultCoord), wxSP_ARROW_KEYS, 1, 500, 12); @@ -360,7 +454,7 @@ void wxGenericFontDialog::CreateWidgets() itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5); wxStaticText* itemStaticText23 = new wxStaticText( this, wxID_STATIC, _("Preview:"), wxDefaultPosition, wxDefaultSize, 0 ); - itemBoxSizer3->Add(itemStaticText23, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); + itemBoxSizer3->Add(itemStaticText23, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP, 5); wxFontPreviewer* itemWindow24 = new wxFontPreviewer( this ); m_previewer = itemWindow24; @@ -412,10 +506,10 @@ void wxGenericFontDialog::CreateWidgets() if (m_colourChoice) { wxString name(wxTheColourDatabase->FindName(m_fontData.GetColour())); - if (name.length()) - m_colourChoice->SetStringSelection(name); - else + if ( name.empty() ) m_colourChoice->SetStringSelection(wxT("BLACK")); + else + m_colourChoice->SetStringSelection(name); } if (m_underLineCheckBox) @@ -430,13 +524,11 @@ void wxGenericFontDialog::CreateWidgets() m_pointSizeChoice->SetSelection(m_dialogFont.GetPointSize()-1); #endif -#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__) GetSizer()->SetItemMinSize(m_previewer, is_pda ? 100 : 430, is_pda ? 40 : 100); GetSizer()->SetSizeHints(this); GetSizer()->Fit(this); Centre(wxBOTH); -#endif delete[] families; delete[] styles; @@ -483,9 +575,9 @@ void wxGenericFontDialog::DoChangeFont() { if (!m_useEvents) return; - int fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST m_familyChoice->GetStringSelection()); - int fontWeight = wxFontWeightStringToInt(WXSTRINGCAST m_weightChoice->GetStringSelection()); - int fontStyle = wxFontStyleStringToInt(WXSTRINGCAST m_styleChoice->GetStringSelection()); + int fontFamily = wxFontFamilyStringToInt(m_familyChoice->GetStringSelection()); + int fontWeight = wxFontWeightStringToInt(m_weightChoice->GetStringSelection()); + int fontStyle = wxFontStyleStringToInt(m_styleChoice->GetStringSelection()); #if USE_SPINCTRL_FOR_POINT_SIZE wxSpinCtrl* fontSizeCtrl = wxDynamicCast(FindWindow(wxID_FONT_SIZE), wxSpinCtrl); int fontSize = fontSizeCtrl->GetValue(); @@ -531,95 +623,5 @@ void wxGenericFontDialog::OnChangeSize(wxSpinEvent& WXUNUSED(event)) } #endif -const wxChar *wxFontWeightIntToString(int weight) -{ - switch (weight) - { - case wxLIGHT: - return wxT("Light"); - case wxBOLD: - return wxT("Bold"); - case wxNORMAL: - default: - return wxT("Normal"); - } -} - -const wxChar *wxFontStyleIntToString(int style) -{ - switch (style) - { - case wxITALIC: - return wxT("Italic"); - case wxSLANT: - return wxT("Slant"); - case wxNORMAL: - default: - return wxT("Normal"); - } -} - -const wxChar *wxFontFamilyIntToString(int family) -{ - switch (family) - { - case wxROMAN: - return wxT("Roman"); - case wxDECORATIVE: - return wxT("Decorative"); - case wxMODERN: - return wxT("Modern"); - case wxSCRIPT: - return wxT("Script"); - case wxTELETYPE: - return wxT("Teletype"); - case wxSWISS: - default: - return wxT("Swiss"); - } -} - -int wxFontFamilyStringToInt(wxChar *family) -{ - if (!family) - return wxSWISS; - - if (wxStrcmp(family, wxT("Roman")) == 0) - return wxROMAN; - else if (wxStrcmp(family, wxT("Decorative")) == 0) - return wxDECORATIVE; - else if (wxStrcmp(family, wxT("Modern")) == 0) - return wxMODERN; - else if (wxStrcmp(family, wxT("Script")) == 0) - return wxSCRIPT; - else if (wxStrcmp(family, wxT("Teletype")) == 0) - return wxTELETYPE; - else return wxSWISS; -} - -int wxFontStyleStringToInt(wxChar *style) -{ - if (!style) - return wxNORMAL; - if (wxStrcmp(style, wxT("Italic")) == 0) - return wxITALIC; - else if (wxStrcmp(style, wxT("Slant")) == 0) - return wxSLANT; - else - return wxNORMAL; -} - -int wxFontWeightStringToInt(wxChar *weight) -{ - if (!weight) - return wxNORMAL; - if (wxStrcmp(weight, wxT("Bold")) == 0) - return wxBOLD; - else if (wxStrcmp(weight, wxT("Light")) == 0) - return wxLIGHT; - else - return wxNORMAL; -} - #endif // wxUSE_FONTDLG