added "set encoding" menu item
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@40739 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
@@ -35,10 +35,13 @@
|
|||||||
#include "../sample.xpm"
|
#include "../sample.xpm"
|
||||||
|
|
||||||
#ifdef __WXMAC__
|
#ifdef __WXMAC__
|
||||||
#undef wxFontDialog
|
#undef wxFontDialog
|
||||||
#include "wx/mac/fontdlg.h"
|
#include "wx/mac/fontdlg.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// used as title for several dialog boxes
|
||||||
|
static const wxChar SAMPLE_TITLE[] = "wxWidgets Font Sample";
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
// private classes
|
// private classes
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
@@ -111,9 +114,10 @@ public:
|
|||||||
{ DoEnumerateFamilies(true); }
|
{ DoEnumerateFamilies(true); }
|
||||||
void OnEnumerateEncodings(wxCommandEvent& event);
|
void OnEnumerateEncodings(wxCommandEvent& event);
|
||||||
|
|
||||||
void OnCheckNativeToFromString(wxCommandEvent& event);
|
void OnSetNativeDesc(wxCommandEvent& event);
|
||||||
void OnCheckNativeToFromUserString(wxCommandEvent& event);
|
void OnSetNativeUserDesc(wxCommandEvent& event);
|
||||||
void OnCheckFaceName(wxCommandEvent& event);
|
void OnSetFaceName(wxCommandEvent& event);
|
||||||
|
void OnSetEncoding(wxCommandEvent& event);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool DoEnumerateFamilies(bool fixedWidthOnly,
|
bool DoEnumerateFamilies(bool fixedWidthOnly,
|
||||||
@@ -123,6 +127,11 @@ protected:
|
|||||||
void DoResizeFont(int diff);
|
void DoResizeFont(int diff);
|
||||||
void DoChangeFont(const wxFont& font, const wxColour& col = wxNullColour);
|
void DoChangeFont(const wxFont& font, const wxColour& col = wxNullColour);
|
||||||
|
|
||||||
|
// ask the user to choose an encoding and return it or
|
||||||
|
// wxFONTENCODING_SYSTEM if the dialog was cancelled
|
||||||
|
wxFontEncoding GetEncodingFromUser();
|
||||||
|
|
||||||
|
|
||||||
size_t m_fontSize; // in points
|
size_t m_fontSize; // in points
|
||||||
|
|
||||||
wxTextCtrl *m_textctrl;
|
wxTextCtrl *m_textctrl;
|
||||||
@@ -160,9 +169,10 @@ enum
|
|||||||
Font_EnumFamilies,
|
Font_EnumFamilies,
|
||||||
Font_EnumFixedFamilies,
|
Font_EnumFixedFamilies,
|
||||||
Font_EnumEncodings,
|
Font_EnumEncodings,
|
||||||
Font_CheckNativeToFromString,
|
Font_SetNativeDesc,
|
||||||
Font_CheckNativeToFromUserString,
|
Font_SetNativeUserDesc,
|
||||||
Font_CheckFaceName,
|
Font_SetFaceName,
|
||||||
|
Font_SetEncoding,
|
||||||
Font_Max
|
Font_Max
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -190,9 +200,10 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame)
|
|||||||
EVT_MENU(Font_wxSWISS_FONT, MyFrame::OnwxPointerFont)
|
EVT_MENU(Font_wxSWISS_FONT, MyFrame::OnwxPointerFont)
|
||||||
|
|
||||||
|
|
||||||
EVT_MENU(Font_CheckNativeToFromString, MyFrame::OnCheckNativeToFromString)
|
EVT_MENU(Font_SetNativeDesc, MyFrame::OnSetNativeDesc)
|
||||||
EVT_MENU(Font_CheckNativeToFromUserString, MyFrame::OnCheckNativeToFromUserString)
|
EVT_MENU(Font_SetNativeUserDesc, MyFrame::OnSetNativeUserDesc)
|
||||||
EVT_MENU(Font_CheckFaceName, MyFrame::OnCheckFaceName)
|
EVT_MENU(Font_SetFaceName, MyFrame::OnSetFaceName)
|
||||||
|
EVT_MENU(Font_SetEncoding, MyFrame::OnSetEncoding)
|
||||||
|
|
||||||
EVT_MENU(Font_Choose, MyFrame::OnSelectFont)
|
EVT_MENU(Font_Choose, MyFrame::OnSelectFont)
|
||||||
EVT_MENU(Font_EnumFamiliesForEncoding, MyFrame::OnEnumerateFamiliesForEncoding)
|
EVT_MENU(Font_EnumFamiliesForEncoding, MyFrame::OnEnumerateFamiliesForEncoding)
|
||||||
@@ -265,12 +276,12 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size)
|
|||||||
wxT("Toggle underlined state"));
|
wxT("Toggle underlined state"));
|
||||||
|
|
||||||
menuFont->AppendSeparator();
|
menuFont->AppendSeparator();
|
||||||
menuFont->Append(Font_CheckNativeToFromString,
|
menuFont->Append(Font_SetNativeDesc,
|
||||||
wxT("Set native font &description\tShift-Ctrl-D"));
|
wxT("Set native font &description\tShift-Ctrl-D"));
|
||||||
menuFont->Append(Font_CheckNativeToFromUserString,
|
menuFont->Append(Font_SetNativeUserDesc,
|
||||||
wxT("Set &user font description\tShift-Ctrl-U"));
|
wxT("Set &user font description\tShift-Ctrl-U"));
|
||||||
menuFont->Append(Font_CheckFaceName,
|
menuFont->Append(Font_SetFaceName, wxT("Check font face name"));
|
||||||
wxT("Check font face name"));
|
menuFont->Append(Font_SetEncoding, wxT("Set font &encoding\tShift-Ctrl-E"));
|
||||||
|
|
||||||
wxMenu *menuSelect = new wxMenu;
|
wxMenu *menuSelect = new wxMenu;
|
||||||
menuSelect->Append(Font_Choose, wxT("&Select font...\tCtrl-S"),
|
menuSelect->Append(Font_Choose, wxT("&Select font...\tCtrl-S"),
|
||||||
@@ -411,8 +422,14 @@ bool MyFrame::DoEnumerateFamilies(bool fixedWidthOnly,
|
|||||||
for ( n = 0; n < nFacenames; n++ )
|
for ( n = 0; n < nFacenames; n++ )
|
||||||
facenames[n] = fontEnumerator.GetFacenames().Item(n);
|
facenames[n] = fontEnumerator.GetFacenames().Item(n);
|
||||||
|
|
||||||
n = wxGetSingleChoiceIndex(wxT("Choose a facename"), wxT("Font demo"),
|
n = wxGetSingleChoiceIndex
|
||||||
nFacenames, facenames, this);
|
(
|
||||||
|
wxT("Choose a facename"),
|
||||||
|
SAMPLE_TITLE,
|
||||||
|
nFacenames,
|
||||||
|
facenames,
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
if ( n != -1 )
|
if ( n != -1 )
|
||||||
facename = facenames[n];
|
facename = facenames[n];
|
||||||
@@ -440,46 +457,14 @@ bool MyFrame::DoEnumerateFamilies(bool fixedWidthOnly,
|
|||||||
|
|
||||||
void MyFrame::OnEnumerateFamiliesForEncoding(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnEnumerateFamiliesForEncoding(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
static wxFontEncoding encodings[] =
|
wxFontEncoding enc = GetEncodingFromUser();
|
||||||
|
if ( enc != wxFONTENCODING_SYSTEM )
|
||||||
{
|
{
|
||||||
wxFONTENCODING_ISO8859_1,
|
DoEnumerateFamilies(false, enc);
|
||||||
wxFONTENCODING_ISO8859_2,
|
|
||||||
wxFONTENCODING_ISO8859_5,
|
|
||||||
wxFONTENCODING_ISO8859_7,
|
|
||||||
wxFONTENCODING_ISO8859_15,
|
|
||||||
wxFONTENCODING_KOI8,
|
|
||||||
wxFONTENCODING_KOI8_U,
|
|
||||||
wxFONTENCODING_CP1250,
|
|
||||||
wxFONTENCODING_CP1251,
|
|
||||||
wxFONTENCODING_CP1252,
|
|
||||||
};
|
|
||||||
|
|
||||||
static const wxString encodingNames[] =
|
|
||||||
{
|
|
||||||
wxT("Western European (ISO-8859-1)"),
|
|
||||||
wxT("Central European (ISO-8859-2)"),
|
|
||||||
wxT("Cyrillic (ISO-8859-5)"),
|
|
||||||
wxT("Greek (ISO-8859-7)"),
|
|
||||||
wxT("Western European with Euro (ISO-8859-15)"),
|
|
||||||
wxT("KOI8-R"),
|
|
||||||
wxT("KOI8-U"),
|
|
||||||
wxT("Windows Central European (CP 1250)"),
|
|
||||||
wxT("Windows Cyrillic (CP 1251)"),
|
|
||||||
wxT("Windows Western European (CP 1252)"),
|
|
||||||
};
|
|
||||||
|
|
||||||
int n = wxGetSingleChoiceIndex(wxT("Choose an encoding"), wxT("Font demo"),
|
|
||||||
WXSIZEOF(encodingNames),
|
|
||||||
encodingNames,
|
|
||||||
this);
|
|
||||||
|
|
||||||
if ( n != -1 )
|
|
||||||
{
|
|
||||||
DoEnumerateFamilies(false, encodings[n]);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyFrame::OnCheckNativeToFromString(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnSetNativeDesc(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
wxString fontInfo = wxGetTextFromUser
|
wxString fontInfo = wxGetTextFromUser
|
||||||
(
|
(
|
||||||
@@ -503,7 +488,7 @@ void MyFrame::OnCheckNativeToFromString(wxCommandEvent& WXUNUSED(event))
|
|||||||
DoChangeFont(font);
|
DoChangeFont(font);
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyFrame::OnCheckFaceName(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnSetFaceName(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
wxString facename = GetCanvas()->GetTextFont().GetFaceName();
|
wxString facename = GetCanvas()->GetTextFont().GetFaceName();
|
||||||
wxString newFaceName = wxGetTextFromUser(
|
wxString newFaceName = wxGetTextFromUser(
|
||||||
@@ -527,7 +512,7 @@ void MyFrame::OnCheckFaceName(wxCommandEvent& WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyFrame::OnCheckNativeToFromUserString(wxCommandEvent& WXUNUSED(event))
|
void MyFrame::OnSetNativeUserDesc(wxCommandEvent& WXUNUSED(event))
|
||||||
{
|
{
|
||||||
wxString fontdesc = GetCanvas()->GetTextFont().GetNativeFontInfoUserDesc();
|
wxString fontdesc = GetCanvas()->GetTextFont().GetNativeFontInfoUserDesc();
|
||||||
wxString fontUserInfo = wxGetTextFromUser(
|
wxString fontUserInfo = wxGetTextFromUser(
|
||||||
@@ -550,6 +535,44 @@ void MyFrame::OnCheckNativeToFromUserString(wxCommandEvent& WXUNUSED(event))
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void MyFrame::OnSetEncoding(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxFontEncoding enc = GetEncodingFromUser();
|
||||||
|
if ( enc == wxFONTENCODING_SYSTEM )
|
||||||
|
return;
|
||||||
|
|
||||||
|
wxFont font = m_canvas->GetTextFont();
|
||||||
|
font.SetEncoding(enc);
|
||||||
|
DoChangeFont(font);
|
||||||
|
}
|
||||||
|
|
||||||
|
wxFontEncoding MyFrame::GetEncodingFromUser()
|
||||||
|
{
|
||||||
|
wxArrayString names;
|
||||||
|
wxArrayInt encodings;
|
||||||
|
|
||||||
|
const size_t count = wxFontMapper::GetSupportedEncodingsCount();
|
||||||
|
names.reserve(count);
|
||||||
|
encodings.reserve(count);
|
||||||
|
|
||||||
|
for ( size_t n = 0; n < count; n++ )
|
||||||
|
{
|
||||||
|
wxFontEncoding enc = wxFontMapper::GetEncoding(n);
|
||||||
|
encodings.push_back(enc);
|
||||||
|
names.push_back(wxFontMapper::GetEncodingName(enc));
|
||||||
|
}
|
||||||
|
|
||||||
|
int i = wxGetSingleChoiceIndex
|
||||||
|
(
|
||||||
|
wxT("Choose the encoding"),
|
||||||
|
SAMPLE_TITLE,
|
||||||
|
names,
|
||||||
|
this
|
||||||
|
);
|
||||||
|
|
||||||
|
return i == -1 ? wxFONTENCODING_SYSTEM : (wxFontEncoding)encodings[i];
|
||||||
|
}
|
||||||
|
|
||||||
void MyFrame::DoResizeFont(int diff)
|
void MyFrame::DoResizeFont(int diff)
|
||||||
{
|
{
|
||||||
wxFont font = m_canvas->GetTextFont();
|
wxFont font = m_canvas->GetTextFont();
|
||||||
@@ -586,13 +609,27 @@ void MyFrame::OnwxPointerFont(wxCommandEvent& event)
|
|||||||
{
|
{
|
||||||
wxFont font;
|
wxFont font;
|
||||||
|
|
||||||
switch (event.GetId())
|
switch ( event.GetId() )
|
||||||
{
|
{
|
||||||
case Font_wxNORMAL_FONT : font = wxFont(*wxNORMAL_FONT); break;
|
case Font_wxNORMAL_FONT:
|
||||||
case Font_wxSMALL_FONT : font = wxFont(*wxSMALL_FONT); break;
|
font = *wxNORMAL_FONT;
|
||||||
case Font_wxITALIC_FONT : font = wxFont(*wxITALIC_FONT); break;
|
break;
|
||||||
case Font_wxSWISS_FONT : font = wxFont(*wxSWISS_FONT); break;
|
|
||||||
default : font = wxFont(*wxNORMAL_FONT); break;
|
case Font_wxSMALL_FONT:
|
||||||
|
font = *wxSMALL_FONT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Font_wxITALIC_FONT:
|
||||||
|
font = *wxITALIC_FONT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
case Font_wxSWISS_FONT:
|
||||||
|
font = *wxSWISS_FONT;
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
wxFAIL_MSG( wxT("unknown standard font") );
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DoChangeFont(font);
|
DoChangeFont(font);
|
||||||
|
Reference in New Issue
Block a user