]> git.saurik.com Git - wxWidgets.git/commitdiff
A Unicode sample for wxPython
authorRobin Dunn <robin@alldunn.com>
Fri, 15 Mar 2002 00:27:45 +0000 (00:27 +0000)
committerRobin Dunn <robin@alldunn.com>
Fri, 15 Mar 2002 00:27:45 +0000 (00:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@14598 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

wxPython/demo/Main.py
wxPython/demo/Unicode.py [new file with mode: 0644]
wxPython/demo/wxButton.py

index 14f9a919bbfb524fd8505dc8a584a3ae1ae857b2..10912629becbadf7b2b558a6c699fc17ba664f2d 100644 (file)
@@ -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 (file)
index 0000000..0ddb0e8
--- /dev/null
@@ -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>
+"""
index 2e9664e70ac1dfeb33caeab6d1aaeb934e20c67b..2c763d7f70b4178a7a4856c115cb7df4b5509880 100644 (file)
@@ -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())