blob: 49f65538ca49bd98ec49097b926eba904e007ed7 [file] [log] [blame]
Guido van Rossum17448e21995-01-30 11:53:55 +00001
2/* =========================== Module Dlg =========================== */
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);
Jack Jansend4c26461995-08-17 14:35:56 +000017extern PyObject *ResObj_OptNew(Handle);
Guido van Rossum17448e21995-01-30 11:53:55 +000018extern int ResObj_Convert(PyObject *, Handle *);
19
20extern PyObject *WinObj_New(WindowPtr);
21extern int WinObj_Convert(PyObject *, WindowPtr *);
22
23extern PyObject *DlgObj_New(DialogPtr);
24extern int DlgObj_Convert(PyObject *, DialogPtr *);
25extern PyTypeObject Dialog_Type;
26#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
27
28extern PyObject *MenuObj_New(MenuHandle);
29extern int MenuObj_Convert(PyObject *, MenuHandle *);
30
31extern PyObject *CtlObj_New(ControlHandle);
32extern int CtlObj_Convert(PyObject *, ControlHandle *);
33
34extern PyObject *WinObj_WhichWindow(WindowPtr);
35
36#include <Dialogs.h>
37
Guido van Rossum97842951995-02-19 15:59:49 +000038#ifndef HAVE_UNIVERSAL_HEADERS
39#define NewModalFilterProc(x) (x)
40#endif
41
Guido van Rossum17448e21995-01-30 11:53:55 +000042#define resNotFound -192 /* Can't include <Errors.h> because of Python's "errors.h" */
43
44/* XXX Shouldn't this be a stack? */
45static PyObject *Dlg_FilterProc_callback = NULL;
46
47static PyObject *DlgObj_New(DialogPtr); /* Forward */
48
49static pascal Boolean Dlg_UnivFilterProc(DialogPtr dialog,
50 EventRecord *event,
51 short *itemHit)
52{
53 Boolean rv;
54 PyObject *args, *res;
55 PyObject *callback = Dlg_FilterProc_callback;
56 if (callback == NULL)
57 return 0; /* Default behavior */
58 Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
Guido van Rossum0437e891995-02-21 20:56:21 +000059 args = Py_BuildValue("O&O&", WinObj_WhichWindow, dialog, PyMac_BuildEventRecord, event);
Guido van Rossum17448e21995-01-30 11:53:55 +000060 if (args == NULL)
61 res = NULL;
62 else {
63 res = PyEval_CallObject(callback, args);
64 Py_DECREF(args);
65 }
66 if (res == NULL) {
67 fprintf(stderr, "Exception in Dialog Filter\n");
68 PyErr_Print();
69 *itemHit = -1; /* Fake return item */
70 return 1; /* We handled it */
71 }
72 else {
73 Dlg_FilterProc_callback = callback;
74 if (PyInt_Check(res)) {
75 *itemHit = PyInt_AsLong(res);
76 rv = 1;
77 }
78 else
79 rv = PyObject_IsTrue(res);
80 }
81 Py_DECREF(res);
82 return rv;
83}
84
85static ModalFilterProcPtr
86Dlg_PassFilterProc(PyObject *callback)
87{
88 PyObject *tmp = Dlg_FilterProc_callback;
89 Dlg_FilterProc_callback = NULL;
90 if (callback == Py_None) {
91 Py_XDECREF(tmp);
92 return NULL;
93 }
94 Py_INCREF(callback);
95 Dlg_FilterProc_callback = callback;
96 Py_XDECREF(tmp);
97 return &Dlg_UnivFilterProc;
98}
99
100extern PyMethodChain WinObj_chain;
101
102static PyObject *Dlg_Error;
103
104/* ----------------------- Object type Dialog ----------------------- */
105
106PyTypeObject Dialog_Type;
107
108#define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
109
110typedef struct DialogObject {
111 PyObject_HEAD
112 DialogPtr ob_itself;
113} DialogObject;
114
115PyObject *DlgObj_New(itself)
Guido van Rossum97842951995-02-19 15:59:49 +0000116 DialogPtr itself;
Guido van Rossum17448e21995-01-30 11:53:55 +0000117{
118 DialogObject *it;
119 if (itself == NULL) return Py_None;
120 it = PyObject_NEW(DialogObject, &Dialog_Type);
121 if (it == NULL) return NULL;
122 it->ob_itself = itself;
123 SetWRefCon(itself, (long)it);
124 return (PyObject *)it;
125}
126DlgObj_Convert(v, p_itself)
127 PyObject *v;
128 DialogPtr *p_itself;
129{
130 if (v == Py_None) { *p_itself = NULL; return 1; }
131 if (PyInt_Check(v)) { *p_itself = (DialogPtr)PyInt_AsLong(v);
132 return 1; }
133 if (!DlgObj_Check(v))
134 {
135 PyErr_SetString(PyExc_TypeError, "Dialog required");
136 return 0;
137 }
138 *p_itself = ((DialogObject *)v)->ob_itself;
139 return 1;
140}
141
142static void DlgObj_dealloc(self)
143 DialogObject *self;
144{
145 DisposeDialog(self->ob_itself);
146 PyMem_DEL(self);
147}
148
149static PyObject *DlgObj_DrawDialog(_self, _args)
150 DialogObject *_self;
151 PyObject *_args;
152{
153 PyObject *_res = NULL;
154 if (!PyArg_ParseTuple(_args, ""))
155 return NULL;
156 DrawDialog(_self->ob_itself);
157 Py_INCREF(Py_None);
158 _res = Py_None;
159 return _res;
160}
161
Guido van Rossum17448e21995-01-30 11:53:55 +0000162static PyObject *DlgObj_UpdateDialog(_self, _args)
163 DialogObject *_self;
164 PyObject *_args;
165{
166 PyObject *_res = NULL;
167 if (!PyArg_ParseTuple(_args, ""))
168 return NULL;
169 UpdateDialog(_self->ob_itself,
170 _self->ob_itself->visRgn);
171 Py_INCREF(Py_None);
172 _res = Py_None;
173 return _res;
174}
175
Jack Jansenae8a68f1995-06-06 12:55:40 +0000176static PyObject *DlgObj_GetDialogItem(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000177 DialogObject *_self;
178 PyObject *_args;
179{
180 PyObject *_res = NULL;
181 short itemNo;
182 short itemType;
183 Handle item;
184 Rect box;
185 if (!PyArg_ParseTuple(_args, "h",
186 &itemNo))
187 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000188 GetDialogItem(_self->ob_itself,
189 itemNo,
190 &itemType,
191 &item,
192 &box);
Guido van Rossum17448e21995-01-30 11:53:55 +0000193 _res = Py_BuildValue("hO&O&",
194 itemType,
Jack Jansend4c26461995-08-17 14:35:56 +0000195 ResObj_OptNew, item,
Guido van Rossum17448e21995-01-30 11:53:55 +0000196 PyMac_BuildRect, &box);
197 return _res;
198}
199
Jack Jansenae8a68f1995-06-06 12:55:40 +0000200static PyObject *DlgObj_SetDialogItem(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000201 DialogObject *_self;
202 PyObject *_args;
203{
204 PyObject *_res = NULL;
205 short itemNo;
206 short itemType;
207 Handle item;
208 Rect box;
209 if (!PyArg_ParseTuple(_args, "hhO&O&",
210 &itemNo,
211 &itemType,
212 ResObj_Convert, &item,
213 PyMac_GetRect, &box))
214 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000215 SetDialogItem(_self->ob_itself,
216 itemNo,
217 itemType,
218 item,
219 &box);
Guido van Rossum17448e21995-01-30 11:53:55 +0000220 Py_INCREF(Py_None);
221 _res = Py_None;
222 return _res;
223}
224
Jack Jansenae8a68f1995-06-06 12:55:40 +0000225static PyObject *DlgObj_HideDialogItem(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000226 DialogObject *_self;
227 PyObject *_args;
228{
229 PyObject *_res = NULL;
230 short itemNo;
231 if (!PyArg_ParseTuple(_args, "h",
232 &itemNo))
233 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000234 HideDialogItem(_self->ob_itself,
235 itemNo);
Guido van Rossum17448e21995-01-30 11:53:55 +0000236 Py_INCREF(Py_None);
237 _res = Py_None;
238 return _res;
239}
240
Jack Jansenae8a68f1995-06-06 12:55:40 +0000241static PyObject *DlgObj_ShowDialogItem(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000242 DialogObject *_self;
243 PyObject *_args;
244{
245 PyObject *_res = NULL;
246 short itemNo;
247 if (!PyArg_ParseTuple(_args, "h",
248 &itemNo))
249 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000250 ShowDialogItem(_self->ob_itself,
251 itemNo);
Guido van Rossum17448e21995-01-30 11:53:55 +0000252 Py_INCREF(Py_None);
253 _res = Py_None;
254 return _res;
255}
256
Jack Jansenae8a68f1995-06-06 12:55:40 +0000257static PyObject *DlgObj_SelectDialogItemText(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000258 DialogObject *_self;
259 PyObject *_args;
260{
261 PyObject *_res = NULL;
262 short itemNo;
263 short strtSel;
264 short endSel;
265 if (!PyArg_ParseTuple(_args, "hhh",
266 &itemNo,
267 &strtSel,
268 &endSel))
269 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000270 SelectDialogItemText(_self->ob_itself,
271 itemNo,
272 strtSel,
273 endSel);
Guido van Rossum17448e21995-01-30 11:53:55 +0000274 Py_INCREF(Py_None);
275 _res = Py_None;
276 return _res;
277}
278
Jack Jansenae8a68f1995-06-06 12:55:40 +0000279static PyObject *DlgObj_FindDialogItem(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000280 DialogObject *_self;
281 PyObject *_args;
282{
283 PyObject *_res = NULL;
284 short _rv;
285 Point thePt;
286 if (!PyArg_ParseTuple(_args, "O&",
287 PyMac_GetPoint, &thePt))
288 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000289 _rv = FindDialogItem(_self->ob_itself,
290 thePt);
Guido van Rossum17448e21995-01-30 11:53:55 +0000291 _res = Py_BuildValue("h",
292 _rv);
293 return _res;
294}
295
Jack Jansenae8a68f1995-06-06 12:55:40 +0000296static PyObject *DlgObj_DialogCut(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000297 DialogObject *_self;
298 PyObject *_args;
299{
300 PyObject *_res = NULL;
301 if (!PyArg_ParseTuple(_args, ""))
302 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000303 DialogCut(_self->ob_itself);
Guido van Rossum17448e21995-01-30 11:53:55 +0000304 Py_INCREF(Py_None);
305 _res = Py_None;
306 return _res;
307}
308
Jack Jansenae8a68f1995-06-06 12:55:40 +0000309static PyObject *DlgObj_DialogPaste(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000310 DialogObject *_self;
311 PyObject *_args;
312{
313 PyObject *_res = NULL;
314 if (!PyArg_ParseTuple(_args, ""))
315 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000316 DialogPaste(_self->ob_itself);
Guido van Rossum17448e21995-01-30 11:53:55 +0000317 Py_INCREF(Py_None);
318 _res = Py_None;
319 return _res;
320}
321
Jack Jansenae8a68f1995-06-06 12:55:40 +0000322static PyObject *DlgObj_DialogCopy(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000323 DialogObject *_self;
324 PyObject *_args;
325{
326 PyObject *_res = NULL;
327 if (!PyArg_ParseTuple(_args, ""))
328 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000329 DialogCopy(_self->ob_itself);
Guido van Rossum17448e21995-01-30 11:53:55 +0000330 Py_INCREF(Py_None);
331 _res = Py_None;
332 return _res;
333}
334
Jack Jansenae8a68f1995-06-06 12:55:40 +0000335static PyObject *DlgObj_DialogDelete(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000336 DialogObject *_self;
337 PyObject *_args;
338{
339 PyObject *_res = NULL;
340 if (!PyArg_ParseTuple(_args, ""))
341 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000342 DialogDelete(_self->ob_itself);
Guido van Rossum17448e21995-01-30 11:53:55 +0000343 Py_INCREF(Py_None);
344 _res = Py_None;
345 return _res;
346}
347
348static PyObject *DlgObj_AppendDITL(_self, _args)
349 DialogObject *_self;
350 PyObject *_args;
351{
352 PyObject *_res = NULL;
353 Handle theHandle;
354 DITLMethod method;
355 if (!PyArg_ParseTuple(_args, "O&h",
356 ResObj_Convert, &theHandle,
357 &method))
358 return NULL;
359 AppendDITL(_self->ob_itself,
360 theHandle,
361 method);
362 Py_INCREF(Py_None);
363 _res = Py_None;
364 return _res;
365}
366
367static PyObject *DlgObj_CountDITL(_self, _args)
368 DialogObject *_self;
369 PyObject *_args;
370{
371 PyObject *_res = NULL;
372 short _rv;
373 if (!PyArg_ParseTuple(_args, ""))
374 return NULL;
375 _rv = CountDITL(_self->ob_itself);
376 _res = Py_BuildValue("h",
377 _rv);
378 return _res;
379}
380
381static PyObject *DlgObj_ShortenDITL(_self, _args)
382 DialogObject *_self;
383 PyObject *_args;
384{
385 PyObject *_res = NULL;
386 short numberItems;
387 if (!PyArg_ParseTuple(_args, "h",
388 &numberItems))
389 return NULL;
390 ShortenDITL(_self->ob_itself,
391 numberItems);
392 Py_INCREF(Py_None);
393 _res = Py_None;
394 return _res;
395}
396
Jack Jansenae8a68f1995-06-06 12:55:40 +0000397static PyObject *DlgObj_StdFilterProc(_self, _args)
398 DialogObject *_self;
399 PyObject *_args;
400{
401 PyObject *_res = NULL;
402 Boolean _rv;
403 EventRecord event;
404 short itemHit;
405 if (!PyArg_ParseTuple(_args, ""))
406 return NULL;
407 _rv = StdFilterProc(_self->ob_itself,
408 &event,
409 &itemHit);
410 _res = Py_BuildValue("bO&h",
411 _rv,
412 PyMac_BuildEventRecord, &event,
413 itemHit);
414 return _res;
415}
416
417static PyObject *DlgObj_SetDialogDefaultItem(_self, _args)
418 DialogObject *_self;
419 PyObject *_args;
420{
421 PyObject *_res = NULL;
422 OSErr _err;
423 short newItem;
424 if (!PyArg_ParseTuple(_args, "h",
425 &newItem))
426 return NULL;
427 _err = SetDialogDefaultItem(_self->ob_itself,
428 newItem);
429 if (_err != noErr) return PyMac_Error(_err);
430 Py_INCREF(Py_None);
431 _res = Py_None;
432 return _res;
433}
434
435static PyObject *DlgObj_SetDialogCancelItem(_self, _args)
436 DialogObject *_self;
437 PyObject *_args;
438{
439 PyObject *_res = NULL;
440 OSErr _err;
441 short newItem;
442 if (!PyArg_ParseTuple(_args, "h",
443 &newItem))
444 return NULL;
445 _err = SetDialogCancelItem(_self->ob_itself,
446 newItem);
447 if (_err != noErr) return PyMac_Error(_err);
448 Py_INCREF(Py_None);
449 _res = Py_None;
450 return _res;
451}
452
453static PyObject *DlgObj_SetDialogTracksCursor(_self, _args)
454 DialogObject *_self;
455 PyObject *_args;
456{
457 PyObject *_res = NULL;
458 OSErr _err;
459 Boolean tracks;
460 if (!PyArg_ParseTuple(_args, "b",
461 &tracks))
462 return NULL;
463 _err = SetDialogTracksCursor(_self->ob_itself,
464 tracks);
465 if (_err != noErr) return PyMac_Error(_err);
466 Py_INCREF(Py_None);
467 _res = Py_None;
468 return _res;
469}
470
Guido van Rossum17448e21995-01-30 11:53:55 +0000471static PyMethodDef DlgObj_methods[] = {
472 {"DrawDialog", (PyCFunction)DlgObj_DrawDialog, 1,
473 "() -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000474 {"UpdateDialog", (PyCFunction)DlgObj_UpdateDialog, 1,
475 "() -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000476 {"GetDialogItem", (PyCFunction)DlgObj_GetDialogItem, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000477 "(short itemNo) -> (short itemType, Handle item, Rect box)"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000478 {"SetDialogItem", (PyCFunction)DlgObj_SetDialogItem, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000479 "(short itemNo, short itemType, Handle item, Rect box) -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000480 {"HideDialogItem", (PyCFunction)DlgObj_HideDialogItem, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000481 "(short itemNo) -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000482 {"ShowDialogItem", (PyCFunction)DlgObj_ShowDialogItem, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000483 "(short itemNo) -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000484 {"SelectDialogItemText", (PyCFunction)DlgObj_SelectDialogItemText, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000485 "(short itemNo, short strtSel, short endSel) -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000486 {"FindDialogItem", (PyCFunction)DlgObj_FindDialogItem, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000487 "(Point thePt) -> (short _rv)"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000488 {"DialogCut", (PyCFunction)DlgObj_DialogCut, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000489 "() -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000490 {"DialogPaste", (PyCFunction)DlgObj_DialogPaste, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000491 "() -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000492 {"DialogCopy", (PyCFunction)DlgObj_DialogCopy, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000493 "() -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000494 {"DialogDelete", (PyCFunction)DlgObj_DialogDelete, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000495 "() -> None"},
496 {"AppendDITL", (PyCFunction)DlgObj_AppendDITL, 1,
497 "(Handle theHandle, DITLMethod method) -> None"},
498 {"CountDITL", (PyCFunction)DlgObj_CountDITL, 1,
499 "() -> (short _rv)"},
500 {"ShortenDITL", (PyCFunction)DlgObj_ShortenDITL, 1,
501 "(short numberItems) -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000502 {"StdFilterProc", (PyCFunction)DlgObj_StdFilterProc, 1,
503 "() -> (Boolean _rv, EventRecord event, short itemHit)"},
504 {"SetDialogDefaultItem", (PyCFunction)DlgObj_SetDialogDefaultItem, 1,
505 "(short newItem) -> None"},
506 {"SetDialogCancelItem", (PyCFunction)DlgObj_SetDialogCancelItem, 1,
507 "(short newItem) -> None"},
508 {"SetDialogTracksCursor", (PyCFunction)DlgObj_SetDialogTracksCursor, 1,
509 "(Boolean tracks) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000510 {NULL, NULL, 0}
511};
512
513PyMethodChain DlgObj_chain = { DlgObj_methods, &WinObj_chain };
514
515static PyObject *DlgObj_getattr(self, name)
516 DialogObject *self;
517 char *name;
518{
519 return Py_FindMethodInChain(&DlgObj_chain, (PyObject *)self, name);
520}
521
522#define DlgObj_setattr NULL
523
524PyTypeObject Dialog_Type = {
525 PyObject_HEAD_INIT(&PyType_Type)
526 0, /*ob_size*/
527 "Dialog", /*tp_name*/
528 sizeof(DialogObject), /*tp_basicsize*/
529 0, /*tp_itemsize*/
530 /* methods */
531 (destructor) DlgObj_dealloc, /*tp_dealloc*/
532 0, /*tp_print*/
533 (getattrfunc) DlgObj_getattr, /*tp_getattr*/
534 (setattrfunc) DlgObj_setattr, /*tp_setattr*/
535};
536
537/* --------------------- End object type Dialog --------------------- */
538
539
540static PyObject *Dlg_NewDialog(_self, _args)
541 PyObject *_self;
542 PyObject *_args;
543{
544 PyObject *_res = NULL;
545 DialogPtr _rv;
546 Rect boundsRect;
547 Str255 title;
548 Boolean visible;
549 short procID;
550 WindowPtr behind;
551 Boolean goAwayFlag;
552 long refCon;
553 Handle itmLstHndl;
554 if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&",
555 PyMac_GetRect, &boundsRect,
556 PyMac_GetStr255, title,
557 &visible,
558 &procID,
559 WinObj_Convert, &behind,
560 &goAwayFlag,
561 &refCon,
562 ResObj_Convert, &itmLstHndl))
563 return NULL;
564 _rv = NewDialog((void *)0,
565 &boundsRect,
566 title,
567 visible,
568 procID,
569 behind,
570 goAwayFlag,
571 refCon,
572 itmLstHndl);
573 _res = Py_BuildValue("O&",
574 DlgObj_New, _rv);
575 return _res;
576}
577
578static PyObject *Dlg_GetNewDialog(_self, _args)
579 PyObject *_self;
580 PyObject *_args;
581{
582 PyObject *_res = NULL;
583 DialogPtr _rv;
584 short dialogID;
585 WindowPtr behind;
586 if (!PyArg_ParseTuple(_args, "hO&",
587 &dialogID,
588 WinObj_Convert, &behind))
589 return NULL;
590 _rv = GetNewDialog(dialogID,
591 (void *)0,
592 behind);
593 _res = Py_BuildValue("O&",
594 DlgObj_New, _rv);
595 return _res;
596}
597
Guido van Rossum17448e21995-01-30 11:53:55 +0000598static PyObject *Dlg_ParamText(_self, _args)
599 PyObject *_self;
600 PyObject *_args;
601{
602 PyObject *_res = NULL;
603 Str255 param0;
604 Str255 param1;
605 Str255 param2;
606 Str255 param3;
607 if (!PyArg_ParseTuple(_args, "O&O&O&O&",
608 PyMac_GetStr255, param0,
609 PyMac_GetStr255, param1,
610 PyMac_GetStr255, param2,
611 PyMac_GetStr255, param3))
612 return NULL;
613 ParamText(param0,
614 param1,
615 param2,
616 param3);
617 Py_INCREF(Py_None);
618 _res = Py_None;
619 return _res;
620}
621
622static PyObject *Dlg_ModalDialog(_self, _args)
623 PyObject *_self;
624 PyObject *_args;
625{
626 PyObject *_res = NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000627 PyObject* modalFilter;
Guido van Rossum17448e21995-01-30 11:53:55 +0000628 short itemHit;
629 if (!PyArg_ParseTuple(_args, "O",
Jack Jansenae8a68f1995-06-06 12:55:40 +0000630 &modalFilter))
Guido van Rossum17448e21995-01-30 11:53:55 +0000631 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000632 ModalDialog(NewModalFilterProc(Dlg_PassFilterProc(modalFilter)),
Guido van Rossum17448e21995-01-30 11:53:55 +0000633 &itemHit);
634 _res = Py_BuildValue("h",
635 itemHit);
636 return _res;
637}
638
639static PyObject *Dlg_IsDialogEvent(_self, _args)
640 PyObject *_self;
641 PyObject *_args;
642{
643 PyObject *_res = NULL;
644 Boolean _rv;
645 EventRecord theEvent;
646 if (!PyArg_ParseTuple(_args, "O&",
647 PyMac_GetEventRecord, &theEvent))
648 return NULL;
649 _rv = IsDialogEvent(&theEvent);
650 _res = Py_BuildValue("b",
651 _rv);
652 return _res;
653}
654
655static PyObject *Dlg_DialogSelect(_self, _args)
656 PyObject *_self;
657 PyObject *_args;
658{
659 PyObject *_res = NULL;
660 Boolean _rv;
661 EventRecord theEvent;
662 DialogPtr theDialog;
663 short itemHit;
664 if (!PyArg_ParseTuple(_args, "O&",
665 PyMac_GetEventRecord, &theEvent))
666 return NULL;
667 _rv = DialogSelect(&theEvent,
668 &theDialog,
669 &itemHit);
670 _res = Py_BuildValue("bO&h",
671 _rv,
672 WinObj_WhichWindow, theDialog,
673 itemHit);
674 return _res;
675}
676
677static PyObject *Dlg_Alert(_self, _args)
678 PyObject *_self;
679 PyObject *_args;
680{
681 PyObject *_res = NULL;
682 short _rv;
683 short alertID;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000684 PyObject* modalFilter;
Guido van Rossum17448e21995-01-30 11:53:55 +0000685 if (!PyArg_ParseTuple(_args, "hO",
686 &alertID,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000687 &modalFilter))
Guido van Rossum17448e21995-01-30 11:53:55 +0000688 return NULL;
689 _rv = Alert(alertID,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000690 NewModalFilterProc(Dlg_PassFilterProc(modalFilter)));
Guido van Rossum17448e21995-01-30 11:53:55 +0000691 _res = Py_BuildValue("h",
692 _rv);
693 return _res;
694}
695
696static PyObject *Dlg_StopAlert(_self, _args)
697 PyObject *_self;
698 PyObject *_args;
699{
700 PyObject *_res = NULL;
701 short _rv;
702 short alertID;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000703 PyObject* modalFilter;
Guido van Rossum17448e21995-01-30 11:53:55 +0000704 if (!PyArg_ParseTuple(_args, "hO",
705 &alertID,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000706 &modalFilter))
Guido van Rossum17448e21995-01-30 11:53:55 +0000707 return NULL;
708 _rv = StopAlert(alertID,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000709 NewModalFilterProc(Dlg_PassFilterProc(modalFilter)));
Guido van Rossum17448e21995-01-30 11:53:55 +0000710 _res = Py_BuildValue("h",
711 _rv);
712 return _res;
713}
714
715static PyObject *Dlg_NoteAlert(_self, _args)
716 PyObject *_self;
717 PyObject *_args;
718{
719 PyObject *_res = NULL;
720 short _rv;
721 short alertID;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000722 PyObject* modalFilter;
Guido van Rossum17448e21995-01-30 11:53:55 +0000723 if (!PyArg_ParseTuple(_args, "hO",
724 &alertID,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000725 &modalFilter))
Guido van Rossum17448e21995-01-30 11:53:55 +0000726 return NULL;
727 _rv = NoteAlert(alertID,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000728 NewModalFilterProc(Dlg_PassFilterProc(modalFilter)));
Guido van Rossum17448e21995-01-30 11:53:55 +0000729 _res = Py_BuildValue("h",
730 _rv);
731 return _res;
732}
733
734static PyObject *Dlg_CautionAlert(_self, _args)
735 PyObject *_self;
736 PyObject *_args;
737{
738 PyObject *_res = NULL;
739 short _rv;
740 short alertID;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000741 PyObject* modalFilter;
Guido van Rossum17448e21995-01-30 11:53:55 +0000742 if (!PyArg_ParseTuple(_args, "hO",
743 &alertID,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000744 &modalFilter))
Guido van Rossum17448e21995-01-30 11:53:55 +0000745 return NULL;
746 _rv = CautionAlert(alertID,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000747 NewModalFilterProc(Dlg_PassFilterProc(modalFilter)));
Guido van Rossum17448e21995-01-30 11:53:55 +0000748 _res = Py_BuildValue("h",
749 _rv);
750 return _res;
751}
752
Jack Jansenae8a68f1995-06-06 12:55:40 +0000753static PyObject *Dlg_GetDialogItemText(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000754 PyObject *_self;
755 PyObject *_args;
756{
757 PyObject *_res = NULL;
758 Handle item;
759 Str255 text;
760 if (!PyArg_ParseTuple(_args, "O&",
761 ResObj_Convert, &item))
762 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000763 GetDialogItemText(item,
764 text);
Guido van Rossum17448e21995-01-30 11:53:55 +0000765 _res = Py_BuildValue("O&",
766 PyMac_BuildStr255, text);
767 return _res;
768}
769
Jack Jansenae8a68f1995-06-06 12:55:40 +0000770static PyObject *Dlg_SetDialogItemText(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000771 PyObject *_self;
772 PyObject *_args;
773{
774 PyObject *_res = NULL;
775 Handle item;
776 Str255 text;
777 if (!PyArg_ParseTuple(_args, "O&O&",
778 ResObj_Convert, &item,
779 PyMac_GetStr255, text))
780 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000781 SetDialogItemText(item,
782 text);
Guido van Rossum17448e21995-01-30 11:53:55 +0000783 Py_INCREF(Py_None);
784 _res = Py_None;
785 return _res;
786}
787
Jack Jansenae8a68f1995-06-06 12:55:40 +0000788static PyObject *Dlg_NewColorDialog(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000789 PyObject *_self;
790 PyObject *_args;
791{
792 PyObject *_res = NULL;
793 DialogPtr _rv;
794 Rect boundsRect;
795 Str255 title;
796 Boolean visible;
797 short procID;
798 WindowPtr behind;
799 Boolean goAwayFlag;
800 long refCon;
801 Handle items;
802 if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&",
803 PyMac_GetRect, &boundsRect,
804 PyMac_GetStr255, title,
805 &visible,
806 &procID,
807 WinObj_Convert, &behind,
808 &goAwayFlag,
809 &refCon,
810 ResObj_Convert, &items))
811 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000812 _rv = NewColorDialog((void *)0,
813 &boundsRect,
814 title,
815 visible,
816 procID,
817 behind,
818 goAwayFlag,
819 refCon,
820 items);
Guido van Rossum17448e21995-01-30 11:53:55 +0000821 _res = Py_BuildValue("O&",
822 DlgObj_New, _rv);
823 return _res;
824}
825
Jack Jansenae8a68f1995-06-06 12:55:40 +0000826static PyObject *Dlg_GetAlertStage(_self, _args)
827 PyObject *_self;
828 PyObject *_args;
829{
830 PyObject *_res = NULL;
831 short _rv;
832 if (!PyArg_ParseTuple(_args, ""))
833 return NULL;
834 _rv = GetAlertStage();
835 _res = Py_BuildValue("h",
836 _rv);
837 return _res;
838}
839
840static PyObject *Dlg_ResetAlertStage(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000841 PyObject *_self;
842 PyObject *_args;
843{
844 PyObject *_res = NULL;
845 if (!PyArg_ParseTuple(_args, ""))
846 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000847 ResetAlertStage();
Guido van Rossum17448e21995-01-30 11:53:55 +0000848 Py_INCREF(Py_None);
849 _res = Py_None;
850 return _res;
851}
852
Jack Jansenae8a68f1995-06-06 12:55:40 +0000853static PyObject *Dlg_SetDialogFont(_self, _args)
Guido van Rossum17448e21995-01-30 11:53:55 +0000854 PyObject *_self;
855 PyObject *_args;
856{
857 PyObject *_res = NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000858 short value;
Guido van Rossum17448e21995-01-30 11:53:55 +0000859 if (!PyArg_ParseTuple(_args, "h",
Jack Jansenae8a68f1995-06-06 12:55:40 +0000860 &value))
Guido van Rossum17448e21995-01-30 11:53:55 +0000861 return NULL;
Jack Jansenae8a68f1995-06-06 12:55:40 +0000862 SetDialogFont(value);
Guido van Rossum17448e21995-01-30 11:53:55 +0000863 Py_INCREF(Py_None);
864 _res = Py_None;
865 return _res;
866}
867
868static PyMethodDef Dlg_methods[] = {
869 {"NewDialog", (PyCFunction)Dlg_NewDialog, 1,
870 "(Rect boundsRect, Str255 title, Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon, Handle itmLstHndl) -> (DialogPtr _rv)"},
871 {"GetNewDialog", (PyCFunction)Dlg_GetNewDialog, 1,
872 "(short dialogID, WindowPtr behind) -> (DialogPtr _rv)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000873 {"ParamText", (PyCFunction)Dlg_ParamText, 1,
874 "(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None"},
875 {"ModalDialog", (PyCFunction)Dlg_ModalDialog, 1,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000876 "(PyObject* modalFilter) -> (short itemHit)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000877 {"IsDialogEvent", (PyCFunction)Dlg_IsDialogEvent, 1,
878 "(EventRecord theEvent) -> (Boolean _rv)"},
879 {"DialogSelect", (PyCFunction)Dlg_DialogSelect, 1,
880 "(EventRecord theEvent) -> (Boolean _rv, DialogPtr theDialog, short itemHit)"},
881 {"Alert", (PyCFunction)Dlg_Alert, 1,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000882 "(short alertID, PyObject* modalFilter) -> (short _rv)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000883 {"StopAlert", (PyCFunction)Dlg_StopAlert, 1,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000884 "(short alertID, PyObject* modalFilter) -> (short _rv)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000885 {"NoteAlert", (PyCFunction)Dlg_NoteAlert, 1,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000886 "(short alertID, PyObject* modalFilter) -> (short _rv)"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000887 {"CautionAlert", (PyCFunction)Dlg_CautionAlert, 1,
Jack Jansenae8a68f1995-06-06 12:55:40 +0000888 "(short alertID, PyObject* modalFilter) -> (short _rv)"},
889 {"GetDialogItemText", (PyCFunction)Dlg_GetDialogItemText, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000890 "(Handle item) -> (Str255 text)"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000891 {"SetDialogItemText", (PyCFunction)Dlg_SetDialogItemText, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000892 "(Handle item, Str255 text) -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000893 {"NewColorDialog", (PyCFunction)Dlg_NewColorDialog, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000894 "(Rect boundsRect, Str255 title, Boolean visible, short procID, WindowPtr behind, Boolean goAwayFlag, long refCon, Handle items) -> (DialogPtr _rv)"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000895 {"GetAlertStage", (PyCFunction)Dlg_GetAlertStage, 1,
896 "() -> (short _rv)"},
897 {"ResetAlertStage", (PyCFunction)Dlg_ResetAlertStage, 1,
Guido van Rossum17448e21995-01-30 11:53:55 +0000898 "() -> None"},
Jack Jansenae8a68f1995-06-06 12:55:40 +0000899 {"SetDialogFont", (PyCFunction)Dlg_SetDialogFont, 1,
900 "(short value) -> None"},
Guido van Rossum17448e21995-01-30 11:53:55 +0000901 {NULL, NULL, 0}
902};
903
904
905
906
907void initDlg()
908{
909 PyObject *m;
910 PyObject *d;
911
912
913
914
915 m = Py_InitModule("Dlg", Dlg_methods);
916 d = PyModule_GetDict(m);
917 Dlg_Error = PyMac_GetOSErrException();
918 if (Dlg_Error == NULL ||
919 PyDict_SetItemString(d, "Error", Dlg_Error) != 0)
920 Py_FatalError("can't initialize Dlg.Error");
921}
922
923/* ========================= End module Dlg ========================= */
924