[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