blob: 6bb9dfbb2789f79a7585758832701ba11f9e7c6b [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
Guido van Rossum17448e21995-01-30 11:53:55 +0000167static PyObject *AEDesc_AEGetNthPtr(_self, _args)
168 AEDescObject *_self;
169 PyObject *_args;
170{
171 PyObject *_res = NULL;
172 OSErr _err;
173 long index;
174 DescType desiredType;
175 AEKeyword theAEKeyword;
176 DescType typeCode;
177 char *dataPtr__out__;
178 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000179 int dataPtr__in_len__;
180 if (!PyArg_ParseTuple(_args, "lO&i",
Guido van Rossum17448e21995-01-30 11:53:55 +0000181 &index,
182 PyMac_GetOSType, &desiredType,
Guido van Rossum97842951995-02-19 15:59:49 +0000183 &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000184 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000185 if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
Guido van Rossum17448e21995-01-30 11:53:55 +0000186 {
187 PyErr_NoMemory();
188 goto dataPtr__error__;
189 }
Guido van Rossum97842951995-02-19 15:59:49 +0000190 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000191 _err = AEGetNthPtr(&_self->ob_itself,
192 index,
193 desiredType,
194 &theAEKeyword,
195 &typeCode,
196 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
197 if (_err != noErr) return PyMac_Error(_err);
198 _res = Py_BuildValue("O&O&s#",
199 PyMac_BuildOSType, theAEKeyword,
200 PyMac_BuildOSType, typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000201 dataPtr__out__, (int)dataPtr__len__);
Guido van Rossum17448e21995-01-30 11:53:55 +0000202 free(dataPtr__out__);
203 dataPtr__error__: ;
204 return _res;
205}
206
207static PyObject *AEDesc_AEGetNthDesc(_self, _args)
208 AEDescObject *_self;
209 PyObject *_args;
210{
211 PyObject *_res = NULL;
212 OSErr _err;
213 long index;
214 DescType desiredType;
215 AEKeyword theAEKeyword;
216 AEDesc result;
217 if (!PyArg_ParseTuple(_args, "lO&",
218 &index,
219 PyMac_GetOSType, &desiredType))
220 return NULL;
221 _err = AEGetNthDesc(&_self->ob_itself,
222 index,
223 desiredType,
224 &theAEKeyword,
225 &result);
226 if (_err != noErr) return PyMac_Error(_err);
227 _res = Py_BuildValue("O&O&",
228 PyMac_BuildOSType, theAEKeyword,
229 AEDesc_New, &result);
230 return _res;
231}
232
233static PyObject *AEDesc_AESizeOfNthItem(_self, _args)
234 AEDescObject *_self;
235 PyObject *_args;
236{
237 PyObject *_res = NULL;
238 OSErr _err;
239 long index;
240 DescType typeCode;
241 Size dataSize;
242 if (!PyArg_ParseTuple(_args, "l",
243 &index))
244 return NULL;
245 _err = AESizeOfNthItem(&_self->ob_itself,
246 index,
247 &typeCode,
248 &dataSize);
249 if (_err != noErr) return PyMac_Error(_err);
250 _res = Py_BuildValue("O&l",
251 PyMac_BuildOSType, typeCode,
252 dataSize);
253 return _res;
254}
255
Guido van Rossum17448e21995-01-30 11:53:55 +0000256static PyObject *AEDesc_AEPutParamPtr(_self, _args)
257 AEDescObject *_self;
258 PyObject *_args;
259{
260 PyObject *_res = NULL;
261 OSErr _err;
262 AEKeyword theAEKeyword;
263 DescType typeCode;
264 char *dataPtr__in__;
265 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000266 int dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000267 if (!PyArg_ParseTuple(_args, "O&O&s#",
268 PyMac_GetOSType, &theAEKeyword,
269 PyMac_GetOSType, &typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000270 &dataPtr__in__, &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000271 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000272 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000273 _err = AEPutParamPtr(&_self->ob_itself,
274 theAEKeyword,
275 typeCode,
276 dataPtr__in__, dataPtr__len__);
277 if (_err != noErr) return PyMac_Error(_err);
278 Py_INCREF(Py_None);
279 _res = Py_None;
280 dataPtr__error__: ;
281 return _res;
282}
283
284static PyObject *AEDesc_AEPutParamDesc(_self, _args)
285 AEDescObject *_self;
286 PyObject *_args;
287{
288 PyObject *_res = NULL;
289 OSErr _err;
290 AEKeyword theAEKeyword;
291 AEDesc theAEDesc;
292 if (!PyArg_ParseTuple(_args, "O&O&",
293 PyMac_GetOSType, &theAEKeyword,
294 AEDesc_Convert, &theAEDesc))
295 return NULL;
296 _err = AEPutParamDesc(&_self->ob_itself,
297 theAEKeyword,
298 &theAEDesc);
299 if (_err != noErr) return PyMac_Error(_err);
300 Py_INCREF(Py_None);
301 _res = Py_None;
302 return _res;
303}
304
305static PyObject *AEDesc_AEGetParamPtr(_self, _args)
306 AEDescObject *_self;
307 PyObject *_args;
308{
309 PyObject *_res = NULL;
310 OSErr _err;
311 AEKeyword theAEKeyword;
312 DescType desiredType;
313 DescType typeCode;
314 char *dataPtr__out__;
315 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000316 int dataPtr__in_len__;
317 if (!PyArg_ParseTuple(_args, "O&O&i",
Guido van Rossum17448e21995-01-30 11:53:55 +0000318 PyMac_GetOSType, &theAEKeyword,
319 PyMac_GetOSType, &desiredType,
Guido van Rossum97842951995-02-19 15:59:49 +0000320 &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000321 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000322 if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
Guido van Rossum17448e21995-01-30 11:53:55 +0000323 {
324 PyErr_NoMemory();
325 goto dataPtr__error__;
326 }
Guido van Rossum97842951995-02-19 15:59:49 +0000327 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000328 _err = AEGetParamPtr(&_self->ob_itself,
329 theAEKeyword,
330 desiredType,
331 &typeCode,
332 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
333 if (_err != noErr) return PyMac_Error(_err);
334 _res = Py_BuildValue("O&s#",
335 PyMac_BuildOSType, typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000336 dataPtr__out__, (int)dataPtr__len__);
Guido van Rossum17448e21995-01-30 11:53:55 +0000337 free(dataPtr__out__);
338 dataPtr__error__: ;
339 return _res;
340}
341
342static PyObject *AEDesc_AEGetParamDesc(_self, _args)
343 AEDescObject *_self;
344 PyObject *_args;
345{
346 PyObject *_res = NULL;
347 OSErr _err;
348 AEKeyword theAEKeyword;
349 DescType desiredType;
350 AEDesc result;
351 if (!PyArg_ParseTuple(_args, "O&O&",
352 PyMac_GetOSType, &theAEKeyword,
353 PyMac_GetOSType, &desiredType))
354 return NULL;
355 _err = AEGetParamDesc(&_self->ob_itself,
356 theAEKeyword,
357 desiredType,
358 &result);
359 if (_err != noErr) return PyMac_Error(_err);
360 _res = Py_BuildValue("O&",
361 AEDesc_New, &result);
362 return _res;
363}
364
365static PyObject *AEDesc_AESizeOfParam(_self, _args)
366 AEDescObject *_self;
367 PyObject *_args;
368{
369 PyObject *_res = NULL;
370 OSErr _err;
371 AEKeyword theAEKeyword;
372 DescType typeCode;
373 Size dataSize;
374 if (!PyArg_ParseTuple(_args, "O&",
375 PyMac_GetOSType, &theAEKeyword))
376 return NULL;
377 _err = AESizeOfParam(&_self->ob_itself,
378 theAEKeyword,
379 &typeCode,
380 &dataSize);
381 if (_err != noErr) return PyMac_Error(_err);
382 _res = Py_BuildValue("O&l",
383 PyMac_BuildOSType, typeCode,
384 dataSize);
385 return _res;
386}
387
388static PyObject *AEDesc_AEDeleteParam(_self, _args)
389 AEDescObject *_self;
390 PyObject *_args;
391{
392 PyObject *_res = NULL;
393 OSErr _err;
394 AEKeyword theAEKeyword;
395 if (!PyArg_ParseTuple(_args, "O&",
396 PyMac_GetOSType, &theAEKeyword))
397 return NULL;
398 _err = AEDeleteParam(&_self->ob_itself,
399 theAEKeyword);
400 if (_err != noErr) return PyMac_Error(_err);
401 Py_INCREF(Py_None);
402 _res = Py_None;
403 return _res;
404}
405
406static PyObject *AEDesc_AEGetAttributePtr(_self, _args)
407 AEDescObject *_self;
408 PyObject *_args;
409{
410 PyObject *_res = NULL;
411 OSErr _err;
412 AEKeyword theAEKeyword;
413 DescType desiredType;
414 DescType typeCode;
415 char *dataPtr__out__;
416 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000417 int dataPtr__in_len__;
418 if (!PyArg_ParseTuple(_args, "O&O&i",
Guido van Rossum17448e21995-01-30 11:53:55 +0000419 PyMac_GetOSType, &theAEKeyword,
420 PyMac_GetOSType, &desiredType,
Guido van Rossum97842951995-02-19 15:59:49 +0000421 &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000422 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000423 if ((dataPtr__out__ = malloc(dataPtr__in_len__)) == NULL)
Guido van Rossum17448e21995-01-30 11:53:55 +0000424 {
425 PyErr_NoMemory();
426 goto dataPtr__error__;
427 }
Guido van Rossum97842951995-02-19 15:59:49 +0000428 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000429 _err = AEGetAttributePtr(&_self->ob_itself,
430 theAEKeyword,
431 desiredType,
432 &typeCode,
433 dataPtr__out__, dataPtr__len__, &dataPtr__len__);
434 if (_err != noErr) return PyMac_Error(_err);
435 _res = Py_BuildValue("O&s#",
436 PyMac_BuildOSType, typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000437 dataPtr__out__, (int)dataPtr__len__);
Guido van Rossum17448e21995-01-30 11:53:55 +0000438 free(dataPtr__out__);
439 dataPtr__error__: ;
440 return _res;
441}
442
443static PyObject *AEDesc_AEGetAttributeDesc(_self, _args)
444 AEDescObject *_self;
445 PyObject *_args;
446{
447 PyObject *_res = NULL;
448 OSErr _err;
449 AEKeyword theAEKeyword;
450 DescType desiredType;
451 AEDesc result;
452 if (!PyArg_ParseTuple(_args, "O&O&",
453 PyMac_GetOSType, &theAEKeyword,
454 PyMac_GetOSType, &desiredType))
455 return NULL;
456 _err = AEGetAttributeDesc(&_self->ob_itself,
457 theAEKeyword,
458 desiredType,
459 &result);
460 if (_err != noErr) return PyMac_Error(_err);
461 _res = Py_BuildValue("O&",
462 AEDesc_New, &result);
463 return _res;
464}
465
466static PyObject *AEDesc_AESizeOfAttribute(_self, _args)
467 AEDescObject *_self;
468 PyObject *_args;
469{
470 PyObject *_res = NULL;
471 OSErr _err;
472 AEKeyword theAEKeyword;
473 DescType typeCode;
474 Size dataSize;
475 if (!PyArg_ParseTuple(_args, "O&",
476 PyMac_GetOSType, &theAEKeyword))
477 return NULL;
478 _err = AESizeOfAttribute(&_self->ob_itself,
479 theAEKeyword,
480 &typeCode,
481 &dataSize);
482 if (_err != noErr) return PyMac_Error(_err);
483 _res = Py_BuildValue("O&l",
484 PyMac_BuildOSType, typeCode,
485 dataSize);
486 return _res;
487}
488
489static PyObject *AEDesc_AEPutAttributePtr(_self, _args)
490 AEDescObject *_self;
491 PyObject *_args;
492{
493 PyObject *_res = NULL;
494 OSErr _err;
495 AEKeyword theAEKeyword;
496 DescType typeCode;
497 char *dataPtr__in__;
498 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000499 int dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000500 if (!PyArg_ParseTuple(_args, "O&O&s#",
501 PyMac_GetOSType, &theAEKeyword,
502 PyMac_GetOSType, &typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000503 &dataPtr__in__, &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000504 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000505 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000506 _err = AEPutAttributePtr(&_self->ob_itself,
507 theAEKeyword,
508 typeCode,
509 dataPtr__in__, dataPtr__len__);
510 if (_err != noErr) return PyMac_Error(_err);
511 Py_INCREF(Py_None);
512 _res = Py_None;
513 dataPtr__error__: ;
514 return _res;
515}
516
517static PyObject *AEDesc_AEPutAttributeDesc(_self, _args)
518 AEDescObject *_self;
519 PyObject *_args;
520{
521 PyObject *_res = NULL;
522 OSErr _err;
523 AEKeyword theAEKeyword;
524 AEDesc theAEDesc;
525 if (!PyArg_ParseTuple(_args, "O&O&",
526 PyMac_GetOSType, &theAEKeyword,
527 AEDesc_Convert, &theAEDesc))
528 return NULL;
529 _err = AEPutAttributeDesc(&_self->ob_itself,
530 theAEKeyword,
531 &theAEDesc);
532 if (_err != noErr) return PyMac_Error(_err);
533 Py_INCREF(Py_None);
534 _res = Py_None;
535 return _res;
536}
537
538static PyObject *AEDesc_AESend(_self, _args)
539 AEDescObject *_self;
540 PyObject *_args;
541{
542 PyObject *_res = NULL;
543 OSErr _err;
544 AppleEvent reply;
545 AESendMode sendMode;
546 AESendPriority sendPriority;
547 long timeOutInTicks;
548 if (!PyArg_ParseTuple(_args, "lhl",
549 &sendMode,
550 &sendPriority,
551 &timeOutInTicks))
552 return NULL;
553 _err = AESend(&_self->ob_itself,
554 &reply,
555 sendMode,
556 sendPriority,
557 timeOutInTicks,
Guido van Rossumb19a6451995-02-05 16:58:33 +0000558 upp_AEIdleProc,
559 (AEFilterUPP)0);
Guido van Rossum17448e21995-01-30 11:53:55 +0000560 if (_err != noErr) return PyMac_Error(_err);
561 _res = Py_BuildValue("O&",
562 AEDesc_New, &reply);
563 return _res;
564}
565
566static PyObject *AEDesc_AEResetTimer(_self, _args)
567 AEDescObject *_self;
568 PyObject *_args;
569{
570 PyObject *_res = NULL;
571 OSErr _err;
572 if (!PyArg_ParseTuple(_args, ""))
573 return NULL;
574 _err = AEResetTimer(&_self->ob_itself);
575 if (_err != noErr) return PyMac_Error(_err);
576 Py_INCREF(Py_None);
577 _res = Py_None;
578 return _res;
579}
580
581static PyObject *AEDesc_AESuspendTheCurrentEvent(_self, _args)
582 AEDescObject *_self;
583 PyObject *_args;
584{
585 PyObject *_res = NULL;
586 OSErr _err;
587 if (!PyArg_ParseTuple(_args, ""))
588 return NULL;
589 _err = AESuspendTheCurrentEvent(&_self->ob_itself);
590 if (_err != noErr) return PyMac_Error(_err);
591 Py_INCREF(Py_None);
592 _res = Py_None;
593 return _res;
594}
595
596static PyObject *AEDesc_AEResumeTheCurrentEvent(_self, _args)
597 AEDescObject *_self;
598 PyObject *_args;
599{
600 PyObject *_res = NULL;
601 OSErr _err;
602 AppleEvent reply;
Jack Jansenc7cfb951995-06-05 22:34:12 +0000603 long handlerRefcon;
604 if (!PyArg_ParseTuple(_args, "O&l",
Guido van Rossum17448e21995-01-30 11:53:55 +0000605 AEDesc_Convert, &reply,
Jack Jansenc7cfb951995-06-05 22:34:12 +0000606 &handlerRefcon))
Guido van Rossum17448e21995-01-30 11:53:55 +0000607 return NULL;
608 _err = AEResumeTheCurrentEvent(&_self->ob_itself,
609 &reply,
Jack Jansenc7cfb951995-06-05 22:34:12 +0000610 upp_GenericEventHandler,
611 handlerRefcon);
Guido van Rossum17448e21995-01-30 11:53:55 +0000612 if (_err != noErr) return PyMac_Error(_err);
613 Py_INCREF(Py_None);
614 _res = Py_None;
Jack Jansenc7cfb951995-06-05 22:34:12 +0000615 return _res;
616}
617
618static PyObject *AEDesc_AEGetTheCurrentEvent(_self, _args)
619 AEDescObject *_self;
620 PyObject *_args;
621{
622 PyObject *_res = NULL;
623 OSErr _err;
624 if (!PyArg_ParseTuple(_args, ""))
625 return NULL;
626 _err = AEGetTheCurrentEvent(&_self->ob_itself);
627 if (_err != noErr) return PyMac_Error(_err);
628 Py_INCREF(Py_None);
629 _res = Py_None;
Guido van Rossum17448e21995-01-30 11:53:55 +0000630 return _res;
631}
632
633static PyObject *AEDesc_AESetTheCurrentEvent(_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 = AESetTheCurrentEvent(&_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 PyMethodDef AEDesc_methods[] = {
649 {"AECoerceDesc", (PyCFunction)AEDesc_AECoerceDesc, 1,
650 "(DescType toType) -> (AEDesc result)"},
651 {"AEDuplicateDesc", (PyCFunction)AEDesc_AEDuplicateDesc, 1,
652 "() -> (AEDesc result)"},
653 {"AECountItems", (PyCFunction)AEDesc_AECountItems, 1,
654 "() -> (long theCount)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000655 {"AEGetNthPtr", (PyCFunction)AEDesc_AEGetNthPtr, 1,
656 "(long index, DescType desiredType, Buffer dataPtr) -> (AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr)"},
657 {"AEGetNthDesc", (PyCFunction)AEDesc_AEGetNthDesc, 1,
658 "(long index, DescType desiredType) -> (AEKeyword theAEKeyword, AEDesc result)"},
659 {"AESizeOfNthItem", (PyCFunction)AEDesc_AESizeOfNthItem, 1,
660 "(long index) -> (DescType typeCode, Size dataSize)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000661 {"AEPutParamPtr", (PyCFunction)AEDesc_AEPutParamPtr, 1,
662 "(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
663 {"AEPutParamDesc", (PyCFunction)AEDesc_AEPutParamDesc, 1,
664 "(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None"},
665 {"AEGetParamPtr", (PyCFunction)AEDesc_AEGetParamPtr, 1,
666 "(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)"},
667 {"AEGetParamDesc", (PyCFunction)AEDesc_AEGetParamDesc, 1,
668 "(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)"},
669 {"AESizeOfParam", (PyCFunction)AEDesc_AESizeOfParam, 1,
670 "(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)"},
671 {"AEDeleteParam", (PyCFunction)AEDesc_AEDeleteParam, 1,
672 "(AEKeyword theAEKeyword) -> None"},
673 {"AEGetAttributePtr", (PyCFunction)AEDesc_AEGetAttributePtr, 1,
674 "(AEKeyword theAEKeyword, DescType desiredType, Buffer dataPtr) -> (DescType typeCode, Buffer dataPtr)"},
675 {"AEGetAttributeDesc", (PyCFunction)AEDesc_AEGetAttributeDesc, 1,
676 "(AEKeyword theAEKeyword, DescType desiredType) -> (AEDesc result)"},
677 {"AESizeOfAttribute", (PyCFunction)AEDesc_AESizeOfAttribute, 1,
678 "(AEKeyword theAEKeyword) -> (DescType typeCode, Size dataSize)"},
679 {"AEPutAttributePtr", (PyCFunction)AEDesc_AEPutAttributePtr, 1,
680 "(AEKeyword theAEKeyword, DescType typeCode, Buffer dataPtr) -> None"},
681 {"AEPutAttributeDesc", (PyCFunction)AEDesc_AEPutAttributeDesc, 1,
682 "(AEKeyword theAEKeyword, AEDesc theAEDesc) -> None"},
683 {"AESend", (PyCFunction)AEDesc_AESend, 1,
684 "(AESendMode sendMode, AESendPriority sendPriority, long timeOutInTicks) -> (AppleEvent reply)"},
685 {"AEResetTimer", (PyCFunction)AEDesc_AEResetTimer, 1,
686 "() -> None"},
687 {"AESuspendTheCurrentEvent", (PyCFunction)AEDesc_AESuspendTheCurrentEvent, 1,
688 "() -> None"},
689 {"AEResumeTheCurrentEvent", (PyCFunction)AEDesc_AEResumeTheCurrentEvent, 1,
Jack Jansenc7cfb951995-06-05 22:34:12 +0000690 "(AppleEvent reply, long handlerRefcon) -> None"},
691 {"AEGetTheCurrentEvent", (PyCFunction)AEDesc_AEGetTheCurrentEvent, 1,
692 "() -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000693 {"AESetTheCurrentEvent", (PyCFunction)AEDesc_AESetTheCurrentEvent, 1,
694 "() -> None"},
695 {NULL, NULL, 0}
696};
697
698static PyMethodChain AEDesc_chain = { AEDesc_methods, NULL };
699
700static PyObject *AEDesc_getattr(self, name)
701 AEDescObject *self;
702 char *name;
703{
704
705 if (strcmp(name, "type") == 0)
706 return PyMac_BuildOSType(self->ob_itself.descriptorType);
707 if (strcmp(name, "data") == 0) {
708 PyObject *res;
709 char state;
710 state = HGetState(self->ob_itself.dataHandle);
711 HLock(self->ob_itself.dataHandle);
712 res = PyString_FromStringAndSize(
713 *self->ob_itself.dataHandle,
714 GetHandleSize(self->ob_itself.dataHandle));
715 HUnlock(self->ob_itself.dataHandle);
716 HSetState(self->ob_itself.dataHandle, state);
717 return res;
718 }
719 if (strcmp(name, "__members__") == 0)
720 return Py_BuildValue("[ss]", "data", "type");
721
722 return Py_FindMethodInChain(&AEDesc_chain, (PyObject *)self, name);
723}
724
725#define AEDesc_setattr NULL
726
Guido van Rossum97842951995-02-19 15:59:49 +0000727staticforward PyTypeObject AEDesc_Type = {
Guido van Rossum17448e21995-01-30 11:53:55 +0000728 PyObject_HEAD_INIT(&PyType_Type)
729 0, /*ob_size*/
730 "AEDesc", /*tp_name*/
731 sizeof(AEDescObject), /*tp_basicsize*/
732 0, /*tp_itemsize*/
733 /* methods */
734 (destructor) AEDesc_dealloc, /*tp_dealloc*/
735 0, /*tp_print*/
736 (getattrfunc) AEDesc_getattr, /*tp_getattr*/
737 (setattrfunc) AEDesc_setattr, /*tp_setattr*/
738};
739
740/* --------------------- End object type AEDesc --------------------- */
741
742
743static PyObject *AE_AECreateDesc(_self, _args)
744 PyObject *_self;
745 PyObject *_args;
746{
747 PyObject *_res = NULL;
748 OSErr _err;
749 DescType typeCode;
750 char *dataPtr__in__;
751 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000752 int dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000753 AEDesc result;
754 if (!PyArg_ParseTuple(_args, "O&s#",
755 PyMac_GetOSType, &typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000756 &dataPtr__in__, &dataPtr__in_len__))
Guido van Rossum17448e21995-01-30 11:53:55 +0000757 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000758 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000759 _err = AECreateDesc(typeCode,
760 dataPtr__in__, dataPtr__len__,
761 &result);
762 if (_err != noErr) return PyMac_Error(_err);
763 _res = Py_BuildValue("O&",
764 AEDesc_New, &result);
765 dataPtr__error__: ;
766 return _res;
767}
768
769static PyObject *AE_AECoercePtr(_self, _args)
770 PyObject *_self;
771 PyObject *_args;
772{
773 PyObject *_res = NULL;
774 OSErr _err;
775 DescType typeCode;
776 char *dataPtr__in__;
777 long dataPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000778 int dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000779 DescType toType;
780 AEDesc result;
781 if (!PyArg_ParseTuple(_args, "O&s#O&",
782 PyMac_GetOSType, &typeCode,
Guido van Rossum97842951995-02-19 15:59:49 +0000783 &dataPtr__in__, &dataPtr__in_len__,
Guido van Rossum17448e21995-01-30 11:53:55 +0000784 PyMac_GetOSType, &toType))
785 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000786 dataPtr__len__ = dataPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000787 _err = AECoercePtr(typeCode,
788 dataPtr__in__, dataPtr__len__,
789 toType,
790 &result);
791 if (_err != noErr) return PyMac_Error(_err);
792 _res = Py_BuildValue("O&",
793 AEDesc_New, &result);
794 dataPtr__error__: ;
795 return _res;
796}
797
798static PyObject *AE_AECreateList(_self, _args)
799 PyObject *_self;
800 PyObject *_args;
801{
802 PyObject *_res = NULL;
803 OSErr _err;
804 char *factoringPtr__in__;
805 long factoringPtr__len__;
Guido van Rossum97842951995-02-19 15:59:49 +0000806 int factoringPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000807 Boolean isRecord;
808 AEDescList resultList;
809 if (!PyArg_ParseTuple(_args, "s#b",
Guido van Rossum97842951995-02-19 15:59:49 +0000810 &factoringPtr__in__, &factoringPtr__in_len__,
Guido van Rossum17448e21995-01-30 11:53:55 +0000811 &isRecord))
812 return NULL;
Guido van Rossum97842951995-02-19 15:59:49 +0000813 factoringPtr__len__ = factoringPtr__in_len__;
Guido van Rossum17448e21995-01-30 11:53:55 +0000814 _err = AECreateList(factoringPtr__in__, factoringPtr__len__,
815 isRecord,
816 &resultList);
817 if (_err != noErr) return PyMac_Error(_err);
818 _res = Py_BuildValue("O&",
819 AEDesc_New, &resultList);
820 factoringPtr__error__: ;
821 return _res;
822}
823
Jack Jansenc7cfb951995-06-05 22:34:12 +0000824static PyObject *AE_AEPutPtr(_self, _args)
825 PyObject *_self;
826 PyObject *_args;
827{
828 PyObject *_res = NULL;
829 OSErr _err;
830 AEDescList theAEDescList;
831 long index;
832 DescType typeCode;
833 char *dataPtr__in__;
834 long dataPtr__len__;
835 int dataPtr__in_len__;
836 if (!PyArg_ParseTuple(_args, "lO&s#",
837 &index,
838 PyMac_GetOSType, &typeCode,
839 &dataPtr__in__, &dataPtr__in_len__))
840 return NULL;
841 dataPtr__len__ = dataPtr__in_len__;
842 _err = AEPutPtr(&theAEDescList,
843 index,
844 typeCode,
845 dataPtr__in__, dataPtr__len__);
846 if (_err != noErr) return PyMac_Error(_err);
847 _res = Py_BuildValue("O&",
848 AEDesc_New, &theAEDescList);
849 dataPtr__error__: ;
850 return _res;
851}
852
853static PyObject *AE_AEPutDesc(_self, _args)
854 PyObject *_self;
855 PyObject *_args;
856{
857 PyObject *_res = NULL;
858 OSErr _err;
859 AEDescList theAEDescList;
860 long index;
861 AEDesc theAEDesc;
862 if (!PyArg_ParseTuple(_args, "lO&",
863 &index,
864 AEDesc_Convert, &theAEDesc))
865 return NULL;
866 _err = AEPutDesc(&theAEDescList,
867 index,
868 &theAEDesc);
869 if (_err != noErr) return PyMac_Error(_err);
870 _res = Py_BuildValue("O&",
871 AEDesc_New, &theAEDescList);
872 return _res;
873}
874
875static PyObject *AE_AEDeleteItem(_self, _args)
876 PyObject *_self;
877 PyObject *_args;
878{
879 PyObject *_res = NULL;
880 OSErr _err;
881 AEDescList theAEDescList;
882 long index;
883 if (!PyArg_ParseTuple(_args, "l",
884 &index))
885 return NULL;
886 _err = AEDeleteItem(&theAEDescList,
887 index);
888 if (_err != noErr) return PyMac_Error(_err);
889 _res = Py_BuildValue("O&",
890 AEDesc_New, &theAEDescList);
891 return _res;
892}
893
Guido van Rossum17448e21995-01-30 11:53:55 +0000894static PyObject *AE_AECreateAppleEvent(_self, _args)
895 PyObject *_self;
896 PyObject *_args;
897{
898 PyObject *_res = NULL;
899 OSErr _err;
900 AEEventClass theAEEventClass;
901 AEEventID theAEEventID;
902 AEAddressDesc target;
903 short returnID;
904 long transactionID;
905 AppleEvent result;
906 if (!PyArg_ParseTuple(_args, "O&O&O&hl",
907 PyMac_GetOSType, &theAEEventClass,
908 PyMac_GetOSType, &theAEEventID,
909 AEDesc_Convert, &target,
910 &returnID,
911 &transactionID))
912 return NULL;
913 _err = AECreateAppleEvent(theAEEventClass,
914 theAEEventID,
915 &target,
916 returnID,
917 transactionID,
918 &result);
919 if (_err != noErr) return PyMac_Error(_err);
920 _res = Py_BuildValue("O&",
921 AEDesc_New, &result);
922 return _res;
923}
924
925static PyObject *AE_AEProcessAppleEvent(_self, _args)
926 PyObject *_self;
927 PyObject *_args;
928{
929 PyObject *_res = NULL;
930 OSErr _err;
931 EventRecord theEventRecord;
932 if (!PyArg_ParseTuple(_args, "O&",
933 PyMac_GetEventRecord, &theEventRecord))
934 return NULL;
935 _err = AEProcessAppleEvent(&theEventRecord);
936 if (_err != noErr) return PyMac_Error(_err);
937 Py_INCREF(Py_None);
938 _res = Py_None;
939 return _res;
940}
941
Guido van Rossum17448e21995-01-30 11:53:55 +0000942static PyObject *AE_AEGetInteractionAllowed(_self, _args)
943 PyObject *_self;
944 PyObject *_args;
945{
946 PyObject *_res = NULL;
947 OSErr _err;
948 AEInteractAllowed level;
949 if (!PyArg_ParseTuple(_args, ""))
950 return NULL;
951 _err = AEGetInteractionAllowed(&level);
952 if (_err != noErr) return PyMac_Error(_err);
953 _res = Py_BuildValue("b",
954 level);
955 return _res;
956}
957
958static PyObject *AE_AESetInteractionAllowed(_self, _args)
959 PyObject *_self;
960 PyObject *_args;
961{
962 PyObject *_res = NULL;
963 OSErr _err;
964 AEInteractAllowed level;
965 if (!PyArg_ParseTuple(_args, "b",
966 &level))
967 return NULL;
968 _err = AESetInteractionAllowed(level);
969 if (_err != noErr) return PyMac_Error(_err);
970 Py_INCREF(Py_None);
971 _res = Py_None;
972 return _res;
973}
974
975static PyObject *AE_AEInteractWithUser(_self, _args)
976 PyObject *_self;
977 PyObject *_args;
978{
979 PyObject *_res = NULL;
980 OSErr _err;
981 long timeOutInTicks;
982 if (!PyArg_ParseTuple(_args, "l",
983 &timeOutInTicks))
984 return NULL;
985 _err = AEInteractWithUser(timeOutInTicks,
986 (NMRecPtr)0,
Guido van Rossumb19a6451995-02-05 16:58:33 +0000987 upp_AEIdleProc);
Guido van Rossum17448e21995-01-30 11:53:55 +0000988 if (_err != noErr) return PyMac_Error(_err);
989 Py_INCREF(Py_None);
990 _res = Py_None;
991 return _res;
992}
993
994static PyObject *AE_AEInstallEventHandler(_self, _args)
995 PyObject *_self;
996 PyObject *_args;
997{
998 PyObject *_res = NULL;
999 OSErr _err;
1000 AEEventClass theAEEventClass;
1001 AEEventID theAEEventID;
Jack Jansenc7cfb951995-06-05 22:34:12 +00001002 long handlerRefcon;
1003 if (!PyArg_ParseTuple(_args, "O&O&l",
Guido van Rossum17448e21995-01-30 11:53:55 +00001004 PyMac_GetOSType, &theAEEventClass,
1005 PyMac_GetOSType, &theAEEventID,
Jack Jansenc7cfb951995-06-05 22:34:12 +00001006 &handlerRefcon))
Guido van Rossum17448e21995-01-30 11:53:55 +00001007 return NULL;
1008 _err = AEInstallEventHandler(theAEEventClass,
1009 theAEEventID,
Jack Jansenc7cfb951995-06-05 22:34:12 +00001010 upp_GenericEventHandler,
1011 handlerRefcon,
Guido van Rossum17448e21995-01-30 11:53:55 +00001012 0);
1013 if (_err != noErr) return PyMac_Error(_err);
1014 Py_INCREF(Py_None);
1015 _res = Py_None;
1016 return _res;
1017}
1018
1019static PyObject *AE_AERemoveEventHandler(_self, _args)
1020 PyObject *_self;
1021 PyObject *_args;
1022{
1023 PyObject *_res = NULL;
1024 OSErr _err;
1025 AEEventClass theAEEventClass;
1026 AEEventID theAEEventID;
1027 if (!PyArg_ParseTuple(_args, "O&O&",
1028 PyMac_GetOSType, &theAEEventClass,
1029 PyMac_GetOSType, &theAEEventID))
1030 return NULL;
1031 _err = AERemoveEventHandler(theAEEventClass,
1032 theAEEventID,
Guido van Rossumb19a6451995-02-05 16:58:33 +00001033 upp_GenericEventHandler,
Guido van Rossum17448e21995-01-30 11:53:55 +00001034 0);
1035 if (_err != noErr) return PyMac_Error(_err);
1036 Py_INCREF(Py_None);
1037 _res = Py_None;
1038 return _res;
1039}
1040
1041static PyObject *AE_AEManagerInfo(_self, _args)
1042 PyObject *_self;
1043 PyObject *_args;
1044{
1045 PyObject *_res = NULL;
1046 OSErr _err;
1047 AEKeyword keyWord;
1048 long result;
1049 if (!PyArg_ParseTuple(_args, "O&",
1050 PyMac_GetOSType, &keyWord))
1051 return NULL;
1052 _err = AEManagerInfo(keyWord,
1053 &result);
1054 if (_err != noErr) return PyMac_Error(_err);
1055 _res = Py_BuildValue("l",
1056 result);
1057 return _res;
1058}
1059
1060static PyMethodDef AE_methods[] = {
1061 {"AECreateDesc", (PyCFunction)AE_AECreateDesc, 1,
1062 "(DescType typeCode, Buffer dataPtr) -> (AEDesc result)"},
1063 {"AECoercePtr", (PyCFunction)AE_AECoercePtr, 1,
1064 "(DescType typeCode, Buffer dataPtr, DescType toType) -> (AEDesc result)"},
1065 {"AECreateList", (PyCFunction)AE_AECreateList, 1,
1066 "(Buffer factoringPtr, Boolean isRecord) -> (AEDescList resultList)"},
Jack Jansenc7cfb951995-06-05 22:34:12 +00001067 {"AEPutPtr", (PyCFunction)AE_AEPutPtr, 1,
1068 "(long index, DescType typeCode, Buffer dataPtr) -> (AEDescList theAEDescList)"},
1069 {"AEPutDesc", (PyCFunction)AE_AEPutDesc, 1,
1070 "(long index, AEDesc theAEDesc) -> (AEDescList theAEDescList)"},
1071 {"AEDeleteItem", (PyCFunction)AE_AEDeleteItem, 1,
1072 "(long index) -> (AEDescList theAEDescList)"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001073 {"AECreateAppleEvent", (PyCFunction)AE_AECreateAppleEvent, 1,
1074 "(AEEventClass theAEEventClass, AEEventID theAEEventID, AEAddressDesc target, short returnID, long transactionID) -> (AppleEvent result)"},
1075 {"AEProcessAppleEvent", (PyCFunction)AE_AEProcessAppleEvent, 1,
1076 "(EventRecord theEventRecord) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001077 {"AEGetInteractionAllowed", (PyCFunction)AE_AEGetInteractionAllowed, 1,
1078 "() -> (AEInteractAllowed level)"},
1079 {"AESetInteractionAllowed", (PyCFunction)AE_AESetInteractionAllowed, 1,
1080 "(AEInteractAllowed level) -> None"},
1081 {"AEInteractWithUser", (PyCFunction)AE_AEInteractWithUser, 1,
1082 "(long timeOutInTicks) -> None"},
1083 {"AEInstallEventHandler", (PyCFunction)AE_AEInstallEventHandler, 1,
Jack Jansenc7cfb951995-06-05 22:34:12 +00001084 "(AEEventClass theAEEventClass, AEEventID theAEEventID, long handlerRefcon) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +00001085 {"AERemoveEventHandler", (PyCFunction)AE_AERemoveEventHandler, 1,
1086 "(AEEventClass theAEEventClass, AEEventID theAEEventID) -> None"},
1087 {"AEManagerInfo", (PyCFunction)AE_AEManagerInfo, 1,
1088 "(AEKeyword keyWord) -> (long result)"},
1089 {NULL, NULL, 0}
1090};
1091
1092
1093
1094static pascal OSErr
Guido van Rossum97842951995-02-19 15:59:49 +00001095GenericEventHandler(AppleEvent *request, AppleEvent *reply, long refcon)
Guido van Rossum17448e21995-01-30 11:53:55 +00001096{
1097 PyObject *handler = (PyObject *)refcon;
1098 AEDescObject *requestObject, *replyObject;
1099 PyObject *args, *res;
1100 if ((requestObject = (AEDescObject *)AEDesc_New(request)) == NULL) {
1101 return -1;
1102 }
1103 if ((replyObject = (AEDescObject *)AEDesc_New(reply)) == NULL) {
1104 Py_DECREF(requestObject);
1105 return -1;
1106 }
1107 if ((args = Py_BuildValue("OO", requestObject, replyObject)) == NULL) {
1108 Py_DECREF(requestObject);
1109 Py_DECREF(replyObject);
1110 return -1;
1111 }
1112 res = PyEval_CallObject(handler, args);
1113 requestObject->ob_itself.descriptorType = 'null';
1114 requestObject->ob_itself.dataHandle = NULL;
1115 replyObject->ob_itself.descriptorType = 'null';
1116 replyObject->ob_itself.dataHandle = NULL;
1117 Py_DECREF(args);
1118 if (res == NULL)
1119 return -1;
1120 Py_DECREF(res);
1121 return noErr;
1122}
1123
1124
1125void initAE()
1126{
1127 PyObject *m;
1128 PyObject *d;
1129
1130
1131
Guido van Rossumb19a6451995-02-05 16:58:33 +00001132 upp_AEIdleProc = NewAEIdleProc(AEIdleProc);
1133 upp_GenericEventHandler = NewAEEventHandlerProc(GenericEventHandler);
1134
Guido van Rossum17448e21995-01-30 11:53:55 +00001135
1136 m = Py_InitModule("AE", AE_methods);
1137 d = PyModule_GetDict(m);
1138 AE_Error = PyMac_GetOSErrException();
1139 if (AE_Error == NULL ||
1140 PyDict_SetItemString(d, "Error", AE_Error) != 0)
1141 Py_FatalError("can't initialize AE.Error");
1142}
1143
1144/* ========================= End module AE ========================== */
1145