annotate Modules/_tkinter.c @ 4754:30703a656d13 legacy-trunk

Another fix for Split() -- don't refuse {"} but turn it into ". This is needed because if a configure option has " as its value, it will be rendered as {"}; after stripping one level of quoting it's just ", on which splitlist will barf.
author Guido van Rossum <guido@python.org>
date Tue, 17 Dec 1996 01:25:36 +0000
parents 7b1e784e20a0
children 3d32da37d627
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
1 /***********************************************************
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
2 Copyright (C) 1994 Steen Lumholt.
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
3 Copyright 1994-1995 by Stichting Mathematisch Centrum, Amsterdam,
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
4 The Netherlands.
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
5
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
6 All Rights Reserved
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
7
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
8 Permission to use, copy, modify, and distribute this software and its
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
9 documentation for any purpose and without fee is hereby granted,
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
10 provided that the above copyright notice appear in all copies and that
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
11 both that copyright notice and this permission notice appear in
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
12 supporting documentation, and that the names of Stichting Mathematisch
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
13 Centrum or CWI or Corporation for National Research Initiatives or
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
14 CNRI not be used in advertising or publicity pertaining to
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
15 distribution of the software without specific, written prior
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
16 permission.
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
17
4503
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
18 While CWI is the initial source for this software, a modified version
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
19 is made available by the Corporation for National Research Initiatives
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
20 (CNRI) at the Internet address ftp://ftp.python.org.
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
21
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
22 STICHTING MATHEMATISCH CENTRUM AND CNRI DISCLAIM ALL WARRANTIES WITH
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
23 REGARD TO THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
24 MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL STICHTING MATHEMATISCH
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
25 CENTRUM OR CNRI BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
26 DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
27 PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
28 TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
65d2d8e67da3 New permission notice, includes CNRI.
Guido van Rossum <guido@python.org>
parents: 4299
diff changeset
29 PERFORMANCE OF THIS SOFTWARE.
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
30
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
31 ******************************************************************/
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
32
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
33 /* _tkinter.c -- Interface to libtk.a and libtcl.a. */
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
35 /* TCL/TK VERSION INFO:
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
36
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
37 Unix:
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
38 This should work with any version from Tcl 4.0 / Tck 7.4.
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
39 Do not use older versions.
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
40
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
41 Mac and Windows:
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
42 Use Tcl 4.1p1 / Tk 7.5p1 or possibly newer.
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
43 It does not seem to work reliably with the original 4.1/7.5
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
44 release. (4.0/7.4 were never released for these platforms.)
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
45 */
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
46
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
47 #include "Python.h"
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
48 #include <ctype.h>
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
49
4079
a6e62c21b0e3 Add #define MAC_TCL for Mac.
Guido van Rossum <guido@python.org>
parents: 4005
diff changeset
50 #ifdef macintosh
a6e62c21b0e3 Add #define MAC_TCL for Mac.
Guido van Rossum <guido@python.org>
parents: 4005
diff changeset
51 #define MAC_TCL
a6e62c21b0e3 Add #define MAC_TCL for Mac.
Guido van Rossum <guido@python.org>
parents: 4005
diff changeset
52 #endif
a6e62c21b0e3 Add #define MAC_TCL for Mac.
Guido van Rossum <guido@python.org>
parents: 4005
diff changeset
53
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 #include <tcl.h>
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 #include <tk.h>
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
56
3899
584936890f86 getprogramname --> Py_GetProgramName
Guido van Rossum <guido@python.org>
parents: 3703
diff changeset
57 extern char *Py_GetProgramName ();
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
58
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
59 /* Internal declarations from tkInt.h. */
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
60 #if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
61 extern int Tk_GetNumMainWindows();
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
62 #else
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 extern int tk_NumMainWindows;
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
64 #define Tk_GetNumMainWindows() (tk_NumMainWindows)
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
65 #define NEED_TKCREATEMAINWINDOW 1
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
66 #endif
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
67
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
68 #if TK_MAJOR_VERSION < 4
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
69 extern struct { Tk_Window win; } *tkMainWindowList;
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
70 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
72 #ifdef macintosh
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
73
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
74 /*
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
75 ** Additional cruft needed by Tcl/Tk on the Mac.
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
76 ** This is for Tcl 7.5 and Tk 4.1 (patch release 1).
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
77 */
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
78
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
79 /* ckfree() expects a char* */
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
80 #define FREECAST (char *)
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
81
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
82 #include <Events.h> /* For EventRecord */
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
83
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
84 typedef int (*TclMacConvertEventPtr) Py_PROTO((EventRecord *eventPtr));
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
85 void TclMacSetEventProc Py_PROTO((TclMacConvertEventPtr procPtr));
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
86 int TkMacConvertEvent Py_PROTO((EventRecord *eventPtr));
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
87
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
88 staticforward int PyMacConvertEvent Py_PROTO((EventRecord *eventPtr));
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
89
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
90 #endif /* macintosh */
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
91
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
92 #ifndef FREECAST
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
93 #define FREECAST (char *)
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
94 #endif
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
95
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 /**** Tkapp Object Declaration ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
97
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
98 staticforward PyTypeObject Tkapp_Type;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 typedef struct
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 PyObject_HEAD
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 Tcl_Interp *interp;
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
104 #ifdef NEED_TKCREATEMAINWINDOW
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 Tk_Window tkwin;
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
106 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 TkappObject;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 #define Tkapp_Check(v) ((v)->ob_type == &Tkapp_Type)
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
111 #ifdef NEED_TKCREATEMAINWINDOW
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 #define Tkapp_Tkwin(v) (((TkappObject *) (v))->tkwin)
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
113 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 #define Tkapp_Interp(v) (((TkappObject *) (v))->interp)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 #define Tkapp_Result(v) (((TkappObject *) (v))->interp->result)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117 #define DEBUG_REFCNT(v) (printf ("DEBUG: id=%p, refcnt=%i\n", \
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 (void *) v, ((PyObject *) v)->ob_refcnt))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
119
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
120 /**** Error Handling ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 static PyObject *Tkinter_TclError;
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
123 static int quitMainLoop = 0;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 static int errorInCmd = 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 static PyObject *excInCmd;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 static PyObject *valInCmd;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
127 static PyObject *trbInCmd;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
130 Tkinter_Error (v)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
131 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 PyErr_SetString (Tkinter_TclError, Tkapp_Result (v));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
135 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
136
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 int
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 PythonCmd_Error (interp)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 Tcl_Interp *interp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 errorInCmd = 1;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
142 PyErr_Fetch (&excInCmd, &valInCmd, &trbInCmd);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 return TCL_ERROR;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
144 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
145
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 /**** Utils ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
147
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 static char *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 AsString (value, tmp)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 PyObject *value;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 PyObject *tmp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 if (PyString_Check (value))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 return PyString_AsString (value);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
156 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
157 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
158
2150
448435bfeadc Made some more things static, and other cleanup for new naming scheme
Guido van Rossum <guido@python.org>
parents: 2123
diff changeset
159 v = PyObject_Str (value);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 PyList_Append (tmp, v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 Py_DECREF (v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 return PyString_AsString (v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
165
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 #define ARGSZ 64
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
167
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
168 static char *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 Merge (args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
170 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 PyObject *tmp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 char *argvStore[ARGSZ];
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 char **argv;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 int fvStore[ARGSZ];
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 int *fv;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 int argc;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 char *res;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
179 int i;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
180
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 tmp = PyList_New (0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 argv = argvStore;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 fv = fvStore;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
184
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
185 if (args == NULL)
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
186 {
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
187 argc = 0;
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
188 }
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
189 else if (!PyTuple_Check (args))
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 argc = 1;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
192 fv[0] = 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 argv[0] = AsString (args, tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
194 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
195 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
196 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
197 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
198
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
199 if (PyTuple_Size (args) > ARGSZ)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
200 {
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
201 argv = (char **) ckalloc (PyTuple_Size (args) * sizeof (char *));
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
202 fv = (int *) ckalloc (PyTuple_Size (args) * sizeof (int));
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
203 if (argv == NULL || fv == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
204 PyErr_NoMemory ();
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
205 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
206
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
207 argc = PyTuple_Size (args);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
208 for (i = 0; i < argc; i++)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
209 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
210 v = PyTuple_GetItem (args, i);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 if (PyTuple_Check (v))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
213 fv[i] = 1;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
214 argv[i] = Merge (v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
215 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
216 else if (v == Py_None)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
217 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
218 argc = i;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
219 break;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
220 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
222 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
223 fv[i] = 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
224 argv[i] = AsString (v, tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
225 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
226 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
227 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
228
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
229 res = Tcl_Merge (argc, argv);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
230
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 Py_DECREF (tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
232 for (i = 0; i < argc; i++)
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
233 if (fv[i]) ckfree (argv[i]);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 if (argv != argvStore)
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
235 ckfree (FREECAST argv);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
236 if (fv != fvStore)
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
237 ckfree (FREECAST fv);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
238
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
239 return res;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
240 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
241
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
242 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 Split (self, list)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 char *list;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
246 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
247 int argc;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 char **argv;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
249 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
250
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
251 if (list == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
252 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
253 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
254 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
256
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
257 if (Tcl_SplitList (Tkapp_Interp (self), list, &argc, &argv) == TCL_ERROR)
4754
30703a656d13 Another fix for Split() -- don't refuse {"} but turn it into ".
Guido van Rossum <guido@python.org>
parents: 4753
diff changeset
258 {
30703a656d13 Another fix for Split() -- don't refuse {"} but turn it into ".
Guido van Rossum <guido@python.org>
parents: 4753
diff changeset
259 /* Not a list.
30703a656d13 Another fix for Split() -- don't refuse {"} but turn it into ".
Guido van Rossum <guido@python.org>
parents: 4753
diff changeset
260 Could be a quoted string containing funnies, e.g. {"}.
30703a656d13 Another fix for Split() -- don't refuse {"} but turn it into ".
Guido van Rossum <guido@python.org>
parents: 4753
diff changeset
261 Return the string itself. */
30703a656d13 Another fix for Split() -- don't refuse {"} but turn it into ".
Guido van Rossum <guido@python.org>
parents: 4753
diff changeset
262 PyErr_Clear();
30703a656d13 Another fix for Split() -- don't refuse {"} but turn it into ".
Guido van Rossum <guido@python.org>
parents: 4753
diff changeset
263 return PyString_FromString(list);
30703a656d13 Another fix for Split() -- don't refuse {"} but turn it into ".
Guido van Rossum <guido@python.org>
parents: 4753
diff changeset
264 }
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
265
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
266 if (argc == 0)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 v = PyString_FromString ("");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
268 else if (argc == 1)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
269 v = PyString_FromString (argv[0]);
4753
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
270 else if ((v = PyTuple_New (argc)) != NULL)
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
271 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
272 int i;
4753
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
273 PyObject *w;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
274
4753
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
275 for (i = 0; i < argc; i++) {
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
276 if ((w = Split (self, argv[i])) == NULL)
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
277 {
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
278 Py_DECREF(v);
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
279 v = NULL;
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
280 break;
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
281 }
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
282 PyTuple_SetItem (v, i, w);
7b1e784e20a0 Check errors returned by recursive call to Split().
Guido van Rossum <guido@python.org>
parents: 4600
diff changeset
283 }
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
284 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
285
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
286 ckfree (FREECAST argv);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
287 return v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
288 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
289
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 /**** Tkapp Object ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
291
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
292 #ifndef WITH_APPINIT
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
293 int
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
294 Tcl_AppInit (interp)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 Tcl_Interp *interp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 {
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
297 Tk_Window main;
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
298
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
299 main = Tk_MainWindow(interp);
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
300 if (Tcl_Init (interp) == TCL_ERROR) {
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
301 fprintf(stderr, "Tcl_Init error: %s\n", interp->result);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
302 return TCL_ERROR;
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
303 }
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
304 if (Tk_Init (interp) == TCL_ERROR) {
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
305 fprintf(stderr, "Tk_Init error: %s\n", interp->result);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
306 return TCL_ERROR;
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
307 }
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
308 return TCL_OK;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
309 }
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
310
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
311 #endif /* !WITH_APPINIT */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
312
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
313 /* Initialize the Tk application; see the `main' function in
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
314 `tkMain.c'. */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
315 static TkappObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
316 Tkapp_New (screenName, baseName, className, interactive)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
317 char *screenName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
318 char *baseName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
319 char *className;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
320 int interactive;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
322 TkappObject *v;
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
323 char *argv0;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
324
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
325 v = PyObject_NEW (TkappObject, &Tkapp_Type);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
326 if (v == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
327 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
328
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
329 v->interp = Tcl_CreateInterp ();
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
330
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
331 #ifdef NEED_TKCREATEMAINWINDOW
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 v->tkwin = Tk_CreateMainWindow (v->interp, screenName,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
333 baseName, className);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
334 if (v->tkwin == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
335 return (TkappObject *) Tkinter_Error ((PyObject *) v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
336
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
337 Tk_GeometryRequest (v->tkwin, 200, 200);
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
338 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
339
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
340 if (screenName != NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
341 Tcl_SetVar2 (v->interp, "env", "DISPLAY", screenName, TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
342
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
343 if (interactive)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
344 Tcl_SetVar (v->interp, "tcl_interactive", "1", TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
345 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
346 Tcl_SetVar (v->interp, "tcl_interactive", "0", TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
347
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
348 /* This is used to get the application class for Tk 4.1 and up */
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
349 argv0 = (char*) ckalloc (strlen (className) + 1);
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
350 if (argv0 != NULL) {
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
351 strcpy (argv0, className);
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
352 if (isupper (argv0[0]))
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
353 argv0[0] = tolower (argv0[0]);
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
354 Tcl_SetVar (v->interp, "argv0", argv0, TCL_GLOBAL_ONLY);
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
355 ckfree (argv0);
3973
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
356 }
3d1e4b76f745 Add optional casts to free() calls. (Jack)
Guido van Rossum <guido@python.org>
parents: 3899
diff changeset
357
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
358 if (Tcl_AppInit (v->interp) != TCL_OK)
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
359 return (TkappObject *) Tkinter_Error (v);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
360
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
361 return v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
362 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
363
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
364 /** Tcl Eval **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
365
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
366 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
367 Tkapp_Call (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
368 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
369 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
370 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
371 char *cmd;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
372
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
373 cmd = Merge (args);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
374 if (Tcl_Eval (Tkapp_Interp (self), cmd) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
375 {
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
376 ckfree (cmd);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
377 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
378 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
379
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
380 ckfree (cmd);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
381 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
382 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
383
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
384 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
385 Tkapp_GlobalCall (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
386 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
387 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
388 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
389 char *cmd;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
390
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
391 cmd = Merge (args);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
392 if (Tcl_GlobalEval (Tkapp_Interp (self), cmd) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
393 {
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
394 ckfree (cmd);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
395 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
396 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
397
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
398 ckfree (cmd);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
399 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
400 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
401
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
402 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
403 Tkapp_Eval (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
404 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
405 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
406 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
407 char *script;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
408
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
409 if (!PyArg_Parse (args, "s", &script))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
410 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
411
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
412 if (Tcl_Eval (Tkapp_Interp (self), script) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
413 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
414
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
415 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
416 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
417
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
418 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
419 Tkapp_GlobalEval (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
420 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
421 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
422 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
423 char *script;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
424
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
425 if (!PyArg_Parse (args, "s", &script))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
426 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
427
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
428 if (Tcl_GlobalEval (Tkapp_Interp (self), script) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
429 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
430
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
431 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
432 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
433
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
434 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
435 Tkapp_EvalFile (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
436 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
437 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
438 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 char *fileName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
440
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
441 if (!PyArg_Parse (args, "s", &fileName))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
442 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
443
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
444 if (Tcl_EvalFile (Tkapp_Interp (self), fileName) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
445 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
446
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
447 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
448 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
449
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
450 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
451 Tkapp_Record (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
452 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
453 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
454 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
455 char *script;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
456
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
457 if (!PyArg_Parse (args, "s", &script))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
458 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
459
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
460 if (Tcl_RecordAndEval (Tkapp_Interp (self),
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
461 script, TCL_NO_EVAL) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
462 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
463
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
464 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
465 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
466
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
467 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
468 Tkapp_AddErrorInfo (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
469 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
470 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
471 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
472 char *msg;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
473
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
474 if (!PyArg_Parse (args, "s", &msg))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
475 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
476 Tcl_AddErrorInfo (Tkapp_Interp (self), msg);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
477
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
478 Py_INCREF(Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
479 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
480 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
481
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
482 /** Tcl Variable **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
483
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
484 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
485 SetVar (self, args, flags)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
486 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
487 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
488 int flags;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
489 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
490 char *name1, *name2, *ok;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
491 PyObject *newValue;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
492 PyObject *tmp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
493
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
494 tmp = PyList_New (0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
495
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
496 if (PyArg_Parse (args, "(sO)", &name1, &newValue))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
497 ok = Tcl_SetVar (Tkapp_Interp (self), name1,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
498 AsString (newValue, tmp), flags); /* XXX Merge? */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
499 else if (PyArg_Parse (args, "(ssO)", &name1, &name2, &newValue))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
500 ok = Tcl_SetVar2 (Tkapp_Interp (self), name1, name2,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
501 AsString (newValue, tmp), flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
502 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
503 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
504 Py_DECREF (tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
505 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
506 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
507 Py_DECREF (tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
508
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
509 if (!ok)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
510 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
511
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
512 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
514 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
515
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
516 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
517 Tkapp_SetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
518 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
519 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
520 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
521 return SetVar (self, args, TCL_LEAVE_ERR_MSG);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
522 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
523
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
524 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
525 Tkapp_GlobalSetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
526 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
527 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
528 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
529 return SetVar (self, args, TCL_LEAVE_ERR_MSG | TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
530 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
531
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
532 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
533 GetVar (self, args, flags)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
534 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
535 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
536 int flags;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
537 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
538 char *name1, *name2, *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
539
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
540 if (PyArg_Parse (args, "s", &name1))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
541 s = Tcl_GetVar (Tkapp_Interp (self), name1, flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
542 else if (PyArg_Parse (args, "(ss)", &name1, &name2))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
543 s = Tcl_GetVar2 (Tkapp_Interp (self), name1, name2, flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
544 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
545 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
546
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
547 if (s == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
548 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
549
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
550 return PyString_FromString (s);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
551 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
552
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
553 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
554 Tkapp_GetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
555 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
556 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
557 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
558 return GetVar (self, args, TCL_LEAVE_ERR_MSG);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
559 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
560
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
561 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
562 Tkapp_GlobalGetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
563 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
564 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
565 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
566 return GetVar (self, args, TCL_LEAVE_ERR_MSG | TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
567 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
568
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
569 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
570 UnsetVar (self, args, flags)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
571 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
572 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
573 int flags;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
574 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
575 char *name1, *name2;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
576 int code;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
577
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
578 if (PyArg_Parse (args, "s", &name1))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
579 code = Tcl_UnsetVar (Tkapp_Interp (self), name1, flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
580 else if (PyArg_Parse (args, "(ss)", &name1, &name2))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
581 code = Tcl_UnsetVar2 (Tkapp_Interp (self), name1, name2, flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
582 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
583 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
584
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
585 if (code == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
586 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
587
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
588 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
589 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
590 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
591
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
592 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
593 Tkapp_UnsetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
594 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
595 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
596 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
597 return UnsetVar (self, args, TCL_LEAVE_ERR_MSG);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
598 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
599
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
600 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
601 Tkapp_GlobalUnsetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
602 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
603 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
604 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
605 return UnsetVar (self, args, TCL_LEAVE_ERR_MSG | TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
606 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
607
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
608 /** Tcl to Python **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
609
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
610 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
611 Tkapp_GetInt (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
612 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
613 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
614 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
615 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
616 int v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
617
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
618 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
619 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
620 if (Tcl_GetInt (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
621 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
622 return Py_BuildValue ("i", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
623 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
624
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
625 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
626 Tkapp_GetDouble (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
627 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
628 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
629 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
630 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
631 double v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
632
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
633 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
634 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
635 if (Tcl_GetDouble (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
636 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
637 return Py_BuildValue ("d", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
638 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
639
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
640 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
641 Tkapp_GetBoolean (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
642 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
643 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
644 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
645 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
646 int v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
647
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
648 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
649 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
650 if (Tcl_GetBoolean (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
651 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
652 return Py_BuildValue ("i", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
653 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
654
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
655 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
656 Tkapp_ExprString (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
657 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
658 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
659 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
660 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
661
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
662 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
663 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
664 if (Tcl_ExprString (Tkapp_Interp (self), s) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
665 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
666 return Py_BuildValue ("s", Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
667 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
668
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
669 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
670 Tkapp_ExprLong (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
671 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
672 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
673 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
674 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
675 long v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
676
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
677 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
678 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
679 if (Tcl_ExprLong (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
680 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
681 return Py_BuildValue ("l", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
682 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
683
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
684 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
685 Tkapp_ExprDouble (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
686 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
687 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
688 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
689 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
690 double v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
691
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
692 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
693 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
694 if (Tcl_ExprDouble (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
695 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
696 return Py_BuildValue ("d", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
697 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
698
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
699 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
700 Tkapp_ExprBoolean (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
701 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
702 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
703 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
704 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
705 int v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
706
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
707 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
708 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 if (Tcl_ExprBoolean (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
710 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
711 return Py_BuildValue ("i", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
712 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
713
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
715 Tkapp_SplitList (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
717 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
718 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
719 char *list;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
720 int argc;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
721 char **argv;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
722 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
723 int i;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
724
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
725 if (!PyArg_Parse (args, "s", &list))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
726 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
727
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
728 if (Tcl_SplitList (Tkapp_Interp (self), list, &argc, &argv) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
729 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
730
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
731 v = PyTuple_New (argc);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
732 for (i = 0; i < argc; i++)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
733 PyTuple_SetItem (v, i, PyString_FromString (argv[i]));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
734
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
735 ckfree (FREECAST argv);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
736 return v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
737 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
738
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
739 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
740 Tkapp_Split (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
741 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
742 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
743 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
744 char *list;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
745
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
746 if (!PyArg_Parse (args, "s", &list))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
747 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
748 return Split (self, list);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
749 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
750
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
751 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
752 Tkapp_Merge (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
753 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
754 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
755 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
757 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
758
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
759 s = Merge (args);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
760 v = PyString_FromString (s);
4005
7495322427c7 Changes for Windows NT -- this time it works, with Tcl4.1p1 (p1!!!) etc.
Guido van Rossum <guido@python.org>
parents: 3973
diff changeset
761 ckfree (s);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
762 return v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
763 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
764
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
765 /** Tcl Command **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
766
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
767 /* This is the Tcl command that acts as a wrapper for Python
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
768 function or method. */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
769 static int
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
770 PythonCmd (clientData, interp, argc, argv)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
771 ClientData clientData; /* Is (self, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
772 Tcl_Interp *interp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
773 int argc;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
774 char *argv[];
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
775 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
776 PyObject *self, *func, *arg, *res, *tmp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
777 int i;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
778
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
779 self = PyTuple_GetItem ((PyObject *) clientData, 0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
780 func = PyTuple_GetItem ((PyObject *) clientData, 1);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
781
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
782 /* Create argument list (argv1, ..., argvN) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
783 arg = PyTuple_New (argc - 1);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
784 for (i = 0; i < (argc - 1); i++)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
785 PyTuple_SetItem (arg, i, PyString_FromString (argv[i + 1]));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
786
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
787 res = PyEval_CallObject (func, arg);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
788 Py_DECREF (arg);
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
789
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
790 if (res == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
791 return PythonCmd_Error (interp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
792
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
793 tmp = PyList_New (0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
794 Tcl_SetResult (Tkapp_Interp (self), AsString (res, tmp), TCL_VOLATILE);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
795 Py_DECREF (res);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
796 Py_DECREF (tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
797
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
798 return TCL_OK;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
799 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
800
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
801 static void
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
802 PythonCmdDelete (clientData)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
803 ClientData clientData; /* Is (self, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
804 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
805 Py_DECREF ((PyObject *) clientData);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
806 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
807
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
808 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
809 Tkapp_CreateCommand (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
810 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
811 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
812 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
813 char *cmdName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
814 PyObject *data;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
815 PyObject *func;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
816
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
817 /* Args is: (cmdName, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
818 if (!PyTuple_Check (args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
819 || !(PyTuple_Size (args) == 2)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
820 || !PyString_Check (PyTuple_GetItem (args, 0))
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
821 || !PyCallable_Check (PyTuple_GetItem (args, 1)))
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
822 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
823 PyErr_SetString (PyExc_TypeError, "bad argument list");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
824 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
825 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
826
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
827 cmdName = PyString_AsString (PyTuple_GetItem (args, 0));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
828 func = PyTuple_GetItem (args, 1);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
829
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
830 data = PyTuple_New (2); /* ClientData is: (self, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
831
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
832 Py_INCREF (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
833 PyTuple_SetItem (data, 0, self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
834
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
835 Py_INCREF (func);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
836 PyTuple_SetItem (data, 1, func);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
837
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
838 Tcl_CreateCommand (Tkapp_Interp (self), cmdName, PythonCmd,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
839 (ClientData) data, PythonCmdDelete);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
840
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
841 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
842 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
843 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
844
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
845 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
846 Tkapp_DeleteCommand (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
847 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
848 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
849 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
850 char *cmdName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
851
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
852 if (!PyArg_Parse (args, "s", &cmdName))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
853 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
854 if (Tcl_DeleteCommand (Tkapp_Interp (self), cmdName) == -1)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
855 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
856 PyErr_SetString (Tkinter_TclError, "can't delete Tcl command");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
857 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
858 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
859 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
860 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
861 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
862
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
863 /** File Handler **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
864
2123
fd5ab7e828fc cosmetic changes so these modules will work with the strict new naming scheme
Guido van Rossum <guido@python.org>
parents: 2121
diff changeset
865 static void
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
866 FileHandler (clientData, mask)
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
867 ClientData clientData; /* Is: (func, file) */
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
868 int mask;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
869 {
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
870 PyObject *func, *file, *arg, *res;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
871
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
872 func = PyTuple_GetItem ((PyObject *) clientData, 0);
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
873 file = PyTuple_GetItem ((PyObject *) clientData, 1);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
874
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
875 arg = Py_BuildValue ("(Oi)", file, (long) mask);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
876 res = PyEval_CallObject (func, arg);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
877 Py_DECREF (arg);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
878 if (res == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
879 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
880 errorInCmd = 1;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
881 PyErr_Fetch (&excInCmd, &valInCmd, &trbInCmd);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
882 }
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
883 Py_XDECREF (res);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
884 }
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
885
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
886 static int
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
887 GetFileNo (file)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
888 PyObject *file; /* Either an int >= 0 or an object with a
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
889 .fileno() method that returns an int >= 0 */
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
890 {
2123
fd5ab7e828fc cosmetic changes so these modules will work with the strict new naming scheme
Guido van Rossum <guido@python.org>
parents: 2121
diff changeset
891 PyObject *meth, *args, *res;
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
892 int id;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
893 if (PyInt_Check(file)) {
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
894 id = PyInt_AsLong(file);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
895 if (id < 0)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
896 PyErr_SetString(PyExc_ValueError, "invalid file id");
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
897 return id;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
898 }
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
899 meth = PyObject_GetAttrString(file, "fileno");
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
900 if (meth == NULL)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
901 return -1;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
902 args = PyTuple_New(0);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
903 if (args == NULL)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
904 return -1;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
905 res = PyEval_CallObject(meth, args);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
906 Py_DECREF(args);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
907 Py_DECREF(meth);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
908 if (res == NULL)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
909 return -1;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
910 if (PyInt_Check(res))
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
911 id = PyInt_AsLong(res);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
912 else
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
913 id = -1;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
914 if (id < 0)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
915 PyErr_SetString(PyExc_ValueError,
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
916 "invalid fileno() return value");
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
917 Py_DECREF(res);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
918 return id;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
919 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
920
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
921 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
922 Tkapp_CreateFileHandler (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
923 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
924 PyObject *args; /* Is (file, mask, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
925 {
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
926 PyObject *file, *func, *data;
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
927 int mask, id;
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
928 #if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
929 Tcl_File tfile;
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
930 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
931
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
932 if (!PyArg_Parse (args, "(OiO)", &file, &mask, &func))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
933 return NULL;
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
934 id = GetFileNo (file);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
935 if (id < 0)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
936 return NULL;
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
937 if (!PyCallable_Check(func))
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
938 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
939 PyErr_SetString (PyExc_TypeError, "bad argument list");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
940 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
941 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
942
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
943 /* ClientData is: (func, file) */
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
944 data = Py_BuildValue ("(OO)", func, file);
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
945
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
946 #if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
4299
eb1ed743972c Rationalize MS #ifdefs
Guido van Rossum <guido@python.org>
parents: 4139
diff changeset
947 #ifdef MS_WINDOWS
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
948 /* We assume this is a socket... */
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
949 tfile = Tcl_GetFile((ClientData)id, TCL_WIN_SOCKET);
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
950 #else
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
951 tfile = Tcl_GetFile((ClientData)id, TCL_UNIX_FD);
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
952 #endif
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
953 /* Oughtta check for null Tcl_File object... */
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
954 Tcl_CreateFileHandler (tfile, mask, FileHandler, (ClientData) data);
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
955 #else
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
956 Tk_CreateFileHandler (id, mask, FileHandler, (ClientData) data);
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
957 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
958 /* XXX fileHandlerDict */
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
959
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
960 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
961 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
962 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
963
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
964 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
965 Tkapp_DeleteFileHandler (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
966 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
967 PyObject *args; /* Args: file */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
968 {
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
969 PyObject *file;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
970 int id;
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
971 #if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
972 Tcl_File tfile;
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
973 #endif
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
974
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
975 if (!PyArg_Parse (args, "O", &file))
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
976 return NULL;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
977 id = GetFileNo (file);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
978 if (id < 0)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
979 return NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
980
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
981 #if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
4299
eb1ed743972c Rationalize MS #ifdefs
Guido van Rossum <guido@python.org>
parents: 4139
diff changeset
982 #ifdef MS_WINDOWS
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
983 /* We assume this is a socket... */
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
984 tfile = Tcl_GetFile((ClientData)id, TCL_WIN_SOCKET);
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
985 #else
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
986 tfile = Tcl_GetFile((ClientData)id, TCL_UNIX_FD);
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
987 #endif
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
988 /* Oughtta check for null Tcl_File object... */
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
989 Tcl_DeleteFileHandler(tfile);
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
990 #else
3703
ff7fa59f62e8 Added CWI copyright.
Guido van Rossum <guido@python.org>
parents: 3554
diff changeset
991 Tk_DeleteFileHandler (id);
3554
24279bafa828 Patch from the net for 4.1 file handler changes.
Guido van Rossum <guido@python.org>
parents: 3553
diff changeset
992 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
993 /* XXX fileHandlerDict */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
994 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
995 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
996 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
997
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
998 /**** Tktt Object (timer token) ****/
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
999
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1000 staticforward PyTypeObject Tktt_Type;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1001
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1002 typedef struct
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1003 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1004 PyObject_HEAD
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1005 Tk_TimerToken token;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1006 PyObject *func;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1007 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1008 TkttObject;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1010 static PyObject *
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1011 Tktt_DeleteTimerHandler (self, args)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1012 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1013 PyObject *args;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1014 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1015 TkttObject *v = (TkttObject *) self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1016
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1017 if (!PyArg_Parse (args, ""))
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1018 return NULL;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1019 if (v->func != NULL)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1020 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1021 Tk_DeleteTimerHandler (v->token);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1022 PyMem_DEL (v->func);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1023 v->func = NULL;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1024 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1025 Py_INCREF (Py_None);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1026 return Py_None;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1027 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1028
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1029 static PyMethodDef Tktt_methods[] =
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1030 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1031 {"deletetimerhandler", Tktt_DeleteTimerHandler},
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1032 {NULL, NULL}
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1033 };
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1034
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1035 static TkttObject *
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1036 Tktt_New (token, func)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1037 Tk_TimerToken token;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1038 PyObject *func;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1039 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1040 TkttObject *v;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1041
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1042 v = PyObject_NEW (TkttObject, &Tktt_Type);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1043 if (v == NULL)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1044 return NULL;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1045
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1046 v->token = token;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1047 v->func = func;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1048 Py_INCREF (v->func);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1049 return v;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1050 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1051
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1052 static void
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1053 Tktt_Dealloc (self)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1054 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1055 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1056 PyMem_DEL (self);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1057 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1058
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1059 static int
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1060 Tktt_Print (self, fp, flags)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1061 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1062 FILE *fp;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1063 int flags;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1064 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1065 TkttObject *v = (TkttObject *) self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1066
4600
d36250aefb82 Keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
1067 fprintf(fp, "<tktimertoken at 0x%lx%s>", (long)v,
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1068 v->func == NULL ? ", handler deleted" : "");
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1069 return 0;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1070 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1071
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1072 static PyObject *
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1073 Tktt_GetAttr (self, name)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1074 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1075 char *name;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1076 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1077 return Py_FindMethod (Tktt_methods, self, name);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1078 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1079
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1080 static PyTypeObject Tktt_Type =
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1081 {
4091
dc946cab7b9b Hacks to support being a Windows DLL
Guido van Rossum <guido@python.org>
parents: 4079
diff changeset
1082 PyObject_HEAD_INIT (NULL)
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1083 0, /*ob_size */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1084 "tktimertoken", /*tp_name */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1085 sizeof (TkttObject), /*tp_basicsize */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1086 0, /*tp_itemsize */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1087 Tktt_Dealloc, /*tp_dealloc */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1088 Tktt_Print, /*tp_print */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1089 Tktt_GetAttr, /*tp_getattr */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1090 0, /*tp_setattr */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1091 0, /*tp_compare */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1092 0, /*tp_repr */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1093 0, /*tp_as_number */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1094 0, /*tp_as_sequence */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1095 0, /*tp_as_mapping */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1096 0, /*tp_hash */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1097 };
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1098
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1099 /** Timer Handler **/
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1100
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1101 static void
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1102 TimerHandler (clientData)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1103 ClientData clientData;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1104 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1105 PyObject *func = (PyObject *) clientData;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1106 PyObject *arg, *res;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1107
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1108 arg = PyTuple_New (0);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1109 res = PyEval_CallObject (func, arg);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1110 Py_DECREF (arg);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1111 if (res == NULL)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1112 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1113 errorInCmd = 1;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1114 PyErr_Fetch (&excInCmd, &valInCmd, &trbInCmd);
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1115 }
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1116 else
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1117 Py_DECREF (res);
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1118 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1119
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1120 static PyObject *
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1121 Tkapp_CreateTimerHandler (self, args)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1122 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1123 PyObject *args; /* Is (milliseconds, func) */
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1124 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1125 int milliseconds;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1126 PyObject *func;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1127 Tk_TimerToken token;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1128
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1129 if (!PyArg_Parse (args, "(iO)", &milliseconds, &func))
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1130 return NULL;
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1131 if (!PyCallable_Check(func))
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1132 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1133 PyErr_SetString (PyExc_TypeError, "bad argument list");
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1134 return NULL;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1135 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1136 token = Tk_CreateTimerHandler(milliseconds, TimerHandler, (ClientData) func);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1137 return (PyObject *) Tktt_New (token, func);
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1138 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1139
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1140 /** Event Loop **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1141
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1142 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1143 Tkapp_MainLoop (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1144 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1145 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1146 {
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1147 int threshold = 0;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1148
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1149 if (!PyArg_ParseTuple (args, "|i", &threshold))
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1150 return NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1151
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1152 quitMainLoop = 0;
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1153 while (Tk_GetNumMainWindows() > threshold && !quitMainLoop && !errorInCmd)
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1154 {
4600
d36250aefb82 Keep gcc -Wall happy.
Guido van Rossum <guido@python.org>
parents: 4503
diff changeset
1155 /* XXX Ought to check for other signals! */
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1156 if (PyOS_InterruptOccurred ())
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1157 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1158 PyErr_SetNone (PyExc_KeyboardInterrupt);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1159 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1160 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1161 Tk_DoOneEvent (0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1162 }
3134
2677fbb117d6 clear quitMainLoop when we fall through the main loop
Guido van Rossum <guido@python.org>
parents: 3120
diff changeset
1163 quitMainLoop = 0;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1164
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1165 if (errorInCmd)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1166 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1167 errorInCmd = 0;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1168 PyErr_Restore (excInCmd, valInCmd, trbInCmd);
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1169 excInCmd = valInCmd = trbInCmd = NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1170 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1171 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1172 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1173 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1174 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1175
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1176 static PyObject *
2121
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1177 Tkapp_DoOneEvent (self, args)
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1178 PyObject *self;
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1179 PyObject *args;
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1180 {
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1181 int flags = TK_ALL_EVENTS;
2121
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1182 int rv;
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1183
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1184 if (!PyArg_ParseTuple (args, "|i", &flags))
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1185 return NULL;
2121
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1186 rv = Tk_DoOneEvent(flags);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1187 return Py_BuildValue ("i", rv);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1188 }
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1189
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1190 static PyObject *
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1191 Tkapp_Quit (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1192 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1193 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1194 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1195
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1196 if (!PyArg_Parse (args, ""))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1197 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1198 quitMainLoop = 1;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1199 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1200 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1201 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1202
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1203 /**** Tkapp Method List ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1204
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1205 static PyMethodDef Tkapp_methods[] =
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1206 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1207 {"call", Tkapp_Call},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1208 {"globalcall", Tkapp_GlobalCall},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1209 {"eval", Tkapp_Eval},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1210 {"globaleval", Tkapp_GlobalEval},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1211 {"evalfile", Tkapp_EvalFile},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1212 {"record", Tkapp_Record},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1213 {"adderrorinfo", Tkapp_AddErrorInfo},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1214 {"setvar", Tkapp_SetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1215 {"globalsetvar", Tkapp_GlobalSetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1216 {"getvar", Tkapp_GetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1217 {"globalgetvar", Tkapp_GlobalGetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1218 {"unsetvar", Tkapp_UnsetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1219 {"globalunsetvar", Tkapp_GlobalUnsetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1220 {"getint", Tkapp_GetInt},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1221 {"getdouble", Tkapp_GetDouble},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1222 {"getboolean", Tkapp_GetBoolean},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1223 {"exprstring", Tkapp_ExprString},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1224 {"exprlong", Tkapp_ExprLong},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1225 {"exprdouble", Tkapp_ExprDouble},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1226 {"exprboolean", Tkapp_ExprBoolean},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1227 {"splitlist", Tkapp_SplitList},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1228 {"split", Tkapp_Split},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1229 {"merge", Tkapp_Merge},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1230 {"createcommand", Tkapp_CreateCommand},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1231 {"deletecommand", Tkapp_DeleteCommand},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1232 {"createfilehandler", Tkapp_CreateFileHandler},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1233 {"deletefilehandler", Tkapp_DeleteFileHandler},
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1234 {"createtimerhandler", Tkapp_CreateTimerHandler},
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1235 {"mainloop", Tkapp_MainLoop, 1},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1236 {"dooneevent", Tkapp_DoOneEvent, 1},
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1237 {"quit", Tkapp_Quit},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1238 {NULL, NULL}
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1239 };
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1240
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1241 /**** Tkapp Type Methods ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1242
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1243 static void
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1244 Tkapp_Dealloc (self)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1245 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1246 {
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1247 #ifdef NEED_TKCREATEMAINWINDOW
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1248 Tk_DestroyWindow (Tkapp_Tkwin (self));
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1249 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1250 Tcl_DeleteInterp (Tkapp_Interp (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1251 PyMem_DEL (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1252 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1253
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1254 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1255 Tkapp_GetAttr (self, name)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1256 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1257 char *name;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1258 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1259 return Py_FindMethod (Tkapp_methods, self, name);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1260 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1261
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1262 static PyTypeObject Tkapp_Type =
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1263 {
4091
dc946cab7b9b Hacks to support being a Windows DLL
Guido van Rossum <guido@python.org>
parents: 4079
diff changeset
1264 PyObject_HEAD_INIT (NULL)
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1265 0, /*ob_size */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1266 "tkapp", /*tp_name */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1267 sizeof (TkappObject), /*tp_basicsize */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1268 0, /*tp_itemsize */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1269 Tkapp_Dealloc, /*tp_dealloc */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1270 0, /*tp_print */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1271 Tkapp_GetAttr, /*tp_getattr */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1272 0, /*tp_setattr */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1273 0, /*tp_compare */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1274 0, /*tp_repr */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1275 0, /*tp_as_number */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1276 0, /*tp_as_sequence */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1277 0, /*tp_as_mapping */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1278 0, /*tp_hash */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1279 };
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1280
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1281 /**** Tkinter Module ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1282
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1283 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1284 Tkinter_Create (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1285 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1286 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1287 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1288 char *screenName = NULL;
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1289 char *baseName = NULL;
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1290 char *className = NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1291 int interactive = 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1292
3899
584936890f86 getprogramname --> Py_GetProgramName
Guido van Rossum <guido@python.org>
parents: 3703
diff changeset
1293 baseName = strrchr (Py_GetProgramName (), '/');
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1294 if (baseName != NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1295 baseName++;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1296 else
3899
584936890f86 getprogramname --> Py_GetProgramName
Guido van Rossum <guido@python.org>
parents: 3703
diff changeset
1297 baseName = Py_GetProgramName ();
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1298 className = "Tk";
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1299
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1300 if (!PyArg_ParseTuple (args, "|zssi",
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1301 &screenName, &baseName, &className, &interactive))
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1302 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1303
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1304 return (PyObject *) Tkapp_New (screenName, baseName, className,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1305 interactive);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1306 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1307
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1308 static PyMethodDef moduleMethods[] =
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1309 {
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1310 {"create", Tkinter_Create, 1},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1311 {"createfilehandler", Tkapp_CreateFileHandler, 0},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1312 {"deletefilehandler", Tkapp_DeleteFileHandler, 0},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1313 {"createtimerhandler", Tkapp_CreateTimerHandler, 0},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1314 {"mainloop", Tkapp_MainLoop, 1},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1315 {"dooneevent", Tkapp_DoOneEvent, 1},
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1316 {"quit", Tkapp_Quit},
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1317 {NULL, NULL}
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1318 };
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1319
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1320 #undef WITH_READLINE /* XXX */
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1321 #ifdef WITH_READLINE
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1322 static int
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1323 EventHook ()
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1324 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1325 if (errorInCmd) /* XXX Reset tty */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1326 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1327 errorInCmd = 0;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1328 PyErr_Restore (excInCmd, valInCmd, trbInCmd);
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1329 excInCmd = valInCmd = trbInCmd = NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1330 PyErr_Print ();
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1331 }
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1332 if (Tk_GetNumMainWindows() > 0)
1756
f533791acc77 * tkintermodule.c: OK, I've fixed the "tty" problem. You're right
Guido van Rossum <guido@python.org>
parents: 1713
diff changeset
1333 Tk_DoOneEvent (TK_DONT_WAIT);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1334 return 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1335 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1336 #endif /* WITH_READLINE */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1337
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1338 static void
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1339 Tkinter_Cleanup ()
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1340 {
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1341 /* This segfault with Tk 4.0 beta and seems unnecessary there as well */
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1342 #if TK_MAJOR_VERSION < 4
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1343 /* XXX rl_deprep_terminal is static, damned! */
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1344 while (tkMainWindowList != 0)
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1345 Tk_DestroyWindow (tkMainWindowList->win);
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1346 #endif
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1347 }
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1348
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1349 void
3386
6f5feb3b4829 get rid of bogus name for init_tkinter()
Guido van Rossum <guido@python.org>
parents: 3262
diff changeset
1350 init_tkinter ()
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1351 {
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1352 static inited = 0;
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1353
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1354 #ifdef WITH_READLINE
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1355 extern int (*rl_event_hook) ();
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1356 #endif /* WITH_READLINE */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1357 PyObject *m, *d, *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1358
4091
dc946cab7b9b Hacks to support being a Windows DLL
Guido van Rossum <guido@python.org>
parents: 4079
diff changeset
1359 Tkapp_Type.ob_type = &PyType_Type;
dc946cab7b9b Hacks to support being a Windows DLL
Guido van Rossum <guido@python.org>
parents: 4079
diff changeset
1360 Tktt_Type.ob_type = &PyType_Type;
dc946cab7b9b Hacks to support being a Windows DLL
Guido van Rossum <guido@python.org>
parents: 4079
diff changeset
1361
3231
1acc04478dc3 Renamed module tkinter to _tkinter, moved source to _tkinter.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 3134
diff changeset
1362 m = Py_InitModule ("_tkinter", moduleMethods);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1363
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1364 d = PyModule_GetDict (m);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1365 Tkinter_TclError = Py_BuildValue ("s", "TclError");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1366 PyDict_SetItemString (d, "TclError", Tkinter_TclError);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1367
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1368 v = Py_BuildValue ("i", TK_READABLE);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1369 PyDict_SetItemString (d, "READABLE", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1370 v = Py_BuildValue ("i", TK_WRITABLE);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1371 PyDict_SetItemString (d, "WRITABLE", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1372 v = Py_BuildValue ("i", TK_EXCEPTION);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1373 PyDict_SetItemString (d, "EXCEPTION", v);
2121
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1374 v = Py_BuildValue ("i", TK_X_EVENTS);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1375 PyDict_SetItemString (d, "X_EVENTS", v);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1376 v = Py_BuildValue ("i", TK_FILE_EVENTS);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1377 PyDict_SetItemString (d, "FILE_EVENTS", v);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1378 v = Py_BuildValue ("i", TK_TIMER_EVENTS);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1379 PyDict_SetItemString (d, "TIMER_EVENTS", v);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1380 v = Py_BuildValue ("i", TK_IDLE_EVENTS);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1381 PyDict_SetItemString (d, "IDLE_EVENTS", v);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1382 v = Py_BuildValue ("i", TK_ALL_EVENTS);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1383 PyDict_SetItemString (d, "ALL_EVENTS", v);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1384 v = Py_BuildValue ("i", TK_DONT_WAIT);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1385 PyDict_SetItemString (d, "DONT_WAIT", v);
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1386 v = Py_BuildValue ("s", TK_VERSION);
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1387 PyDict_SetItemString (d, "TK_VERSION", v);
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1388 v = Py_BuildValue ("s", TCL_VERSION);
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1389 PyDict_SetItemString (d, "TCL_VERSION", v);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1390
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1391 #ifdef WITH_READLINE
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1392 rl_event_hook = EventHook;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1393 #endif /* WITH_READLINE */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1394
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1395 if (!inited)
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1396 {
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1397 inited = 1;
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1771
diff changeset
1398 if (Py_AtExit (Tkinter_Cleanup) != 0)
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1771
diff changeset
1399 fprintf(stderr,
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1771
diff changeset
1400 "Tkinter: warning: cleanup procedure not registered\n");
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1401 }
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1402
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1403 if (PyErr_Occurred ())
3231
1acc04478dc3 Renamed module tkinter to _tkinter, moved source to _tkinter.c
Jack Jansen <jack.jansen@cwi.nl>
parents: 3134
diff changeset
1404 Py_FatalError ("can't initialize module _tkinter");
3240
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1405 #ifdef macintosh
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1406 TclMacSetEventProc(PyMacConvertEvent);
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1407 #if GENERATINGCFM
3240
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1408 mac_addlibresources();
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1409 #endif /* GENERATINGCFM */
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1410 #endif /* macintosh */
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1411 }
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1412
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1413
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1414 #ifdef macintosh
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1415
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1416 /*
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1417 ** Anyone who embeds Tcl/Tk on the Mac must define panic().
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1418 */
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1419
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1420 void
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1421 panic(char * format, ...)
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1422 {
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1423 va_list varg;
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1424
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1425 va_start(varg, format);
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1426
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1427 vfprintf(stderr, format, varg);
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1428 (void) fflush(stderr);
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1429
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1430 va_end(varg);
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1431
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1432 Py_FatalError("Tcl/Tk panic");
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1433 }
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1434
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1435 /*
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1436 ** Pass events to SIOUX before passing them to Tk.
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1437 */
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1438
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1439 static int
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1440 PyMacConvertEvent(eventPtr)
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1441 EventRecord *eventPtr;
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1442 {
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1443 if (SIOUXHandleOneEvent(eventPtr))
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1444 return 0; /* Nothing happened to the Tcl event queue */
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1445 return TkMacConvertEvent(eventPtr);
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1446 }
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1447
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1448 #if GENERATINGCFM
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1449
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1450 /*
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1451 ** Additional Mac specific code for dealing with shared libraries.
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1452 */
3262
bfb63b45ff0f Initialize GUSI on the mac.
Jack Jansen <jack.jansen@cwi.nl>
parents: 3240
diff changeset
1453
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1454 #include <Resources.h>
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1455 #include <CodeFragments.h>
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1456
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1457 static int loaded_from_shlib = 0;
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1458 static FSSpec library_fss;
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1459
3240
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1460 /*
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1461 ** If this module is dynamically loaded the following routine should
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1462 ** be the init routine. It takes care of adding the shared library to
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1463 ** the resource-file chain, so that the tk routines can find their
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1464 ** resources.
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1465 */
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1466 OSErr pascal
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1467 init_tkinter_shlib(InitBlockPtr data)
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1468 {
4139
010344b4a616 Call __initialize(), not __sinit() on Mac dynamic loading entry.
Guido van Rossum <guido@python.org>
parents: 4091
diff changeset
1469 __initialize();
3240
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1470 if ( data == nil ) return noErr;
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1471 if ( data->fragLocator.where == kOnDiskFlat ) {
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1472 library_fss = *data->fragLocator.u.onDisk.fileSpec;
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1473 loaded_from_shlib = 1;
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1474 } else if ( data->fragLocator.where == kOnDiskSegmented ) {
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1475 library_fss = *data->fragLocator.u.inSegs.fileSpec;
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1476 loaded_from_shlib = 1;
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1477 }
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1478 return noErr;
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1479 }
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1480
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1481 /*
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1482 ** Insert the library resources into the search path. Put them after
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1483 ** the resources from the application. Again, we ignore errors.
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1484 */
3413
2fe7d489654e Changes to make it work with Tcl/Tk beta 1.
Guido van Rossum <guido@python.org>
parents: 3386
diff changeset
1485 static
3240
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1486 mac_addlibresources()
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1487 {
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1488 if ( !loaded_from_shlib )
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1489 return;
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1490 (void)FSpOpenResFile(&library_fss, fsRdPerm);
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1491 }
f7fd85b32a7d Fix to load needed resources on a mac
Jack Jansen <jack.jansen@cwi.nl>
parents: 3231
diff changeset
1492
3414
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1493 #endif /* GENERATINGCFM */
098cbd6d196e Changes needed to build with Tcl/Tk beta 2!
Guido van Rossum <guido@python.org>
parents: 3413
diff changeset
1494 #endif /* macintosh */