[pypy-commit] pypy stdlib-2.7.9: Fix many errors in test_tk

amauryfa noreply at buildbot.pypy.org
Sun Jan 25 17:10:58 CET 2015


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: stdlib-2.7.9
Changeset: r75512:bb36e19b9328
Date: 2015-01-24 21:55 +0100
http://bitbucket.org/pypy/pypy/changeset/bb36e19b9328/

Log:	Fix many errors in test_tk

diff --git a/lib_pypy/_tkinter/__init__.py b/lib_pypy/_tkinter/__init__.py
--- a/lib_pypy/_tkinter/__init__.py
+++ b/lib_pypy/_tkinter/__init__.py
@@ -17,6 +17,7 @@
     raise ImportError("Tk headers and development libraries are required")
 
 from .app import TkApp
+from .tclobj import TclObject as Tcl_Obj
 
 TK_VERSION = tkffi.string(tklib.get_tk_version())
 TCL_VERSION = tkffi.string(tklib.get_tcl_version())
diff --git a/lib_pypy/_tkinter/app.py b/lib_pypy/_tkinter/app.py
--- a/lib_pypy/_tkinter/app.py
+++ b/lib_pypy/_tkinter/app.py
@@ -533,3 +533,12 @@
 
     def quit(self):
         self.quitMainLoop = True
+
+    def _createbytearray(self, buf):
+        """Convert Python string or any buffer compatible object to Tcl
+        byte-array object.  Use it to pass binary data (e.g. image's
+        data) to Tcl/Tk commands."""
+        cdata = tkffi.new("char[]", buf)
+        obj = tklib.Tcl_NewByteArrayObj(cdata, len(buf))
+        return FromObj(self, obj)
+        
diff --git a/lib_pypy/_tkinter/tclobj.py b/lib_pypy/_tkinter/tclobj.py
--- a/lib_pypy/_tkinter/tclobj.py
+++ b/lib_pypy/_tkinter/tclobj.py
@@ -112,6 +112,16 @@
             return self._string
         return tkffi.string(tklib.Tcl_GetString(self._value))
 
+    def __repr__(self):
+        return "<%s object at 0x%x>" % (
+            tkffi.string(self._value.typePtr.name),
+            tkffi.cast("intptr_t", self._value))
+
+    def __eq__(self, other):
+        if not isinstance(other, TclObject):
+            return NotImplemented
+        return self._value == other._value
+
     @property
     def string(self):
         if self._string is None:
diff --git a/lib_pypy/_tkinter/tklib.py b/lib_pypy/_tkinter/tklib.py
--- a/lib_pypy/_tkinter/tklib.py
+++ b/lib_pypy/_tkinter/tklib.py
@@ -75,6 +75,7 @@
 char *Tcl_GetString(Tcl_Obj* objPtr);
 char *Tcl_GetStringFromObj(Tcl_Obj* objPtr, int* lengthPtr);
 unsigned char *Tcl_GetByteArrayFromObj(Tcl_Obj* objPtr, int* lengthPtr);
+Tcl_Obj *Tcl_NewByteArrayObj(unsigned char *bytes, int length);
 
 int Tcl_ExprBoolean(Tcl_Interp* interp, const char *expr, int *booleanPtr);
 int Tcl_ExprLong(Tcl_Interp* interp, const char *expr, long* longPtr);


More information about the pypy-commit mailing list