⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fontdlg.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
📖 第 1 页 / 共 2 页
字号:
wxFontDialog::~wxFontDialog(){    // empty}/*! * wxFontDialog creator */bool wxFontDialog::Create(wxWindow* parent, const wxFontData& fontData){    m_fontData = fontData;    m_suppressUpdates = false;    wxString caption = _("Font");    m_facenameCtrl = NULL;    m_sizeCtrl = NULL;    m_boldCtrl = NULL;    m_italicCtrl = NULL;    m_underlinedCtrl = NULL;    m_colourCtrl = NULL;    m_previewCtrl = NULL;    InitializeFont();    SetExtraStyle(GetExtraStyle()|wxWS_EX_BLOCK_EVENTS);    wxDialog::Create( parent, wxID_ANY, caption, wxDefaultPosition, wxDefaultSize, wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER );    CreateControls();    GetSizer()->Fit(this);    GetSizer()->SetSizeHints(this);    Centre();    return true;}/*! * Control creation for wxFontDialog */void wxFontDialog::CreateControls(){    wxFontDialog* itemDialog1 = this;    wxBoxSizer* itemBoxSizer2 = new wxBoxSizer(wxVERTICAL);    itemDialog1->SetSizer(itemBoxSizer2);    wxBoxSizer* itemBoxSizer3 = new wxBoxSizer(wxVERTICAL);    itemBoxSizer2->Add(itemBoxSizer3, 1, wxGROW|wxALL, 5);    wxFlexGridSizer* itemFlexGridSizer4 = new wxFlexGridSizer(6, 2, 10, 0);    itemFlexGridSizer4->AddGrowableRow(4);    itemFlexGridSizer4->AddGrowableCol(1);    itemBoxSizer3->Add(itemFlexGridSizer4, 1, wxGROW|wxALL, 5);    wxStaticText* itemStaticText5 = new wxStaticText( itemDialog1, wxID_STATIC, _("Font:"), wxDefaultPosition, wxDefaultSize, 0 );    itemFlexGridSizer4->Add(itemStaticText5, 0, wxALIGN_RIGHT|wxALIGN_TOP|wxALL|wxADJUST_MINSIZE, 5);    wxBoxSizer* itemBoxSizer6 = new wxBoxSizer(wxVERTICAL);    itemFlexGridSizer4->Add(itemBoxSizer6, 0, wxGROW|wxGROW, 5);    wxString* m_facenameCtrlStrings = NULL;    m_facenameCtrl = new wxListBox( itemDialog1, wxID_FONTDIALOG_FACENAME, wxDefaultPosition, wxSize(320, 100), 0, m_facenameCtrlStrings, wxLB_SINGLE );    itemBoxSizer6->Add(m_facenameCtrl, 0, wxGROW|wxALL, 5);    wxStaticText* itemStaticText8 = new wxStaticText( itemDialog1, wxID_STATIC, _("Size:"), wxDefaultPosition, wxDefaultSize, 0 );    itemFlexGridSizer4->Add(itemStaticText8, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);    m_sizeCtrl = new wxSpinCtrl( itemDialog1, wxID_FONTDIALOG_FONTSIZE, _T("12"), wxDefaultPosition, wxSize(60, -1), wxSP_ARROW_KEYS, 1, 300, 12 );    m_sizeCtrl->SetHelpText(_("The font size in points."));    if (ShowToolTips())        m_sizeCtrl->SetToolTip(_("The font size in points."));    itemFlexGridSizer4->Add(m_sizeCtrl, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL|wxALL, 5);    wxStaticText* itemStaticText10 = new wxStaticText( itemDialog1, wxID_STATIC, _("Style:"), wxDefaultPosition, wxDefaultSize, 0 );    itemFlexGridSizer4->Add(itemStaticText10, 0, wxALIGN_RIGHT|wxALIGN_CENTER_VERTICAL|wxALL|wxADJUST_MINSIZE, 5);    wxBoxSizer* itemBoxSizer11 = new wxBoxSizer(wxHORIZONTAL);    itemFlexGridSizer4->Add(itemBoxSizer11, 0, wxALIGN_LEFT|wxALIGN_CENTER_VERTICAL, 5);    m_boldCtrl = new wxCheckBox( itemDialog1, wxID_FONTDIALOG_BOLD, _("Bold"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );    m_boldCtrl->SetValue(false);    m_boldCtrl->SetHelpText(_("Check to make the font bold."));    if (ShowToolTips())        m_boldCtrl->SetToolTip(_("Check to make the font bold."));    itemBoxSizer11->Add(m_boldCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);    m_italicCtrl = new wxCheckBox( itemDialog1, wxID_FONTDIALOG_ITALIC, _("Italic"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );    m_italicCtrl->SetValue(false);    m_italicCtrl->SetHelpText(_("Check to make the font italic."));    if (ShowToolTips())        m_italicCtrl->SetToolTip(_("Check to make the font italic."));    itemBoxSizer11->Add(m_italicCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);    if (m_fontData.GetEnableEffects())    {        m_underlinedCtrl = new wxCheckBox( itemDialog1, wxID_FONTDIALOG_UNDERLINED, _("Underlined"), wxDefaultPosition, wxDefaultSize, wxCHK_2STATE );        m_underlinedCtrl->SetValue(false);        m_underlinedCtrl->SetHelpText(_("Check to make the font underlined."));        if (ShowToolTips())            m_underlinedCtrl->SetToolTip(_("Check to make the font underlined."));        itemBoxSizer11->Add(m_underlinedCtrl, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);    }    if (m_fontData.GetEnableEffects())    {        wxStaticText* itemStaticText15 = new wxStaticText( itemDialog1, wxID_STATIC, _("Colour:"), wxDefaultPosition, wxDefaultSize, 0 );        itemFlexGridSizer4->Add(itemStaticText15, 0, wxALIGN_RIGHT|wxALIGN_TOP|wxALL|wxADJUST_MINSIZE, 5);        m_colourCtrl = new wxFontColourSwatchCtrl( itemDialog1, wxID_FONTDIALOG_COLOUR, wxDefaultPosition, wxSize(-1, 30), wxSUNKEN_BORDER|wxTAB_TRAVERSAL );        m_colourCtrl->SetHelpText(_("Click to change the font colour."));        if (ShowToolTips())            m_colourCtrl->SetToolTip(_("Click to change the font colour."));        itemFlexGridSizer4->Add(m_colourCtrl, 0, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5);    }    wxStaticText* itemStaticText17 = new wxStaticText( itemDialog1, wxID_STATIC, _("Preview:"), wxDefaultPosition, wxDefaultSize, 0 );    itemFlexGridSizer4->Add(itemStaticText17, 0, wxALIGN_RIGHT|wxALIGN_TOP|wxALL|wxADJUST_MINSIZE, 5);    m_previewCtrl = new wxFontPreviewCtrl( itemDialog1, wxID_FONTDIALOG_PREVIEW, wxDefaultPosition, wxSize(-1, 70), wxSUNKEN_BORDER|wxTAB_TRAVERSAL );    m_previewCtrl->SetHelpText(_("Shows a preview of the font."));    if (ShowToolTips())        m_previewCtrl->SetToolTip(_("Shows a preview of the font."));    itemFlexGridSizer4->Add(m_previewCtrl, 1, wxGROW|wxALIGN_CENTER_VERTICAL|wxALL, 5);    wxBoxSizer* itemBoxSizer19 = new wxBoxSizer(wxHORIZONTAL);    itemBoxSizer3->Add(itemBoxSizer19, 0, wxALIGN_RIGHT|wxALL, 5);    wxButton* itemButton20 = new wxButton( itemDialog1, wxID_CANCEL, _("&Cancel"), wxDefaultPosition, wxDefaultSize, 0 );    itemButton20->SetHelpText(_("Click to cancel changes to the font."));    if (ShowToolTips())        itemButton20->SetToolTip(_("Click to cancel changes to the font."));    itemBoxSizer19->Add(itemButton20, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);    wxButton* itemButton21 = new wxButton( itemDialog1, wxID_OK, _("&OK"), wxDefaultPosition, wxDefaultSize, 0 );    itemButton21->SetDefault();    itemButton21->SetHelpText(_("Click to confirm changes to the font."));    if (ShowToolTips())        itemButton21->SetToolTip(_("Click to confirm changes to the font."));    itemBoxSizer19->Add(itemButton21, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);    wxFontEnumerator enumerator;    enumerator.EnumerateFacenames();    wxArrayString facenames = enumerator.GetFacenames();    if (facenames)    {        facenames.Add(_("<Any>"));        facenames.Add(_("<Any Roman>"));        facenames.Add(_("<Any Decorative>"));        facenames.Add(_("<Any Modern>"));        facenames.Add(_("<Any Script>"));        facenames.Add(_("<Any Swiss>"));        facenames.Add(_("<Any Teletype>"));        facenames.Sort();        m_facenameCtrl->Append(facenames);    }    InitializeControls();    m_previewCtrl->SetFont(m_dialogFont);    if (m_fontData.GetColour().Ok())    {        m_previewCtrl->SetForegroundColour(m_fontData.GetColour());    }    m_previewCtrl->Refresh();}/*! * wxEVT_COMMAND_SPINCTRL_UPDATED event handler for wxID_FONTDIALOG_FONTSIZE */void wxFontDialog::OnFontdialogFontsizeUpdated( wxSpinEvent& WXUNUSED(event) ){    ChangeFont();}/*! * wxEVT_COMMAND_TEXT_UPDATED event handler for wxID_FONTDIALOG_FONTSIZE */void wxFontDialog::OnFontdialogFontsizeTextUpdated( wxCommandEvent& WXUNUSED(event) ){    ChangeFont();}/*! * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for wxID_FONTDIALOG_BOLD */void wxFontDialog::OnFontdialogBoldClick( wxCommandEvent& WXUNUSED(event) ){    ChangeFont();}/*! * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for wxID_FONTDIALOG_ITALIC */void wxFontDialog::OnFontdialogItalicClick( wxCommandEvent& WXUNUSED(event) ){    ChangeFont();}/*! * wxEVT_COMMAND_CHECKBOX_CLICKED event handler for wxID_FONTDIALOG_UNDERLINED */void wxFontDialog::OnFontdialogUnderlinedClick( wxCommandEvent& WXUNUSED(event) ){    ChangeFont();}/*! * wxEVT_COMMAND_BUTTON_CLICKED event handler for wxID_OK */void wxFontDialog::OnOkClick( wxCommandEvent& event ){    event.Skip();}/*! * wxEVT_COMMAND_LISTBOX_SELECTED event handler for wxID_FONTDIALOG_FACENAME */void wxFontDialog::OnFontdialogFacenameSelected( wxCommandEvent& WXUNUSED(event) ){    ChangeFont();}void wxFontDialog::OnColourChanged(wxCommandEvent & WXUNUSED(event)){    m_fontData.SetColour(m_colourCtrl->GetColour());    m_previewCtrl->SetForegroundColour(m_colourCtrl->GetColour());    m_previewCtrl->Refresh();}/*! * Should we show tooltips? */bool wxFontDialog::ShowToolTips(){    return true;}void wxFontDialog::InitializeFont(){    int fontFamily = wxSWISS;    int fontWeight = wxNORMAL;    int fontStyle = wxNORMAL;    int fontSize = 12;    bool fontUnderline = false;    wxString fontName;    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();        fontName = m_fontData.m_initialFont.GetFaceName();    }    m_dialogFont = wxFont(fontSize, fontFamily, fontStyle,                          fontWeight, fontUnderline, fontName);    if (m_previewCtrl)        m_previewCtrl->SetFont(m_dialogFont);    m_fontData.SetChosenFont(m_dialogFont);}/// Set controls according to current fontvoid wxFontDialog::InitializeControls(){    m_suppressUpdates = true;    if (m_underlinedCtrl)        m_underlinedCtrl->SetValue(m_dialogFont.GetUnderlined());    m_boldCtrl->SetValue(m_dialogFont.GetWeight() == wxBOLD);    m_italicCtrl->SetValue(m_dialogFont.GetStyle() == wxITALIC);    m_sizeCtrl->SetValue(m_dialogFont.GetPointSize());    wxString facename = m_dialogFont.GetFaceName();    if (facename.empty() || m_facenameCtrl->FindString(facename) == wxNOT_FOUND)    {        facename = FontFamilyIntToString(m_dialogFont.GetFamily());    }    m_facenameCtrl->SetStringSelection(facename);    if (m_colourCtrl && m_fontData.GetColour().Ok())    {        m_colourCtrl->SetColour(m_fontData.GetColour());        m_colourCtrl->Refresh();    }    m_suppressUpdates = false;}/// Respond to font changevoid wxFontDialog::ChangeFont(){    if (m_suppressUpdates)        return;    bool underlined = m_underlinedCtrl ? m_underlinedCtrl->GetValue() : false;    bool italic = m_italicCtrl->GetValue();    bool bold = m_boldCtrl->GetValue();    int size = m_sizeCtrl->GetValue();    wxString facename = m_facenameCtrl->GetStringSelection();    int family = FontFamilyStringToInt(facename);    if (family == -1)        family = wxDEFAULT;    else        facename = wxEmptyString;    m_dialogFont = wxFont(size, family, italic ? wxITALIC : wxNORMAL, bold ? wxBOLD : wxNORMAL,        underlined, facename);    m_fontData.SetChosenFont(m_dialogFont);    m_previewCtrl->SetFont(m_dialogFont);    m_previewCtrl->Refresh();}void wxFontDialog::SetData(const wxFontData& fontdata){    m_fontData = fontdata;}bool wxFontDialog::IsShown() const{    return false;}int wxFontDialog::ShowModal(){    return wxDialog::ShowModal();}void wxFontDialog::OnPanelClose(){}const wxChar *FontFamilyIntToString(int family){    switch (family)    {        case wxROMAN:            return _("<Any Roman>");        case wxDECORATIVE:            return _("<Any Decorative>");        case wxMODERN:            return _("<Any Modern>");        case wxSCRIPT:            return _("<Any Script>");        case wxTELETYPE:            return _("<Any Teletype>");        case wxSWISS:        default:            return _("<Any Swiss>");    }}int FontFamilyStringToInt(const wxChar *family){    if (!family)        return wxSWISS;    if (wxStrcmp(family, _("<Any Roman>")) == 0)        return wxROMAN;    else if (wxStrcmp(family, _("<Any Decorative>")) == 0)        return wxDECORATIVE;    else if (wxStrcmp(family, _("<Any Modern>")) == 0)        return wxMODERN;    else if (wxStrcmp(family, _("<Any Script>")) == 0)        return wxSCRIPT;    else if (wxStrcmp(family, _("<Any Teletype>")) == 0)        return wxTELETYPE;    else if (wxStrcmp(family, _("<Any Swiss>")) == 0)        return wxSWISS;    else return -1;}#endif // !USE_NATIVE_FONT_DIALOG_FOR_MACOSX#endif // wxMAC_USE_EXPERIMENTAL_FONTDIALOG#endif // wxUSE_FONTDLG

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -