2 /* =========================== Module Dlg =========================== */
9 #include "pymactoolbox.h"
13 /* XXX Shouldn't this be a stack? */
14 static PyObject
*Dlg_FilterProc_callback
= NULL
;
16 static pascal Boolean
Dlg_UnivFilterProc(DialogPtr dialog
,
22 PyObject
*callback
= Dlg_FilterProc_callback
;
24 return 0; /* Default behavior */
25 Dlg_FilterProc_callback
= NULL
; /* We'll restore it when call successful */
26 args
= Py_BuildValue("O&O&", WinObj_WhichWindow
, dialog
, PyMac_BuildEventRecord
, event
);
30 res
= PyEval_CallObject(callback
, args
);
34 PySys_WriteStderr("Exception in Dialog Filter\n");
36 *itemHit
= -1; /* Fake return item */
37 return 1; /* We handled it */
40 Dlg_FilterProc_callback
= callback
;
41 if (PyInt_Check(res
)) {
42 *itemHit
= PyInt_AsLong(res
);
46 rv
= PyObject_IsTrue(res
);
52 static ModalFilterProcPtr
53 Dlg_PassFilterProc(PyObject
*callback
)
55 PyObject
*tmp
= Dlg_FilterProc_callback
;
56 Dlg_FilterProc_callback
= NULL
;
57 if (callback
== Py_None
) {
62 Dlg_FilterProc_callback
= callback
;
64 return &Dlg_UnivFilterProc
;
67 static PyObject
*Dlg_UserItemProc_callback
= NULL
;
69 static pascal void Dlg_UnivUserItemProc(DialogPtr dialog
,
74 if (Dlg_UserItemProc_callback
== NULL
)
75 return; /* Default behavior */
76 Dlg_FilterProc_callback
= NULL
; /* We'll restore it when call successful */
77 args
= Py_BuildValue("O&h", WinObj_WhichWindow
, dialog
, item
);
81 res
= PyEval_CallObject(Dlg_UserItemProc_callback
, args
);
85 PySys_WriteStderr("Exception in Dialog UserItem proc\n");
92 extern PyMethodChain WinObj_chain
;
94 static PyObject
*Dlg_Error
;
96 /* ----------------------- Object type Dialog ----------------------- */
98 PyTypeObject Dialog_Type
;
100 #define DlgObj_Check(x) ((x)->ob_type == &Dialog_Type)
102 typedef struct DialogObject
{
107 PyObject
*DlgObj_New(itself
)
111 if (itself
== NULL
) return Py_None
;
112 it
= PyObject_NEW(DialogObject
, &Dialog_Type
);
113 if (it
== NULL
) return NULL
;
114 it
->ob_itself
= itself
;
115 SetWRefCon(GetDialogWindow(itself
), (long)it
);
116 return (PyObject
*)it
;
118 DlgObj_Convert(v
, p_itself
)
122 if (v
== Py_None
) { *p_itself
= NULL
; return 1; }
123 if (PyInt_Check(v
)) { *p_itself
= (DialogPtr
)PyInt_AsLong(v
);
125 if (!DlgObj_Check(v
))
127 PyErr_SetString(PyExc_TypeError
, "Dialog required");
130 *p_itself
= ((DialogObject
*)v
)->ob_itself
;
134 static void DlgObj_dealloc(self
)
137 DisposeDialog(self
->ob_itself
);
141 static PyObject
*DlgObj_DrawDialog(_self
, _args
)
145 PyObject
*_res
= NULL
;
146 if (!PyArg_ParseTuple(_args
, ""))
148 DrawDialog(_self
->ob_itself
);
154 static PyObject
*DlgObj_UpdateDialog(_self
, _args
)
158 PyObject
*_res
= NULL
;
160 if (!PyArg_ParseTuple(_args
, "O&",
161 ResObj_Convert
, &updateRgn
))
163 UpdateDialog(_self
->ob_itself
,
170 static PyObject
*DlgObj_HideDialogItem(_self
, _args
)
174 PyObject
*_res
= NULL
;
175 DialogItemIndex itemNo
;
176 if (!PyArg_ParseTuple(_args
, "h",
179 HideDialogItem(_self
->ob_itself
,
186 static PyObject
*DlgObj_ShowDialogItem(_self
, _args
)
190 PyObject
*_res
= NULL
;
191 DialogItemIndex itemNo
;
192 if (!PyArg_ParseTuple(_args
, "h",
195 ShowDialogItem(_self
->ob_itself
,
202 static PyObject
*DlgObj_FindDialogItem(_self
, _args
)
206 PyObject
*_res
= NULL
;
207 DialogItemIndexZeroBased _rv
;
209 if (!PyArg_ParseTuple(_args
, "O&",
210 PyMac_GetPoint
, &thePt
))
212 _rv
= FindDialogItem(_self
->ob_itself
,
214 _res
= Py_BuildValue("h",
219 static PyObject
*DlgObj_DialogCut(_self
, _args
)
223 PyObject
*_res
= NULL
;
224 if (!PyArg_ParseTuple(_args
, ""))
226 DialogCut(_self
->ob_itself
);
232 static PyObject
*DlgObj_DialogPaste(_self
, _args
)
236 PyObject
*_res
= NULL
;
237 if (!PyArg_ParseTuple(_args
, ""))
239 DialogPaste(_self
->ob_itself
);
245 static PyObject
*DlgObj_DialogCopy(_self
, _args
)
249 PyObject
*_res
= NULL
;
250 if (!PyArg_ParseTuple(_args
, ""))
252 DialogCopy(_self
->ob_itself
);
258 static PyObject
*DlgObj_DialogDelete(_self
, _args
)
262 PyObject
*_res
= NULL
;
263 if (!PyArg_ParseTuple(_args
, ""))
265 DialogDelete(_self
->ob_itself
);
271 static PyObject
*DlgObj_GetDialogItem(_self
, _args
)
275 PyObject
*_res
= NULL
;
276 DialogItemIndex itemNo
;
277 DialogItemType itemType
;
280 if (!PyArg_ParseTuple(_args
, "h",
283 GetDialogItem(_self
->ob_itself
,
288 _res
= Py_BuildValue("hO&O&",
291 PyMac_BuildRect
, &box
);
295 static PyObject
*DlgObj_SetDialogItem(_self
, _args
)
299 PyObject
*_res
= NULL
;
300 DialogItemIndex itemNo
;
301 DialogItemType itemType
;
304 if (!PyArg_ParseTuple(_args
, "hhO&O&",
307 ResObj_Convert
, &item
,
308 PyMac_GetRect
, &box
))
310 SetDialogItem(_self
->ob_itself
,
320 static PyObject
*DlgObj_SelectDialogItemText(_self
, _args
)
324 PyObject
*_res
= NULL
;
325 DialogItemIndex itemNo
;
328 if (!PyArg_ParseTuple(_args
, "hhh",
333 SelectDialogItemText(_self
->ob_itself
,
342 static PyObject
*DlgObj_AppendDITL(_self
, _args
)
346 PyObject
*_res
= NULL
;
349 if (!PyArg_ParseTuple(_args
, "O&h",
350 ResObj_Convert
, &theHandle
,
353 AppendDITL(_self
->ob_itself
,
361 static PyObject
*DlgObj_CountDITL(_self
, _args
)
365 PyObject
*_res
= NULL
;
367 if (!PyArg_ParseTuple(_args
, ""))
369 _rv
= CountDITL(_self
->ob_itself
);
370 _res
= Py_BuildValue("h",
375 static PyObject
*DlgObj_ShortenDITL(_self
, _args
)
379 PyObject
*_res
= NULL
;
380 DialogItemIndex numberItems
;
381 if (!PyArg_ParseTuple(_args
, "h",
384 ShortenDITL(_self
->ob_itself
,
391 static PyObject
*DlgObj_StdFilterProc(_self
, _args
)
395 PyObject
*_res
= NULL
;
398 DialogItemIndex itemHit
;
399 if (!PyArg_ParseTuple(_args
, ""))
401 _rv
= StdFilterProc(_self
->ob_itself
,
404 _res
= Py_BuildValue("bO&h",
406 PyMac_BuildEventRecord
, &event
,
411 static PyObject
*DlgObj_SetDialogDefaultItem(_self
, _args
)
415 PyObject
*_res
= NULL
;
417 DialogItemIndex newItem
;
418 if (!PyArg_ParseTuple(_args
, "h",
421 _err
= SetDialogDefaultItem(_self
->ob_itself
,
423 if (_err
!= noErr
) return PyMac_Error(_err
);
429 static PyObject
*DlgObj_SetDialogCancelItem(_self
, _args
)
433 PyObject
*_res
= NULL
;
435 DialogItemIndex newItem
;
436 if (!PyArg_ParseTuple(_args
, "h",
439 _err
= SetDialogCancelItem(_self
->ob_itself
,
441 if (_err
!= noErr
) return PyMac_Error(_err
);
447 static PyObject
*DlgObj_SetDialogTracksCursor(_self
, _args
)
451 PyObject
*_res
= NULL
;
454 if (!PyArg_ParseTuple(_args
, "b",
457 _err
= SetDialogTracksCursor(_self
->ob_itself
,
459 if (_err
!= noErr
) return PyMac_Error(_err
);
465 static PyObject
*DlgObj_AutoSizeDialog(_self
, _args
)
469 PyObject
*_res
= NULL
;
471 if (!PyArg_ParseTuple(_args
, ""))
473 _err
= AutoSizeDialog(_self
->ob_itself
);
474 if (_err
!= noErr
) return PyMac_Error(_err
);
480 static PyObject
*DlgObj_GetDialogItemAsControl(_self
, _args
)
484 PyObject
*_res
= NULL
;
487 ControlHandle outControl
;
488 if (!PyArg_ParseTuple(_args
, "h",
491 _err
= GetDialogItemAsControl(_self
->ob_itself
,
494 if (_err
!= noErr
) return PyMac_Error(_err
);
495 _res
= Py_BuildValue("O&",
496 CtlObj_New
, outControl
);
500 static PyObject
*DlgObj_MoveDialogItem(_self
, _args
)
504 PyObject
*_res
= NULL
;
509 if (!PyArg_ParseTuple(_args
, "hhh",
514 _err
= MoveDialogItem(_self
->ob_itself
,
518 if (_err
!= noErr
) return PyMac_Error(_err
);
524 static PyObject
*DlgObj_SizeDialogItem(_self
, _args
)
528 PyObject
*_res
= NULL
;
533 if (!PyArg_ParseTuple(_args
, "hhh",
538 _err
= SizeDialogItem(_self
->ob_itself
,
542 if (_err
!= noErr
) return PyMac_Error(_err
);
548 static PyObject
*DlgObj_AppendDialogItemList(_self
, _args
)
552 PyObject
*_res
= NULL
;
556 if (!PyArg_ParseTuple(_args
, "hh",
560 _err
= AppendDialogItemList(_self
->ob_itself
,
563 if (_err
!= noErr
) return PyMac_Error(_err
);
569 static PyObject
*DlgObj_SetDialogTimeout(_self
, _args
)
573 PyObject
*_res
= NULL
;
575 SInt16 inButtonToPress
;
576 UInt32 inSecondsToWait
;
577 if (!PyArg_ParseTuple(_args
, "hl",
581 _err
= SetDialogTimeout(_self
->ob_itself
,
584 if (_err
!= noErr
) return PyMac_Error(_err
);
590 static PyObject
*DlgObj_GetDialogTimeout(_self
, _args
)
594 PyObject
*_res
= NULL
;
596 SInt16 outButtonToPress
;
597 UInt32 outSecondsToWait
;
598 UInt32 outSecondsRemaining
;
599 if (!PyArg_ParseTuple(_args
, ""))
601 _err
= GetDialogTimeout(_self
->ob_itself
,
604 &outSecondsRemaining
);
605 if (_err
!= noErr
) return PyMac_Error(_err
);
606 _res
= Py_BuildValue("hll",
609 outSecondsRemaining
);
613 static PyObject
*DlgObj_SetModalDialogEventMask(_self
, _args
)
617 PyObject
*_res
= NULL
;
620 if (!PyArg_ParseTuple(_args
, "H",
623 _err
= SetModalDialogEventMask(_self
->ob_itself
,
625 if (_err
!= noErr
) return PyMac_Error(_err
);
631 static PyObject
*DlgObj_GetModalDialogEventMask(_self
, _args
)
635 PyObject
*_res
= NULL
;
638 if (!PyArg_ParseTuple(_args
, ""))
640 _err
= GetModalDialogEventMask(_self
->ob_itself
,
642 if (_err
!= noErr
) return PyMac_Error(_err
);
643 _res
= Py_BuildValue("H",
648 static PyObject
*DlgObj_GetDialogWindow(_self
, _args
)
652 PyObject
*_res
= NULL
;
654 if (!PyArg_ParseTuple(_args
, ""))
656 _rv
= GetDialogWindow(_self
->ob_itself
);
657 _res
= Py_BuildValue("O&",
662 static PyObject
*DlgObj_GetDialogDefaultItem(_self
, _args
)
666 PyObject
*_res
= NULL
;
668 if (!PyArg_ParseTuple(_args
, ""))
670 _rv
= GetDialogDefaultItem(_self
->ob_itself
);
671 _res
= Py_BuildValue("h",
676 static PyObject
*DlgObj_GetDialogCancelItem(_self
, _args
)
680 PyObject
*_res
= NULL
;
682 if (!PyArg_ParseTuple(_args
, ""))
684 _rv
= GetDialogCancelItem(_self
->ob_itself
);
685 _res
= Py_BuildValue("h",
690 static PyObject
*DlgObj_GetDialogKeyboardFocusItem(_self
, _args
)
694 PyObject
*_res
= NULL
;
696 if (!PyArg_ParseTuple(_args
, ""))
698 _rv
= GetDialogKeyboardFocusItem(_self
->ob_itself
);
699 _res
= Py_BuildValue("h",
704 #if !TARGET_API_MAC_CARBON
706 static PyObject
*DlgObj_SetGrafPortOfDialog(_self
, _args
)
710 PyObject
*_res
= NULL
;
711 if (!PyArg_ParseTuple(_args
, ""))
713 SetGrafPortOfDialog(_self
->ob_itself
);
720 static PyMethodDef DlgObj_methods
[] = {
721 {"DrawDialog", (PyCFunction
)DlgObj_DrawDialog
, 1,
723 {"UpdateDialog", (PyCFunction
)DlgObj_UpdateDialog
, 1,
724 "(RgnHandle updateRgn) -> None"},
725 {"HideDialogItem", (PyCFunction
)DlgObj_HideDialogItem
, 1,
726 "(DialogItemIndex itemNo) -> None"},
727 {"ShowDialogItem", (PyCFunction
)DlgObj_ShowDialogItem
, 1,
728 "(DialogItemIndex itemNo) -> None"},
729 {"FindDialogItem", (PyCFunction
)DlgObj_FindDialogItem
, 1,
730 "(Point thePt) -> (DialogItemIndexZeroBased _rv)"},
731 {"DialogCut", (PyCFunction
)DlgObj_DialogCut
, 1,
733 {"DialogPaste", (PyCFunction
)DlgObj_DialogPaste
, 1,
735 {"DialogCopy", (PyCFunction
)DlgObj_DialogCopy
, 1,
737 {"DialogDelete", (PyCFunction
)DlgObj_DialogDelete
, 1,
739 {"GetDialogItem", (PyCFunction
)DlgObj_GetDialogItem
, 1,
740 "(DialogItemIndex itemNo) -> (DialogItemType itemType, Handle item, Rect box)"},
741 {"SetDialogItem", (PyCFunction
)DlgObj_SetDialogItem
, 1,
742 "(DialogItemIndex itemNo, DialogItemType itemType, Handle item, Rect box) -> None"},
743 {"SelectDialogItemText", (PyCFunction
)DlgObj_SelectDialogItemText
, 1,
744 "(DialogItemIndex itemNo, SInt16 strtSel, SInt16 endSel) -> None"},
745 {"AppendDITL", (PyCFunction
)DlgObj_AppendDITL
, 1,
746 "(Handle theHandle, DITLMethod method) -> None"},
747 {"CountDITL", (PyCFunction
)DlgObj_CountDITL
, 1,
748 "() -> (DialogItemIndex _rv)"},
749 {"ShortenDITL", (PyCFunction
)DlgObj_ShortenDITL
, 1,
750 "(DialogItemIndex numberItems) -> None"},
751 {"StdFilterProc", (PyCFunction
)DlgObj_StdFilterProc
, 1,
752 "() -> (Boolean _rv, EventRecord event, DialogItemIndex itemHit)"},
753 {"SetDialogDefaultItem", (PyCFunction
)DlgObj_SetDialogDefaultItem
, 1,
754 "(DialogItemIndex newItem) -> None"},
755 {"SetDialogCancelItem", (PyCFunction
)DlgObj_SetDialogCancelItem
, 1,
756 "(DialogItemIndex newItem) -> None"},
757 {"SetDialogTracksCursor", (PyCFunction
)DlgObj_SetDialogTracksCursor
, 1,
758 "(Boolean tracks) -> None"},
759 {"AutoSizeDialog", (PyCFunction
)DlgObj_AutoSizeDialog
, 1,
761 {"GetDialogItemAsControl", (PyCFunction
)DlgObj_GetDialogItemAsControl
, 1,
762 "(SInt16 inItemNo) -> (ControlHandle outControl)"},
763 {"MoveDialogItem", (PyCFunction
)DlgObj_MoveDialogItem
, 1,
764 "(SInt16 inItemNo, SInt16 inHoriz, SInt16 inVert) -> None"},
765 {"SizeDialogItem", (PyCFunction
)DlgObj_SizeDialogItem
, 1,
766 "(SInt16 inItemNo, SInt16 inWidth, SInt16 inHeight) -> None"},
767 {"AppendDialogItemList", (PyCFunction
)DlgObj_AppendDialogItemList
, 1,
768 "(SInt16 ditlID, DITLMethod method) -> None"},
769 {"SetDialogTimeout", (PyCFunction
)DlgObj_SetDialogTimeout
, 1,
770 "(SInt16 inButtonToPress, UInt32 inSecondsToWait) -> None"},
771 {"GetDialogTimeout", (PyCFunction
)DlgObj_GetDialogTimeout
, 1,
772 "() -> (SInt16 outButtonToPress, UInt32 outSecondsToWait, UInt32 outSecondsRemaining)"},
773 {"SetModalDialogEventMask", (PyCFunction
)DlgObj_SetModalDialogEventMask
, 1,
774 "(EventMask inMask) -> None"},
775 {"GetModalDialogEventMask", (PyCFunction
)DlgObj_GetModalDialogEventMask
, 1,
776 "() -> (EventMask outMask)"},
777 {"GetDialogWindow", (PyCFunction
)DlgObj_GetDialogWindow
, 1,
778 "() -> (WindowPtr _rv)"},
779 {"GetDialogDefaultItem", (PyCFunction
)DlgObj_GetDialogDefaultItem
, 1,
780 "() -> (SInt16 _rv)"},
781 {"GetDialogCancelItem", (PyCFunction
)DlgObj_GetDialogCancelItem
, 1,
782 "() -> (SInt16 _rv)"},
783 {"GetDialogKeyboardFocusItem", (PyCFunction
)DlgObj_GetDialogKeyboardFocusItem
, 1,
784 "() -> (SInt16 _rv)"},
786 #if !TARGET_API_MAC_CARBON
787 {"SetGrafPortOfDialog", (PyCFunction
)DlgObj_SetGrafPortOfDialog
, 1,
793 PyMethodChain DlgObj_chain
= { DlgObj_methods
, &WinObj_chain
};
795 static PyObject
*DlgObj_getattr(self
, name
)
799 return Py_FindMethodInChain(&DlgObj_chain
, (PyObject
*)self
, name
);
802 #define DlgObj_setattr NULL
804 #define DlgObj_compare NULL
806 #define DlgObj_repr NULL
808 #define DlgObj_hash NULL
810 PyTypeObject Dialog_Type
= {
811 PyObject_HEAD_INIT(&PyType_Type
)
813 "Dialog", /*tp_name*/
814 sizeof(DialogObject
), /*tp_basicsize*/
817 (destructor
) DlgObj_dealloc
, /*tp_dealloc*/
819 (getattrfunc
) DlgObj_getattr
, /*tp_getattr*/
820 (setattrfunc
) DlgObj_setattr
, /*tp_setattr*/
821 (cmpfunc
) DlgObj_compare
, /*tp_compare*/
822 (reprfunc
) DlgObj_repr
, /*tp_repr*/
823 (PyNumberMethods
*)0, /* tp_as_number */
824 (PySequenceMethods
*)0, /* tp_as_sequence */
825 (PyMappingMethods
*)0, /* tp_as_mapping */
826 (hashfunc
) DlgObj_hash
, /*tp_hash*/
829 /* --------------------- End object type Dialog --------------------- */
832 static PyObject
*Dlg_NewDialog(_self
, _args
)
836 PyObject
*_res
= NULL
;
846 if (!PyArg_ParseTuple(_args
, "O&O&bhO&blO&",
847 PyMac_GetRect
, &boundsRect
,
848 PyMac_GetStr255
, title
,
851 WinObj_Convert
, &behind
,
854 ResObj_Convert
, &items
))
856 _rv
= NewDialog((void *)0,
865 _res
= Py_BuildValue("O&",
870 static PyObject
*Dlg_GetNewDialog(_self
, _args
)
874 PyObject
*_res
= NULL
;
878 if (!PyArg_ParseTuple(_args
, "hO&",
880 WinObj_Convert
, &behind
))
882 _rv
= GetNewDialog(dialogID
,
885 _res
= Py_BuildValue("O&",
890 static PyObject
*Dlg_NewColorDialog(_self
, _args
)
894 PyObject
*_res
= NULL
;
904 if (!PyArg_ParseTuple(_args
, "O&O&bhO&blO&",
905 PyMac_GetRect
, &boundsRect
,
906 PyMac_GetStr255
, title
,
909 WinObj_Convert
, &behind
,
912 ResObj_Convert
, &items
))
914 _rv
= NewColorDialog((void *)0,
923 _res
= Py_BuildValue("O&",
928 static PyObject
*Dlg_ModalDialog(_self
, _args
)
932 PyObject
*_res
= NULL
;
933 PyObject
* modalFilter
;
934 DialogItemIndex itemHit
;
935 if (!PyArg_ParseTuple(_args
, "O",
938 ModalDialog(NewModalFilterProc(Dlg_PassFilterProc(modalFilter
)),
940 _res
= Py_BuildValue("h",
945 static PyObject
*Dlg_IsDialogEvent(_self
, _args
)
949 PyObject
*_res
= NULL
;
951 EventRecord theEvent
;
952 if (!PyArg_ParseTuple(_args
, "O&",
953 PyMac_GetEventRecord
, &theEvent
))
955 _rv
= IsDialogEvent(&theEvent
);
956 _res
= Py_BuildValue("b",
961 static PyObject
*Dlg_DialogSelect(_self
, _args
)
965 PyObject
*_res
= NULL
;
967 EventRecord theEvent
;
969 DialogItemIndex itemHit
;
970 if (!PyArg_ParseTuple(_args
, "O&",
971 PyMac_GetEventRecord
, &theEvent
))
973 _rv
= DialogSelect(&theEvent
,
976 _res
= Py_BuildValue("bO&h",
978 WinObj_WhichWindow
, theDialog
,
983 static PyObject
*Dlg_Alert(_self
, _args
)
987 PyObject
*_res
= NULL
;
990 PyObject
* modalFilter
;
991 if (!PyArg_ParseTuple(_args
, "hO",
996 NewModalFilterProc(Dlg_PassFilterProc(modalFilter
)));
997 _res
= Py_BuildValue("h",
1002 static PyObject
*Dlg_StopAlert(_self
, _args
)
1006 PyObject
*_res
= NULL
;
1007 DialogItemIndex _rv
;
1009 PyObject
* modalFilter
;
1010 if (!PyArg_ParseTuple(_args
, "hO",
1014 _rv
= StopAlert(alertID
,
1015 NewModalFilterProc(Dlg_PassFilterProc(modalFilter
)));
1016 _res
= Py_BuildValue("h",
1021 static PyObject
*Dlg_NoteAlert(_self
, _args
)
1025 PyObject
*_res
= NULL
;
1026 DialogItemIndex _rv
;
1028 PyObject
* modalFilter
;
1029 if (!PyArg_ParseTuple(_args
, "hO",
1033 _rv
= NoteAlert(alertID
,
1034 NewModalFilterProc(Dlg_PassFilterProc(modalFilter
)));
1035 _res
= Py_BuildValue("h",
1040 static PyObject
*Dlg_CautionAlert(_self
, _args
)
1044 PyObject
*_res
= NULL
;
1045 DialogItemIndex _rv
;
1047 PyObject
* modalFilter
;
1048 if (!PyArg_ParseTuple(_args
, "hO",
1052 _rv
= CautionAlert(alertID
,
1053 NewModalFilterProc(Dlg_PassFilterProc(modalFilter
)));
1054 _res
= Py_BuildValue("h",
1059 static PyObject
*Dlg_ParamText(_self
, _args
)
1063 PyObject
*_res
= NULL
;
1068 if (!PyArg_ParseTuple(_args
, "O&O&O&O&",
1069 PyMac_GetStr255
, param0
,
1070 PyMac_GetStr255
, param1
,
1071 PyMac_GetStr255
, param2
,
1072 PyMac_GetStr255
, param3
))
1083 static PyObject
*Dlg_GetDialogItemText(_self
, _args
)
1087 PyObject
*_res
= NULL
;
1090 if (!PyArg_ParseTuple(_args
, "O&",
1091 ResObj_Convert
, &item
))
1093 GetDialogItemText(item
,
1095 _res
= Py_BuildValue("O&",
1096 PyMac_BuildStr255
, text
);
1100 static PyObject
*Dlg_SetDialogItemText(_self
, _args
)
1104 PyObject
*_res
= NULL
;
1107 if (!PyArg_ParseTuple(_args
, "O&O&",
1108 ResObj_Convert
, &item
,
1109 PyMac_GetStr255
, text
))
1111 SetDialogItemText(item
,
1118 static PyObject
*Dlg_GetAlertStage(_self
, _args
)
1122 PyObject
*_res
= NULL
;
1124 if (!PyArg_ParseTuple(_args
, ""))
1126 _rv
= GetAlertStage();
1127 _res
= Py_BuildValue("h",
1132 static PyObject
*Dlg_SetDialogFont(_self
, _args
)
1136 PyObject
*_res
= NULL
;
1138 if (!PyArg_ParseTuple(_args
, "h",
1141 SetDialogFont(fontNum
);
1147 static PyObject
*Dlg_ResetAlertStage(_self
, _args
)
1151 PyObject
*_res
= NULL
;
1152 if (!PyArg_ParseTuple(_args
, ""))
1160 static PyObject
*Dlg_NewFeaturesDialog(_self
, _args
)
1164 PyObject
*_res
= NULL
;
1168 Boolean inIsVisible
;
1171 Boolean inGoAwayFlag
;
1173 Handle inItemListHandle
;
1175 if (!PyArg_ParseTuple(_args
, "O&O&bhO&blO&l",
1176 PyMac_GetRect
, &inBoundsRect
,
1177 PyMac_GetStr255
, inTitle
,
1180 WinObj_Convert
, &inBehind
,
1183 ResObj_Convert
, &inItemListHandle
,
1186 _rv
= NewFeaturesDialog((void *)0,
1196 _res
= Py_BuildValue("O&",
1201 static PyObject
*Dlg_SetUserItemHandler(_self
, _args
)
1205 PyObject
*_res
= NULL
;
1207 PyObject
*new = NULL
;
1210 if (!PyArg_ParseTuple(_args
, "|O", &new))
1213 if (Dlg_UserItemProc_callback
&& new && new != Py_None
) {
1214 PyErr_SetString(Dlg_Error
, "Another UserItemProc is already installed");
1218 if (new == Py_None
) {
1224 _res
= Py_BuildValue("O&", ResObj_New
, (Handle
)NewUserItemProc(Dlg_UnivUserItemProc
));
1227 Dlg_UserItemProc_callback
= new;
1232 static PyMethodDef Dlg_methods
[] = {
1233 {"NewDialog", (PyCFunction
)Dlg_NewDialog
, 1,
1234 "(Rect boundsRect, Str255 title, Boolean visible, SInt16 procID, WindowPtr behind, Boolean goAwayFlag, SInt32 refCon, Handle items) -> (DialogPtr _rv)"},
1235 {"GetNewDialog", (PyCFunction
)Dlg_GetNewDialog
, 1,
1236 "(SInt16 dialogID, WindowPtr behind) -> (DialogPtr _rv)"},
1237 {"NewColorDialog", (PyCFunction
)Dlg_NewColorDialog
, 1,
1238 "(Rect boundsRect, Str255 title, Boolean visible, SInt16 procID, WindowPtr behind, Boolean goAwayFlag, SInt32 refCon, Handle items) -> (DialogPtr _rv)"},
1239 {"ModalDialog", (PyCFunction
)Dlg_ModalDialog
, 1,
1240 "(PyObject* modalFilter) -> (DialogItemIndex itemHit)"},
1241 {"IsDialogEvent", (PyCFunction
)Dlg_IsDialogEvent
, 1,
1242 "(EventRecord theEvent) -> (Boolean _rv)"},
1243 {"DialogSelect", (PyCFunction
)Dlg_DialogSelect
, 1,
1244 "(EventRecord theEvent) -> (Boolean _rv, DialogPtr theDialog, DialogItemIndex itemHit)"},
1245 {"Alert", (PyCFunction
)Dlg_Alert
, 1,
1246 "(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)"},
1247 {"StopAlert", (PyCFunction
)Dlg_StopAlert
, 1,
1248 "(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)"},
1249 {"NoteAlert", (PyCFunction
)Dlg_NoteAlert
, 1,
1250 "(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)"},
1251 {"CautionAlert", (PyCFunction
)Dlg_CautionAlert
, 1,
1252 "(SInt16 alertID, PyObject* modalFilter) -> (DialogItemIndex _rv)"},
1253 {"ParamText", (PyCFunction
)Dlg_ParamText
, 1,
1254 "(Str255 param0, Str255 param1, Str255 param2, Str255 param3) -> None"},
1255 {"GetDialogItemText", (PyCFunction
)Dlg_GetDialogItemText
, 1,
1256 "(Handle item) -> (Str255 text)"},
1257 {"SetDialogItemText", (PyCFunction
)Dlg_SetDialogItemText
, 1,
1258 "(Handle item, Str255 text) -> None"},
1259 {"GetAlertStage", (PyCFunction
)Dlg_GetAlertStage
, 1,
1260 "() -> (SInt16 _rv)"},
1261 {"SetDialogFont", (PyCFunction
)Dlg_SetDialogFont
, 1,
1262 "(SInt16 fontNum) -> None"},
1263 {"ResetAlertStage", (PyCFunction
)Dlg_ResetAlertStage
, 1,
1265 {"NewFeaturesDialog", (PyCFunction
)Dlg_NewFeaturesDialog
, 1,
1266 "(Rect inBoundsRect, Str255 inTitle, Boolean inIsVisible, SInt16 inProcID, WindowPtr inBehind, Boolean inGoAwayFlag, SInt32 inRefCon, Handle inItemListHandle, UInt32 inFlags) -> (DialogPtr _rv)"},
1267 {"SetUserItemHandler", (PyCFunction
)Dlg_SetUserItemHandler
, 1,
1283 m
= Py_InitModule("Dlg", Dlg_methods
);
1284 d
= PyModule_GetDict(m
);
1285 Dlg_Error
= PyMac_GetOSErrException();
1286 if (Dlg_Error
== NULL
||
1287 PyDict_SetItemString(d
, "Error", Dlg_Error
) != 0)
1288 Py_FatalError("can't initialize Dlg.Error");
1289 Dialog_Type
.ob_type
= &PyType_Type
;
1290 Py_INCREF(&Dialog_Type
);
1291 if (PyDict_SetItemString(d
, "DialogType", (PyObject
*)&Dialog_Type
) != 0)
1292 Py_FatalError("can't initialize DialogType");
1295 /* ========================= End module Dlg ========================= */