blob: 53467e4b26de0b95f38bb801b3d18dccebf0bf67 [file] [log] [blame]
Guido van Rossum17448e21995-01-30 11:53:55 +00001
2/* =========================== Module AE ============================ */
3
4#include "Python.h"
5
6
7
8#define SystemSevenOrLater 1
9
10#include "macglue.h"
11#include <Memory.h>
12#include <Dialogs.h>
13#include <Menus.h>
14#include <Controls.h>
15
16extern PyObject *ResObj_New(Handle);
17extern int ResObj_Convert(PyObject *, Handle *);
18
19extern PyObject *WinObj_New(WindowPtr);
20extern int WinObj_Convert(PyObject *, WindowPtr *);
21
22extern PyObject *DlgObj_New(DialogPtr);
23extern int DlgObj_Convert(PyObject *, DialogPtr *);
24extern PyTypeObject Dialog_Type;
25#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
26
27extern PyObject *MenuObj_New(MenuHandle);
28extern int MenuObj_Convert(PyObject *, MenuHandle *);
29
30extern PyObject *CtlObj_New(ControlHandle);
31extern int CtlObj_Convert(PyObject *, ControlHandle *);
32
Guido van Rossumb19a6451995-02-05 16:58:33 +000033extern PyObject *WinObj_WhichWindow(WindowPtr);
34
Guido van Rossum17448e21995-01-30 11:53:55 +000035#include <AppleEvents.h>
36
Guido van Rossum3075b321995-02-14 09:48:02 +000037#ifndef HAVE_UNIVERSAL_HEADERS
Guido van Rossumb19a6451995-02-05 16:58:33 +000038#define AEIdleProcPtr IdleProcPtr
Guido van Rossum17448e21995-01-30 11:53:55 +000039#define AEFilterProcPtr EventFilterProcPtr
40#define AEEventHandlerProcPtr EventHandlerProcPtr
41#endif
42
Guido van Rossum3075b321995-02-14 09:48:02 +000043#ifndef HAVE_UNIVERSAL_HEADERS
44/* I'm trying to setup the code here so that is easily automated,
Guido van Rossumb19a6451995-02-05 16:58:33 +000045** as follows:
46** - Use the UPP in the source
47** - for pre-universal headers, #define each UPP as the corresponding ProcPtr
48** - for each routine we pass we declare a upp_xxx that
49** we initialize to the correct value in the init routine.
50*/
51#define AEIdleUPP AEIdleProcPtr
52#define AEFilterUPP AEFilterProcPtr
53#define AEEventHandlerUPP AEEventHandlerProcPtr
54#define NewAEIdleProc(x) (x)
55#define NewAEFilterProc(x) (x)
56#define NewAEEventHandlerProc(x) (x)
57#endif
58
Guido van Rossum17448e21995-01-30 11:53:55 +000059static pascal OSErr GenericEventHandler(); /* Forward */
60
Guido van Rossumb19a6451995-02-05 16:58:33 +000061AEEventHandlerUPP upp_GenericEventHandler;
62
Guido van Rossum17448e21995-01-30 11:53:55 +000063static pascal Boolean AEIdleProc(EventRecord *theEvent, long *sleepTime, RgnHandle *mouseRgn)
64{
Jack Jansenc7cfb951995-06-05 22:34:12 +000065 PyMac_Yield();
Guido van Rossum17448e21995-01-30 11:53:55 +000066 return 0;
67}
68
Guido van Rossumb19a6451995-02-05 16:58:33 +000069AEIdleUPP upp_AEIdleProc;
70
Guido van Rossum17448e21995-01-30 11:53:55 +000071static PyObject *AE_Error;
72
73/* ----------------------- Object type AEDesc ----------------------- */
74
75staticforward PyTypeObject AEDesc_Type;
76
77#define AEDesc_Check(x) ((x)->ob_type == &AEDesc_Type)
78
79typedef struct AEDescObject {
80 PyObject_HEAD
81 AEDesc ob_itself;
82} AEDescObject;
83
84static PyObject *AEDesc_New(itself)
Guido van Rossum97842951995-02-19 15:59:49 +000085 AEDesc *itself;
Guido van Rossum17448e21995-01-30 11:53:55 +000086{
87 AEDescObject *it;
88 it = PyObject_NEW(AEDescObject, &AEDesc_Type);
89 if (it == NULL) return NULL;
90 it->ob_itself = *itself;
91 return (PyObject *)it;
92}
93static AEDesc_Convert(v, p_itself)
94 PyObject *v;
95 AEDesc *p_itself;
96{
97 if (!AEDesc_Check(v))
98 {
99 PyErr_SetString(PyExc_TypeError, "AEDesc required");
100 return 0;
101 }
102 *p_itself = ((AEDescObject *)v)->ob_itself;
103 return 1;
104}
105
106static void AEDesc_dealloc(self)
107 AEDescObject *self;
108{
109 AEDisposeDesc(&self->ob_itself);
110 PyMem_DEL(self);
111}
112
113static PyObject *AEDesc_AECoerceDesc(_self, _args)
114 AEDescObject *_self;
115 PyObject *_args;
116{
117 PyObject *_res = NULL;
118 OSErr _err;
119 DescType toType;
120 AEDesc result;
121 if (!PyArg_ParseTuple(_args, "O&",
122 PyMac_GetOSType, &toType))
123 return NULL;
124 _err = AECoerceDesc(&_self->ob_itself,
125 toType,
126 &result);
127 if (_err != noErr) return PyMac_Error(_err);
128 _res = Py_BuildValue("O&",
129 AEDesc_New, &result);
130 return _res;
131}
132
133static PyObject *AEDesc_AEDuplicateDesc(_self, _args)
134 AEDescObject *_self;
135 PyObject *_args;
136{
137 PyObject *_res = NULL;
138 OSErr _err;
139 AEDesc result;
140 if (!PyArg_ParseTuple(_args, ""))
141 return NULL;
142 _err = AEDuplicateDesc(&_self->ob_itself,
143 &result);
144 if (_err != noErr) return PyMac_Error(_err);
145 _res = Py_BuildValue("O&",
146 AEDesc_New, &result);
147 return _res;
148}
149
150static PyObject *AEDesc_AECountItems(_self, _args)
151 AEDescObject *_self;
152 PyObject *_args;
153{
154 PyObject *_res = NULL;
155 OSErr _err;
156 long theCount;
157 if (!PyArg_ParseTuple(_args, ""))
158 return NULL;
159 _err = AECountItems(&_self->ob_itself,
160 &theCount);
161 if (_err != noErr) return PyMac_Error(_err);
162 _res = Py_BuildValue("l",
163 theCount);
164 return _res;
165}
166
Jack Jansen5ae5fdf1995-07-17 11:40:10 +0000167static PyObject *AEDesc_AEPutPtr(_self, _args)
168 AEDescObject *_self;
169 PyObject *_args;
170{
171 PyObject *_res = NULL;
172 OSErr _err;
173 long index;
174 DescType typeCode;
175 char *dataPtr__in__;
176 long dataPtr__len__;
177 int dataPtr__in_len__;
178 if (!PyArg_ParseTuple(_args, "lO&s#",
179 &index,
180 PyMac_GetOSType, &typeCode,
181 &dataPtr__in__, &dataPtr__in_len__))
182 return NULL;
183 dataPtr__len__ = dataPtr__in_len__;
184 _err = AEPutPtr(&_self->ob_itself,
185 index,
186 typeCode,
187 dataPtr__in__, dataPtr__len__);
188 if (_err != noErr) return PyMac_Error(_err);
189 Py_INCREF(Py_None);
190 _res = Py_None;
191 dataPtr__error__: ;
192 return _res;
193}
194
195static PyObject *AEDesc_AEPutDesc(_self, _args)
196 AEDescObject *_self;
197 PyObject *_args;
198{
199 PyObject *_res = NULL;
200 OSErr _err;
201 long index;
202 AEDesc theAEDesc;
203 if (!PyArg_ParseTuple(_args, "lO&",
204 &index,
205 AEDesc_Convert, &theAEDesc))
206 return NULL;
207 _err = AEPutDesc(&_self->ob_itself,
208 index,
209 &theAEDesc);
210 if (_err != noErr) return PyMac_Error(_err);
211 Py_INCREF(Py_None);
212 _res = Py_None;
213 return _res;
214}
215
Guido van Rossum17448e21995-01-30 11:53:55 +0000216static PyObject *AEDesc_AEGetNthPtr(_self, _args)
217 AEDescObject *_self;
218 PyObject *_args;
219{
220 PyObject *_res = NULL;
221 OSErr _err;
222 long index;
223 DescType desiredType;
224 AEKeyword theAEKeyword;
225 DescType typeCode;
226 char *dataPtr__out__;
227 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000228 int dataPtr__in_len__;
229 if (!PyArg_ParseTuple(_args, "lO&i",
Guido van Rossum17448e21995-01-30 11:53:55 +0000230 &index,
231 PyMac_GetOSType, &desiredType,
Guido van Rossum97842951995-02-19 15:59:49 +0000232 &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000233 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000234 if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
Guido van Rossum17448e21995-01-30 11:53:55 +0000235 {
236 PyErr_NoMemory();
237 goto dataPtr__error__;
238 }
Guido van Rossum97842951995-02-19 15:59:49 +0000239 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000240 _err = AEGetNthPtr(&_self->ob_itself,
241 index,
242 desiredType,
243 &theAEKeyword,
244 &typeCode,
245 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
246 if (_err != noErr) return PyMac_Error(_err);
247 _res = Py_BuildValue("O&O&s#",
248 PyMac_BuildOSType, theAEKeyword,
249 PyMac_BuildOSType, typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000250 dataPtr__out__, (int)dataPtr__len__);
Guido van Rossum17448e21995-01-30 11:53:55 +0000251 free(dataPtr__out__);
252 dataPtr__error__: ;
253 return _res;
254}
255
256static PyObject *AEDesc_AEGetNthDesc(_self, _args)
257 AEDescObject *_self;
258 PyObject *_args;
259{
260 PyObject *_res = NULL;
261 OSErr _err;
262 long index;
263 DescType desiredType;
264 AEKeyword theAEKeyword;
265 AEDesc result;
266 if (!PyArg_ParseTuple(_args, "lO&",
267 &index,
268 PyMac_GetOSType, &desiredType))
269 return NULL;
270 _err = AEGetNthDesc(&_self->ob_itself,
271 index,
272 desiredType,
273 &theAEKeyword,
274 &result);
275 if (_err != noErr) return PyMac_Error(_err);
276 _res = Py_BuildValue("O&O&",
277 PyMac_BuildOSType, theAEKeyword,
278 AEDesc_New, &result);
279 return _res;
280}
281
282static PyObject *AEDesc_AESizeOfNthItem(_self, _args)
283 AEDescObject *_self;
284 PyObject *_args;
285{
286 PyObject *_res = NULL;
287 OSErr _err;
288 long index;
289 DescType typeCode;
290 Size dataSize;
291 if (!PyArg_ParseTuple(_args, "l",
292 &index))
293 return NULL;
294 _err = AESizeOfNthItem(&_self->ob_itself,
295 index,
296 &typeCode,
297 &dataSize);
298 if (_err != noErr) return PyMac_Error(_err);
299 _res = Py_BuildValue("O&l",
300 PyMac_BuildOSType, typeCode,
301 dataSize);
302 return _res;
303}
304
Jack Jansen5ae5fdf1995-07-17 11:40:10 +0000305static PyObject *AEDesc_AEDeleteItem(_self, _args)
306 AEDescObject *_self;
307 PyObject *_args;
308{
309 PyObject *_res = NULL;
310 OSErr _err;
311 long index;
312 if (!PyArg_ParseTuple(_args, "l",
313 &index))
314 return NULL;
315 _err = AEDeleteItem(&_self->ob_itself,
316 index);
317 if (_err != noErr) return PyMac_Error(_err);
318 Py_INCREF(Py_None);
319 _res = Py_None;
320 return _res;
321}
322
Guido van Rossum17448e21995-01-30 11:53:55 +0000323static PyObject *AEDesc_AEPutParamPtr(_self, _args)
324 AEDescObject *_self;
325 PyObject *_args;
326{
327 PyObject *_res = NULL;
328 OSErr _err;
329 AEKeyword theAEKeyword;
330 DescType typeCode;
331 char *dataPtr__in__;
332 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000333 int dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000334 if (!PyArg_ParseTuple(_args, "O&O&s#",
335 PyMac_GetOSType, &theAEKeyword,
336 PyMac_GetOSType, &typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000337 &dataPtr__in__, &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000338 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000339 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000340 _err = AEPutParamPtr(&_self->ob_itself,
341 theAEKeyword,
342 typeCode,
343 dataPtr__in__, dataPtr__len__);
344 if (_err != noErr) return PyMac_Error(_err);
345 Py_INCREF(Py_None);
346 _res = Py_None;
347 dataPtr__error__: ;
348 return _res;
349}
350
351static PyObject *AEDesc_AEPutParamDesc(_self, _args)
352 AEDescObject *_self;
353 PyObject *_args;
354{
355 PyObject *_res = NULL;
356 OSErr _err;
357 AEKeyword theAEKeyword;
358 AEDesc theAEDesc;
359 if (!PyArg_ParseTuple(_args, "O&O&",
360 PyMac_GetOSType, &theAEKeyword,
361 AEDesc_Convert, &theAEDesc))
362 return NULL;
363 _err = AEPutParamDesc(&_self->ob_itself,
364 theAEKeyword,
365 &theAEDesc);
366 if (_err != noErr) return PyMac_Error(_err);
367 Py_INCREF(Py_None);
368 _res = Py_None;
369 return _res;
370}
371
372static PyObject *AEDesc_AEGetParamPtr(_self, _args)
373 AEDescObject *_self;
374 PyObject *_args;
375{
376 PyObject *_res = NULL;
377 OSErr _err;
378 AEKeyword theAEKeyword;
379 DescType desiredType;
380 DescType typeCode;
381 char *dataPtr__out__;
382 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000383 int dataPtr__in_len__;
384 if (!PyArg_ParseTuple(_args, "O&O&i",
Guido van Rossum17448e21995-01-30 11:53:55 +0000385 PyMac_GetOSType, &theAEKeyword,
386 PyMac_GetOSType, &desiredType,
Guido van Rossum97842951995-02-19 15:59:49 +0000387 &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000388 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000389 if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
Guido van Rossum17448e21995-01-30 11:53:55 +0000390 {
391 PyErr_NoMemory();
392 goto dataPtr__error__;
393 }
Guido van Rossum97842951995-02-19 15:59:49 +0000394 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000395 _err = AEGetParamPtr(&_self->ob_itself,
396 theAEKeyword,
397 desiredType,
398 &typeCode,
399 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
400 if (_err != noErr) return PyMac_Error(_err);
401 _res = Py_BuildValue("O&s#",
402 PyMac_BuildOSType, typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000403 dataPtr__out__, (int)dataPtr__len__);
Guido van Rossum17448e21995-01-30 11:53:55 +0000404 free(dataPtr__out__);
405 dataPtr__error__: ;
406 return _res;
407}
408
409static PyObject *AEDesc_AEGetParamDesc(_self, _args)
410 AEDescObject *_self;
411 PyObject *_args;
412{
413 PyObject *_res = NULL;
414 OSErr _err;
415 AEKeyword theAEKeyword;
416 DescType desiredType;
417 AEDesc result;
418 if (!PyArg_ParseTuple(_args, "O&O&",
419 PyMac_GetOSType, &theAEKeyword,
420 PyMac_GetOSType, &desiredType))
421 return NULL;
422 _err = AEGetParamDesc(&_self->ob_itself,
423 theAEKeyword,
424 desiredType,
425 &result);
426 if (_err != noErr) return PyMac_Error(_err);
427 _res = Py_BuildValue("O&",
428 AEDesc_New, &result);
429 return _res;
430}
431
432static PyObject *AEDesc_AESizeOfParam(_self, _args)
433 AEDescObject *_self;
434 PyObject *_args;
435{
436 PyObject *_res = NULL;
437 OSErr _err;
438 AEKeyword theAEKeyword;
439 DescType typeCode;
440 Size dataSize;
441 if (!PyArg_ParseTuple(_args, "O&",
442 PyMac_GetOSType, &theAEKeyword))
443 return NULL;
444 _err = AESizeOfParam(&_self->ob_itself,
445 theAEKeyword,
446 &typeCode,
447 &dataSize);
448 if (_err != noErr) return PyMac_Error(_err);
449 _res = Py_BuildValue("O&l",
450 PyMac_BuildOSType, typeCode,
451 dataSize);
452 return _res;
453}
454
455static PyObject *AEDesc_AEDeleteParam(_self, _args)
456 AEDescObject *_self;
457 PyObject *_args;
458{
459 PyObject *_res = NULL;
460 OSErr _err;
461 AEKeyword theAEKeyword;
462 if (!PyArg_ParseTuple(_args, "O&",
463 PyMac_GetOSType, &theAEKeyword))
464 return NULL;
465 _err = AEDeleteParam(&_self->ob_itself,
466 theAEKeyword);
467 if (_err != noErr) return PyMac_Error(_err);
468 Py_INCREF(Py_None);
469 _res = Py_None;
470 return _res;
471}
472
473static PyObject *AEDesc_AEGetAttributePtr(_self, _args)
474 AEDescObject *_self;
475 PyObject *_args;
476{
477 PyObject *_res = NULL;
478 OSErr _err;
479 AEKeyword theAEKeyword;
480 DescType desiredType;
481 DescType typeCode;
482 char *dataPtr__out__;
483 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000484 int dataPtr__in_len__;
485 if (!PyArg_ParseTuple(_args, "O&O&i",
Guido van Rossum17448e21995-01-30 11:53:55 +0000486 PyMac_GetOSType, &theAEKeyword,
487 PyMac_GetOSType, &desiredType,
Guido van Rossum97842951995-02-19 15:59:49 +0000488 &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000489 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000490 if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
Guido van Rossum17448e21995-01-30 11:53:55 +0000491 {
492 PyErr_NoMemory();
493 goto dataPtr__error__;
494 }
Guido van Rossum97842951995-02-19 15:59:49 +0000495 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000496 _err = AEGetAttributePtr(&_self->ob_itself,
497 theAEKeyword,
498 desiredType,
499 &typeCode,
500 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
501 if (_err != noErr) return PyMac_Error(_err);
502 _res = Py_BuildValue("O&s#",
503 PyMac_BuildOSType, typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000504 dataPtr__out__, (int)dataPtr__len__);
Guido van Rossum17448e21995-01-30 11:53:55 +0000505 free(dataPtr__out__);
506 dataPtr__error__: ;
507 return _res;
508}
509
510static PyObject *AEDesc_AEGetAttributeDesc(_self, _args)
511 AEDescObject *_self;
512 PyObject *_args;
513{
514 PyObject *_res = NULL;
515 OSErr _err;
516 AEKeyword theAEKeyword;
517 DescType desiredType;
518 AEDesc result;
519 if (!PyArg_ParseTuple(_args, "O&O&",
520 PyMac_GetOSType, &theAEKeyword,
521 PyMac_GetOSType, &desiredType))
522 return NULL;
523 _err = AEGetAttributeDesc(&_self->ob_itself,
524 theAEKeyword,
525 desiredType,
526 &result);
527 if (_err != noErr) return PyMac_Error(_err);
528 _res = Py_BuildValue("O&",
529 AEDesc_New, &result);
530 return _res;
531}
532
533static PyObject *AEDesc_AESizeOfAttribute(_self, _args)
534 AEDescObject *_self;
535 PyObject *_args;
536{
537 PyObject *_res = NULL;
538 OSErr _err;
539 AEKeyword theAEKeyword;
540 DescType typeCode;
541 Size dataSize;
542 if (!PyArg_ParseTuple(_args, "O&",
543 PyMac_GetOSType, &theAEKeyword))
544 return NULL;
545 _err = AESizeOfAttribute(&_self->ob_itself,
546 theAEKeyword,
547 &typeCode,
548 &dataSize);
549 if (_err != noErr) return PyMac_Error(_err);
550 _res = Py_BuildValue("O&l",
551 PyMac_BuildOSType, typeCode,
552 dataSize);
553 return _res;
554}
555
556static PyObject *AEDesc_AEPutAttributePtr(_self, _args)
557 AEDescObject *_self;
558 PyObject *_args;
559{
560 PyObject *_res = NULL;
561 OSErr _err;
562 AEKeyword theAEKeyword;
563 DescType typeCode;
564 char *dataPtr__in__;
565 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000566 int dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000567 if (!PyArg_ParseTuple(_args, "O&O&s#",
568 PyMac_GetOSType, &theAEKeyword,
569 PyMac_GetOSType, &typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000570 &dataPtr__in__, &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000571 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000572 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000573 _err = AEPutAttributePtr(&_self->ob_itself,
574 theAEKeyword,
575 typeCode,
576 dataPtr__in__, dataPtr__len__);
577 if (_err != noErr) return PyMac_Error(_err);
578 Py_INCREF(Py_None);
579 _res = Py_None;
580 dataPtr__error__: ;
581 return _res;
582}
583
584static PyObject *AEDesc_AEPutAttributeDesc(_self, _args)
585 AEDescObject *_self;
586 PyObject *_args;
587{
588 PyObject *_res = NULL;
589 OSErr _err;
590 AEKeyword theAEKeyword;
591 AEDesc theAEDesc;
592 if (!PyArg_ParseTuple(_args, "O&O&",
593 PyMac_GetOSType, &theAEKeyword,
594 AEDesc_Convert, &theAEDesc))
595 return NULL;
596 _err = AEPutAttributeDesc(&_self->ob_itself,
597 theAEKeyword,
598 &theAEDesc);
599 if (_err != noErr) return PyMac_Error(_err);
600 Py_INCREF(Py_None);
601 _res = Py_None;
602 return _res;
603}
604
605static PyObject *AEDesc_AESend(_self, _args)
606 AEDescObject *_self;
607 PyObject *_args;
608{
609 PyObject *_res = NULL;
610 OSErr _err;
611 AppleEvent reply;
612 AESendMode sendMode;
613 AESendPriority sendPriority;
614 long timeOutInTicks;
615 if (!PyArg_ParseTuple(_args, "lhl",
616 &sendMode,
617 &sendPriority,
618 &timeOutInTicks))
619 return NULL;
620 _err = AESend(&_self->ob_itself,
621 &reply,
622 sendMode,
623 sendPriority,
624 timeOutInTicks,
Guido van Rossumb19a6451995-02-05 16:58:33 +0000625 upp_AEIdleProc,
626 (AEFilterUPP)0);
Guido van Rossum17448e21995-01-30 11:53:55 +0000627 if (_err != noErr) return PyMac_Error(_err);
628 _res = Py_BuildValue("O&",
629 AEDesc_New, &reply);
630 return _res;
631}
632
633static PyObject *AEDesc_AEResetTimer(_self, _args)
634 AEDescObject *_self;
635 PyObject *_args;
636{
637 PyObject *_res = NULL;
638 OSErr _err;
639 if (!PyArg_ParseTuple(_args, ""))
640 return NULL;
641 _err = AEResetTimer(&_self->ob_itself);
642 if (_err != noErr) return PyMac_Error(_err);
643 Py_INCREF(Py_None);
644 _res = Py_None;
645 return _res;
646}
647
648static PyObject *AEDesc_AESuspendTheCurrentEvent(_self, _args)
649 AEDescObject *_self;
650 PyObject *_args;
651{
652 PyObject *_res = NULL;
653 OSErr _err;
654 if (!PyArg_ParseTuple(_args, ""))
655 return NULL;
656 _err = AESuspendTheCurrentEvent(&_self->ob_itself);
657 if (_err != noErr) return PyMac_Error(_err);
658 Py_INCREF(Py_None);
659 _res = Py_None;
660 return _res;
661}
662
663static PyObject *AEDesc_AEResumeTheCurrentEvent(_self, _args)
664 AEDescObject *_self;
665 PyObject *_args;
666{
667 PyObject *_res = NULL;
668 OSErr _err;
669 AppleEvent reply;
Jack Jansenc7cfb951995-06-05 22:34:12 +0000670 long handlerRefcon;
671 if (!PyArg_ParseTuple(_args, "O&l",
Guido van Rossum17448e21995-01-30 11:53:55 +0000672 AEDesc_Convert, &reply,
Jack Jansenc7cfb951995-06-05 22:34:12 +0000673 &handlerRefcon))
Guido van Rossum17448e21995-01-30 11:53:55 +0000674 return NULL;
675 _err = AEResumeTheCurrentEvent(&_self->ob_itself,
676 &reply,
Jack Jansenc7cfb951995-06-05 22:34:12 +0000677 upp_GenericEventHandler,
678 handlerRefcon);
Guido van Rossum17448e21995-01-30 11:53:55 +0000679 if (_err != noErr) return PyMac_Error(_err);
680 Py_INCREF(Py_None);
681 _res = Py_None;
Jack Jansenc7cfb951995-06-05 22:34:12 +0000682 return _res;
683}
684
685static PyObject *AEDesc_AEGetTheCurrentEvent(_self, _args)
686 AEDescObject *_self;
687 PyObject *_args;
688{
689 PyObject *_res = NULL;
690 OSErr _err;
691 if (!PyArg_ParseTuple(_args, ""))
692 return NULL;
693 _err = AEGetTheCurrentEvent(&_self->ob_itself);
694 if (_err != noErr) return PyMac_Error(_err);
695 Py_INCREF(Py_None);
696 _res = Py_None;
Guido van Rossum17448e21995-01-30 11:53:55 +0000697 return _res;
698}
699
700static PyObject *AEDesc_AESetTheCurrentEvent(_self, _args)
701 AEDescObject *_self;
702 PyObject *_args;
703{
704 PyObject *_res = NULL;
705 OSErr _err;
706 if (!PyArg_ParseTuple(_args, ""))
707 return NULL;
708 _err = AESetTheCurrentEvent(&_self->ob_itself);
709 if (_err != noErr) return PyMac_Error(_err);
710 Py_INCREF(Py_None);
711 _res = Py_None;
712 return _res;
713}
714
715static PyMethodDef AEDesc_methods[] = {
716 {"AECoerceDesc", (PyCFunction)AEDesc_AECoerceDesc, 1,
717 "(DescType toType) -> (AEDesc result)"},
718 {"AEDuplicateDesc", (PyCFunction)AEDesc_AEDuplicateDesc, 1,
719 "() -> (AEDesc result)"},
720 {"AECountItems", (PyCFunction)AEDesc_AECountItems, 1,
721 "() -> (long theCount)"},
Jack Jansen5ae5fdf1995-07-17 11:40:10 +0000722 {"AEPutPtr", (PyCFunction)AEDesc_AEPutPtr, 1,
723 "(long index, DescType typeCode, Buffer dataPtr) -> None"},
724 {"AEPutDesc", (PyCFunction)AEDesc_AEPutDesc, 1,
725 "(long index, AEDesc theAEDesc) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000726 {"AEGetNthPtr", (PyCFunction)AEDesc_AEGetNthPtr, 1,
727 "(long index, DescType desiredType, Buffer dataPtr) -> (AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr)"},
728 {"AEGetNthDesc", (PyCFunction)AEDesc_AEGetNthDesc, 1,
729 "(long index, DescType desiredType) -> (AEKeyword theAEKeyword, AEDesc result)"},
730 {"AESizeOfNthItem", (PyCFunction)AEDesc_AESizeOfNthItem, 1,
731 "(long index) -> (DescType typeCode, Size dataSize)"},
Jack Jansen5ae5fdf1995-07-17 11:40:10 +0000732 {"AEDeleteItem", (PyCFunction)AEDesc_AEDeleteItem, 1,
733 "(long index) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000734 {"AEPutParamPtr", (PyCFunction)AEDesc_AEPutParamPtr, 1,
735 "(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
736 {"AEPutParamDesc", (PyCFunction)AEDesc_AEPutParamDesc, 1,
737 "(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None"},
738 {"AEGetParamPtr", (PyCFunction)AEDesc_AEGetParamPtr, 1,
739 "(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)"},
740 {"AEGetParamDesc", (PyCFunction)AEDesc_AEGetParamDesc, 1,
741 "(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)"},
742 {"AESizeOfParam", (PyCFunction)AEDesc_AESizeOfParam, 1,
743 "(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)"},
744 {"AEDeleteParam", (PyCFunction)AEDesc_AEDeleteParam, 1,
745 "(AEKeyword theAEKeyword) -> None"},
746 {"AEGetAttributePtr", (PyCFunction)AEDesc_AEGetAttributePtr, 1,
747 "(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)"},
748 {"AEGetAttributeDesc", (PyCFunction)AEDesc_AEGetAttributeDesc, 1,
749 "(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)"},
750 {"AESizeOfAttribute", (PyCFunction)AEDesc_AESizeOfAttribute, 1,
751 "(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)"},
752 {"AEPutAttributePtr", (PyCFunction)AEDesc_AEPutAttributePtr, 1,
753 "(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
754 {"AEPutAttributeDesc", (PyCFunction)AEDesc_AEPutAttributeDesc, 1,
755 "(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None"},
756 {"AESend", (PyCFunction)AEDesc_AESend, 1,
757 "(AESendMode sendMode, AESendPriority sendPriority, long timeOutInTicks) -> (AppleEvent reply)"},
758 {"AEResetTimer", (PyCFunction)AEDesc_AEResetTimer, 1,
759 "() -> None"},
760 {"AESuspendTheCurrentEvent", (PyCFunction)AEDesc_AESuspendTheCurrentEvent, 1,
761 "() -> None"},
762 {"AEResumeTheCurrentEvent", (PyCFunction)AEDesc_AEResumeTheCurrentEvent, 1,
Jack Jansenc7cfb951995-06-05 22:34:12 +0000763 "(AppleEvent reply, long handlerRefcon) -> None"},
764 {"AEGetTheCurrentEvent", (PyCFunction)AEDesc_AEGetTheCurrentEvent, 1,
765 "() -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000766 {"AESetTheCurrentEvent", (PyCFunction)AEDesc_AESetTheCurrentEvent, 1,
767 "() -> None"},
768 {NULL, NULL, 0}
769};
770
771static PyMethodChain AEDesc_chain = { AEDesc_methods, NULL };
772
773static PyObject *AEDesc_getattr(self, name)
774 AEDescObject *self;
775 char *name;
776{
777
778 if (strcmp(name, "type") == 0)
779 return PyMac_BuildOSType(self->ob_itself.descriptorType);
780 if (strcmp(name, "data") == 0) {
781 PyObject *res;
782 char state;
783 state = HGetState(self->ob_itself.dataHandle);
784 HLock(self->ob_itself.dataHandle);
785 res = PyString_FromStringAndSize(
786 *self->ob_itself.dataHandle,
787 GetHandleSize(self->ob_itself.dataHandle));
788 HUnlock(self->ob_itself.dataHandle);
789 HSetState(self->ob_itself.dataHandle, state);
790 return res;
791 }
792 if (strcmp(name, "__members__") == 0)
793 return Py_BuildValue("[ss]", "data", "type");
794
795 return Py_FindMethodInChain(&AEDesc_chain, (PyObject *)self, name);
796}
797
798#define AEDesc_setattr NULL
799
Guido van Rossum97842951995-02-19 15:59:49 +0000800staticforward PyTypeObject AEDesc_Type = {
Guido van Rossum17448e21995-01-30 11:53:55 +0000801 PyObject_HEAD_INIT(&PyType_Type)
802 0, /*ob_size*/
803 "AEDesc", /*tp_name*/
804 sizeof(AEDescObject), /*tp_basicsize*/
805 0, /*tp_itemsize*/
806 /* methods */
807 (destructor) AEDesc_dealloc, /*tp_dealloc*/
808 0, /*tp_print*/
809 (getattrfunc) AEDesc_getattr, /*tp_getattr*/
810 (setattrfunc) AEDesc_setattr, /*tp_setattr*/
811};
812
813/* --------------------- End object type AEDesc --------------------- */
814
815
816static PyObject *AE_AECreateDesc(_self, _args)
817 PyObject *_self;
818 PyObject *_args;
819{
820 PyObject *_res = NULL;
821 OSErr _err;
822 DescType typeCode;
823 char *dataPtr__in__;
824 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000825 int dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000826 AEDesc result;
827 if (!PyArg_ParseTuple(_args, "O&s#",
828 PyMac_GetOSType, &typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000829 &dataPtr__in__, &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000830 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000831 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000832 _err = AECreateDesc(typeCode,
833 dataPtr__in__, dataPtr__len__,
834 &result);
835 if (_err != noErr) return PyMac_Error(_err);
836 _res = Py_BuildValue("O&",
837 AEDesc_New, &result);
838 dataPtr__error__: ;
839 return _res;
840}
841
842static PyObject *AE_AECoercePtr(_self, _args)
843 PyObject *_self;
844 PyObject *_args;
845{
846 PyObject *_res = NULL;
847 OSErr _err;
848 DescType typeCode;
849 char *dataPtr__in__;
850 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000851 int dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000852 DescType toType;
853 AEDesc result;
854 if (!PyArg_ParseTuple(_args, "O&s#O&",
855 PyMac_GetOSType, &typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000856 &dataPtr__in__, &dataPtr__in_len__,
Guido van Rossum17448e21995-01-30 11:53:55 +0000857 PyMac_GetOSType, &toType))
858 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000859 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000860 _err = AECoercePtr(typeCode,
861 dataPtr__in__, dataPtr__len__,
862 toType,
863 &result);
864 if (_err != noErr) return PyMac_Error(_err);
865 _res = Py_BuildValue("O&",
866 AEDesc_New, &result);
867 dataPtr__error__: ;
868 return _res;
869}
870
871static PyObject *AE_AECreateList(_self, _args)
872 PyObject *_self;
873 PyObject *_args;
874{
875 PyObject *_res = NULL;
876 OSErr _err;
877 char *factoringPtr__in__;
878 long factoringPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000879 int factoringPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000880 Boolean isRecord;
881 AEDescList resultList;
882 if (!PyArg_ParseTuple(_args, "s#b",
Guido van Rossum97842951995-02-19 15:59:49 +0000883 &factoringPtr__in__, &factoringPtr__in_len__,
Guido van Rossum17448e21995-01-30 11:53:55 +0000884 &isRecord))
885 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000886 factoringPtr__len__ = factoringPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000887 _err = AECreateList(factoringPtr__in__, factoringPtr__len__,
888 isRecord,
889 &resultList);
890 if (_err != noErr) return PyMac_Error(_err);
891 _res = Py_BuildValue("O&",
892 AEDesc_New, &resultList);
893 factoringPtr__error__: ;
894 return _res;
895}
896
897static PyObject *AE_AECreateAppleEvent(_self, _args)
898 PyObject *_self;
899 PyObject *_args;
900{
901 PyObject *_res = NULL;
902 OSErr _err;
903 AEEventClass theAEEventClass;
904 AEEventID theAEEventID;
905 AEAddressDesc target;
906 short returnID;
907 long transactionID;
908 AppleEvent result;
909 if (!PyArg_ParseTuple(_args, "O&O&O&hl",
910 PyMac_GetOSType, &theAEEventClass,
911 PyMac_GetOSType, &theAEEventID,
912 AEDesc_Convert, &target,
913 &returnID,
914 &transactionID))
915 return NULL;
916 _err = AECreateAppleEvent(theAEEventClass,
917 theAEEventID,
918 &target,
919 returnID,
920 transactionID,
921 &result);
922 if (_err != noErr) return PyMac_Error(_err);
923 _res = Py_BuildValue("O&",
924 AEDesc_New, &result);
925 return _res;
926}
927
928static PyObject *AE_AEProcessAppleEvent(_self, _args)
929 PyObject *_self;
930 PyObject *_args;
931{
932 PyObject *_res = NULL;
933 OSErr _err;
934 EventRecord theEventRecord;
935 if (!PyArg_ParseTuple(_args, "O&",
936 PyMac_GetEventRecord, &theEventRecord))
937 return NULL;
938 _err = AEProcessAppleEvent(&theEventRecord);
939 if (_err != noErr) return PyMac_Error(_err);
940 Py_INCREF(Py_None);
941 _res = Py_None;
942 return _res;
943}
944
Guido van Rossum17448e21995-01-30 11:53:55 +0000945static PyObject *AE_AEGetInteractionAllowed(_self, _args)
946 PyObject *_self;
947 PyObject *_args;
948{
949 PyObject *_res = NULL;
950 OSErr _err;
951 AEInteractAllowed level;
952 if (!PyArg_ParseTuple(_args, ""))
953 return NULL;
954 _err = AEGetInteractionAllowed(&level);
955 if (_err != noErr) return PyMac_Error(_err);
956 _res = Py_BuildValue("b",
957 level);
958 return _res;
959}
960
961static PyObject *AE_AESetInteractionAllowed(_self, _args)
962 PyObject *_self;
963 PyObject *_args;
964{
965 PyObject *_res = NULL;
966 OSErr _err;
967 AEInteractAllowed level;
968 if (!PyArg_ParseTuple(_args, "b",
969 &level))
970 return NULL;
971 _err = AESetInteractionAllowed(level);
972 if (_err != noErr) return PyMac_Error(_err);
973 Py_INCREF(Py_None);
974 _res = Py_None;
975 return _res;
976}
977
978static PyObject *AE_AEInteractWithUser(_self, _args)
979 PyObject *_self;
980 PyObject *_args;
981{
982 PyObject *_res = NULL;
983 OSErr _err;
984 long timeOutInTicks;
985 if (!PyArg_ParseTuple(_args, "l",
986 &timeOutInTicks))
987 return NULL;
988 _err = AEInteractWithUser(timeOutInTicks,
989 (NMRecPtr)0,
Guido van Rossumb19a6451995-02-05 16:58:33 +0000990 upp_AEIdleProc);
Guido van Rossum17448e21995-01-30 11:53:55 +0000991 if (_err != noErr) return PyMac_Error(_err);
992 Py_INCREF(Py_None);
993 _res = Py_None;
994 return _res;
995}
996
997static PyObject *AE_AEInstallEventHandler(_self, _args)
998 PyObject *_self;
999 PyObject *_args;
1000{
1001 PyObject *_res = NULL;
1002 OSErr _err;
1003 AEEventClass theAEEventClass;
1004 AEEventID theAEEventID;
Jack Jansenc7cfb951995-06-05 22:34:12 +00001005 long handlerRefcon;
1006 if (!PyArg_ParseTuple(_args, "O&O&l",
Guido van Rossum17448e21995-01-30 11:53:55 +00001007 PyMac_GetOSType, &theAEEventClass,
1008 PyMac_GetOSType, &theAEEventID,
Jack Jansenc7cfb951995-06-05 22:34:12 +00001009 &handlerRefcon))
Guido van Rossum17448e21995-01-30 11:53:55 +00001010 return NULL;
1011 _err = AEInstallEventHandler(theAEEventClass,
1012 theAEEventID,
Jack Jansenc7cfb951995-06-05 22:34:12 +00001013 upp_GenericEventHandler,
1014 handlerRefcon,
Guido van Rossum17448e21995-01-30 11:53:55 +00001015 0);
1016 if (_err != noErr) return PyMac_Error(_err);
1017 Py_INCREF(Py_None);
1018 _res = Py_None;
1019 return _res;
1020}
1021
1022static PyObject *AE_AERemoveEventHandler(_self, _args)
1023 PyObject *_self;
1024 PyObject *_args;
1025{
1026 PyObject *_res = NULL;
1027 OSErr _err;
1028 AEEventClass theAEEventClass;
1029 AEEventID theAEEventID;
1030 if (!PyArg_ParseTuple(_args, "O&O&",
1031 PyMac_GetOSType, &theAEEventClass,
1032 PyMac_GetOSType, &theAEEventID))
1033 return NULL;
1034 _err = AERemoveEventHandler(theAEEventClass,
1035 theAEEventID,
Guido van Rossumb19a6451995-02-05 16:58:33 +00001036 upp_GenericEventHandler,
Guido van Rossum17448e21995-01-30 11:53:55 +00001037 0);
1038 if (_err != noErr) return PyMac_Error(_err);
1039 Py_INCREF(Py_None);
1040 _res = Py_None;
1041 return _res;
1042}
1043
1044static PyObject *AE_AEManagerInfo(_self, _args)
1045 PyObject *_self;
1046 PyObject *_args;
1047{
1048 PyObject *_res = NULL;
1049 OSErr _err;
1050 AEKeyword keyWord;
1051 long result;
1052 if (!PyArg_ParseTuple(_args, "O&",
1053 PyMac_GetOSType, &keyWord))
1054 return NULL;
1055 _err = AEManagerInfo(keyWord,
1056 &result);
1057 if (_err != noErr) return PyMac_Error(_err);
1058 _res = Py_BuildValue("l",
1059 result);
1060 return _res;
1061}
1062
1063static PyMethodDef AE_methods[] = {
1064 {"AECreateDesc", (PyCFunction)AE_AECreateDesc, 1,
1065 "(DescType typeCode, Buffer dataPtr) -> (AEDesc result)"},
1066 {"AECoercePtr", (PyCFunction)AE_AECoercePtr, 1,
1067 "(DescType typeCode, Buffer dataPtr, DescType toType) -> (AEDesc result)"},
1068 {"AECreateList", (PyCFunction)AE_AECreateList, 1,
1069 "(Buffer factoringPtr, Boolean isRecord) -> (AEDescList resultList)"},
1070 {"AECreateAppleEvent", (PyCFunction)AE_AECreateAppleEvent, 1,
1071 "(AEEventClass theAEEventClass, AEEventID theAEEventID, AEAddressDesc target, short returnID, long transactionID) -> (AppleEvent result)"},
1072 {"AEProcessAppleEvent", (PyCFunction)AE_AEProcessAppleEvent, 1,
1073 "(EventRecord theEventRecord) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001074 {"AEGetInteractionAllowed", (PyCFunction)AE_AEGetInteractionAllowed, 1,
1075 "() -> (AEInteractAllowed level)"},
1076 {"AESetInteractionAllowed", (PyCFunction)AE_AESetInteractionAllowed, 1,
1077 "(AEInteractAllowed level) -> None"},
1078 {"AEInteractWithUser", (PyCFunction)AE_AEInteractWithUser, 1,
1079 "(long timeOutInTicks) -> None"},
1080 {"AEInstallEventHandler", (PyCFunction)AE_AEInstallEventHandler, 1,
Jack Jansenc7cfb951995-06-05 22:34:12 +00001081 "(AEEventClass theAEEventClass, AEEventID theAEEventID, long handlerRefcon) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001082 {"AERemoveEventHandler", (PyCFunction)AE_AERemoveEventHandler, 1,
1083 "(AEEventClass theAEEventClass, AEEventID theAEEventID) -> None"},
1084 {"AEManagerInfo", (PyCFunction)AE_AEManagerInfo, 1,
1085 "(AEKeyword keyWord) -> (long result)"},
1086 {NULL, NULL, 0}
1087};
1088
1089
1090
1091static pascal OSErr
Guido van Rossum97842951995-02-19 15:59:49 +00001092GenericEventHandler(AppleEvent *request, AppleEvent *reply, long refcon)
Guido van Rossum17448e21995-01-30 11:53:55 +00001093{
1094 PyObject *handler = (PyObject *)refcon;
1095 AEDescObject *requestObject, *replyObject;
1096 PyObject *args, *res;
1097 if ((requestObject = (AEDescObject *)AEDesc_New(request)) == NULL) {
1098 return -1;
1099 }
1100 if ((replyObject = (AEDescObject *)AEDesc_New(reply)) == NULL) {
1101 Py_DECREF(requestObject);
1102 return -1;
1103 }
1104 if ((args = Py_BuildValue("OO", requestObject, replyObject)) == NULL) {
1105 Py_DECREF(requestObject);
1106 Py_DECREF(replyObject);
1107 return -1;
1108 }
1109 res = PyEval_CallObject(handler, args);
1110 requestObject->ob_itself.descriptorType = 'null';
1111 requestObject->ob_itself.dataHandle = NULL;
1112 replyObject->ob_itself.descriptorType = 'null';
1113 replyObject->ob_itself.dataHandle = NULL;
1114 Py_DECREF(args);
1115 if (res == NULL)
1116 return -1;
1117 Py_DECREF(res);
1118 return noErr;
1119}
1120
1121
1122void initAE()
1123{
1124 PyObject *m;
1125 PyObject *d;
1126
1127
1128
Guido van Rossumb19a6451995-02-05 16:58:33 +00001129 upp_AEIdleProc = NewAEIdleProc(AEIdleProc);
1130 upp_GenericEventHandler = NewAEEventHandlerProc(GenericEventHandler);
1131
Guido van Rossum17448e21995-01-30 11:53:55 +00001132
1133 m = Py_InitModule("AE", AE_methods);
1134 d = PyModule_GetDict(m);
1135 AE_Error = PyMac_GetOSErrException();
1136 if (AE_Error == NULL ||
1137 PyDict_SetItemString(d, "Error", AE_Error) != 0)
1138 Py_FatalError("can't initialize AE.Error");
1139}
1140
1141/* ========================= End module AE ========================== */
1142