Patch #986929: Add support for wish -sync and -use options.

This commit is contained in:
Martin v. Löwis 2004-08-03 18:45:31 +00:00
parent 9441c078cf
commit 1fa649f2d5
2 changed files with 39 additions and 4 deletions

View File

@ -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).

View File

@ -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 *