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
This commit is contained in:
@@ -18,6 +18,13 @@
|
|||||||
#include "wx/dialog.h"
|
#include "wx/dialog.h"
|
||||||
#include "wx/cmndata.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
|
* FONT DIALOG
|
||||||
*/
|
*/
|
||||||
@@ -59,6 +66,10 @@ public:
|
|||||||
|
|
||||||
void OnChangeFont(wxCommandEvent& event);
|
void OnChangeFont(wxCommandEvent& event);
|
||||||
|
|
||||||
|
#if USE_SPINCTRL_FOR_POINT_SIZE
|
||||||
|
void OnChangeSize(wxSpinEvent& event);
|
||||||
|
#endif
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
// common part of all ctors
|
// common part of all ctors
|
||||||
void Init();
|
void Init();
|
||||||
@@ -72,7 +83,10 @@ protected:
|
|||||||
wxChoice *weightChoice;
|
wxChoice *weightChoice;
|
||||||
wxChoice *colourChoice;
|
wxChoice *colourChoice;
|
||||||
wxCheckBox *underLineCheckBox;
|
wxCheckBox *underLineCheckBox;
|
||||||
|
|
||||||
|
#if !USE_SPINCTRL_FOR_POINT_SIZE
|
||||||
wxChoice *pointSizeChoice;
|
wxChoice *pointSizeChoice;
|
||||||
|
#endif
|
||||||
|
|
||||||
wxFontPreviewer *m_previewer;
|
wxFontPreviewer *m_previewer;
|
||||||
bool m_useEvents;
|
bool m_useEvents;
|
||||||
|
@@ -41,6 +41,10 @@
|
|||||||
#include "wx/generic/fontdlgg.h"
|
#include "wx/generic/fontdlgg.h"
|
||||||
#include "wx/settings.h"
|
#include "wx/settings.h"
|
||||||
|
|
||||||
|
#if USE_SPINCTRL_FOR_POINT_SIZE
|
||||||
|
#include "wx/spinctrl.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
// helper class - wxFontPreviewer
|
// helper class - wxFontPreviewer
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
@@ -98,7 +102,12 @@ BEGIN_EVENT_TABLE(wxGenericFontDialog, wxDialog)
|
|||||||
EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont)
|
EVT_CHOICE(wxID_FONT_WEIGHT, wxGenericFontDialog::OnChangeFont)
|
||||||
EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont)
|
EVT_CHOICE(wxID_FONT_FAMILY, wxGenericFontDialog::OnChangeFont)
|
||||||
EVT_CHOICE(wxID_FONT_COLOUR, 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)
|
EVT_CHOICE(wxID_FONT_SIZE, wxGenericFontDialog::OnChangeFont)
|
||||||
|
#endif
|
||||||
EVT_CLOSE(wxGenericFontDialog::OnCloseWindow)
|
EVT_CLOSE(wxGenericFontDialog::OnCloseWindow)
|
||||||
END_EVENT_TABLE()
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
@@ -232,6 +241,7 @@ void wxGenericFontDialog::CreateWidgets()
|
|||||||
weights[1] = _("Light");
|
weights[1] = _("Light");
|
||||||
weights[2] = _("Bold");
|
weights[2] = _("Bold");
|
||||||
|
|
||||||
|
#if !USE_SPINCTRL_FOR_POINT_SIZE
|
||||||
wxString *pointSizes = new wxString[40];
|
wxString *pointSizes = new wxString[40];
|
||||||
int i;
|
int i;
|
||||||
for ( i = 0; i < 40; i++)
|
for ( i = 0; i < 40; i++)
|
||||||
@@ -240,6 +250,7 @@ void wxGenericFontDialog::CreateWidgets()
|
|||||||
wxSprintf(buf, wxT("%d"), i + 1);
|
wxSprintf(buf, wxT("%d"), i + 1);
|
||||||
pointSizes[i] = buf;
|
pointSizes[i] = buf;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
// layout
|
// layout
|
||||||
|
|
||||||
@@ -320,11 +331,20 @@ void wxGenericFontDialog::CreateWidgets()
|
|||||||
wxStaticText* itemStaticText18 = new wxStaticText( this, wxID_STATIC, _("&Point size:"), wxDefaultPosition, wxDefaultSize, 0 );
|
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|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 );
|
wxChoice* itemChoice19 = new wxChoice( this, wxID_FONT_SIZE, wxDefaultPosition, wxDefaultSize, 40, pointSizes, 0 );
|
||||||
itemChoice19->SetHelpText(_("The font point size."));
|
itemChoice19->SetHelpText(_("The font point size."));
|
||||||
if (ShowToolTips())
|
if (ShowToolTips())
|
||||||
itemChoice19->SetToolTip(_("The font point size."));
|
itemChoice19->SetToolTip(_("The font point size."));
|
||||||
itemBoxSizer17->Add(itemChoice19, 0, wxALIGN_LEFT|wxALL, 5);
|
itemBoxSizer17->Add(itemChoice19, 0, wxALIGN_LEFT|wxALL, 5);
|
||||||
|
#endif
|
||||||
|
|
||||||
if (m_fontData.GetEnableEffects())
|
if (m_fontData.GetEnableEffects())
|
||||||
{
|
{
|
||||||
@@ -349,7 +369,7 @@ void wxGenericFontDialog::CreateWidgets()
|
|||||||
itemWindow24->SetHelpText(_("Shows the font preview."));
|
itemWindow24->SetHelpText(_("Shows the font preview."));
|
||||||
if (ShowToolTips())
|
if (ShowToolTips())
|
||||||
itemWindow24->SetToolTip(_("Shows the font preview."));
|
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);
|
wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
|
||||||
itemBoxSizer3->Add(itemBoxSizer25, 0, wxGROW, 5);
|
itemBoxSizer3->Add(itemBoxSizer25, 0, wxGROW, 5);
|
||||||
@@ -385,7 +405,6 @@ void wxGenericFontDialog::CreateWidgets()
|
|||||||
styleChoice = (wxChoice*) FindWindow(wxID_FONT_STYLE);
|
styleChoice = (wxChoice*) FindWindow(wxID_FONT_STYLE);
|
||||||
weightChoice = (wxChoice*) FindWindow(wxID_FONT_WEIGHT);
|
weightChoice = (wxChoice*) FindWindow(wxID_FONT_WEIGHT);
|
||||||
colourChoice = (wxChoice*) FindWindow(wxID_FONT_COLOUR);
|
colourChoice = (wxChoice*) FindWindow(wxID_FONT_COLOUR);
|
||||||
pointSizeChoice = (wxChoice*) FindWindow(wxID_FONT_SIZE);
|
|
||||||
underLineCheckBox = (wxCheckBox*) FindWindow(wxID_FONT_UNDERLINE);
|
underLineCheckBox = (wxCheckBox*) FindWindow(wxID_FONT_UNDERLINE);
|
||||||
|
|
||||||
familyChoice->SetStringSelection( wxFontFamilyIntToString(dialogFont.GetFamily()) );
|
familyChoice->SetStringSelection( wxFontFamilyIntToString(dialogFont.GetFamily()) );
|
||||||
@@ -406,7 +425,12 @@ void wxGenericFontDialog::CreateWidgets()
|
|||||||
underLineCheckBox->SetValue(dialogFont.GetUnderlined());
|
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);
|
pointSizeChoice->SetSelection(dialogFont.GetPointSize()-1);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__)
|
#if !defined(__SMARTPHONE__) && !defined(__POCKETPC__)
|
||||||
GetSizer()->SetItemMinSize(m_previewer, is_pda ? 100 : 430, is_pda ? 40 : 100);
|
GetSizer()->SetItemMinSize(m_previewer, is_pda ? 100 : 430, is_pda ? 40 : 100);
|
||||||
@@ -419,7 +443,9 @@ void wxGenericFontDialog::CreateWidgets()
|
|||||||
delete[] families;
|
delete[] families;
|
||||||
delete[] styles;
|
delete[] styles;
|
||||||
delete[] weights;
|
delete[] weights;
|
||||||
|
#if !USE_SPINCTRL_FOR_POINT_SIZE
|
||||||
delete[] pointSizes;
|
delete[] pointSizes;
|
||||||
|
#endif
|
||||||
|
|
||||||
// Don't block events any more
|
// Don't block events any more
|
||||||
m_useEvents = true;
|
m_useEvents = true;
|
||||||
@@ -457,7 +483,13 @@ void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event))
|
|||||||
int fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST familyChoice->GetStringSelection());
|
int fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST familyChoice->GetStringSelection());
|
||||||
int fontWeight = wxFontWeightStringToInt(WXSTRINGCAST weightChoice->GetStringSelection());
|
int fontWeight = wxFontWeightStringToInt(WXSTRINGCAST weightChoice->GetStringSelection());
|
||||||
int fontStyle = wxFontStyleStringToInt(WXSTRINGCAST styleChoice->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());
|
int fontSize = wxAtoi(pointSizeChoice->GetStringSelection());
|
||||||
|
#endif
|
||||||
|
|
||||||
// Start with previous underline setting, we want to retain it even if we can't edit it
|
// 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
|
// dialogFont is always initialized because of the call to InitializeFont
|
||||||
int fontUnderline = dialogFont.GetUnderlined();
|
int fontUnderline = dialogFont.GetUnderlined();
|
||||||
@@ -489,6 +521,14 @@ void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event))
|
|||||||
m_previewer->Refresh();
|
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)
|
const wxChar *wxFontWeightIntToString(int weight)
|
||||||
{
|
{
|
||||||
switch (weight)
|
switch (weight)
|
||||||
|
Reference in New Issue
Block a user