use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;

some Tk 4.0 specific changes
This commit is contained in:
Guido van Rossum 1995-02-07 15:41:02 +00:00
parent 3fdf58b5cc
commit a3c3f2c5b0
1 changed files with 19 additions and 7 deletions

View File

@ -194,10 +194,16 @@ int
Tcl_AppInit (interp) Tcl_AppInit (interp)
Tcl_Interp *interp; Tcl_Interp *interp;
{ {
if (Tcl_Init (interp) == TCL_ERROR) Tk_Window main;
main = Tk_MainWindow(interp);
if (Tcl_Init (interp) == TCL_ERROR) {
fprintf(stderr, "Tcl_Init error: %s\n", interp->result);
return TCL_ERROR; return TCL_ERROR;
if (Tk_Init (interp) == TCL_ERROR) }
if (Tk_Init (interp) == TCL_ERROR) {
fprintf(stderr, "Tk_Init error: %s\n", interp->result);
return TCL_ERROR; return TCL_ERROR;
}
return TCL_OK; return TCL_OK;
} }
#endif /* !WITH_APPINIT */ #endif /* !WITH_APPINIT */
@ -699,8 +705,7 @@ Tkapp_CreateCommand (self, args)
if (!PyTuple_Check (args) if (!PyTuple_Check (args)
|| !(PyTuple_Size (args) == 2) || !(PyTuple_Size (args) == 2)
|| !PyString_Check (PyTuple_GetItem (args, 0)) || !PyString_Check (PyTuple_GetItem (args, 0))
|| !(PyMethod_Check (PyTuple_GetItem (args, 1)) || !PyCallable_Check (PyTuple_GetItem (args, 1)))
|| PyFunction_Check (PyTuple_GetItem (args, 1))))
{ {
PyErr_SetString (PyExc_TypeError, "bad argument list"); PyErr_SetString (PyExc_TypeError, "bad argument list");
return NULL; return NULL;
@ -813,7 +818,7 @@ Tkapp_CreateFileHandler (self, args)
id = GetFileNo (file); id = GetFileNo (file);
if (id < 0) if (id < 0)
return NULL; return NULL;
if (!(PyMethod_Check(func) || PyFunction_Check(func))) if (!PyCallable_Check(func))
{ {
PyErr_SetString (PyExc_TypeError, "bad argument list"); PyErr_SetString (PyExc_TypeError, "bad argument list");
return NULL; return NULL;
@ -982,8 +987,7 @@ Tkapp_CreateTimerHandler (self, args)
if (!PyArg_Parse (args, "(iO)", &milliseconds, &func)) if (!PyArg_Parse (args, "(iO)", &milliseconds, &func))
return NULL; return NULL;
if (!(PyMethod_Check(func) || PyFunction_Check(func) || if (!PyCallable_Check(func))
PyCFunction_Check(func)))
{ {
PyErr_SetString (PyExc_TypeError, "bad argument list"); PyErr_SetString (PyExc_TypeError, "bad argument list");
return NULL; return NULL;
@ -1191,6 +1195,7 @@ static PyMethodDef moduleMethods[] =
{NULL, NULL} {NULL, NULL}
}; };
#undef WITH_READLINE /* XXX */
#ifdef WITH_READLINE #ifdef WITH_READLINE
static int static int
EventHook () EventHook ()
@ -1211,9 +1216,12 @@ EventHook ()
static void static void
Tkinter_Cleanup () Tkinter_Cleanup ()
{ {
/* This segfault with Tk 4.0 beta and seems unnecessary there as well */
#if TK_MAJOR_VERSION < 4
/* XXX rl_deprep_terminal is static, damned! */ /* XXX rl_deprep_terminal is static, damned! */
while (tkMainWindowList != 0) while (tkMainWindowList != 0)
Tk_DestroyWindow (tkMainWindowList->win); Tk_DestroyWindow (tkMainWindowList->win);
#endif
} }
void void
@ -1250,6 +1258,10 @@ PyInit_tkinter ()
PyDict_SetItemString (d, "ALL_EVENTS", v); PyDict_SetItemString (d, "ALL_EVENTS", v);
v = Py_BuildValue ("i", TK_DONT_WAIT); v = Py_BuildValue ("i", TK_DONT_WAIT);
PyDict_SetItemString (d, "DONT_WAIT", v); PyDict_SetItemString (d, "DONT_WAIT", v);
v = Py_BuildValue ("s", TK_VERSION);
PyDict_SetItemString (d, "TK_VERSION", v);
v = Py_BuildValue ("s", TCL_VERSION);
PyDict_SetItemString (d, "TCL_VERSION", v);
#ifdef WITH_READLINE #ifdef WITH_READLINE
rl_event_hook = EventHook; rl_event_hook = EventHook;