1
2 /* ========================== Module _Help ========================== */
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 static PyObject *Help_Error;
20
Help_HMGetHelpMenu(PyObject * _self,PyObject * _args)21 static PyObject *Help_HMGetHelpMenu(PyObject *_self, PyObject *_args)
22 {
23 PyObject *_res = NULL;
24 OSStatus _err;
25 MenuRef outHelpMenu;
26 MenuItemIndex outFirstCustomItemIndex;
27 if (!PyArg_ParseTuple(_args, ""))
28 return NULL;
29 _err = HMGetHelpMenu(&outHelpMenu,
30 &outFirstCustomItemIndex);
31 if (_err != noErr) return PyMac_Error(_err);
32 _res = Py_BuildValue("O&H",
33 MenuObj_New, outHelpMenu,
34 outFirstCustomItemIndex);
35 return _res;
36 }
37
Help_HMAreHelpTagsDisplayed(PyObject * _self,PyObject * _args)38 static PyObject *Help_HMAreHelpTagsDisplayed(PyObject *_self, PyObject *_args)
39 {
40 PyObject *_res = NULL;
41 Boolean _rv;
42 if (!PyArg_ParseTuple(_args, ""))
43 return NULL;
44 _rv = HMAreHelpTagsDisplayed();
45 _res = Py_BuildValue("b",
46 _rv);
47 return _res;
48 }
49
Help_HMSetHelpTagsDisplayed(PyObject * _self,PyObject * _args)50 static PyObject *Help_HMSetHelpTagsDisplayed(PyObject *_self, PyObject *_args)
51 {
52 PyObject *_res = NULL;
53 OSStatus _err;
54 Boolean inDisplayTags;
55 if (!PyArg_ParseTuple(_args, "b",
56 &inDisplayTags))
57 return NULL;
58 _err = HMSetHelpTagsDisplayed(inDisplayTags);
59 if (_err != noErr) return PyMac_Error(_err);
60 Py_INCREF(Py_None);
61 _res = Py_None;
62 return _res;
63 }
64
Help_HMSetTagDelay(PyObject * _self,PyObject * _args)65 static PyObject *Help_HMSetTagDelay(PyObject *_self, PyObject *_args)
66 {
67 PyObject *_res = NULL;
68 OSStatus _err;
69 Duration inDelay;
70 if (!PyArg_ParseTuple(_args, "l",
71 &inDelay))
72 return NULL;
73 _err = HMSetTagDelay(inDelay);
74 if (_err != noErr) return PyMac_Error(_err);
75 Py_INCREF(Py_None);
76 _res = Py_None;
77 return _res;
78 }
79
Help_HMGetTagDelay(PyObject * _self,PyObject * _args)80 static PyObject *Help_HMGetTagDelay(PyObject *_self, PyObject *_args)
81 {
82 PyObject *_res = NULL;
83 OSStatus _err;
84 Duration outDelay;
85 if (!PyArg_ParseTuple(_args, ""))
86 return NULL;
87 _err = HMGetTagDelay(&outDelay);
88 if (_err != noErr) return PyMac_Error(_err);
89 _res = Py_BuildValue("l",
90 outDelay);
91 return _res;
92 }
93
Help_HMSetMenuHelpFromBalloonRsrc(PyObject * _self,PyObject * _args)94 static PyObject *Help_HMSetMenuHelpFromBalloonRsrc(PyObject *_self, PyObject *_args)
95 {
96 PyObject *_res = NULL;
97 OSStatus _err;
98 MenuRef inMenu;
99 SInt16 inHmnuRsrcID;
100 if (!PyArg_ParseTuple(_args, "O&h",
101 MenuObj_Convert, &inMenu,
102 &inHmnuRsrcID))
103 return NULL;
104 _err = HMSetMenuHelpFromBalloonRsrc(inMenu,
105 inHmnuRsrcID);
106 if (_err != noErr) return PyMac_Error(_err);
107 Py_INCREF(Py_None);
108 _res = Py_None;
109 return _res;
110 }
111
Help_HMSetDialogHelpFromBalloonRsrc(PyObject * _self,PyObject * _args)112 static PyObject *Help_HMSetDialogHelpFromBalloonRsrc(PyObject *_self, PyObject *_args)
113 {
114 PyObject *_res = NULL;
115 OSStatus _err;
116 DialogPtr inDialog;
117 SInt16 inHdlgRsrcID;
118 SInt16 inItemStart;
119 if (!PyArg_ParseTuple(_args, "O&hh",
120 DlgObj_Convert, &inDialog,
121 &inHdlgRsrcID,
122 &inItemStart))
123 return NULL;
124 _err = HMSetDialogHelpFromBalloonRsrc(inDialog,
125 inHdlgRsrcID,
126 inItemStart);
127 if (_err != noErr) return PyMac_Error(_err);
128 Py_INCREF(Py_None);
129 _res = Py_None;
130 return _res;
131 }
132
Help_HMHideTag(PyObject * _self,PyObject * _args)133 static PyObject *Help_HMHideTag(PyObject *_self, PyObject *_args)
134 {
135 PyObject *_res = NULL;
136 OSStatus _err;
137 if (!PyArg_ParseTuple(_args, ""))
138 return NULL;
139 _err = HMHideTag();
140 if (_err != noErr) return PyMac_Error(_err);
141 Py_INCREF(Py_None);
142 _res = Py_None;
143 return _res;
144 }
145
146 #endif /* APPLE_SUPPORTS_QUICKTIME */
147
148 static PyMethodDef Help_methods[] = {
149 #if APPLE_SUPPORTS_QUICKTIME
150 {"HMGetHelpMenu", (PyCFunction)Help_HMGetHelpMenu, 1,
151 PyDoc_STR("() -> (MenuRef outHelpMenu, MenuItemIndex outFirstCustomItemIndex)")},
152 {"HMAreHelpTagsDisplayed", (PyCFunction)Help_HMAreHelpTagsDisplayed, 1,
153 PyDoc_STR("() -> (Boolean _rv)")},
154 {"HMSetHelpTagsDisplayed", (PyCFunction)Help_HMSetHelpTagsDisplayed, 1,
155 PyDoc_STR("(Boolean inDisplayTags) -> None")},
156 {"HMSetTagDelay", (PyCFunction)Help_HMSetTagDelay, 1,
157 PyDoc_STR("(Duration inDelay) -> None")},
158 {"HMGetTagDelay", (PyCFunction)Help_HMGetTagDelay, 1,
159 PyDoc_STR("() -> (Duration outDelay)")},
160 {"HMSetMenuHelpFromBalloonRsrc", (PyCFunction)Help_HMSetMenuHelpFromBalloonRsrc, 1,
161 PyDoc_STR("(MenuRef inMenu, SInt16 inHmnuRsrcID) -> None")},
162 {"HMSetDialogHelpFromBalloonRsrc", (PyCFunction)Help_HMSetDialogHelpFromBalloonRsrc, 1,
163 PyDoc_STR("(DialogPtr inDialog, SInt16 inHdlgRsrcID, SInt16 inItemStart) -> None")},
164 {"HMHideTag", (PyCFunction)Help_HMHideTag, 1,
165 PyDoc_STR("() -> None")},
166 #endif /* APPLE_SUPPORTS_QUICKTIME */
167 {NULL, NULL, 0}
168 };
169
170
171
init_Help(void)172 void init_Help(void)
173 {
174 PyObject *m;
175 #if APPLE_SUPPORTS_QUICKTIME
176 PyObject *d;
177 #endif /* APPLE_SUPPORTS_QUICKTIME */
178
179
180
181
182 m = Py_InitModule("_Help", Help_methods);
183 #if APPLE_SUPPORTS_QUICKTIME
184 d = PyModule_GetDict(m);
185 Help_Error = PyMac_GetOSErrException();
186 if (Help_Error == NULL ||
187 PyDict_SetItemString(d, "Error", Help_Error) != 0)
188 return;
189 #endif /* APPLE_SUPPORTS_QUICKTIME */
190 }
191
192 /* ======================== End module _Help ======================== */
193
194