From 6b775e666ce1fbc40084ff54fcbe44fcce3d7263 Mon Sep 17 00:00:00 2001 From: Julian Smart Date: Thu, 2 Mar 2006 12:57:30 +0000 Subject: [PATCH] On WinCE, generic font dialog didn't work because the point size wxChoice menu went off the display. Now a wxSpinCtrl is used. Also fixed the preview window in PDA mode (was invisible). git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@37779 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/generic/fontdlgg.h | 14 +++++++++++ src/generic/fontdlgg.cpp | 44 +++++++++++++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/include/wx/generic/fontdlgg.h b/include/wx/generic/fontdlgg.h index f39d3c6574..9a2a38dfcf 100644 --- a/include/wx/generic/fontdlgg.h +++ b/include/wx/generic/fontdlgg.h @@ -18,6 +18,13 @@ #include "wx/dialog.h" #include "wx/cmndata.h" +#ifdef __WXWINCE__ +#define USE_SPINCTRL_FOR_POINT_SIZE 1 +class WXDLLEXPORT wxSpinEvent; +#else +#define USE_SPINCTRL_FOR_POINT_SIZE 0 +#endif + /* * FONT DIALOG */ @@ -59,6 +66,10 @@ public: void OnChangeFont(wxCommandEvent& event); +#if USE_SPINCTRL_FOR_POINT_SIZE + void OnChangeSize(wxSpinEvent& event); +#endif + protected: // common part of all ctors void Init(); @@ -72,7 +83,10 @@ protected: wxChoice *weightChoice; wxChoice *colourChoice; wxCheckBox *underLineCheckBox; + +#if !USE_SPINCTRL_FOR_POINT_SIZE wxChoice *pointSizeChoice; +#endif wxFontPreviewer *m_previewer; bool m_useEvents; diff --git a/src/generic/fontdlgg.cpp b/src/generic/fontdlgg.cpp index 61e9a9a30e..b0f2e92078 100644 --- a/src/generic/fontdlgg.cpp +++ b/src/generic/fontdlgg.cpp @@ -41,6 +41,10 @@ #include "wx/generic/fontdlgg.h" #include "wx/settings.h" +#if USE_SPINCTRL_FOR_POINT_SIZE +#include "wx/spinctrl.h" +#endif + //----------------------------------------------------------------------------- // helper class - wxFontPreviewer //----------------------------------------------------------------------------- @@ -98,7 +102,12 @@ BEGIN_EVENT_TABLE(wxGenericFontDialog, wxDialog) EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont) EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont) EVT_CHOICE(wxID_FONT_COLOUR, wxGenericFontDialog::OnChangeFont) +#if USE_SPINCTRL_FOR_POINT_SIZE + EVT_SPINCTRL(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeSize) + EVT_TEXT(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont) +#else EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont) +#endif EVT_CLOSE(wxGenericFontDialog::OnCloseWindow) END_EVENT_TABLE() @@ -232,6 +241,7 @@ void wxGenericFontDialog::CreateWidgets() weights[1] = _("Light"); weights[2] = _("Bold"); +#if !USE_SPINCTRL_FOR_POINT_SIZE wxString *pointSizes = new wxString[40]; int i; for ( i = 0; i < 40; i++) @@ -240,6 +250,7 @@ void wxGenericFontDialog::CreateWidgets() wxSprintf(buf, wxT("%d"), i + 1); pointSizes[i] = buf; } +#endif // layout @@ -320,11 +331,20 @@ void wxGenericFontDialog::CreateWidgets() wxStaticText* itemStaticText18 = new wxStaticText( this, wxID_STATIC, _("&Point size:"), wxDefaultPosition, wxDefaultSize, 0 ); itemBoxSizer17->Add(itemStaticText18, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5); +#if USE_SPINCTRL_FOR_POINT_SIZE + wxSpinCtrl* spinCtrl = new wxSpinCtrl(this, wxID_FONT_SIZE, wxT("12"), wxDefaultPosition, wxSize(80, -1), wxSP_ARROW_KEYS, 1, 500, 12); + spinCtrl->SetHelpText(_("The font point size.")); + if (ShowToolTips()) + spinCtrl->SetToolTip(_("The font point size.")); + + itemBoxSizer17->Add(spinCtrl, 0, wxALIGN_LEFT|wxALL, 5); +#else wxChoice* itemChoice19 = new wxChoice( this, wxID_FONT_SIZE, wxDefaultPosition, wxDefaultSize, 40, pointSizes, 0 ); itemChoice19->SetHelpText(_("The font point size.")); if (ShowToolTips()) itemChoice19->SetToolTip(_("The font point size.")); itemBoxSizer17->Add(itemChoice19, 0, wxALIGN_LEFT|wxALL, 5); +#endif if (m_fontData.GetEnableEffects()) { @@ -349,7 +369,7 @@ void wxGenericFontDialog::CreateWidgets() itemWindow24->SetHelpText(_("Shows the font preview.")); if (ShowToolTips()) itemWindow24->SetToolTip(_("Shows the font preview.")); - itemBoxSizer3->Add(itemWindow24, 0, wxGROW|wxALL, 5); + itemBoxSizer3->Add(itemWindow24, 1, wxGROW|wxALL, 5); wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL); itemBoxSizer3->Add(itemBoxSizer25, 0, wxGROW, 5); @@ -385,7 +405,6 @@ void wxGenericFontDialog::CreateWidgets() styleChoice = (wxChoice*) FindWindow(wxID_FONT_STYLE); weightChoice = (wxChoice*) FindWindow(wxID_FONT_WEIGHT); colourChoice = (wxChoice*) FindWindow(wxID_FONT_COLOUR); - pointSizeChoice = (wxChoice*) FindWindow(wxID_FONT_SIZE); underLineCheckBox = (wxCheckBox*) FindWindow(wxID_FONT_UNDERLINE); familyChoice->SetStringSelection( wxFontFamilyIntToString(dialogFont.GetFamily()) ); @@ -406,7 +425,12 @@ void wxGenericFontDialog::CreateWidgets() underLineCheckBox->SetValue(dialogFont.GetUnderlined()); } +#if USE_SPINCTRL_FOR_POINT_SIZE + spinCtrl->SetValue(dialogFont.GetPointSize()); +#else + pointSizeChoice = (wxChoice*) FindWindow(wxID_FONT_SIZE); pointSizeChoice->SetSelection(dialogFont.GetPointSize()-1); +#endif #if !defined(__SMARTPHONE__) && !defined(__POCKETPC__) GetSizer()->SetItemMinSize(m_previewer, is_pda ? 100 : 430, is_pda ? 40 : 100); @@ -419,7 +443,9 @@ void wxGenericFontDialog::CreateWidgets() delete[] families; delete[] styles; delete[] weights; +#if !USE_SPINCTRL_FOR_POINT_SIZE delete[] pointSizes; +#endif // Don't block events any more m_useEvents = true; @@ -457,7 +483,13 @@ void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event)) int fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST familyChoice->GetStringSelection()); int fontWeight = wxFontWeightStringToInt(WXSTRINGCAST weightChoice->GetStringSelection()); int fontStyle = wxFontStyleStringToInt(WXSTRINGCAST styleChoice->GetStringSelection()); +#if USE_SPINCTRL_FOR_POINT_SIZE + wxSpinCtrl* fontSizeCtrl = wxDynamicCast(FindWindow(wxID_FONT_SIZE), wxSpinCtrl); + int fontSize = fontSizeCtrl->GetValue(); +#else int fontSize = wxAtoi(pointSizeChoice->GetStringSelection()); +#endif + // Start with previous underline setting, we want to retain it even if we can't edit it // dialogFont is always initialized because of the call to InitializeFont int fontUnderline = dialogFont.GetUnderlined(); @@ -489,6 +521,14 @@ void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event)) m_previewer->Refresh(); } +#if USE_SPINCTRL_FOR_POINT_SIZE +void wxGenericFontDialog::OnChangeSize(wxSpinEvent& WXUNUSED(event)) +{ + wxCommandEvent cmdEvent; + OnChangeFont(cmdEvent); +} +#endif + const wxChar *wxFontWeightIntToString(int weight) { switch (weight) -- 2.45.2