diff Modules/_tkinter.c @ 21322:1852caba7014 legacy-trunk

Mods by Tony Lownds (patch 490100, slightly massaged by me) to make Tkinter work with Mac OS X Aqua-Tk, all nicely within ifdefs. The process is not for the faint of heart, though: you need to download and install the (alfa) Aqua-Tk, obtain a few needed X11 headers from somewhere else and then everything builds. To run scripts using Tkinter you must build with --enable-framework, build Python.app in Mac/OSX and run your Tkinter scripts with that. Then, about half the tests in Demo/tkinter work (or at least do something). Checking this in anyway because it shouldn't break anything, and newer versions of Aqua-Tk will streamline the process.
author Jack Jansen <jack.jansen@cwi.nl>
date Sun, 09 Dec 2001 23:15:56 +0000
parents 304b34023876
children 7ba2a8c162fa 40631ae74b17
line wrap: on
line diff
--- a/Modules/_tkinter.c	Sun Dec 09 23:08:54 2001 +0000
+++ b/Modules/_tkinter.c	Sun Dec 09 23:15:56 2001 +0000
@@ -41,8 +41,13 @@
 #define MAC_TCL
 #endif
 
+#ifdef TK_FRAMEWORK
+#include <Tcl/tcl.h>
+#include <Tk/tk.h>
+#else
 #include <tcl.h>
 #include <tk.h>
+#endif
 
 #define TKMAJORMINOR (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION)
 
@@ -454,6 +459,7 @@
 	ClearMenuBar();
 	TkMacInitMenus(v->interp);
 #endif
+
 	/* Delete the 'exit' command, which can screw things up */
 	Tcl_DeleteCommand(v->interp, "exit");
 
@@ -1580,7 +1586,7 @@
 	char buf[100];
 
 	PyOS_snprintf(buf, sizeof(buf), "<tktimertoken at %p%s>", v,
-		      v->func == NULL ? ", handler deleted" : "");
+	                v->func == NULL ? ", handler deleted" : "");
 	return PyString_FromString(buf);
 }
 
@@ -2137,6 +2143,22 @@
 	Tktt_Type.ob_type = &PyType_Type;
 	PyDict_SetItemString(d, "TkttType", (PyObject *)&Tktt_Type);
 
+
+#ifdef TK_AQUA
+	/* Tk_MacOSXSetupTkNotifier must be called before Tcl's subsystems
+	 * start waking up.  Note that Tcl_FindExecutable will do this, this
+	 * code must be above it! The original warning from
+	 * tkMacOSXAppInit.c is copied below.
+	 *
+	 * NB - You have to swap in the Tk Notifier BEFORE you start up the
+	 * Tcl interpreter for now.  It probably should work to do this
+	 * in the other order, but for now it doesn't seem to.
+	 *
+	 */
+	Tk_MacOSXSetupTkNotifier();
+#endif
+
+
 	/* This helps the dynamic loader; in Unicode aware Tcl versions
 	   it also helps Tcl find its encodings. */
 	Tcl_FindExecutable(Py_GetProgramName());