fontdlgg.cpp
来自「A*算法 A*算法 A*算法 A*算法A*算法A*算法」· C++ 代码 · 共 631 行 · 第 1/2 页
CPP
631 行
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);
wxSize colourSize = wxDefaultSize;
if (is_pda)
colourSize.x = 100;
wxChoice* itemChoice16 = new wxChoice( this, wxID_FONT_COLOUR, wxDefaultPosition, colourSize, NUM_COLS, wxColourDialogNames, 0 );
itemChoice16->SetHelpText(_("The font colour."));
if (ShowToolTips())
itemChoice16->SetToolTip(_("The font colour."));
itemBoxSizer14->Add(itemChoice16, 0, wxALIGN_LEFT|wxALL, 5);
}
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);
#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())
{
wxBoxSizer* itemBoxSizer20 = new wxBoxSizer(wxVERTICAL);
itemGridSizer4->Add(itemBoxSizer20, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);
wxCheckBox* itemCheckBox21 = new wxCheckBox( this, wxID_FONT_UNDERLINE, _("&Underline"), wxDefaultPosition, wxDefaultSize, 0 );
itemCheckBox21->SetValue(FALSE);
itemCheckBox21->SetHelpText(_("Whether the font is underlined."));
if (ShowToolTips())
itemCheckBox21->SetToolTip(_("Whether the font is underlined."));
itemBoxSizer20->Add(itemCheckBox21, 0, wxALIGN_LEFT|wxALL, 5);
}
if (!is_pda)
itemBoxSizer3->Add(5, 5, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);
if (!is_pda)
{
wxStaticText* itemStaticText23 = new wxStaticText( this, wxID_STATIC, _("Preview:"), wxDefaultPosition, wxDefaultSize, 0 );
itemBoxSizer3->Add(itemStaticText23, 0, wxALIGN_LEFT|wxLEFT|wxRIGHT|wxTOP|wxADJUST_MINSIZE, 5);
}
wxFontPreviewer* itemWindow24 = new wxFontPreviewer( this );
m_previewer = itemWindow24;
itemWindow24->SetHelpText(_("Shows the font preview."));
if (ShowToolTips())
itemWindow24->SetToolTip(_("Shows the font preview."));
itemBoxSizer3->Add(itemWindow24, 1, wxGROW|wxALL, 5);
wxBoxSizer* itemBoxSizer25 = new wxBoxSizer(wxHORIZONTAL);
itemBoxSizer3->Add(itemBoxSizer25, 0, wxGROW, 5);
itemBoxSizer25->Add(5, 5, 1, wxGROW|wxALL, 5);
#ifdef __WXMAC__
wxButton* itemButton28 = new wxButton( this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
if (ShowToolTips())
itemButton28->SetToolTip(_("Click to cancel the font selection."));
itemBoxSizer25->Add(itemButton28, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxButton* itemButton27 = new wxButton( this, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton27->SetDefault();
itemButton27->SetHelpText(_("Click to confirm the font selection."));
if (ShowToolTips())
itemButton27->SetToolTip(_("Click to confirm the font selection."));
itemBoxSizer25->Add(itemButton27, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
#else
wxButton* itemButton27 = new wxButton( this, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );
itemButton27->SetDefault();
itemButton27->SetHelpText(_("Click to confirm the font selection."));
if (ShowToolTips())
itemButton27->SetToolTip(_("Click to confirm the font selection."));
itemBoxSizer25->Add(itemButton27, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
wxButton* itemButton28 = new wxButton( this, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );
if (ShowToolTips())
itemButton28->SetToolTip(_("Click to cancel the font selection."));
itemBoxSizer25->Add(itemButton28, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);
#endif
familyChoice = (wxChoice*) FindWindow(wxID_FONT_FAMILY);
styleChoice = (wxChoice*) FindWindow(wxID_FONT_STYLE);
weightChoice = (wxChoice*) FindWindow(wxID_FONT_WEIGHT);
colourChoice = (wxChoice*) FindWindow(wxID_FONT_COLOUR);
underLineCheckBox = (wxCheckBox*) FindWindow(wxID_FONT_UNDERLINE);
familyChoice->SetStringSelection( wxFontFamilyIntToString(dialogFont.GetFamily()) );
styleChoice->SetStringSelection(wxFontStyleIntToString(dialogFont.GetStyle()));
weightChoice->SetStringSelection(wxFontWeightIntToString(dialogFont.GetWeight()));
if (colourChoice)
{
wxString name(wxTheColourDatabase->FindName(m_fontData.GetColour()));
if (name.length())
colourChoice->SetStringSelection(name);
else
colourChoice->SetStringSelection(wxT("BLACK"));
}
if (underLineCheckBox)
{
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);
GetSizer()->SetSizeHints(this);
GetSizer()->Fit(this);
Centre(wxBOTH);
#endif
delete[] families;
delete[] styles;
delete[] weights;
#if !USE_SPINCTRL_FOR_POINT_SIZE
delete[] pointSizes;
#endif
// Don't block events any more
m_useEvents = true;
}
void wxGenericFontDialog::InitializeFont()
{
int fontFamily = wxSWISS;
int fontWeight = wxNORMAL;
int fontStyle = wxNORMAL;
int fontSize = 12;
bool fontUnderline = false;
if (m_fontData.m_initialFont.Ok())
{
fontFamily = m_fontData.m_initialFont.GetFamily();
fontWeight = m_fontData.m_initialFont.GetWeight();
fontStyle = m_fontData.m_initialFont.GetStyle();
fontSize = m_fontData.m_initialFont.GetPointSize();
fontUnderline = m_fontData.m_initialFont.GetUnderlined();
}
dialogFont = wxFont(fontSize, fontFamily, fontStyle,
fontWeight, fontUnderline);
if (m_previewer)
m_previewer->SetFont(dialogFont);
}
void wxGenericFontDialog::OnChangeFont(wxCommandEvent& WXUNUSED(event))
{
if (!m_useEvents) return;
int fontFamily = wxFontFamilyStringToInt(WXSTRINGCAST familyChoice->GetStringSelection());
int fontWeight = wxFontWeightStringToInt(WXSTRINGCAST weightChoice->GetStringSelection());
int fontStyle = wxFontStyleStringToInt(WXSTRINGCAST styleChoice->GetStringSelection());
// 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();
#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
if (underLineCheckBox)
{
fontUnderline = underLineCheckBox->GetValue();
}
dialogFont = wxFont(fontSize, fontFamily, fontStyle, fontWeight, (fontUnderline != 0));
m_previewer->SetFont(dialogFont);
if ( colourChoice )
{
if ( !colourChoice->GetStringSelection().empty() )
{
wxColour col = wxTheColourDatabase->Find(colourChoice->GetStringSelection());
if (col.Ok())
{
m_fontData.m_fontColour = col;
}
}
}
// Update color here so that we can also use the color originally passed in
// (EnableEffects may be false)
if (m_fontData.m_fontColour.Ok())
m_previewer->SetForegroundColour(m_fontData.m_fontColour);
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)
{
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
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?