From 1fa649f2d5d4a63105577888830276a6dc4771b5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20v=2E=20L=C3=B6wis?= Date: Tue, 3 Aug 2004 18:45:31 +0000 Subject: Patch #986929: Add support for wish -sync and -use options. --- Misc/NEWS | 2 ++ Modules/_tkinter.c | 41 +++++++++++++++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 4 deletions(-) diff --git a/Misc/NEWS b/Misc/NEWS index 11e224b..c450f63 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -72,6 +72,8 @@ Extension modules Library ------- +- Tkinter now supports the wish -sync and -use options. + - The following methods in time support passing of None: ctime(), gmtime(), and localtime(). If None is provided, the current time is used (the same as when the argument is omitted). diff --git a/Modules/_tkinter.c b/Modules/_tkinter.c index 36aa010..74fe0f8 100644 --- a/Modules/_tkinter.c +++ b/Modules/_tkinter.c @@ -576,7 +576,7 @@ static void DisableEventHook(void); /* Forward */ static TkappObject * Tkapp_New(char *screenName, char *baseName, char *className, - int interactive, int wantobjects, int wantTk) + int interactive, int wantobjects, int wantTk, int sync, char *use) { TkappObject *v; char *argv0; @@ -644,6 +644,35 @@ Tkapp_New(char *screenName, char *baseName, char *className, Tcl_SetVar(v->interp, "_tkinter_skip_tk_init", "1", TCL_GLOBAL_ONLY); } + /* some initial arguments need to be in argv */ + if (sync || use) { + int len = 0; + if (sync) + len += sizeof "-sync"; + if (use) + len += strlen(use) + sizeof "-use "; + + char *args = (char*)ckalloc(len); + if (!args) { + PyErr_NoMemory(); + Py_DECREF(v); + return NULL; + } + + args[0] = '\0'; + if (sync) + strcat(args, "-sync"); + if (use) { + if (sync) + strcat(args, " "); + strcat(args, "-use "); + strcat(args, use); + } + + Tcl_SetVar(v->interp, "argv", args, TCL_GLOBAL_ONLY); + ckfree(args); + } + if (Tcl_AppInit(v->interp) != TCL_OK) return (TkappObject *)Tkinter_Error((PyObject *)v); @@ -2835,6 +2864,8 @@ Tkinter_Create(PyObject *self, PyObject *args) int interactive = 0; int wantobjects = 0; int wantTk = 1; /* If false, then Tk_Init() doesn't get called */ + int sync = 0; /* pass -sync to wish */ + char *use = NULL; /* pass -use to wish */ baseName = strrchr(Py_GetProgramName(), '/'); if (baseName != NULL) @@ -2843,13 +2874,15 @@ Tkinter_Create(PyObject *self, PyObject *args) baseName = Py_GetProgramName(); className = "Tk"; - if (!PyArg_ParseTuple(args, "|zssiii:create", + if (!PyArg_ParseTuple(args, "|zssiiiiz:create", &screenName, &baseName, &className, - &interactive, &wantobjects, &wantTk)) + &interactive, &wantobjects, &wantTk, + &sync, &use)) return NULL; return (PyObject *) Tkapp_New(screenName, baseName, className, - interactive, wantobjects, wantTk); + interactive, wantobjects, wantTk, + sync, use); } static PyObject * -- cgit v0.12