Update for release.
[python/dscho.git] / Mac / Modules / help / _Helpmodule.c
blob66abdeb398b2172af867e0480830e5ab894bf728
2 /* ========================== Module _Help ========================== */
4 #include "Python.h"
8 #ifdef _WIN32
9 #include "pywintoolbox.h"
10 #else
11 #include "macglue.h"
12 #include "pymactoolbox.h"
13 #endif
15 /* Macro to test whether a weak-loaded CFM function exists */
16 #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\
17 PyErr_SetString(PyExc_NotImplementedError, \
18 "Not available in this shared library/OS version"); \
19 return NULL; \
20 }} while(0)
23 #ifndef PyDoc_STR
24 #define PyDoc_STR(x) (x)
25 #endif
26 #ifdef WITHOUT_FRAMEWORKS
27 #include <MacHelp.h>
28 #else
29 #include <Carbon/Carbon.h>
30 #endif
32 static PyObject *Help_Error;
34 static PyObject *Help_HMGetHelpMenu(PyObject *_self, PyObject *_args)
36 PyObject *_res = NULL;
37 OSStatus _err;
38 MenuRef outHelpMenu;
39 MenuItemIndex outFirstCustomItemIndex;
40 if (!PyArg_ParseTuple(_args, ""))
41 return NULL;
42 _err = HMGetHelpMenu(&outHelpMenu,
43 &outFirstCustomItemIndex);
44 if (_err != noErr) return PyMac_Error(_err);
45 _res = Py_BuildValue("O&H",
46 MenuObj_New, outHelpMenu,
47 outFirstCustomItemIndex);
48 return _res;
51 static PyObject *Help_HMAreHelpTagsDisplayed(PyObject *_self, PyObject *_args)
53 PyObject *_res = NULL;
54 Boolean _rv;
55 if (!PyArg_ParseTuple(_args, ""))
56 return NULL;
57 _rv = HMAreHelpTagsDisplayed();
58 _res = Py_BuildValue("b",
59 _rv);
60 return _res;
63 static PyObject *Help_HMSetHelpTagsDisplayed(PyObject *_self, PyObject *_args)
65 PyObject *_res = NULL;
66 OSStatus _err;
67 Boolean inDisplayTags;
68 if (!PyArg_ParseTuple(_args, "b",
69 &inDisplayTags))
70 return NULL;
71 _err = HMSetHelpTagsDisplayed(inDisplayTags);
72 if (_err != noErr) return PyMac_Error(_err);
73 Py_INCREF(Py_None);
74 _res = Py_None;
75 return _res;
78 static PyObject *Help_HMSetTagDelay(PyObject *_self, PyObject *_args)
80 PyObject *_res = NULL;
81 OSStatus _err;
82 Duration inDelay;
83 if (!PyArg_ParseTuple(_args, "l",
84 &inDelay))
85 return NULL;
86 _err = HMSetTagDelay(inDelay);
87 if (_err != noErr) return PyMac_Error(_err);
88 Py_INCREF(Py_None);
89 _res = Py_None;
90 return _res;
93 static PyObject *Help_HMGetTagDelay(PyObject *_self, PyObject *_args)
95 PyObject *_res = NULL;
96 OSStatus _err;
97 Duration outDelay;
98 if (!PyArg_ParseTuple(_args, ""))
99 return NULL;
100 _err = HMGetTagDelay(&outDelay);
101 if (_err != noErr) return PyMac_Error(_err);
102 _res = Py_BuildValue("l",
103 outDelay);
104 return _res;
107 static PyObject *Help_HMSetMenuHelpFromBalloonRsrc(PyObject *_self, PyObject *_args)
109 PyObject *_res = NULL;
110 OSStatus _err;
111 MenuRef inMenu;
112 SInt16 inHmnuRsrcID;
113 if (!PyArg_ParseTuple(_args, "O&h",
114 MenuObj_Convert, &inMenu,
115 &inHmnuRsrcID))
116 return NULL;
117 _err = HMSetMenuHelpFromBalloonRsrc(inMenu,
118 inHmnuRsrcID);
119 if (_err != noErr) return PyMac_Error(_err);
120 Py_INCREF(Py_None);
121 _res = Py_None;
122 return _res;
125 static PyObject *Help_HMSetDialogHelpFromBalloonRsrc(PyObject *_self, PyObject *_args)
127 PyObject *_res = NULL;
128 OSStatus _err;
129 DialogPtr inDialog;
130 SInt16 inHdlgRsrcID;
131 SInt16 inItemStart;
132 if (!PyArg_ParseTuple(_args, "O&hh",
133 DlgObj_Convert, &inDialog,
134 &inHdlgRsrcID,
135 &inItemStart))
136 return NULL;
137 _err = HMSetDialogHelpFromBalloonRsrc(inDialog,
138 inHdlgRsrcID,
139 inItemStart);
140 if (_err != noErr) return PyMac_Error(_err);
141 Py_INCREF(Py_None);
142 _res = Py_None;
143 return _res;
146 static PyMethodDef Help_methods[] = {
147 {"HMGetHelpMenu", (PyCFunction)Help_HMGetHelpMenu, 1,
148 PyDoc_STR("() -> (MenuRef outHelpMenu, MenuItemIndex outFirstCustomItemIndex)")},
149 {"HMAreHelpTagsDisplayed", (PyCFunction)Help_HMAreHelpTagsDisplayed, 1,
150 PyDoc_STR("() -> (Boolean _rv)")},
151 {"HMSetHelpTagsDisplayed", (PyCFunction)Help_HMSetHelpTagsDisplayed, 1,
152 PyDoc_STR("(Boolean inDisplayTags) -> None")},
153 {"HMSetTagDelay", (PyCFunction)Help_HMSetTagDelay, 1,
154 PyDoc_STR("(Duration inDelay) -> None")},
155 {"HMGetTagDelay", (PyCFunction)Help_HMGetTagDelay, 1,
156 PyDoc_STR("() -> (Duration outDelay)")},
157 {"HMSetMenuHelpFromBalloonRsrc", (PyCFunction)Help_HMSetMenuHelpFromBalloonRsrc, 1,
158 PyDoc_STR("(MenuRef inMenu, SInt16 inHmnuRsrcID) -> None")},
159 {"HMSetDialogHelpFromBalloonRsrc", (PyCFunction)Help_HMSetDialogHelpFromBalloonRsrc, 1,
160 PyDoc_STR("(DialogPtr inDialog, SInt16 inHdlgRsrcID, SInt16 inItemStart) -> None")},
161 {NULL, NULL, 0}
167 void init_Help(void)
169 PyObject *m;
170 PyObject *d;
175 m = Py_InitModule("_Help", Help_methods);
176 d = PyModule_GetDict(m);
177 Help_Error = PyMac_GetOSErrException();
178 if (Help_Error == NULL ||
179 PyDict_SetItemString(d, "Error", Help_Error) != 0)
180 return;
183 /* ======================== End module _Help ======================== */