1
2 /* ========================== Module _Dlg =========================== */
3
4 #include "Python.h"
5 #include "pymactoolbox.h"
6
7 #if APPLE_SUPPORTS_QUICKTIME
8
9 /* Macro to test whether a weak-loaded CFM function exists */
10 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
11 PyErr_SetString(PyExc_NotImplementedError, \
12 "Not available in this shared library/OS version"); \
13 return NULL; \
14 }} while(0)
15
16
17 #include <Carbon/Carbon.h>
18
19 #ifdef USE_TOOLBOX_OBJECT_GLUE
20 extern PyObject *_DlgObj_New(DialogRef);
21 extern PyObject *_DlgObj_WhichDialog(DialogRef);
22 extern int _DlgObj_Convert(PyObject *, DialogRef *);
23
24 #define DlgObj_New _DlgObj_New
25 #define DlgObj_WhichDialog _DlgObj_WhichDialog
26 #define DlgObj_Convert _DlgObj_Convert
27 #endif
28
29 /* XXX Shouldn't this be a stack? */
30 static PyObject *Dlg_FilterProc_callback = NULL;
31
Dlg_UnivFilterProc(DialogPtr dialog,EventRecord * event,short * itemHit)32 static pascal Boolean Dlg_UnivFilterProc(DialogPtr dialog,
33 EventRecord *event,
34 short *itemHit)
35 {
36 Boolean rv;
37 PyObject *args, *res;
38 PyObject *callback = Dlg_FilterProc_callback;
39 if (callback == NULL)
40 return 0; /* Default behavior */
41 Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
42 args = Py_BuildValue("O&O&", DlgObj_WhichDialog, dialog, PyMac_BuildEventRecord, event);
43 if (args == NULL)
44 res = NULL;
45 else {
46 res = PyEval_CallObject(callback, args);
47 Py_DECREF(args);
48 }
49 if (res == NULL) {
50 PySys_WriteStderr("Exception in Dialog Filter\n");
51 PyErr_Print();
52 *itemHit = -1; /* Fake return item */
53 return 1; /* We handled it */
54 }
55 else {
56 Dlg_FilterProc_callback = callback;
57 if (PyInt_Check(res)) {
58 *itemHit = PyInt_AsLong(res);
59 rv = 1;
60 }
61 else
62 rv = PyObject_IsTrue(res);
63 }
64 Py_DECREF(res);
65 return rv;
66 }
67
68 static ModalFilterUPP
Dlg_PassFilterProc(PyObject * callback)69 Dlg_PassFilterProc(PyObject *callback)
70 {
71 PyObject *tmp = Dlg_FilterProc_callback;
72 static ModalFilterUPP UnivFilterUpp = NULL;
73
74 Dlg_FilterProc_callback = NULL;
75 if (callback == Py_None) {
76 Py_XDECREF(tmp);
77 return NULL;
78 }
79 Py_INCREF(callback);
80 Dlg_FilterProc_callback = callback;
81 Py_XDECREF(tmp);
82 if ( UnivFilterUpp == NULL )
83 UnivFilterUpp = NewModalFilterUPP(&Dlg_UnivFilterProc);
84 return UnivFilterUpp;
85 }
86
87 static PyObject *Dlg_UserItemProc_callback = NULL;
88
Dlg_UnivUserItemProc(DialogPtr dialog,short item)89 static pascal void Dlg_UnivUserItemProc(DialogPtr dialog,
90 short item)
91 {
92 PyObject *args, *res;
93
94 if (Dlg_UserItemProc_callback == NULL)
95 return; /* Default behavior */
96 Dlg_FilterProc_callback = NULL; /* We'll restore it when call successful */
97 args = Py_BuildValue("O&h", DlgObj_WhichDialog, dialog, item);
98 if (args == NULL)
99 res = NULL;
100 else {
101 res = PyEval_CallObject(Dlg_UserItemProc_callback, args);
102 Py_DECREF(args);
103 }
104 if (res == NULL) {
105 PySys_WriteStderr("Exception in Dialog UserItem proc\n");
106 PyErr_Print();
107 }
108 Py_XDECREF(res);
109 return;
110 }
111
112 #if 0
113 /*
114 ** Treating DialogObjects as WindowObjects is (I think) illegal under Carbon.
115 ** However, as they are still identical under MacOS9 Carbon this is a problem, even
116 ** if we neatly call GetDialogWindow() at the right places: there's one refcon field
117 ** and it points to the DialogObject, so WinObj_WhichWindow will smartly return the
118 ** dialog object, and therefore we still don't have a WindowObject.
119 ** I'll leave the chaining code in place for now, with this comment to warn the
120 ** unsuspecting victims (i.e. me, probably, in a few weeks:-)
121 */
122 extern PyMethodChain WinObj_chain;
123 #endif
124
125 static PyObject *Dlg_Error;
126
127 /* ----------------------- Object type Dialog ----------------------- */
128
129 PyTypeObject Dialog_Type;
130
131 #define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type || PyObject_TypeCheck((x), &Dialog_Type))
132
133 typedef struct DialogObject {
134 PyObject_HEAD
135 DialogPtr ob_itself;
136 } DialogObject;
137
DlgObj_New(DialogPtr itself)138 PyObject *DlgObj_New(DialogPtr itself)
139 {
140 DialogObject *it;
141 if (itself == NULL) { Py_INCREF(Py_None); return Py_None; }
142 it = PyObject_NEW(DialogObject, &Dialog_Type);
143 if (it == NULL) return NULL;
144 it->ob_itself = itself;
145 SetWRefCon(GetDialogWindow(itself), (long)it);
146 return (PyObject *)it;
147 }
148
DlgObj_Convert(PyObject * v,DialogPtr * p_itself)149 int DlgObj_Convert(PyObject *v, DialogPtr *p_itself)
150 {
151 if (v == Py_None) { *p_itself = NULL; return 1; }
152 if (PyInt_Check(v)) { *p_itself = (DialogPtr)PyInt_AsLong(v);
153 return 1; }
154 if (!DlgObj_Check(v))
155 {
156 PyErr_SetString(PyExc_TypeError, "Dialog required");
157 return 0;
158 }
159 *p_itself = ((DialogObject *)v)->ob_itself;
160 return 1;
161 }
162
DlgObj_dealloc(DialogObject * self)163 static void DlgObj_dealloc(DialogObject *self)
164 {
165 DisposeDialog(self->ob_itself);
166 self->ob_type->tp_free((PyObject *)self);
167 }
168
DlgObj_DrawDialog(DialogObject * _self,PyObject * _args)169 static PyObject *DlgObj_DrawDialog(DialogObject *_self, PyObject *_args)
170 {
171 PyObject *_res = NULL;
172 #ifndef DrawDialog
173 PyMac_PRECHECK(DrawDialog);
174 #endif
175 if (!PyArg_ParseTuple(_args, ""))
176 return NULL;
177 DrawDialog(_self->ob_itself);
178 Py_INCREF(Py_None);
179 _res = Py_None;
180 return _res;
181 }
182
DlgObj_UpdateDialog(DialogObject * _self,PyObject * _args)183 static PyObject *DlgObj_UpdateDialog(DialogObject *_self, PyObject *_args)
184 {
185 PyObject *_res = NULL;
186 RgnHandle updateRgn;
187 #ifndef UpdateDialog
188 PyMac_PRECHECK(UpdateDialog);
189 #endif
190 if (!PyArg_ParseTuple(_args, "O&",
191 ResObj_Convert, &updateRgn))
192 return NULL;
193 UpdateDialog(_self->ob_itself,
194 updateRgn);
195 Py_INCREF(Py_None);
196 _res = Py_None;
197 return _res;
198 }
199
DlgObj_HideDialogItem(DialogObject * _self,PyObject * _args)200 static PyObject *DlgObj_HideDialogItem(DialogObject *_self, PyObject *_args)
201 {
202 PyObject *_res = NULL;
203 DialogItemIndex itemNo;
204 #ifndef HideDialogItem
205 PyMac_PRECHECK(HideDialogItem);
206 #endif
207 if (!PyArg_ParseTuple(_args, "h",
208 &itemNo))
209 return NULL;
210 HideDialogItem(_self->ob_itself,
211 itemNo);
212 Py_INCREF(Py_None);
213 _res = Py_None;
214 return _res;
215 }
216
DlgObj_ShowDialogItem(DialogObject * _self,PyObject * _args)217 static PyObject *DlgObj_ShowDialogItem(DialogObject *_self, PyObject *_args)
218 {
219 PyObject *_res = NULL;
220 DialogItemIndex itemNo;
221 #ifndef ShowDialogItem
222 PyMac_PRECHECK(ShowDialogItem);
223 #endif
224 if (!PyArg_ParseTuple(_args, "h",
225 &itemNo))
226 return NULL;
227 ShowDialogItem(_self->ob_itself,
228 itemNo);
229 Py_INCREF(Py_None);
230 _res = Py_None;
231 return _res;
232 }
233
DlgObj_FindDialogItem(DialogObject * _self,PyObject * _args)234 static PyObject *DlgObj_FindDialogItem(DialogObject *_self, PyObject *_args)
235 {
236 PyObject *_res = NULL;
237 DialogItemIndexZeroBased _rv;
238 Point thePt;
239 #ifndef FindDialogItem
240 PyMac_PRECHECK(FindDialogItem);
241 #endif
242 if (!PyArg_ParseTuple(_args, "O&",
243 PyMac_GetPoint, &thePt))
244 return NULL;
245 _rv = FindDialogItem(_self->ob_itself,
246 thePt);
247 _res = Py_BuildValue("h",
248 _rv);
249 return _res;
250 }
251
DlgObj_DialogCut(DialogObject * _self,PyObject * _args)252 static PyObject *DlgObj_DialogCut(DialogObject *_self, PyObject *_args)
253 {
254 PyObject *_res = NULL;
255 #ifndef DialogCut
256 PyMac_PRECHECK(DialogCut);
257 #endif
258 if (!PyArg_ParseTuple(_args, ""))
259 return NULL;
260 DialogCut(_self->ob_itself);
261 Py_INCREF(Py_None);
262 _res = Py_None;
263 return _res;
264 }
265
DlgObj_DialogPaste(DialogObject * _self,PyObject * _args)266 static PyObject *DlgObj_DialogPaste(DialogObject *_self, PyObject *_args)
267 {
268 PyObject *_res = NULL;
269 #ifndef DialogPaste
270 PyMac_PRECHECK(DialogPaste);
271 #endif
272 if (!PyArg_ParseTuple(_args, ""))
273 return NULL;
274 DialogPaste(_self->ob_itself);
275 Py_INCREF(Py_None);
276 _res = Py_None;
277 return _res;
278 }
279
DlgObj_DialogCopy(DialogObject * _self,PyObject * _args)280 static PyObject *DlgObj_DialogCopy(DialogObject *_self, PyObject *_args)
281 {
282 PyObject *_res = NULL;
283 #ifndef DialogCopy
284 PyMac_PRECHECK(DialogCopy);
285 #endif
286 if (!PyArg_ParseTuple(_args, ""))
287 return NULL;
288 DialogCopy(_self->ob_itself);
289 Py_INCREF(Py_None);
290 _res = Py_None;
291 return _res;
292 }
293
DlgObj_DialogDelete(DialogObject * _self,PyObject * _args)294 static PyObject *DlgObj_DialogDelete(DialogObject *_self, PyObject *_args)
295 {
296 PyObject *_res = NULL;
297 #ifndef DialogDelete
298 PyMac_PRECHECK(DialogDelete);
299 #endif
300 if (!PyArg_ParseTuple(_args, ""))
301 return NULL;
302 DialogDelete(_self->ob_itself);
303 Py_INCREF(Py_None);
304 _res = Py_None;
305 return _res;
306 }
307
DlgObj_GetDialogItem(DialogObject * _self,PyObject * _args)308 static PyObject *DlgObj_GetDialogItem(DialogObject *_self, PyObject *_args)
309 {
310 PyObject *_res = NULL;
311 DialogItemIndex itemNo;
312 DialogItemType itemType;
313 Handle item;
314 Rect box;
315 #ifndef GetDialogItem
316 PyMac_PRECHECK(GetDialogItem);
317 #endif
318 if (!PyArg_ParseTuple(_args, "h",
319 &itemNo))
320 return NULL;
321 GetDialogItem(_self->ob_itself,
322 itemNo,
323 &itemType,
324 &item,
325 &box);
326 _res = Py_BuildValue("hO&O&",
327 itemType,
328 OptResObj_New, item,
329 PyMac_BuildRect, &box);
330 return _res;
331 }
332
DlgObj_SetDialogItem(DialogObject * _self,PyObject * _args)333 static PyObject *DlgObj_SetDialogItem(DialogObject *_self, PyObject *_args)
334 {
335 PyObject *_res = NULL;
336 DialogItemIndex itemNo;
337 DialogItemType itemType;
338 Handle item;
339 Rect box;
340 #ifndef SetDialogItem
341 PyMac_PRECHECK(SetDialogItem);
342 #endif
343 if (!PyArg_ParseTuple(_args, "hhO&O&",
344 &itemNo,
345 &itemType,
346 ResObj_Convert, &item,
347 PyMac_GetRect, &box))
348 return NULL;
349 SetDialogItem(_self->ob_itself,
350 itemNo,
351 itemType,
352 item,
353 &box);
354 Py_INCREF(Py_None);
355 _res = Py_None;
356 return _res;
357 }
358
DlgObj_SelectDialogItemText(DialogObject * _self,PyObject * _args)359 static PyObject *DlgObj_SelectDialogItemText(DialogObject *_self, PyObject *_args)
360 {
361 PyObject *_res = NULL;
362 DialogItemIndex itemNo;
363 SInt16 strtSel;
364 SInt16 endSel;
365 #ifndef SelectDialogItemText
366 PyMac_PRECHECK(SelectDialogItemText);
367 #endif
368 if (!PyArg_ParseTuple(_args, "hhh",
369 &itemNo,
370 &strtSel,
371 &endSel))
372 return NULL;
373 SelectDialogItemText(_self->ob_itself,
374 itemNo,
375 strtSel,
376 endSel);
377 Py_INCREF(Py_None);
378 _res = Py_None;
379 return _res;
380 }
381
DlgObj_AppendDITL(DialogObject * _self,PyObject * _args)382 static PyObject *DlgObj_AppendDITL(DialogObject *_self, PyObject *_args)
383 {
384 PyObject *_res = NULL;
385 Handle theHandle;
386 DITLMethod method;
387 #ifndef AppendDITL
388 PyMac_PRECHECK(AppendDITL);
389 #endif
390 if (!PyArg_ParseTuple(_args, "O&h",
391 ResObj_Convert, &theHandle,
392 &method))
393 return NULL;
394 AppendDITL(_self->ob_itself,
395 theHandle,
396 method);
397 Py_INCREF(Py_None);
398 _res = Py_None;
399 return _res;
400 }
401
DlgObj_CountDITL(DialogObject * _self,PyObject * _args)402 static PyObject *DlgObj_CountDITL(DialogObject *_self, PyObject *_args)
403 {
404 PyObject *_res = NULL;
405 DialogItemIndex _rv;
406 #ifndef CountDITL
407 PyMac_PRECHECK(CountDITL);
408 #endif
409 if (!PyArg_ParseTuple(_args, ""))
410 return NULL;
411 _rv = CountDITL(_self->ob_itself);
412 _res = Py_BuildValue("h",
413 _rv);
414 return _res;
415 }
416
DlgObj_ShortenDITL(DialogObject * _self,PyObject * _args)417 static PyObject *DlgObj_ShortenDITL(DialogObject *_self, PyObject *_args)
418 {
419 PyObject *_res = NULL;
420 DialogItemIndex numberItems;
421 #ifndef ShortenDITL
422 PyMac_PRECHECK(ShortenDITL);
423 #endif
424 if (!PyArg_ParseTuple(_args, "h",
425 &numberItems))
426 return NULL;
427 ShortenDITL(_self->ob_itself,
428 numberItems);
429 Py_INCREF(Py_None);
430 _res = Py_None;
431 return _res;
432 }
433
DlgObj_InsertDialogItem(DialogObject * _self,PyObject * _args)434 static PyObject *DlgObj_InsertDialogItem(DialogObject *_self, PyObject *_args)
435 {
436 PyObject *_res = NULL;
437 OSStatus _err;
438 DialogItemIndex afterItem;
439 DialogItemType itemType;
440 Handle itemHandle;
441 Rect box;
442 #ifndef InsertDialogItem
443 PyMac_PRECHECK(InsertDialogItem);
444 #endif
445 if (!PyArg_ParseTuple(_args, "hhO&O&",
446 &afterItem,
447 &itemType,
448 ResObj_Convert, &itemHandle,
449 PyMac_GetRect, &box))
450 return NULL;
451 _err = InsertDialogItem(_self->ob_itself,
452 afterItem,
453 itemType,
454 itemHandle,
455 &box);
456 if (_err != noErr) return PyMac_Error(_err);
457 Py_INCREF(Py_None);
458 _res = Py_None;
459 return _res;
460 }
461
DlgObj_RemoveDialogItems(DialogObject * _self,PyObject * _args)462 static PyObject *DlgObj_RemoveDialogItems(DialogObject *_self, PyObject *_args)
463 {
464 PyObject *_res = NULL;
465 OSStatus _err;
466 DialogItemIndex itemNo;
467 DialogItemIndex amountToRemove;
468 Boolean disposeItemData;
469 #ifndef RemoveDialogItems
470 PyMac_PRECHECK(RemoveDialogItems);
471 #endif
472 if (!PyArg_ParseTuple(_args, "hhb",
473 &itemNo,
474 &amountToRemove,
475 &disposeItemData))
476 return NULL;
477 _err = RemoveDialogItems(_self->ob_itself,
478 itemNo,
479 amountToRemove,
480 disposeItemData);
481 if (_err != noErr) return PyMac_Error(_err);
482 Py_INCREF(Py_None);
483 _res = Py_None;
484 return _res;
485 }
486
DlgObj_StdFilterProc(DialogObject * _self,PyObject * _args)487 static PyObject *DlgObj_StdFilterProc(DialogObject *_self, PyObject *_args)
488 {
489 PyObject *_res = NULL;
490 Boolean _rv;
491 EventRecord event;
492 DialogItemIndex itemHit;
493 #ifndef StdFilterProc
494 PyMac_PRECHECK(StdFilterProc);
495 #endif
496 if (!PyArg_ParseTuple(_args, "O&h",
497 PyMac_GetEventRecord, &event,
498 &itemHit))
499 return NULL;
500 _rv = StdFilterProc(_self->ob_itself,
501 &event,
502 &itemHit);
503 _res = Py_BuildValue("bO&h",
504 _rv,
505 PyMac_BuildEventRecord, &event,
506 itemHit);
507 return _res;
508 }
509
DlgObj_SetDialogDefaultItem(DialogObject * _self,PyObject * _args)510 static PyObject *DlgObj_SetDialogDefaultItem(DialogObject *_self, PyObject *_args)
511 {
512 PyObject *_res = NULL;
513 OSErr _err;
514 DialogItemIndex newItem;
515 #ifndef SetDialogDefaultItem
516 PyMac_PRECHECK(SetDialogDefaultItem);
517 #endif
518 if (!PyArg_ParseTuple(_args, "h",
519 &newItem))
520 return NULL;
521 _err = SetDialogDefaultItem(_self->ob_itself,
522 newItem);
523 if (_err != noErr) return PyMac_Error(_err);
524 Py_INCREF(Py_None);
525 _res = Py_None;
526 return _res;
527 }
528
DlgObj_SetDialogCancelItem(DialogObject * _self,PyObject * _args)529 static PyObject *DlgObj_SetDialogCancelItem(DialogObject *_self, PyObject *_args)
530 {
531 PyObject *_res = NULL;
532 OSErr _err;
533 DialogItemIndex newItem;
534 #ifndef SetDialogCancelItem
535 PyMac_PRECHECK(SetDialogCancelItem);
536 #endif
537 if (!PyArg_ParseTuple(_args, "h",
538 &newItem))
539 return NULL;
540 _err = SetDialogCancelItem(_self->ob_itself,
541 newItem);
542 if (_err != noErr) return PyMac_Error(_err);
543 Py_INCREF(Py_None);
544 _res = Py_None;
545 return _res;
546 }
547
DlgObj_SetDialogTracksCursor(DialogObject * _self,PyObject * _args)548 static PyObject *DlgObj_SetDialogTracksCursor(DialogObject *_self, PyObject *_args)
549 {
550 PyObject *_res = NULL;
551 OSErr _err;
552 Boolean tracks;
553 #ifndef SetDialogTracksCursor
554 PyMac_PRECHECK(SetDialogTracksCursor);
555 #endif
556 if (!PyArg_ParseTuple(_args, "b",
557 &tracks))
558 return NULL;
559 _err = SetDialogTracksCursor(_self->ob_itself,
560 tracks);
561 if (_err != noErr) return PyMac_Error(_err);
562 Py_INCREF(Py_None);
563 _res = Py_None;
564 return _res;
565 }
566
DlgObj_AutoSizeDialog(DialogObject * _self,PyObject * _args)567 static PyObject *DlgObj_AutoSizeDialog(DialogObject *_self, PyObject *_args)
568 {
569 PyObject *_res = NULL;
570 OSErr _err;
571 #ifndef AutoSizeDialog
572 PyMac_PRECHECK(AutoSizeDialog);
573 #endif
574 if (!PyArg_ParseTuple(_args, ""))
575 return NULL;
576 _err = AutoSizeDialog(_self->ob_itself);
577 if (_err != noErr) return PyMac_Error(_err);
578 Py_INCREF(Py_None);
579 _res = Py_None;
580 return _res;
581 }
582
DlgObj_GetDialogItemAsControl(DialogObject * _self,PyObject * _args)583 static PyObject *DlgObj_GetDialogItemAsControl(DialogObject *_self, PyObject *_args)
584 {
585 PyObject *_res = NULL;
586 OSErr _err;
587 SInt16 inItemNo;
588 ControlHandle outControl;
589 #ifndef GetDialogItemAsControl
590 PyMac_PRECHECK(GetDialogItemAsControl);
591 #endif
592 if (!PyArg_ParseTuple(_args, "h",
593 &inItemNo))
594 return NULL;
595 _err = GetDialogItemAsControl(_self->ob_itself,
596 inItemNo,
597 &outControl);
598 if (_err != noErr) return PyMac_Error(_err);
599 _res = Py_BuildValue("O&",
600 CtlObj_New, outControl);
601 return _res;
602 }
603
DlgObj_MoveDialogItem(DialogObject * _self,PyObject * _args)604 static PyObject *DlgObj_MoveDialogItem(DialogObject *_self, PyObject *_args)
605 {
606 PyObject *_res = NULL;
607 OSErr _err;
608 SInt16 inItemNo;
609 SInt16 inHoriz;
610 SInt16 inVert;
611 #ifndef MoveDialogItem
612 PyMac_PRECHECK(MoveDialogItem);
613 #endif
614 if (!PyArg_ParseTuple(_args, "hhh",
615 &inItemNo,
616 &inHoriz,
617 &inVert))
618 return NULL;
619 _err = MoveDialogItem(_self->ob_itself,
620 inItemNo,
621 inHoriz,
622 inVert);
623 if (_err != noErr) return PyMac_Error(_err);
624 Py_INCREF(Py_None);
625 _res = Py_None;
626 return _res;
627 }
628
DlgObj_SizeDialogItem(DialogObject * _self,PyObject * _args)629 static PyObject *DlgObj_SizeDialogItem(DialogObject *_self, PyObject *_args)
630 {
631 PyObject *_res = NULL;
632 OSErr _err;
633 SInt16 inItemNo;
634 SInt16 inWidth;
635 SInt16 inHeight;
636 #ifndef SizeDialogItem
637 PyMac_PRECHECK(SizeDialogItem);
638 #endif
639 if (!PyArg_ParseTuple(_args, "hhh",
640 &inItemNo,
641 &inWidth,
642 &inHeight))
643 return NULL;
644 _err = SizeDialogItem(_self->ob_itself,
645 inItemNo,
646 inWidth,
647 inHeight);
648 if (_err != noErr) return PyMac_Error(_err);
649 Py_INCREF(Py_None);
650 _res = Py_None;
651 return _res;
652 }
653
DlgObj_AppendDialogItemList(DialogObject * _self,PyObject * _args)654 static PyObject *DlgObj_AppendDialogItemList(DialogObject *_self, PyObject *_args)
655 {
656 PyObject *_res = NULL;
657 OSErr _err;
658 SInt16 ditlID;
659 DITLMethod method;
660 #ifndef AppendDialogItemList
661 PyMac_PRECHECK(AppendDialogItemList);
662 #endif
663 if (!PyArg_ParseTuple(_args, "hh",
664 &ditlID,
665 &method))
666 return NULL;
667 _err = AppendDialogItemList(_self->ob_itself,
668 ditlID,
669 method);
670 if (_err != noErr) return PyMac_Error(_err);
671 Py_INCREF(Py_None);
672 _res = Py_None;
673 return _res;
674 }
675
DlgObj_SetDialogTimeout(DialogObject * _self,PyObject * _args)676 static PyObject *DlgObj_SetDialogTimeout(DialogObject *_self, PyObject *_args)
677 {
678 PyObject *_res = NULL;
679 OSStatus _err;
680 SInt16 inButtonToPress;
681 UInt32 inSecondsToWait;
682 #ifndef SetDialogTimeout
683 PyMac_PRECHECK(SetDialogTimeout);
684 #endif
685 if (!PyArg_ParseTuple(_args, "hl",
686 &inButtonToPress,
687 &inSecondsToWait))
688 return NULL;
689 _err = SetDialogTimeout(_self->ob_itself,
690 inButtonToPress,
691 inSecondsToWait);
692 if (_err != noErr) return PyMac_Error(_err);
693 Py_INCREF(Py_None);
694 _res = Py_None;
695 return _res;
696 }
697
DlgObj_GetDialogTimeout(DialogObject * _self,PyObject * _args)698 static PyObject *DlgObj_GetDialogTimeout(DialogObject *_self, PyObject *_args)
699 {
700 PyObject *_res = NULL;
701 OSStatus _err;
702 SInt16 outButtonToPress;
703 UInt32 outSecondsToWait;
704 UInt32 outSecondsRemaining;
705 #ifndef GetDialogTimeout
706 PyMac_PRECHECK(GetDialogTimeout);
707 #endif
708 if (!PyArg_ParseTuple(_args, ""))
709 return NULL;
710 _err = GetDialogTimeout(_self->ob_itself,
711 &outButtonToPress,
712 &outSecondsToWait,
713 &outSecondsRemaining);
714 if (_err != noErr) return PyMac_Error(_err);
715 _res = Py_BuildValue("hll",
716 outButtonToPress,
717 outSecondsToWait,
718 outSecondsRemaining);
719 return _res;
720 }
721
DlgObj_SetModalDialogEventMask(DialogObject * _self,PyObject * _args)722 static PyObject *DlgObj_SetModalDialogEventMask(DialogObject *_self, PyObject *_args)
723 {
724 PyObject *_res = NULL;
725 OSStatus _err;
726 EventMask inMask;
727 #ifndef SetModalDialogEventMask
728 PyMac_PRECHECK(SetModalDialogEventMask);
729 #endif
730 if (!PyArg_ParseTuple(_args, "H",
731 &inMask))
732 return NULL;
733 _err = SetModalDialogEventMask(_self->ob_itself,
734 inMask);
735 if (_err != noErr) return PyMac_Error(_err);
736 Py_INCREF(Py_None);
737 _res = Py_None;
738 return _res;
739 }
740
DlgObj_GetModalDialogEventMask(DialogObject * _self,PyObject * _args)741 static PyObject *DlgObj_GetModalDialogEventMask(DialogObject *_self, PyObject *_args)
742 {
743 PyObject *_res = NULL;
744 OSStatus _err;
745 EventMask outMask;
746 #ifndef GetModalDialogEventMask
747 PyMac_PRECHECK(GetModalDialogEventMask);
748 #endif
749 if (!PyArg_ParseTuple(_args, ""))
750 return NULL;
751 _err = GetModalDialogEventMask(_self->ob_itself,
752 &outMask);
753 if (_err != noErr) return PyMac_Error(_err);
754 _res = Py_BuildValue("H",
755 outMask);
756 return _res;
757 }
758
DlgObj_GetDialogWindow(DialogObject * _self,PyObject * _args)759 static PyObject *DlgObj_GetDialogWindow(DialogObject *_self, PyObject *_args)
760 {
761 PyObject *_res = NULL;
762 WindowPtr _rv;
763 #ifndef GetDialogWindow
764 PyMac_PRECHECK(GetDialogWindow);
765 #endif
766 if (!PyArg_ParseTuple(_args, ""))
767 return NULL;
768 _rv = GetDialogWindow(_self->ob_itself);
769 _res = Py_BuildValue("O&",
770 WinObj_New, _rv);
771 return _res;
772 }
773
DlgObj_GetDialogTextEditHandle(DialogObject * _self,PyObject * _args)774 static PyObject *DlgObj_GetDialogTextEditHandle(DialogObject *_self, PyObject *_args)
775 {
776 PyObject *_res = NULL;
777 TEHandle _rv;
778 #ifndef GetDialogTextEditHandle
779 PyMac_PRECHECK(GetDialogTextEditHandle);
780 #endif
781 if (!PyArg_ParseTuple(_args, ""))
782 return NULL;
783 _rv = GetDialogTextEditHandle(_self->ob_itself);
784 _res = Py_BuildValue("O&",
785 ResObj_New, _rv);
786 return _res;
787 }
788
DlgObj_GetDialogDefaultItem(DialogObject * _self,PyObject * _args)789 static PyObject *DlgObj_GetDialogDefaultItem(DialogObject *_self, PyObject *_args)
790 {
791 PyObject *_res = NULL;
792 SInt16 _rv;
793 #ifndef GetDialogDefaultItem
794 PyMac_PRECHECK(GetDialogDefaultItem);
795 #endif
796 if (!PyArg_ParseTuple(_args, ""))
797 return NULL;
798 _rv = GetDialogDefaultItem(_self->ob_itself);
799 _res = Py_BuildValue("h",
800 _rv);
801 return _res;
802 }
803
DlgObj_GetDialogCancelItem(DialogObject * _self,PyObject * _args)804 static PyObject *DlgObj_GetDialogCancelItem(DialogObject *_self, PyObject *_args)
805 {
806 PyObject *_res = NULL;
807 SInt16 _rv;
808 #ifndef GetDialogCancelItem
809 PyMac_PRECHECK(GetDialogCancelItem);
810 #endif
811 if (!PyArg_ParseTuple(_args, ""))
812 return NULL;
813 _rv = GetDialogCancelItem(_self->ob_itself);
814 _res = Py_BuildValue("h",
815 _rv);
816 return _res;
817 }
818
DlgObj_GetDialogKeyboardFocusItem(DialogObject * _self,PyObject * _args)819 static PyObject *DlgObj_GetDialogKeyboardFocusItem(DialogObject *_self, PyObject *_args)
820 {
821 PyObject *_res = NULL;
822 SInt16 _rv;
823 #ifndef GetDialogKeyboardFocusItem
824 PyMac_PRECHECK(GetDialogKeyboardFocusItem);
825 #endif
826 if (!PyArg_ParseTuple(_args, ""))
827 return NULL;
828 _rv = GetDialogKeyboardFocusItem(_self->ob_itself);
829 _res = Py_BuildValue("h",
830 _rv);
831 return _res;
832 }
833
DlgObj_SetPortDialogPort(DialogObject * _self,PyObject * _args)834 static PyObject *DlgObj_SetPortDialogPort(DialogObject *_self, PyObject *_args)
835 {
836 PyObject *_res = NULL;
837 #ifndef SetPortDialogPort
838 PyMac_PRECHECK(SetPortDialogPort);
839 #endif
840 if (!PyArg_ParseTuple(_args, ""))
841 return NULL;
842 SetPortDialogPort(_self->ob_itself);
843 Py_INCREF(Py_None);
844 _res = Py_None;
845 return _res;
846 }
847
DlgObj_GetDialogPort(DialogObject * _self,PyObject * _args)848 static PyObject *DlgObj_GetDialogPort(DialogObject *_self, PyObject *_args)
849 {
850 PyObject *_res = NULL;
851 CGrafPtr _rv;
852 #ifndef GetDialogPort
853 PyMac_PRECHECK(GetDialogPort);
854 #endif
855 if (!PyArg_ParseTuple(_args, ""))
856 return NULL;
857 _rv = GetDialogPort(_self->ob_itself);
858 _res = Py_BuildValue("O&",
859 GrafObj_New, _rv);
860 return _res;
861 }
862
863 static PyMethodDef DlgObj_methods[] = {
864 {"DrawDialog", (PyCFunction)DlgObj_DrawDialog, 1,
865 PyDoc_STR("() -> None")},
866 {"UpdateDialog", (PyCFunction)DlgObj_UpdateDialog, 1,
867 PyDoc_STR("(RgnHandle updateRgn) -> None")},
868 {"HideDialogItem", (PyCFunction)DlgObj_HideDialogItem, 1,
869 PyDoc_STR("(DialogItemIndex itemNo) -> None")},
870 {"ShowDialogItem", (PyCFunction)DlgObj_ShowDialogItem, 1,
871 PyDoc_STR("(DialogItemIndex itemNo) -> None")},
872 {"FindDialogItem", (PyCFunction)DlgObj_FindDialogItem, 1,
873 PyDoc_STR("(Point thePt) -> (DialogItemIndexZeroBased _rv)")},
874 {"DialogCut", (PyCFunction)DlgObj_DialogCut, 1,
875 PyDoc_STR("() -> None")},
876 {"DialogPaste", (PyCFunction)DlgObj_DialogPaste, 1,
877 PyDoc_STR("() -> None")},
878 {"DialogCopy", (PyCFunction)DlgObj_DialogCopy, 1,
879 PyDoc_STR("() -> None")},
880 {"DialogDelete", (PyCFunction)DlgObj_DialogDelete, 1,
881 PyDoc_STR("() -> None")},
882 {"GetDialogItem", (PyCFunction)DlgObj_GetDialogItem, 1,
883 PyDoc_STR("(DialogItemIndex itemNo) -> (DialogItemType itemType, Handle item, Rect box)")},
884 {"SetDialogItem", (PyCFunction)DlgObj_SetDialogItem, 1,
885 PyDoc_STR("(DialogItemIndex itemNo, DialogItemType itemType, Handle item, Rect box) -> None")},
886 {"SelectDialogItemText", (PyCFunction)DlgObj_SelectDialogItemText, 1,
887 PyDoc_STR("(DialogItemIndex itemNo, SInt16 strtSel, SInt16 endSel) -> None")},
888 {"AppendDITL", (PyCFunction)DlgObj_AppendDITL, 1,
889 PyDoc_STR("(Handle theHandle, DITLMethod method) -> None")},
890 {"CountDITL", (PyCFunction)DlgObj_CountDITL, 1,
891 PyDoc_STR("() -> (DialogItemIndex _rv)")},
892 {"ShortenDITL", (PyCFunction)DlgObj_ShortenDITL, 1,
893 PyDoc_STR("(DialogItemIndex numberItems) -> None")},
894 {"InsertDialogItem", (PyCFunction)DlgObj_InsertDialogItem, 1,
895 PyDoc_STR("(DialogItemIndex afterItem, DialogItemType itemType, Handle itemHandle, Rect box) -> None")},
896 {"RemoveDialogItems", (PyCFunction)DlgObj_RemoveDialogItems, 1,
897 PyDoc_STR("(DialogItemIndex itemNo, DialogItemIndex amountToRemove, Boolean disposeItemData) -> None")},
898 {"StdFilterProc", (PyCFunction)DlgObj_StdFilterProc, 1,
899 PyDoc_STR("(EventRecord event, DialogItemIndex itemHit) -> (Boolean _rv, EventRecord event, DialogItemIndex itemHit)")},
900 {"SetDialogDefaultItem", (PyCFunction)DlgObj_SetDialogDefaultItem, 1,
901 PyDoc_STR("(DialogItemIndex newItem) -> None")},
902 {"SetDialogCancelItem", (PyCFunction)DlgObj_SetDialogCancelItem, 1,
903 PyDoc_STR("(DialogItemIndex newItem) -> None")},
904 {"SetDialogTracksCursor", (PyCFunction)DlgObj_SetDialogTracksCursor, 1,
905 PyDoc_STR("(Boolean tracks) -> None")},
906 {"AutoSizeDialog", (PyCFunction)DlgObj_AutoSizeDialog, 1,
907 PyDoc_STR("() -> None")},
908 {"GetDialogItemAsControl", (PyCFunction)DlgObj_GetDialogItemAsControl, 1,
909 PyDoc_STR("(SInt16 inItemNo) -> (ControlHandle outControl)")},
910 {"MoveDialogItem", (PyCFunction)DlgObj_MoveDialogItem, 1,
911 PyDoc_STR("(SInt16 inItemNo, SInt16 inHoriz, SInt16 inVert) -> None")},
912 {"SizeDialogItem", (PyCFunction)DlgObj_SizeDialogItem, 1,
913 PyDoc_STR("(SInt16 inItemNo, SInt16 inWidth, SInt16 inHeight) -> None")},
914 {"AppendDialogItemList", (PyCFunction)DlgObj_AppendDialogItemList, 1,
915 PyDoc_STR("(SInt16 ditlID, DITLMethod method) -> None")},
916 {"SetDialogTimeout", (PyCFunction)DlgObj_SetDialogTimeout, 1,
917 PyDoc_STR("(SInt16 inButtonToPress, UInt32 inSecondsToWait) -> None")},
918 {"GetDialogTimeout", (PyCFunction)DlgObj_GetDialogTimeout, 1,
919 PyDoc_STR("() -> (SInt16 outButtonToPress, UInt32 outSecondsToWait, UInt32 outSecondsRemaining)")},
920 {"SetModalDialogEventMask", (PyCFunction)DlgObj_SetModalDialogEventMask, 1,
921 PyDoc_STR("(EventMask inMask) -> None")},
922 {"GetModalDialogEventMask", (PyCFunction)DlgObj_GetModalDialogEventMask, 1,
923 PyDoc_STR("() -> (EventMask outMask)")},
924 {"GetDialogWindow", (PyCFunction)DlgObj_GetDialogWindow, 1,
925 PyDoc_STR("() -> (WindowPtr _rv)")},
926 {"GetDialogTextEditHandle", (PyCFunction)DlgObj_GetDialogTextEditHandle, 1,
927 PyDoc_STR("() -> (TEHandle _rv)")},
928 {"GetDialogDefaultItem", (PyCFunction)DlgObj_GetDialogDefaultItem, 1,
929 PyDoc_STR("() -> (SInt16 _rv)")},
930 {"GetDialogCancelItem", (PyCFunction)DlgObj_GetDialogCancelItem, 1,
931 PyDoc_STR("() -> (SInt16 _rv)")},
932 {"GetDialogKeyboardFocusItem", (PyCFunction)DlgObj_GetDialogKeyboardFocusItem, 1,
933 PyDoc_STR("() -> (SInt16 _rv)")},
934 {"SetPortDialogPort", (PyCFunction)DlgObj_SetPortDialogPort, 1,
935 PyDoc_STR("() -> None")},
936 {"GetDialogPort", (PyCFunction)DlgObj_GetDialogPort, 1,
937 PyDoc_STR("() -> (CGrafPtr _rv)")},
938 {NULL, NULL, 0}
939 };
940
941 #define DlgObj_getsetlist NULL
942
943
DlgObj_compare(DialogObject * self,DialogObject * other)944 static int DlgObj_compare(DialogObject *self, DialogObject *other)
945 {
946 if ( self->ob_itself > other->ob_itself ) return 1;
947 if ( self->ob_itself < other->ob_itself ) return -1;
948 return 0;
949 }
950
951 #define DlgObj_repr NULL
952
DlgObj_hash(DialogObject * self)953 static int DlgObj_hash(DialogObject *self)
954 {
955 return (int)self->ob_itself;
956 }
957 #define DlgObj_tp_init 0
958
959 #define DlgObj_tp_alloc PyType_GenericAlloc
960
DlgObj_tp_new(PyTypeObject * type,PyObject * _args,PyObject * _kwds)961 static PyObject *DlgObj_tp_new(PyTypeObject *type, PyObject *_args, PyObject *_kwds)
962 {
963 PyObject *_self;
964 DialogPtr itself;
965 char *kw[] = {"itself", 0};
966
967 if (!PyArg_ParseTupleAndKeywords(_args, _kwds, "O&", kw, DlgObj_Convert, &itself)) return NULL;
968 if ((_self = type->tp_alloc(type, 0)) == NULL) return NULL;
969 ((DialogObject *)_self)->ob_itself = itself;
970 return _self;
971 }
972
973 #define DlgObj_tp_free PyObject_Del
974
975
976 PyTypeObject Dialog_Type = {
977 PyObject_HEAD_INIT(NULL)
978 0, /*ob_size*/
979 "_Dlg.Dialog", /*tp_name*/
980 sizeof(DialogObject), /*tp_basicsize*/
981 0, /*tp_itemsize*/
982 /* methods */
983 (destructor) DlgObj_dealloc, /*tp_dealloc*/
984 0, /*tp_print*/
985 (getattrfunc)0, /*tp_getattr*/
986 (setattrfunc)0, /*tp_setattr*/
987 (cmpfunc) DlgObj_compare, /*tp_compare*/
988 (reprfunc) DlgObj_repr, /*tp_repr*/
989 (PyNumberMethods *)0, /* tp_as_number */
990 (PySequenceMethods *)0, /* tp_as_sequence */
991 (PyMappingMethods *)0, /* tp_as_mapping */
992 (hashfunc) DlgObj_hash, /*tp_hash*/
993 0, /*tp_call*/
994 0, /*tp_str*/
995 PyObject_GenericGetAttr, /*tp_getattro*/
996 PyObject_GenericSetAttr, /*tp_setattro */
997 0, /*tp_as_buffer*/
998 Py_TPFLAGS_DEFAULT|Py_TPFLAGS_BASETYPE, /* tp_flags */
999 0, /*tp_doc*/
1000 0, /*tp_traverse*/
1001 0, /*tp_clear*/
1002 0, /*tp_richcompare*/
1003 0, /*tp_weaklistoffset*/
1004 0, /*tp_iter*/
1005 0, /*tp_iternext*/
1006 DlgObj_methods, /* tp_methods */
1007 0, /*tp_members*/
1008 DlgObj_getsetlist, /*tp_getset*/
1009 0, /*tp_base*/
1010 0, /*tp_dict*/
1011 0, /*tp_descr_get*/
1012 0, /*tp_descr_set*/
1013 0, /*tp_dictoffset*/
1014 DlgObj_tp_init, /* tp_init */
1015 DlgObj_tp_alloc, /* tp_alloc */
1016 DlgObj_tp_new, /* tp_new */
1017 DlgObj_tp_free, /* tp_free */
1018 };
1019
1020 /* --------------------- End object type Dialog --------------------- */
1021
1022
Dlg_NewDialog(PyObject * _self,PyObject * _args)1023 static PyObject *Dlg_NewDialog(PyObject *_self, PyObject *_args)
1024 {
1025 PyObject *_res = NULL;
1026 DialogPtr _rv;
1027 Rect boundsRect;
1028 Str255 title;
1029 Boolean visible;
1030 SInt16 procID;
1031 WindowPtr behind;
1032 Boolean goAwayFlag;
1033 SInt32 refCon;
1034 Handle items;
1035 #ifndef NewDialog
1036 PyMac_PRECHECK(NewDialog);
1037 #endif
1038 if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&",
1039 PyMac_GetRect, &boundsRect,
1040 PyMac_GetStr255, title,
1041 &visible,
1042 &procID,
1043 WinObj_Convert, &behind,
1044 &goAwayFlag,
1045 &refCon,
1046 ResObj_Convert, &items))
1047 return NULL;
1048 _rv = NewDialog((void *)0,
1049 &boundsRect,
1050 title,
1051 visible,
1052 procID,
1053 behind,
1054 goAwayFlag,
1055 refCon,
1056 items);
1057 _res = Py_BuildValue("O&",
1058 DlgObj_New, _rv);
1059 return _res;
1060 }
1061
Dlg_GetNewDialog(PyObject * _self,PyObject * _args)1062 static PyObject *Dlg_GetNewDialog(PyObject *_self, PyObject *_args)
1063 {
1064 PyObject *_res = NULL;
1065 DialogPtr _rv;
1066 SInt16 dialogID;
1067 WindowPtr behind;
1068 #ifndef GetNewDialog
1069 PyMac_PRECHECK(GetNewDialog);
1070 #endif
1071 if (!PyArg_ParseTuple(_args, "hO&",
1072 &dialogID,
1073 WinObj_Convert, &behind))
1074 return NULL;
1075 _rv = GetNewDialog(dialogID,
1076 (void *)0,
1077 behind);
1078 _res = Py_BuildValue("O&",
1079 DlgObj_New, _rv);
1080 return _res;
1081 }
1082
Dlg_NewColorDialog(PyObject * _self,PyObject * _args)1083 static PyObject *Dlg_NewColorDialog(PyObject *_self, PyObject *_args)
1084 {
1085 PyObject *_res = NULL;
1086 DialogPtr _rv;
1087 Rect boundsRect;
1088 Str255 title;
1089 Boolean visible;
1090 SInt16 procID;
1091 WindowPtr behind;
1092 Boolean goAwayFlag;
1093 SInt32 refCon;
1094 Handle items;
1095 #ifndef NewColorDialog
1096 PyMac_PRECHECK(NewColorDialog);
1097 #endif
1098 if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&",
1099 PyMac_GetRect, &boundsRect,
1100 PyMac_GetStr255, title,
1101 &visible,
1102 &procID,
1103 WinObj_Convert, &behind,
1104 &goAwayFlag,
1105 &refCon,
1106 ResObj_Convert, &items))
1107 return NULL;
1108 _rv = NewColorDialog((void *)0,
1109 &boundsRect,
1110 title,
1111 visible,
1112 procID,
1113 behind,
1114 goAwayFlag,
1115 refCon,
1116 items);
1117 _res = Py_BuildValue("O&",
1118 DlgObj_New, _rv);
1119 return _res;
1120 }
1121
Dlg_ModalDialog(PyObject * _self,PyObject * _args)1122 static PyObject *Dlg_ModalDialog(PyObject *_self, PyObject *_args)
1123 {
1124 PyObject *_res = NULL;
1125 PyObject* modalFilter;
1126 DialogItemIndex itemHit;
1127 #ifndef ModalDialog
1128 PyMac_PRECHECK(ModalDialog);
1129 #endif
1130 if (!PyArg_ParseTuple(_args, "O",
1131 &modalFilter))
1132 return NULL;
1133 ModalDialog(Dlg_PassFilterProc(modalFilter),
1134 &itemHit);
1135 _res = Py_BuildValue("h",
1136 itemHit);
1137 return _res;
1138 }
1139
Dlg_IsDialogEvent(PyObject * _self,PyObject * _args)1140 static PyObject *Dlg_IsDialogEvent(PyObject *_self, PyObject *_args)
1141 {
1142 PyObject *_res = NULL;
1143 Boolean _rv;
1144 EventRecord theEvent;
1145 #ifndef IsDialogEvent
1146 PyMac_PRECHECK(IsDialogEvent);
1147 #endif
1148 if (!PyArg_ParseTuple(_args, "O&",
1149 PyMac_GetEventRecord, &theEvent))
1150 return NULL;
1151 _rv = IsDialogEvent(&theEvent);
1152 _res = Py_BuildValue("b",
1153 _rv);
1154 return _res;
1155 }
1156
Dlg_DialogSelect(PyObject * _self,PyObject * _args)1157 static PyObject *Dlg_DialogSelect(PyObject *_self, PyObject *_args)
1158 {
1159 PyObject *_res = NULL;
1160 Boolean _rv;
1161 EventRecord theEvent;
1162 DialogPtr theDialog;
1163 DialogItemIndex itemHit;
1164 #ifndef DialogSelect
1165 PyMac_PRECHECK(DialogSelect);
1166 #endif
1167 if (!PyArg_ParseTuple(_args, "O&",
1168 PyMac_GetEventRecord, &theEvent))
1169 return NULL;
1170 _rv = DialogSelect(&theEvent,
1171 &theDialog,
1172 &itemHit);
1173 _res = Py_BuildValue("bO&h",
1174 _rv,
1175 DlgObj_WhichDialog, theDialog,
1176 itemHit);
1177 return _res;
1178 }
1179
Dlg_Alert(PyObject * _self,PyObject * _args)1180 static PyObject *Dlg_Alert(PyObject *_self, PyObject *_args)
1181 {
1182 PyObject *_res = NULL;
1183 DialogItemIndex _rv;
1184 SInt16 alertID;
1185 PyObject* modalFilter;
1186 #ifndef Alert
1187 PyMac_PRECHECK(Alert);
1188 #endif
1189 if (!PyArg_ParseTuple(_args, "hO",
1190 &alertID,
1191 &modalFilter))
1192 return NULL;
1193 _rv = Alert(alertID,
1194 Dlg_PassFilterProc(modalFilter));
1195 _res = Py_BuildValue("h",
1196 _rv);
1197 return _res;
1198 }
1199
Dlg_StopAlert(PyObject * _self,PyObject * _args)1200 static PyObject *Dlg_StopAlert(PyObject *_self, PyObject *_args)
1201 {
1202 PyObject *_res = NULL;
1203 DialogItemIndex _rv;
1204 SInt16 alertID;
1205 PyObject* modalFilter;
1206 #ifndef StopAlert
1207 PyMac_PRECHECK(StopAlert);
1208 #endif
1209 if (!PyArg_ParseTuple(_args, "hO",
1210 &alertID,
1211 &modalFilter))
1212 return NULL;
1213 _rv = StopAlert(alertID,
1214 Dlg_PassFilterProc(modalFilter));
1215 _res = Py_BuildValue("h",
1216 _rv);
1217 return _res;
1218 }
1219
Dlg_NoteAlert(PyObject * _self,PyObject * _args)1220 static PyObject *Dlg_NoteAlert(PyObject *_self, PyObject *_args)
1221 {
1222 PyObject *_res = NULL;
1223 DialogItemIndex _rv;
1224 SInt16 alertID;
1225 PyObject* modalFilter;
1226 #ifndef NoteAlert
1227 PyMac_PRECHECK(NoteAlert);
1228 #endif
1229 if (!PyArg_ParseTuple(_args, "hO",
1230 &alertID,
1231 &modalFilter))
1232 return NULL;
1233 _rv = NoteAlert(alertID,
1234 Dlg_PassFilterProc(modalFilter));
1235 _res = Py_BuildValue("h",
1236 _rv);
1237 return _res;
1238 }
1239
Dlg_CautionAlert(PyObject * _self,PyObject * _args)1240 static PyObject *Dlg_CautionAlert(PyObject *_self, PyObject *_args)
1241 {
1242 PyObject *_res = NULL;
1243 DialogItemIndex _rv;
1244 SInt16 alertID;
1245 PyObject* modalFilter;
1246 #ifndef CautionAlert
1247 PyMac_PRECHECK(CautionAlert);
1248 #endif
1249 if (!PyArg_ParseTuple(_args, "hO",
1250 &alertID,
1251 &modalFilter))
1252 return NULL;
1253 _rv = CautionAlert(alertID,
1254 Dlg_PassFilterProc(modalFilter));
1255 _res = Py_BuildValue("h",
1256 _rv);
1257 return _res;
1258 }
1259
Dlg_ParamText(PyObject * _self,PyObject * _args)1260 static PyObject *Dlg_ParamText(PyObject *_self, PyObject *_args)
1261 {
1262 PyObject *_res = NULL;
1263 Str255 param0;
1264 Str255 param1;
1265 Str255 param2;
1266 Str255 param3;
1267 #ifndef ParamText
1268 PyMac_PRECHECK(ParamText);
1269 #endif
1270 if (!PyArg_ParseTuple(_args, "O&O&O&O&",
1271 PyMac_GetStr255, param0,
1272 PyMac_GetStr255, param1,
1273 PyMac_GetStr255, param2,
1274 PyMac_GetStr255, param3))
1275 return NULL;
1276 ParamText(param0,
1277 param1,
1278 param2,
1279 param3);
1280 Py_INCREF(Py_None);
1281 _res = Py_None;
1282 return _res;
1283 }
1284
Dlg_GetDialogItemText(PyObject * _self,PyObject * _args)1285 static PyObject *Dlg_GetDialogItemText(PyObject *_self, PyObject *_args)
1286 {
1287 PyObject *_res = NULL;
1288 Handle item;
1289 Str255 text;
1290 #ifndef GetDialogItemText
1291 PyMac_PRECHECK(GetDialogItemText);
1292 #endif
1293 if (!PyArg_ParseTuple(_args, "O&",
1294 ResObj_Convert, &item))
1295 return NULL;
1296 GetDialogItemText(item,
1297 text);
1298 _res = Py_BuildValue("O&",
1299 PyMac_BuildStr255, text);
1300 return _res;
1301 }
1302
Dlg_SetDialogItemText(PyObject * _self,PyObject * _args)1303 static PyObject *Dlg_SetDialogItemText(PyObject *_self, PyObject *_args)
1304 {
1305 PyObject *_res = NULL;
1306 Handle item;
1307 Str255 text;
1308 #ifndef SetDialogItemText
1309 PyMac_PRECHECK(SetDialogItemText);
1310 #endif
1311 if (!PyArg_ParseTuple(_args, "O&O&",
1312 ResObj_Convert, &item,
1313 PyMac_GetStr255, text))
1314 return NULL;
1315 SetDialogItemText(item,
1316 text);
1317 Py_INCREF(Py_None);
1318 _res = Py_None;
1319 return _res;
1320 }
1321
Dlg_GetAlertStage(PyObject * _self,PyObject * _args)1322 static PyObject *Dlg_GetAlertStage(PyObject *_self, PyObject *_args)
1323 {
1324 PyObject *_res = NULL;
1325 SInt16 _rv;
1326 #ifndef GetAlertStage
1327 PyMac_PRECHECK(GetAlertStage);
1328 #endif
1329 if (!PyArg_ParseTuple(_args, ""))
1330 return NULL;
1331 _rv = GetAlertStage();
1332 _res = Py_BuildValue("h",
1333 _rv);
1334 return _res;
1335 }
1336
Dlg_SetDialogFont(PyObject * _self,PyObject * _args)1337 static PyObject *Dlg_SetDialogFont(PyObject *_self, PyObject *_args)
1338 {
1339 PyObject *_res = NULL;
1340 SInt16 fontNum;
1341 #ifndef SetDialogFont
1342 PyMac_PRECHECK(SetDialogFont);
1343 #endif
1344 if (!PyArg_ParseTuple(_args, "h",
1345 &fontNum))
1346 return NULL;
1347 SetDialogFont(fontNum);
1348 Py_INCREF(Py_None);
1349 _res = Py_None;
1350 return _res;
1351 }
1352
Dlg_ResetAlertStage(PyObject * _self,PyObject * _args)1353 static PyObject *Dlg_ResetAlertStage(PyObject *_self, PyObject *_args)
1354 {
1355 PyObject *_res = NULL;
1356 #ifndef ResetAlertStage
1357 PyMac_PRECHECK(ResetAlertStage);
1358 #endif
1359 if (!PyArg_ParseTuple(_args, ""))
1360 return NULL;
1361 ResetAlertStage();
1362 Py_INCREF(Py_None);
1363 _res = Py_None;
1364 return _res;
1365 }
1366
Dlg_GetParamText(PyObject * _self,PyObject * _args)1367 static PyObject *Dlg_GetParamText(PyObject *_self, PyObject *_args)
1368 {
1369 PyObject *_res = NULL;
1370 Str255 param0;
1371 Str255 param1;
1372 Str255 param2;
1373 Str255 param3;
1374 #ifndef GetParamText
1375 PyMac_PRECHECK(GetParamText);
1376 #endif
1377 if (!PyArg_ParseTuple(_args, "O&O&O&O&",
1378 PyMac_GetStr255, param0,
1379 PyMac_GetStr255, param1,
1380 PyMac_GetStr255, param2,
1381 PyMac_GetStr255, param3))
1382 return NULL;
1383 GetParamText(param0,
1384 param1,
1385 param2,
1386 param3);
1387 Py_INCREF(Py_None);
1388 _res = Py_None;
1389 return _res;
1390 }
1391
Dlg_NewFeaturesDialog(PyObject * _self,PyObject * _args)1392 static PyObject *Dlg_NewFeaturesDialog(PyObject *_self, PyObject *_args)
1393 {
1394 PyObject *_res = NULL;
1395 DialogPtr _rv;
1396 Rect inBoundsRect;
1397 Str255 inTitle;
1398 Boolean inIsVisible;
1399 SInt16 inProcID;
1400 WindowPtr inBehind;
1401 Boolean inGoAwayFlag;
1402 SInt32 inRefCon;
1403 Handle inItemListHandle;
1404 UInt32 inFlags;
1405 #ifndef NewFeaturesDialog
1406 PyMac_PRECHECK(NewFeaturesDialog);
1407 #endif
1408 if (!PyArg_ParseTuple(_args, "O&O&bhO&blO&l",
1409 PyMac_GetRect, &inBoundsRect,
1410 PyMac_GetStr255, inTitle,
1411 &inIsVisible,
1412 &inProcID,
1413 WinObj_Convert, &inBehind,
1414 &inGoAwayFlag,
1415 &inRefCon,
1416 ResObj_Convert, &inItemListHandle,
1417 &inFlags))
1418 return NULL;
1419 _rv = NewFeaturesDialog((void *)0,
1420 &inBoundsRect,
1421 inTitle,
1422 inIsVisible,
1423 inProcID,
1424 inBehind,
1425 inGoAwayFlag,
1426 inRefCon,
1427 inItemListHandle,
1428 inFlags);
1429 _res = Py_BuildValue("O&",
1430 DlgObj_New, _rv);
1431 return _res;
1432 }
1433
Dlg_GetDialogFromWindow(PyObject * _self,PyObject * _args)1434 static PyObject *Dlg_GetDialogFromWindow(PyObject *_self, PyObject *_args)
1435 {
1436 PyObject *_res = NULL;
1437 DialogPtr _rv;
1438 WindowPtr window;
1439 #ifndef GetDialogFromWindow
1440 PyMac_PRECHECK(GetDialogFromWindow);
1441 #endif
1442 if (!PyArg_ParseTuple(_args, "O&",
1443 WinObj_Convert, &window))
1444 return NULL;
1445 _rv = GetDialogFromWindow(window);
1446 _res = Py_BuildValue("O&",
1447 DlgObj_New, _rv);
1448 return _res;
1449 }
1450
Dlg_SetUserItemHandler(PyObject * _self,PyObject * _args)1451 static PyObject *Dlg_SetUserItemHandler(PyObject *_self, PyObject *_args)
1452 {
1453 PyObject *_res = NULL;
1454
1455 PyObject *new = NULL;
1456
1457
1458 if (!PyArg_ParseTuple(_args, "|O", &new))
1459 return NULL;
1460
1461 if (Dlg_UserItemProc_callback && new && new != Py_None) {
1462 PyErr_SetString(Dlg_Error, "Another UserItemProc is already installed");
1463 return NULL;
1464 }
1465
1466 if (new == NULL || new == Py_None) {
1467 new = NULL;
1468 _res = Py_None;
1469 Py_INCREF(Py_None);
1470 } else {
1471 Py_INCREF(new);
1472 _res = Py_BuildValue("O&", ResObj_New, (Handle)NewUserItemUPP(Dlg_UnivUserItemProc));
1473 }
1474
1475 Dlg_UserItemProc_callback = new;
1476 return _res;
1477
1478 }
1479
1480 static PyMethodDef Dlg_methods[] = {
1481 {"NewDialog", (PyCFunction)Dlg_NewDialog, 1,
1482 PyDoc_STR("(Rect boundsRect, Str255 title, Boolean visible, SInt16 procID, WindowPtr behind, Boolean goAwayFlag, SInt32 refCon, Handle items) -> (DialogPtr _rv)")},
1483 {"GetNewDialog", (PyCFunction)Dlg_GetNewDialog, 1,
1484 PyDoc_STR("(SInt16 dialogID, WindowPtr behind) -> (DialogPtr _rv)")},
1485 {"NewColorDialog", (PyCFunction)Dlg_NewColorDialog, 1,
1486 PyDoc_STR("(Rect boundsRect, Str255 title, Boolean visible, SInt16 procID, WindowPtr behind, Boolean goAwayFlag, SInt32 refCon, Handle items) -> (DialogPtr _rv)")},
1487 {"ModalDialog", (PyCFunction)Dlg_ModalDialog, 1,
1488 PyDoc_STR("(PyObject* modalFilter) -> (DialogItemIndex itemHit)")},
1489 {"IsDialogEvent", (PyCFunction)Dlg_IsDialogEvent, 1,
1490 PyDoc_STR("(EventRecord theEvent) -> (Boolean _rv)")},
1491 {"DialogSelect", (PyCFunction)Dlg_DialogSelect, 1,
1492 PyDoc_STR("(EventRecord theEvent) -> (Boolean _rv, DialogPtr theDialog, DialogItemIndex itemHit)")},
1493 {"Alert", (PyCFunction)Dlg_Alert, 1,
1494 PyDoc_STR("(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)")},
1495 {"StopAlert", (PyCFunction)Dlg_StopAlert, 1,
1496 PyDoc_STR("(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)")},
1497 {"NoteAlert", (PyCFunction)Dlg_NoteAlert, 1,
1498 PyDoc_STR("(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)")},
1499 {"CautionAlert", (PyCFunction)Dlg_CautionAlert, 1,
1500 PyDoc_STR("(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)")},
1501 {"ParamText", (PyCFunction)Dlg_ParamText, 1,
1502 PyDoc_STR("(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None")},
1503 {"GetDialogItemText", (PyCFunction)Dlg_GetDialogItemText, 1,
1504 PyDoc_STR("(Handle item) -> (Str255 text)")},
1505 {"SetDialogItemText", (PyCFunction)Dlg_SetDialogItemText, 1,
1506 PyDoc_STR("(Handle item, Str255 text) -> None")},
1507 {"GetAlertStage", (PyCFunction)Dlg_GetAlertStage, 1,
1508 PyDoc_STR("() -> (SInt16 _rv)")},
1509 {"SetDialogFont", (PyCFunction)Dlg_SetDialogFont, 1,
1510 PyDoc_STR("(SInt16 fontNum) -> None")},
1511 {"ResetAlertStage", (PyCFunction)Dlg_ResetAlertStage, 1,
1512 PyDoc_STR("() -> None")},
1513 {"GetParamText", (PyCFunction)Dlg_GetParamText, 1,
1514 PyDoc_STR("(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None")},
1515 {"NewFeaturesDialog", (PyCFunction)Dlg_NewFeaturesDialog, 1,
1516 PyDoc_STR("(Rect inBoundsRect, Str255 inTitle, Boolean inIsVisible, SInt16 inProcID, WindowPtr inBehind, Boolean inGoAwayFlag, SInt32 inRefCon, Handle inItemListHandle, UInt32 inFlags) -> (DialogPtr _rv)")},
1517 {"GetDialogFromWindow", (PyCFunction)Dlg_GetDialogFromWindow, 1,
1518 PyDoc_STR("(WindowPtr window) -> (DialogPtr _rv)")},
1519 {"SetUserItemHandler", (PyCFunction)Dlg_SetUserItemHandler, 1,
1520 PyDoc_STR(NULL)},
1521 {NULL, NULL, 0}
1522 };
1523
1524
1525
1526 /* Return the WindowPtr corresponding to a DialogObject */
1527 #if 0
1528 WindowPtr
1529 DlgObj_ConvertToWindow(PyObject *self)
1530 {
1531 if ( DlgObj_Check(self) )
1532 return GetDialogWindow(((DialogObject *)self)->ob_itself);
1533 return NULL;
1534 }
1535 #endif
1536 /* Return the object corresponding to the dialog, or None */
1537
1538 PyObject *
DlgObj_WhichDialog(DialogPtr d)1539 DlgObj_WhichDialog(DialogPtr d)
1540 {
1541 PyObject *it;
1542
1543 if (d == NULL) {
1544 it = Py_None;
1545 Py_INCREF(it);
1546 } else {
1547 WindowPtr w = GetDialogWindow(d);
1548
1549 it = (PyObject *) GetWRefCon(w);
1550 if (it == NULL || ((DialogObject *)it)->ob_itself != d || !DlgObj_Check(it)) {
1551 #if 0
1552 /* Should do this, but we don't have an ob_freeit for dialogs yet. */
1553 it = WinObj_New(w);
1554 ((WindowObject *)it)->ob_freeit = NULL;
1555 #else
1556 it = Py_None;
1557 Py_INCREF(it);
1558 #endif
1559 } else {
1560 Py_INCREF(it);
1561 }
1562 }
1563 return it;
1564 }
1565
1566 #else /* __LP64__ */
1567
1568 static PyMethodDef Dlg_methods[] = {
1569 {NULL, NULL, 0}
1570 };
1571
1572 #endif /* __LP64__ */
1573
1574
init_Dlg(void)1575 void init_Dlg(void)
1576 {
1577 PyObject *m;
1578 #if APPLE_SUPPORTS_QUICKTIME
1579 PyObject *d;
1580
1581
1582
1583 PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_New);
1584 PyMac_INIT_TOOLBOX_OBJECT_NEW(DialogPtr, DlgObj_WhichDialog);
1585 PyMac_INIT_TOOLBOX_OBJECT_CONVERT(DialogPtr, DlgObj_Convert);
1586 #endif /* APPLE_SUPPORTS_QUICKTIME */
1587
1588 m = Py_InitModule("_Dlg", Dlg_methods);
1589
1590 #if APPLE_SUPPORTS_QUICKTIME
1591 d = PyModule_GetDict(m);
1592 Dlg_Error = PyMac_GetOSErrException();
1593 if (Dlg_Error == NULL ||
1594 PyDict_SetItemString(d, "Error", Dlg_Error) != 0)
1595 return;
1596 Dialog_Type.ob_type = &PyType_Type;
1597 if (PyType_Ready(&Dialog_Type) < 0) return;
1598 Py_INCREF(&Dialog_Type);
1599 PyModule_AddObject(m, "Dialog", (PyObject *)&Dialog_Type);
1600 /* Backward-compatible name */
1601 Py_INCREF(&Dialog_Type);
1602 PyModule_AddObject(m, "DialogType", (PyObject *)&Dialog_Type);
1603 #endif /* APPLE_SUPPORTS_QUICKTIME */
1604 }
1605
1606 /* ======================== End module _Dlg ========================= */
1607
1608