]> granicus.if.org Git - python/commitdiff
Patch #986929: Add support for wish -sync and -use options.
authorMartin v. Löwis <martin@v.loewis.de>
Tue, 3 Aug 2004 18:45:31 +0000 (18:45 +0000)
committerMartin v. Löwis <martin@v.loewis.de>
Tue, 3 Aug 2004 18:45:31 +0000 (18:45 +0000)
Misc/NEWS
Modules/_tkinter.c

index 11e224b448f7eaf70f5bc269e6ae4c96ee421cdf..c450f63dcbe31598fac54e6908dfcbbef8805771 100644 (file)
--- 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).
index 36aa0109123de514701e74635f999ec5b50d67cb..74fe0f8d7838e7fe03483d72d5531b64cc1a9e4c 100644 (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 *