X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/7826e2dd838d59c6a8061b4fdd9f7326a6e06de3..0627d0917bc2e34724055f72e6c36787a7de642f:/samples/font/font.cpp diff --git a/samples/font/font.cpp b/samples/font/font.cpp index c436ed747d..7bfb91979e 100644 --- a/samples/font/font.cpp +++ b/samples/font/font.cpp @@ -10,7 +10,7 @@ ///////////////////////////////////////////////////////////////////////////// // For compilers that support precompilation, includes "wx/wx.h". -#include +#include "wx/wxprec.h" #ifdef __BORLANDC__ #pragma hdrstop @@ -19,17 +19,18 @@ // for all others, include the necessary headers (this file is usually all you // need because it includes almost all + #include "wx/wx.h" - #include + #include "wx/log.h" #endif -#include -#include -#include -#include -#include -#include +#include "wx/choicdlg.h" +#include "wx/fontdlg.h" +#include "wx/fontenum.h" +#include "wx/fontmap.h" +#include "wx/encconv.h" +#include "wx/splitter.h" +#include "wx/textfile.h" // ---------------------------------------------------------------------------- // private classes @@ -98,8 +99,6 @@ public: void OnCheckNativeToFromString(wxCommandEvent& event); - void OnSize(wxSizeEvent& event); - protected: bool DoEnumerateFamilies(bool fixedWidthOnly, wxFontEncoding encoding = wxFONTENCODING_SYSTEM, @@ -108,8 +107,6 @@ protected: void DoResizeFont(int diff); void DoChangeFont(const wxFont& font, const wxColour& col = wxNullColour); - void Resize(const wxSize& size, const wxFont& font = wxNullFont); - size_t m_fontSize; // in points wxTextCtrl *m_textctrl; @@ -161,8 +158,6 @@ BEGIN_EVENT_TABLE(MyFrame, wxFrame) EVT_MENU(Font_EnumFixedFamilies, MyFrame::OnEnumerateFixedFamilies) EVT_MENU(Font_EnumEncodings, MyFrame::OnEnumerateEncodings) EVT_MENU(Font_CheckNativeToFromString, MyFrame::OnCheckNativeToFromString) - - EVT_SIZE(MyFrame::OnSize) END_EVENT_TABLE() // Create a new application object: this macro will allow wxWindows to create @@ -244,13 +239,17 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) // ... and attach this menu bar to the frame SetMenuBar(menuBar); - m_textctrl = new wxTextCtrl(this, -1, + wxSplitterWindow *splitter = new wxSplitterWindow(this); + + m_textctrl = new wxTextCtrl(splitter, -1, "Paste text here to see how it looks\n" "like in the given font", wxDefaultPosition, wxDefaultSize, wxTE_MULTILINE); - m_canvas = new MyCanvas(this); + m_canvas = new MyCanvas(splitter); + + splitter->SplitHorizontally(m_textctrl, m_canvas, 100); // create a status bar just for fun (by default with 1 pane only) CreateStatusBar(); @@ -262,10 +261,10 @@ MyFrame::MyFrame(const wxString& title, const wxPoint& pos, const wxSize& size) class MyEncodingEnumerator : public wxFontEnumerator { public: - MyEncodingEnumerator() + MyEncodingEnumerator() { m_n = 0; } - const wxString& GetText() const + const wxString& GetText() const { return m_text; } protected: @@ -273,7 +272,7 @@ protected: const wxString& encoding) { wxString text; - text.Printf("Encoding %d: %s (available in facename '%s')\n", + text.Printf(wxT("Encoding %d: %s (available in facename '%s')\n"), ++m_n, encoding.c_str(), facename.c_str()); m_text += text; return TRUE; @@ -290,7 +289,7 @@ void MyFrame::OnEnumerateEncodings(wxCommandEvent& WXUNUSED(event)) fontEnumerator.EnumerateEncodings(); - wxLogMessage("Enumerating all available encodings:\n%s", + wxLogMessage(wxT("Enumerating all available encodings:\n%s"), fontEnumerator.GetText().c_str()); } @@ -299,10 +298,10 @@ void MyFrame::OnEnumerateEncodings(wxCommandEvent& WXUNUSED(event)) class MyFontEnumerator : public wxFontEnumerator { public: - bool GotAny() const + bool GotAny() const { return !m_facenames.IsEmpty(); } - const wxArrayString& GetFacenames() const + const wxArrayString& GetFacenames() const { return m_facenames; } protected: @@ -329,8 +328,8 @@ bool MyFrame::DoEnumerateFamilies(bool fixedWidthOnly, int nFacenames = fontEnumerator.GetFacenames().GetCount(); if ( !silent ) { - wxLogStatus(this, "Found %d %sfonts", - nFacenames, fixedWidthOnly ? "fixed width " : ""); + wxLogStatus(this, wxT("Found %d %sfonts"), + nFacenames, fixedWidthOnly ? wxT("fixed width ") : wxT("")); } wxString facename; @@ -368,7 +367,7 @@ bool MyFrame::DoEnumerateFamilies(bool fixedWidthOnly, } else if ( !silent ) { - wxLogWarning("No such fonts found."); + wxLogWarning(wxT("No such fonts found.")); } return FALSE; @@ -391,15 +390,15 @@ void MyFrame::OnEnumerateFamiliesForEncoding(wxCommandEvent& WXUNUSED(event)) static const wxString encodingNames[] = { - "West European (Latin 1)", - "Central European (Latin 2)", - "Cyrillic (Latin 5)", - "Greek (Latin 7)", - "West European new (Latin 0)", + "Western European (ISO-8859-1)", + "Central European (ISO-8859-2)", + "Cyrillic (ISO-8859-5)", + "Greek (ISO-8859-7)", + "Western European with Euro (ISO-8859-15)", "KOI8-R", - "Windows Latin 2", - "Windows Cyrillic", - "Windows Latin 1", + "Windows Central European (CP 1250)", + "Windows Cyrillic (CP 1251)", + "Windows Western European (CP 1252)", }; int n = wxGetSingleChoiceIndex("Choose an encoding", "Font demo", @@ -419,15 +418,15 @@ void MyFrame::OnCheckNativeToFromString(wxCommandEvent& WXUNUSED(event)) if ( fontInfo.IsEmpty() ) { - wxLogError("Native font info string is empty!"); + wxLogError(wxT("Native font info string is empty!")); } else { wxFont *font = wxFont::New(fontInfo); if ( fontInfo != font->GetNativeFontInfoDesc() ) - wxLogError("wxNativeFontInfo ToString()/FromString() broken!"); + wxLogError(wxT("wxNativeFontInfo ToString()/FromString() broken!")); else - wxLogError("wxNativeFontInfo works: %s", fontInfo.c_str()); + wxLogError(wxT("wxNativeFontInfo works: %s"), fontInfo.c_str()); delete font; } } @@ -451,8 +450,6 @@ void MyFrame::DoResizeFont(int diff) void MyFrame::DoChangeFont(const wxFont& font, const wxColour& col) { - Resize(GetSize(), font); - m_canvas->SetTextFont(font); if ( col.Ok() ) m_canvas->SetColour(col); @@ -526,7 +523,7 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) if ( line.Left(len) == prefix ) { // found! - const char *pc = line.c_str() + len; + const wxChar *pc = line.c_str() + len; if ( *pc == '"' ) pc++; @@ -541,7 +538,7 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) if ( !charset ) { - wxLogError("The file '%s' doesn't contain charset information.", + wxLogError(wxT("The file '%s' doesn't contain charset information."), filename.c_str()); return; @@ -551,20 +548,21 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) wxFontEncoding fontenc = wxTheFontMapper->CharsetToEncoding(charset); if ( fontenc == wxFONTENCODING_SYSTEM ) { - wxLogError("Charset '%s' is unsupported.", charset.c_str()); + wxLogError(wxT("Charset '%s' is unsupported."), charset.c_str()); return; } m_textctrl->LoadFile(filename); - if (!wxTheFontMapper->IsEncodingAvailable(fontenc)) + if ( fontenc == wxFONTENCODING_UTF8 || + !wxTheFontMapper->IsEncodingAvailable(fontenc) ) { // try to find some similar encoding: wxFontEncoding encAlt; if ( wxTheFontMapper->GetAltForEncoding(fontenc, &encAlt) ) { wxEncodingConverter conv; - + if (conv.Init(fontenc, encAlt)) { fontenc = encAlt; @@ -572,13 +570,13 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) } else { - wxLogWarning("Cannot convert from '%s' to '%s'.", + wxLogWarning(wxT("Cannot convert from '%s' to '%s'."), wxFontMapper::GetEncodingDescription(fontenc).c_str(), wxFontMapper::GetEncodingDescription(encAlt).c_str()); } } else - wxLogWarning("No fonts for encoding '%s' on this system.", + wxLogWarning(wxT("No fonts for encoding '%s' on this system."), wxFontMapper::GetEncodingDescription(fontenc).c_str()); } @@ -594,7 +592,7 @@ void MyFrame::OnViewMsg(wxCommandEvent& WXUNUSED(event)) } else { - wxLogWarning("No fonts for encoding '%s' on this system.", + wxLogWarning(wxT("No fonts for encoding '%s' on this system."), wxFontMapper::GetEncodingDescription(fontenc).c_str()); } } @@ -608,37 +606,6 @@ void MyFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxOK | wxICON_INFORMATION, this); } -void MyFrame::OnSize(wxSizeEvent& event) -{ - wxSize size = event.GetSize(); - - Resize(size); - - event.Skip(); -} - -void MyFrame::Resize(const wxSize& size, const wxFont& font) -{ - if ( !m_textctrl ) - return; - - wxCoord h; - if ( font.Ok() ) - { - wxClientDC dc(this); - dc.SetFont(font); - - h = 10*(dc.GetCharHeight() + 1); - } - else - { - h = m_textctrl->GetSize().y; - } - - m_textctrl->SetSize(0, 0, size.x, h); - m_canvas->SetSize(0, h, size.x, size.y - h); -} - // ---------------------------------------------------------------------------- // MyCanvas // ---------------------------------------------------------------------------- @@ -663,14 +630,16 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) PrepareDC(dc); // set background - dc.SetBackground(wxBrush("white", wxSOLID)); + dc.SetBackground(wxBrush(wxT("white"), wxSOLID)); dc.Clear(); // output the font name/info wxString fontInfo; - fontInfo.Printf("Font size is %d points, family is %s, style %s, weight %s", + fontInfo.Printf(wxT("Font size is %d points, family is %s, encoding is '%s', style %s, weight %s"), m_font.GetPointSize(), m_font.GetFamilyString().c_str(), + wxTheFontMapper-> + GetEncodingDescription(m_font.GetEncoding()).c_str(), m_font.GetStyleString().c_str(), m_font.GetWeightString().c_str()); @@ -679,8 +648,8 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) if ( m_font.Ok() ) { wxString fontDesc = m_font.GetNativeFontInfoDesc(); - dc.SetFont(wxFont(fontDesc)); - fontInfo.Printf("Native font info: %s", fontDesc.c_str()); + dc.SetFont(m_font); + fontInfo.Printf(wxT("Native font info: %s"), fontDesc.c_str()); dc.DrawText(fontInfo, 5, 5 + dc.GetCharHeight()); } @@ -701,7 +670,7 @@ void MyCanvas::OnPaint( wxPaintEvent &WXUNUSED(event) ) { for ( int j = 0; j < 32; j++ ) { - dc.DrawText(char(32*i + j), x + w*j, y + h*i); + dc.DrawText(wxChar(32*i + j), x + w*j, y + h*i); } }