annotate Modules/_tkinter.c @ 3216:d00a79ebb027 legacy-trunk

Added missing imgpbm and imgsgi modules
author Jack Jansen <jack.jansen@cwi.nl>
date Thu, 12 Oct 1995 10:23:27 +0000
parents 2677fbb117d6
children 1acc04478dc3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 /* tkintermodule.c -- Interface to libtk.a and libtcl.a.
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
2 Copyright (C) 1994 Steen Lumholt */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
3
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
4 #include "Python.h"
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
5
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
6 #ifdef macintosh
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
7 #define MAC_TCL
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
8 #endif
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
9
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
10 #ifdef MAC_TCL
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
11 #define WITH_APPINIT
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
12 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
13
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 #define PyInit_tkinter inittkinter
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
15
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 #include <tcl.h>
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 #include <tk.h>
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
18
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 extern char *getprogramname ();
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
20
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
21 /* Internal declarations from tkInt.h. */
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
22 #if (TK_MAJOR_VERSION*1000 + TK_MINOR_VERSION) >= 4001
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
23 extern int Tk_GetNumMainWindows();
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
24 #else
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 extern int tk_NumMainWindows;
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
26 #define Tk_GetNumMainWindows() (tk_NumMainWindows)
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
27 #endif
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
28
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
29 #if TK_MAJOR_VERSION < 4
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
30 extern struct { Tk_Window win; } *tkMainWindowList;
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
31 #endif
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
32
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
33 /**** Tkapp Object Declaration ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
34
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
35 staticforward PyTypeObject Tkapp_Type;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
37 typedef struct
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
38 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
39 PyObject_HEAD
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
40 Tcl_Interp *interp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
41 Tk_Window tkwin;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
42 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
43 TkappObject;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
44
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
45 #define Tkapp_Check(v) ((v)->ob_type == &Tkapp_Type)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 #define Tkapp_Tkwin(v) (((TkappObject *) (v))->tkwin)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 #define Tkapp_Interp(v) (((TkappObject *) (v))->interp)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 #define Tkapp_Result(v) (((TkappObject *) (v))->interp->result)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
49
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
50 #define DEBUG_REFCNT(v) (printf ("DEBUG: id=%p, refcnt=%i\n", \
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
51 (void *) v, ((PyObject *) v)->ob_refcnt))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
52
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
53 /**** Error Handling ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
54
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 static PyObject *Tkinter_TclError;
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
56 static int quitMainLoop = 0;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 static int errorInCmd = 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 static PyObject *excInCmd;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
59 static PyObject *valInCmd;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
60 static PyObject *trbInCmd;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
61
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 Tkinter_Error (v)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 PyErr_SetString (Tkinter_TclError, Tkapp_Result (v));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
69
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 int
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 PythonCmd_Error (interp)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 Tcl_Interp *interp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 errorInCmd = 1;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
75 PyErr_Fetch (&excInCmd, &valInCmd, &trbInCmd);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 return TCL_ERROR;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
78
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
79 /**** Utils ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
80
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
81 static char *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
82 AsString (value, tmp)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
83 PyObject *value;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 PyObject *tmp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
86 if (PyString_Check (value))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
87 return PyString_AsString (value);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
88 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
89 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
90 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
91
2150
448435bfeadc Made some more things static, and other cleanup for new naming scheme
Guido van Rossum <guido@python.org>
parents: 2123
diff changeset
92 v = PyObject_Str (value);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
93 PyList_Append (tmp, v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
94 Py_DECREF (v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
95 return PyString_AsString (v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
96 }
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 #define ARGSZ 64
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
100
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 static char *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
102 Merge (args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
103 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
104 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
105 PyObject *tmp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
106 char *argvStore[ARGSZ];
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
107 char **argv;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
108 int fvStore[ARGSZ];
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
109 int *fv;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
110 int argc;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
111 char *res;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
112 int i;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
113
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
114 tmp = PyList_New (0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
115 argv = argvStore;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
116 fv = fvStore;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
117
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
118 if (!PyTuple_Check (args))
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 argc = 1;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
121 fv[0] = 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
122 argv[0] = AsString (args, tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
123 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
126 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
127
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
128 if (PyTuple_Size (args) > ARGSZ)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
129 {
2505
e920e6c27208 add casts to malloc() calls
Guido van Rossum <guido@python.org>
parents: 2300
diff changeset
130 argv = (char **) malloc (PyTuple_Size (args) * sizeof (char *));
e920e6c27208 add casts to malloc() calls
Guido van Rossum <guido@python.org>
parents: 2300
diff changeset
131 fv = (int *) malloc (PyTuple_Size (args) * sizeof (int));
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
132 if (argv == NULL || fv == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
133 PyErr_NoMemory ();
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
134 }
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 argc = PyTuple_Size (args);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
137 for (i = 0; i < argc; i++)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
138 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
139 v = PyTuple_GetItem (args, i);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
140 if (PyTuple_Check (v))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
141 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
142 fv[i] = 1;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
143 argv[i] = Merge (v);
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 else if (v == Py_None)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
146 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
147 argc = i;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
148 break;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
149 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
150 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
151 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
152 fv[i] = 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
153 argv[i] = AsString (v, tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
154 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
155 }
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
158 res = Tcl_Merge (argc, argv);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
159
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
160 Py_DECREF (tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
161 for (i = 0; i < argc; i++)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
162 if (fv[i]) free (argv[i]);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
163 if (argv != argvStore)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
164 free (argv);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
165 if (fv != fvStore)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
166 free (fv);
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 return res;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
169 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
170
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
171 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
172 Split (self, list)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
173 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
174 char *list;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
175 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
176 int argc;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
177 char **argv;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
178 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
179
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
180 if (list == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
181 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
182 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
183 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
184 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
185
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
186 if (Tcl_SplitList (Tkapp_Interp (self), list, &argc, &argv) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
187 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
188
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
189 if (argc == 0)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
190 v = PyString_FromString ("");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
191 else if (argc == 1)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
192 v = PyString_FromString (argv[0]);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
193 else
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 int i;
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 v = PyTuple_New (argc);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
198 for (i = 0; i < argc; i++)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
199 PyTuple_SetItem (v, i, Split (self, argv[i]));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
200 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
201
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
202 free (argv);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
203 return v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
204 }
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 /**** Tkapp Object ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
207
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
208 #ifndef WITH_APPINIT
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
209 int
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
210 Tcl_AppInit (interp)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
211 Tcl_Interp *interp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
212 {
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
213 Tk_Window main;
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
214 main = Tk_MainWindow(interp);
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
215 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
216 fprintf(stderr, "Tcl_Init error: %s\n", interp->result);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
217 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
218 }
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
219 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
220 fprintf(stderr, "Tk_Init error: %s\n", interp->result);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
221 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
222 }
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
223 return TCL_OK;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
224 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
225 #endif /* !WITH_APPINIT */
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 /* Initialize the Tk application; see the `main' function in
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
228 `tkMain.c'. */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
229 static TkappObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
230 Tkapp_New (screenName, baseName, className, interactive)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
231 char *screenName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
232 char *baseName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
233 char *className;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
234 int interactive;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
235 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
236 TkappObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
237
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
238 v = PyObject_NEW (TkappObject, &Tkapp_Type);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
239 if (v == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
240 return NULL;
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 v->interp = Tcl_CreateInterp ();
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
243 v->tkwin = Tk_CreateMainWindow (v->interp, screenName,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 baseName, className);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
245 if (v->tkwin == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
246 return (TkappObject *) Tkinter_Error ((PyObject *) v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
247
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
248 Tk_GeometryRequest (v->tkwin, 200, 200);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
249
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
250 if (screenName != NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
251 Tcl_SetVar2 (v->interp, "env", "DISPLAY", screenName, TCL_GLOBAL_ONLY);
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 if (interactive)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
254 Tcl_SetVar (v->interp, "tcl_interactive", "1", TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
255 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
256 Tcl_SetVar (v->interp, "tcl_interactive", "0", TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
257
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
258 if (Tcl_AppInit (v->interp) != TCL_OK)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
259 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
260 PyErr_SetString (Tkinter_TclError, "Tcl_AppInit failed"); /* XXX */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
261 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
262 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
263
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
264 return v;
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
267 /** Tcl Eval **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
268
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
269 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
270 Tkapp_Call (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
271 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
272 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
273 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
274 char *cmd;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
275
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
276 cmd = Merge (args);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
277 if (Tcl_Eval (Tkapp_Interp (self), cmd) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
278 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
279 free (cmd);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
280 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
281 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
282
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
283 free (cmd);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
284 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
285 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
286
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
287 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
288 Tkapp_GlobalCall (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
289 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 PyObject *args;
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 char *cmd;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
293
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
294 cmd = Merge (args);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 if (Tcl_GlobalEval (Tkapp_Interp (self), cmd) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
296 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
297 free (cmd);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
298 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
299 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
300
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
301 free (cmd);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
302 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
303 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
304
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
305 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
306 Tkapp_Eval (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
307 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
308 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
309 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
310 char *script;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
311
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
312 if (!PyArg_Parse (args, "s", &script))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
313 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
314
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
315 if (Tcl_Eval (Tkapp_Interp (self), script) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
316 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
317
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
318 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
319 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
320
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
322 Tkapp_GlobalEval (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
323 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
324 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
325 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
326 char *script;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
327
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
328 if (!PyArg_Parse (args, "s", &script))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
329 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
330
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
331 if (Tcl_GlobalEval (Tkapp_Interp (self), script) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
333
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
334 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
335 }
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 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
338 Tkapp_EvalFile (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
339 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
340 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
341 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
342 char *fileName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
343
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
344 if (!PyArg_Parse (args, "s", &fileName))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
345 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
346
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
347 if (Tcl_EvalFile (Tkapp_Interp (self), fileName) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
348 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
349
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
350 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
351 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
352
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
354 Tkapp_Record (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
355 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
356 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
357 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
358 char *script;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
359
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
360 if (!PyArg_Parse (args, "s", &script))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
361 return NULL;
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 if (Tcl_RecordAndEval (Tkapp_Interp (self),
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
364 script, TCL_NO_EVAL) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
365 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
366
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
367 return PyString_FromString (Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
368 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
369
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
370 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
371 Tkapp_AddErrorInfo (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
372 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
373 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
374 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
375 char *msg;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
376
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
377 if (!PyArg_Parse (args, "s", &msg))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
378 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
379 Tcl_AddErrorInfo (Tkapp_Interp (self), msg);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
380
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
381 Py_INCREF(Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
382 return Py_None;
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
385 /** Tcl Variable **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
386
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
387 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
388 SetVar (self, args, flags)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
389 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
390 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
391 int flags;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
392 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
393 char *name1, *name2, *ok;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
394 PyObject *newValue;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
395 PyObject *tmp;
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 tmp = PyList_New (0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
398
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
399 if (PyArg_Parse (args, "(sO)", &name1, &newValue))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
400 ok = Tcl_SetVar (Tkapp_Interp (self), name1,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
401 AsString (newValue, tmp), flags); /* XXX Merge? */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
402 else if (PyArg_Parse (args, "(ssO)", &name1, &name2, &newValue))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
403 ok = Tcl_SetVar2 (Tkapp_Interp (self), name1, name2,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
404 AsString (newValue, tmp), flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
405 else
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 Py_DECREF (tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
408 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
409 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
410 Py_DECREF (tmp);
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 (!ok)
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 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
416 return Py_None;
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
419 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
420 Tkapp_SetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
421 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
422 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
423 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
424 return SetVar (self, args, TCL_LEAVE_ERR_MSG);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
425 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
426
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
427 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
428 Tkapp_GlobalSetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
429 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
430 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
431 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
432 return SetVar (self, args, TCL_LEAVE_ERR_MSG | TCL_GLOBAL_ONLY);
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
435 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
436 GetVar (self, args, flags)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
437 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
438 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 int flags;
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 char *name1, *name2, *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
442
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
443 if (PyArg_Parse (args, "s", &name1))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
444 s = Tcl_GetVar (Tkapp_Interp (self), name1, flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
445 else if (PyArg_Parse (args, "(ss)", &name1, &name2))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
446 s = Tcl_GetVar2 (Tkapp_Interp (self), name1, name2, flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
447 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
448 return NULL;
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 if (s == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
451 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
452
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
453 return PyString_FromString (s);
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
456 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
457 Tkapp_GetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
458 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
459 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
460 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
461 return GetVar (self, args, TCL_LEAVE_ERR_MSG);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
462 }
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 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
465 Tkapp_GlobalGetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
466 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
467 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
468 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
469 return GetVar (self, args, TCL_LEAVE_ERR_MSG | TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
470 }
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 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
473 UnsetVar (self, args, flags)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
474 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
475 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
476 int flags;
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 char *name1, *name2;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
479 int code;
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 if (PyArg_Parse (args, "s", &name1))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
482 code = Tcl_UnsetVar (Tkapp_Interp (self), name1, flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
483 else if (PyArg_Parse (args, "(ss)", &name1, &name2))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
484 code = Tcl_UnsetVar2 (Tkapp_Interp (self), name1, name2, flags);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
485 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
486 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
487
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
488 if (code == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
489 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
490
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
491 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
492 return Py_None;
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
495 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
496 Tkapp_UnsetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
497 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
498 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
499 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
500 return UnsetVar (self, args, TCL_LEAVE_ERR_MSG);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
501 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
502
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
503 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
504 Tkapp_GlobalUnsetVar (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
505 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
506 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
507 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
508 return UnsetVar (self, args, TCL_LEAVE_ERR_MSG | TCL_GLOBAL_ONLY);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
509 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
510
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
511 /** Tcl to Python **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
512
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
513 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
514 Tkapp_GetInt (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
515 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
516 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
517 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
518 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
519 int v;
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 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
522 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
523 if (Tcl_GetInt (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
524 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
525 return Py_BuildValue ("i", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
526 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
527
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
528 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
529 Tkapp_GetDouble (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
530 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
531 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
532 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
533 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
534 double v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
535
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
536 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
537 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
538 if (Tcl_GetDouble (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
539 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
540 return Py_BuildValue ("d", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
541 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
542
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
543 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
544 Tkapp_GetBoolean (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
545 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
546 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
547 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
548 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
549 int v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
550
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
551 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
552 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
553 if (Tcl_GetBoolean (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
554 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
555 return Py_BuildValue ("i", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
556 }
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 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
559 Tkapp_ExprString (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
560 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
561 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
562 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
563 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
564
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
565 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
566 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
567 if (Tcl_ExprString (Tkapp_Interp (self), s) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
568 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
569 return Py_BuildValue ("s", Tkapp_Result (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
570 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
571
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
572 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
573 Tkapp_ExprLong (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
574 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
575 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
576 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
577 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
578 long v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
579
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
580 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
581 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
582 if (Tcl_ExprLong (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
583 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
584 return Py_BuildValue ("l", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
585 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
586
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
587 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
588 Tkapp_ExprDouble (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
589 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
590 PyObject *args;
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 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
593 double v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
594
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
595 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
596 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
597 if (Tcl_ExprDouble (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
598 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
599 return Py_BuildValue ("d", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
600 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
601
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
602 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
603 Tkapp_ExprBoolean (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
604 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
605 PyObject *args;
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 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
608 int v;
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 if (!PyArg_Parse (args, "s", &s))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
611 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
612 if (Tcl_ExprBoolean (Tkapp_Interp (self), s, &v) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
613 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
614 return Py_BuildValue ("i", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
615 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
616
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
617 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
618 Tkapp_SplitList (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
619 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
620 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
621 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
622 char *list;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
623 int argc;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
624 char **argv;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
625 PyObject *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
626 int i;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
627
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
628 if (!PyArg_Parse (args, "s", &list))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
629 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
630
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
631 if (Tcl_SplitList (Tkapp_Interp (self), list, &argc, &argv) == TCL_ERROR)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
632 return Tkinter_Error (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
633
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
634 v = PyTuple_New (argc);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
635 for (i = 0; i < argc; i++)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
636 PyTuple_SetItem (v, i, PyString_FromString (argv[i]));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
637
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
638 free (argv);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
639 return v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
640 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
641
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
642 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
643 Tkapp_Split (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
644 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
645 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
646 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
647 char *list;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
648
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
649 if (!PyArg_Parse (args, "s", &list))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
650 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
651 return Split (self, list);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
652 }
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 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
655 Tkapp_Merge (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
656 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
657 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
658 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
659 char *s;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
660 PyObject *v;
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 s = Merge (args);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
663 v = PyString_FromString (s);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
664 free (s);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
665 return v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
666 }
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 /** Tcl Command **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
669
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
670 /* This is the Tcl command that acts as a wrapper for Python
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
671 function or method. */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
672 static int
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
673 PythonCmd (clientData, interp, argc, argv)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
674 ClientData clientData; /* Is (self, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
675 Tcl_Interp *interp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
676 int argc;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
677 char *argv[];
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
678 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
679 PyObject *self, *func, *arg, *res, *tmp;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
680 int i;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
681
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
682 self = PyTuple_GetItem ((PyObject *) clientData, 0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
683 func = PyTuple_GetItem ((PyObject *) clientData, 1);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
684
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
685 /* Create argument list (argv1, ..., argvN) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
686 arg = PyTuple_New (argc - 1);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
687 for (i = 0; i < (argc - 1); i++)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
688 PyTuple_SetItem (arg, i, PyString_FromString (argv[i + 1]));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
689
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
690 res = PyEval_CallObject (func, arg);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
691 Py_DECREF (arg);
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
692
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
693 if (res == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
694 return PythonCmd_Error (interp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
695
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
696 tmp = PyList_New (0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
697 Tcl_SetResult (Tkapp_Interp (self), AsString (res, tmp), TCL_VOLATILE);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
698 Py_DECREF (res);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
699 Py_DECREF (tmp);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
700
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
701 return TCL_OK;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
702 }
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 static void
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
705 PythonCmdDelete (clientData)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
706 ClientData clientData; /* Is (self, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
707 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
708 Py_DECREF ((PyObject *) clientData);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
710
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
711 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
712 Tkapp_CreateCommand (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
713 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
715 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 char *cmdName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
717 PyObject *data;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
718 PyObject *func;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
719
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
720 /* Args is: (cmdName, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
721 if (!PyTuple_Check (args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
722 || !(PyTuple_Size (args) == 2)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
723 || !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
724 || !PyCallable_Check (PyTuple_GetItem (args, 1)))
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
725 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
726 PyErr_SetString (PyExc_TypeError, "bad argument list");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
727 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
728 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
729
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
730 cmdName = PyString_AsString (PyTuple_GetItem (args, 0));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
731 func = PyTuple_GetItem (args, 1);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
732
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
733 data = PyTuple_New (2); /* ClientData is: (self, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
734
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
735 Py_INCREF (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
736 PyTuple_SetItem (data, 0, self);
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 Py_INCREF (func);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
739 PyTuple_SetItem (data, 1, func);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
740
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
741 Tcl_CreateCommand (Tkapp_Interp (self), cmdName, PythonCmd,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
742 (ClientData) data, PythonCmdDelete);
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 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
745 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
746 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
747
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
748 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
749 Tkapp_DeleteCommand (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
750 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
751 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
752 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
753 char *cmdName;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
754
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
755 if (!PyArg_Parse (args, "s", &cmdName))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
757 if (Tcl_DeleteCommand (Tkapp_Interp (self), cmdName) == -1)
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 PyErr_SetString (Tkinter_TclError, "can't delete Tcl command");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
760 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
761 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
762 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
763 return Py_None;
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
766 /** File Handler **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
767
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
768 static void
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
769 FileHandler (clientData, mask)
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
770 ClientData clientData; /* Is: (func, file) */
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
771 int mask;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
772 {
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
773 PyObject *func, *file, *arg, *res;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
774
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
775 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
776 file = PyTuple_GetItem ((PyObject *) clientData, 1);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
777
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
778 arg = Py_BuildValue ("(Oi)", file, (long) mask);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
779 res = PyEval_CallObject (func, arg);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
780 Py_DECREF (arg);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
781 if (res == NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
782 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
783 errorInCmd = 1;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
784 PyErr_Fetch (&excInCmd, &valInCmd, &trbInCmd);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
785 }
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
786 Py_XDECREF (res);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
787 }
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
788
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
789 static int
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
790 GetFileNo (file)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
791 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
792 .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
793 {
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
794 PyObject *meth, *args, *res;
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
795 int id;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
796 if (PyInt_Check(file)) {
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
797 id = PyInt_AsLong(file);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
798 if (id < 0)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
799 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
800 return id;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
801 }
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
802 meth = PyObject_GetAttrString(file, "fileno");
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
803 if (meth == NULL)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
804 return -1;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
805 args = PyTuple_New(0);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
806 if (args == NULL)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
807 return -1;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
808 res = PyEval_CallObject(meth, args);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
809 Py_DECREF(args);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
810 Py_DECREF(meth);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
811 if (res == NULL)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
812 return -1;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
813 if (PyInt_Check(res))
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
814 id = PyInt_AsLong(res);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
815 else
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
816 id = -1;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
817 if (id < 0)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
818 PyErr_SetString(PyExc_ValueError,
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
819 "invalid fileno() return value");
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
820 Py_DECREF(res);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
821 return id;
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
824 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
825 Tkapp_CreateFileHandler (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
826 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
827 PyObject *args; /* Is (file, mask, func) */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
828 {
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
829 PyObject *file, *func, *data;
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
830 int mask, id;
1664
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 if (!PyArg_Parse (args, "(OiO)", &file, &mask, &func))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
833 return NULL;
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
834 id = GetFileNo (file);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
835 if (id < 0)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
836 return NULL;
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
837 if (!PyCallable_Check(func))
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
838 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
839 PyErr_SetString (PyExc_TypeError, "bad argument list");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
840 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
841 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
842
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
843 /* ClientData is: (func, file) */
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
844 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
845
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
846 Tk_CreateFileHandler (id, mask, FileHandler, (ClientData) data);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
847 /* XXX fileHandlerDict */
1690
93e036786b17 * tkintermodule.c (Tkapp_New): Remove #ifdef WITH_APPINIT.
Guido van Rossum <guido@python.org>
parents: 1664
diff changeset
848
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
849 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
850 return Py_None;
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
853 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
854 Tkapp_DeleteFileHandler (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
855 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
856 PyObject *args; /* Args: file */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
857 {
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
858 PyObject *file;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
859 int id;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
860
1771
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
861 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
862 return NULL;
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
863 id = GetFileNo (file);
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
864 if (id < 0)
51c2e5a9f39c * tkintermodule.c (*FileHandler): generalize to arbitrary file ids
Guido van Rossum <guido@python.org>
parents: 1756
diff changeset
865 return NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
866
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
867 Tk_DeleteFileHandler (id);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
868 /* XXX fileHandlerDict */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
869 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
870 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
871 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
872
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
873 /**** 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
874
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
875 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
876
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
877 typedef struct
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
878 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
879 PyObject_HEAD
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
880 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
881 PyObject *func;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
882 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
883 TkttObject;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
884
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
885 static PyObject *
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
886 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
887 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
888 PyObject *args;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
889 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
890 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
891
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
892 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
893 return NULL;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
894 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
895 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
896 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
897 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
898 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
899 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
900 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
901 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
902 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
903
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
904 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
905 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
906 {"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
907 {NULL, NULL}
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
908 };
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
909
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
910 static TkttObject *
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
911 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
912 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
913 PyObject *func;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
914 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
915 TkttObject *v;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
916
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
917 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
918 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
919 return NULL;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
920
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
921 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
922 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
923 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
924 return v;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
925 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
926
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
927 static void
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
928 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
929 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
930 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
931 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
932 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
933
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
934 static int
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
935 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
936 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
937 FILE *fp;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
938 int flags;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
939 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
940 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
941
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
942 fprintf(fp, "<tktimertoken at 0x%x%s>", v,
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
943 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
944 return 0;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
945 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
946
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
947 static PyObject *
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
948 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
949 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
950 char *name;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
951 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
952 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
953 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
954
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
955 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
956 {
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
957 PyObject_HEAD_INIT (&PyType_Type)
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
958 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
959 "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
960 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
961 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
962 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
963 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
964 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
965 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
966 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
967 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
968 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
969 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
970 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
971 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
972 };
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
973
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
974 /** Timer Handler **/
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
975
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
976 static void
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
977 TimerHandler (clientData)
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
978 ClientData clientData;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
979 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
980 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
981 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
982
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
983 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
984 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
985 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
986 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
987 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
988 errorInCmd = 1;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
989 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
990 }
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
991 else
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
992 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
993 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
994
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
995 static PyObject *
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
996 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
997 PyObject *self;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
998 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
999 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1000 int milliseconds;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1001 PyObject *func;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1002 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
1003
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1004 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
1005 return NULL;
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1006 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
1007 {
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1008 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
1009 return NULL;
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1010 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1011 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
1012 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
1013 }
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1014
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1015 /** Event Loop **/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1016
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1017 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1018 Tkapp_MainLoop (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1019 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1020 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1021 {
2009
392db1881190 added timer and file callbacks and global mainloop and quit fns
Guido van Rossum <guido@python.org>
parents: 1888
diff changeset
1022 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
1023
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1024 if (!PyArg_ParseTuple (args, "|i", &threshold))
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1025 return NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1026
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1027 quitMainLoop = 0;
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1028 while (Tk_GetNumMainWindows() > threshold && !quitMainLoop && !errorInCmd)
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1029 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1030 if (PyOS_InterruptOccurred ())
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1031 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1032 PyErr_SetNone (PyExc_KeyboardInterrupt);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1033 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1034 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1035 Tk_DoOneEvent (0);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1036 }
3134
2677fbb117d6 clear quitMainLoop when we fall through the main loop
Guido van Rossum <guido@python.org>
parents: 3120
diff changeset
1037 quitMainLoop = 0;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1038
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1039 if (errorInCmd)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1040 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1041 errorInCmd = 0;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1042 PyErr_Restore (excInCmd, valInCmd, trbInCmd);
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1043 excInCmd = valInCmd = trbInCmd = NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1044 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1045 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1046 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1047 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1048 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1049
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1050 static PyObject *
2121
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1051 Tkapp_DoOneEvent (self, args)
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1052 PyObject *self;
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1053 PyObject *args;
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1054 {
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1055 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
1056 int rv;
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1057
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1058 if (!PyArg_ParseTuple (args, "|i", &flags))
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1059 return NULL;
2121
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1060 rv = Tk_DoOneEvent(flags);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1061 return Py_BuildValue ("i", rv);
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1062 }
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1063
86d9e91405c8 added interface to Tk_DoOneEvent (R Lindsay Todd)
Guido van Rossum <guido@python.org>
parents: 2055
diff changeset
1064 static PyObject *
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1065 Tkapp_Quit (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1066 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1067 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1068 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1069
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1070 if (!PyArg_Parse (args, ""))
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1071 return NULL;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1072 quitMainLoop = 1;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1073 Py_INCREF (Py_None);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1074 return Py_None;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1075 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1076
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1077 /**** Tkapp Method List ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1078
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1079 static PyMethodDef Tkapp_methods[] =
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1080 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1081 {"call", Tkapp_Call},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1082 {"globalcall", Tkapp_GlobalCall},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1083 {"eval", Tkapp_Eval},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1084 {"globaleval", Tkapp_GlobalEval},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1085 {"evalfile", Tkapp_EvalFile},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1086 {"record", Tkapp_Record},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1087 {"adderrorinfo", Tkapp_AddErrorInfo},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1088 {"setvar", Tkapp_SetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1089 {"globalsetvar", Tkapp_GlobalSetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1090 {"getvar", Tkapp_GetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1091 {"globalgetvar", Tkapp_GlobalGetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1092 {"unsetvar", Tkapp_UnsetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1093 {"globalunsetvar", Tkapp_GlobalUnsetVar},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1094 {"getint", Tkapp_GetInt},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1095 {"getdouble", Tkapp_GetDouble},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1096 {"getboolean", Tkapp_GetBoolean},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1097 {"exprstring", Tkapp_ExprString},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1098 {"exprlong", Tkapp_ExprLong},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1099 {"exprdouble", Tkapp_ExprDouble},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1100 {"exprboolean", Tkapp_ExprBoolean},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1101 {"splitlist", Tkapp_SplitList},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1102 {"split", Tkapp_Split},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1103 {"merge", Tkapp_Merge},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1104 {"createcommand", Tkapp_CreateCommand},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1105 {"deletecommand", Tkapp_DeleteCommand},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1106 {"createfilehandler", Tkapp_CreateFileHandler},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1107 {"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
1108 {"createtimerhandler", Tkapp_CreateTimerHandler},
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1109 {"mainloop", Tkapp_MainLoop, 1},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1110 {"dooneevent", Tkapp_DoOneEvent, 1},
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1111 {"quit", Tkapp_Quit},
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1112 {NULL, NULL}
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1113 };
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1114
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1115 /**** Tkapp Type Methods ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1116
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1117 static void
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1118 Tkapp_Dealloc (self)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1119 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1120 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1121 Tk_DestroyWindow (Tkapp_Tkwin (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1122 Tcl_DeleteInterp (Tkapp_Interp (self));
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1123 PyMem_DEL (self);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1124 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1125
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1126 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1127 Tkapp_GetAttr (self, name)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1128 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1129 char *name;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1130 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1131 return Py_FindMethod (Tkapp_methods, self, name);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1132 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1133
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1134 static PyTypeObject Tkapp_Type =
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1135 {
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
1136 PyObject_HEAD_INIT (&PyType_Type)
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1137 0, /*ob_size */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1138 "tkapp", /*tp_name */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1139 sizeof (TkappObject), /*tp_basicsize */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1140 0, /*tp_itemsize */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1141 Tkapp_Dealloc, /*tp_dealloc */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1142 0, /*tp_print */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1143 Tkapp_GetAttr, /*tp_getattr */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1144 0, /*tp_setattr */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1145 0, /*tp_compare */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1146 0, /*tp_repr */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1147 0, /*tp_as_number */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1148 0, /*tp_as_sequence */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1149 0, /*tp_as_mapping */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1150 0, /*tp_hash */
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
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1153 /**** Tkinter Module ****/
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1154
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1155 static PyObject *
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1156 Tkinter_Create (self, args)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1157 PyObject *self;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1158 PyObject *args;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1159 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1160 char *screenName = NULL;
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1161 char *baseName = NULL;
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1162 char *className = NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1163 int interactive = 0;
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 baseName = strrchr (getprogramname (), '/');
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1166 if (baseName != NULL)
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1167 baseName++;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1168 else
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1169 baseName = getprogramname ();
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1170 className = "Tk";
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1171
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1172 if (!PyArg_ParseTuple (args, "|zssi",
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1173 &screenName, &baseName, &className, &interactive))
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1174 return NULL;
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 return (PyObject *) Tkapp_New (screenName, baseName, className,
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1177 interactive);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1178 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1179
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1180 static PyMethodDef moduleMethods[] =
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1181 {
2858
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1182 {"create", Tkinter_Create, 1},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1183 {"createfilehandler", Tkapp_CreateFileHandler, 0},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1184 {"deletefilehandler", Tkapp_DeleteFileHandler, 0},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1185 {"createtimerhandler", Tkapp_CreateTimerHandler, 0},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1186 {"mainloop", Tkapp_MainLoop, 1},
eb1ed4d84629 use getnewargs where it makes sense
Guido van Rossum <guido@python.org>
parents: 2505
diff changeset
1187 {"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
1188 {"quit", Tkapp_Quit},
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1189 {NULL, NULL}
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1190 };
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1191
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1192 #undef WITH_READLINE /* XXX */
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1193 #ifdef WITH_READLINE
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1194 static int
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1195 EventHook ()
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1196 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1197 if (errorInCmd) /* XXX Reset tty */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1198 {
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1199 errorInCmd = 0;
2055
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1200 PyErr_Restore (excInCmd, valInCmd, trbInCmd);
cf31eab6ab5a Another bulky set of minor changes.
Guido van Rossum <guido@python.org>
parents: 2009
diff changeset
1201 excInCmd = valInCmd = trbInCmd = NULL;
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1202 PyErr_Print ();
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1203 }
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1204 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
1205 Tk_DoOneEvent (TK_DONT_WAIT);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1206 return 0;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1207 }
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1208 #endif /* WITH_READLINE */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1209
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1210 static void
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1211 Tkinter_Cleanup ()
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1212 {
2300
d2049a1d3cc5 use PyCallable_Check; export TK_VERSION and TCL_VERSION strings;
Guido van Rossum <guido@python.org>
parents: 2150
diff changeset
1213 /* 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
1214 #if TK_MAJOR_VERSION < 4
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1215 /* XXX rl_deprep_terminal is static, damned! */
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1216 while (tkMainWindowList != 0)
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1217 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
1218 #endif
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1219 }
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1220
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1221 void
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1222 PyInit_tkinter ()
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1223 {
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1224 static inited = 0;
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1225
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1226 #ifdef WITH_READLINE
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1227 extern int (*rl_event_hook) ();
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1228 #endif /* WITH_READLINE */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1229 PyObject *m, *d, *v;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1230
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1231 m = Py_InitModule ("tkinter", moduleMethods);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1232
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1233 d = PyModule_GetDict (m);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1234 Tkinter_TclError = Py_BuildValue ("s", "TclError");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1235 PyDict_SetItemString (d, "TclError", Tkinter_TclError);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1236
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1237 v = Py_BuildValue ("i", TK_READABLE);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1238 PyDict_SetItemString (d, "READABLE", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1239 v = Py_BuildValue ("i", TK_WRITABLE);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1240 PyDict_SetItemString (d, "WRITABLE", v);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1241 v = Py_BuildValue ("i", TK_EXCEPTION);
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1242 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
1243 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
1244 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
1245 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
1246 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
1247 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
1248 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
1249 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
1250 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
1251 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
1252 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
1253 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
1254 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
1255 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
1256 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
1257 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
1258 PyDict_SetItemString (d, "TCL_VERSION", v);
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1259
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1260 #ifdef WITH_READLINE
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1261 rl_event_hook = EventHook;
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1262 #endif /* WITH_READLINE */
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1263
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1264 if (!inited)
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1265 {
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1266 inited = 1;
1867
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1771
diff changeset
1267 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
1268 fprintf(stderr,
758c1374f303 Setup.in: added tkinter; rearranged the definition of PYTHONPATH so
Guido van Rossum <guido@python.org>
parents: 1771
diff changeset
1269 "Tkinter: warning: cleanup procedure not registered\n");
1713
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1270 }
bb566d28caa0 * tkintermodule.c
Guido van Rossum <guido@python.org>
parents: 1690
diff changeset
1271
1664
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1272 if (PyErr_Occurred ())
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1273 Py_FatalError ("can't initialize module tkinter");
a09efb135de5 Initial revision
Guido van Rossum <guido@python.org>
parents:
diff changeset
1274 }
3120
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1275
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1276 #ifdef macintosh
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1277 void
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1278 panic(char * format, ...)
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1279 {
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1280 va_list varg;
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1281
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1282 va_start(varg, format);
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1283
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1284 vfprintf(stderr, format, varg);
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1285 (void) fflush(stderr);
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1286
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1287 va_end(varg);
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1288
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1289 Py_FatalError("Tcl/Tk panic");
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1290 }
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1291
4a12a543175d Mac changes
Guido van Rossum <guido@python.org>
parents: 2858
diff changeset
1292 #endif