From: Robin Dunn <robin@alldunn.com> Date: Fri, 15 Mar 2002 00:27:45 +0000 (+0000) Subject: A Unicode sample for wxPython X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/03d84e7af8ba1e631d7cefd91dcd6e8c8b19daf1 A Unicode sample for wxPython git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/wxPython/demo/Main.py b/wxPython/demo/Main.py index 14f9a919bb..10912629be 100644 --- a/wxPython/demo/Main.py +++ b/wxPython/demo/Main.py @@ -24,6 +24,7 @@ _treeList = [ ('New since last release', ['wxGenericDirCtrl', 'wxImageFromStream', 'RowColSizer', + 'Unicode', ]), ('Windows', ['wxFrame', 'wxDialog', 'wxMiniFrame', @@ -63,7 +64,7 @@ _treeList = [ 'ActiveXWrapper_Acrobat', 'ActiveXWrapper_IE', 'wxDragImage', "wxProcess", "FancyText", "OOR", "wxWave", 'wxJoystick', 'DrawXXXList', 'ErrorDialogs', 'wxMimeTypesManager', - 'ContextHelp', 'SplitTree', + 'ContextHelp', 'SplitTree', 'Unicode', ]), ('wxPython Library', ['Layoutf', 'wxScrolledMessageDialog', diff --git a/wxPython/demo/Unicode.py b/wxPython/demo/Unicode.py new file mode 100644 index 0000000000..0ddb0e8b8b --- /dev/null +++ b/wxPython/demo/Unicode.py @@ -0,0 +1,117 @@ + + +from wxPython.wx import * + +#---------------------------------------------------------------------- + +# Some unicode strings +chi_uni = (u'Python ?\u8200?\u619f\u8cdc?\u877a\u51fd?\u96a4\ued67?\u5697', + '(Python is best programming language)') + +lt1_uni = (u'Pythonas yra \u017eaviausia \u0161neka', + '(Python is the best)') +lt2_uni = (u'A\u0161 m\u0117gstu \u0161okolad\u0105', + '(I like chocolate)') + + +# Equivalents in UTF-8. Should I demo these somehow??? +chi_utf8 = ('Python ?\xe8\x88\x80?\xe6\x86\x9f\xe8\xb3\x9c?\xe8\x9d\xba\xe5\x87\xbd?\xe9\x9a\xa4\xee\xb5\xa7?\xe5\x9a\x97', + '(Python is best programming language)') + +lt1_utf8 = ('Pythonas yra \xc5\xbeaviausia \xc5\xa1neka', + '(Python is the best)') +lt2_utf8 = ('A\xc5\xa1 m\xc4\x97gstu \xc5\xa1okolad\xc4\x85', + '(I like chocolate)') + +#---------------------------------------------------------------------- + +class TestPanel(wxPanel): + def __init__(self, parent, log): + self.log = log + wxPanel.__init__(self, parent, -1) + + box = wxBoxSizer(wxVERTICAL) + + if not wxUSE_UNICODE: + self.AddLine(box) + self.AddText(box, "Sorry, this wxPython was not built with Unicode support.", + font = wxFont(12, wxSWISS, wxNORMAL, wxBOLD)) + self.AddLine(box) + + else: + f = self.GetFont() + font = wxFont(14, f.GetFamily(), f.GetStyle(), wxBOLD, false, + f.GetFaceName(), f.GetEncoding()) + + self.AddLine(box) + self.AddText(box, chi_uni[0], chi_uni[1], 'Chinese:', font) + self.AddLine(box) + + self.AddText(box, lt1_uni[0], lt1_uni[1], 'Lithuanian:', font) + self.AddLine(box) + self.AddText(box, lt2_uni[0], lt2_uni[1], 'Lithuanian:', font) + self.AddLine(box) + + + border = wxBoxSizer(wxVERTICAL) + border.Add(box, 1, wxEXPAND|wxALL, 10) + self.SetAutoLayout(true) + self.SetSizer(border) + + + def AddLine(self, sizer): + sizer.Add(wxStaticLine(self, -1), 0, wxEXPAND) + + def AddText(self, sizer, text1, text2='', lang='', font=None): + # create some controls + lang = wxStaticText(self, -1, lang) + text1 = wxStaticText(self, -1, text1)#, style=wxALIGN_CENTRE) + text2 = wxStaticText(self, -1, text2) + if font is not None: + text1.SetFont(font) + + # put them in a sizer + row = wxBoxSizer(wxHORIZONTAL) + row.Add(lang) + row.Add(25,10) + row.Add(text1, 1, wxEXPAND) + row.Add(text2) + + # put the row in the main sizer + sizer.Add(row, 0, wxEXPAND|wxALL, 5) + + +#---------------------------------------------------------------------- + +def runTest(frame, nb, log): + win = TestPanel(nb, log) + return win + +#---------------------------------------------------------------------- + + + +overview = """<html><body> +<h2><center>wxPython Unicode Support</center></h2> + +wxWindows and wxPython can be compiled with unicode support enabled or +disabled. Previous to wxPython 2.3.3 non-unicode mode was always +used. Starting with 2.3.3 either mode is supported, but only if it is +also available in wxWindow on the platform. Currently wxWindows only +supports unicode on MS Windows platforms, but with the recent release +of GTK+ 2.0 it is only a matter of time until it can be done on wxGTK +(Linux and other unixes) as well. +<p> +When unicode is enabled, then all functions and methods in wxPython +that return a wxString from the C++ function will return a Python +unicode object, and parameters to C++ functions/methods that expect a +wxString can accept either a Python string or unicode object. If a +string object is passed then it will be decoded into unicode using the +converter pointed to by wxConvCurrent, which will use the default +system encoding. If you need to use string in some other encoding +then you should convert it to unicode using the Python codecs first +and then pass the unicode to the wxPython method. + + +</body></html> +""" diff --git a/wxPython/demo/wxButton.py b/wxPython/demo/wxButton.py index 2e9664e70a..2c763d7f70 100644 --- a/wxPython/demo/wxButton.py +++ b/wxPython/demo/wxButton.py @@ -29,10 +29,6 @@ class TestPanel(wxPanel): wxSize(bmp.GetWidth()+10, bmp.GetHeight()+10)) EVT_BUTTON(self, 30, self.OnClick) - if wxUSE_UNICODE: - label = unichr(21514) + unichr(26984) + unichr(8307) + unichr(29545) - wxButton(self, -1, label+" (I have no idea what that says...)", (20, 150)) - def OnClick(self, event): self.log.WriteText("Click! (%d)\n" % event.GetId())