| |
| /* =========================== Module _AH =========================== */ |
| |
| #include "Python.h" |
| |
| |
| |
| #include "pymactoolbox.h" |
| |
| /* Macro to test whether a weak-loaded CFM function exists */ |
| #define PyMac_PRECHECK(rtn) do { if ( &rtn == NULL ) {\ |
| PyErr_SetString(PyExc_NotImplementedError, \ |
| "Not available in this shared library/OS version"); \ |
| return NULL; \ |
| }} while(0) |
| |
| |
| #include <Carbon/Carbon.h> |
| |
| |
| static PyObject *Ah_Error; |
| |
| static PyObject *Ah_AHSearch(PyObject *_self, PyObject *_args) |
| { |
| PyObject *_res = NULL; |
| OSStatus _err; |
| CFStringRef bookname; |
| CFStringRef query; |
| if (!PyArg_ParseTuple(_args, "O&O&", |
| CFStringRefObj_Convert, &bookname, |
| CFStringRefObj_Convert, &query)) |
| return NULL; |
| _err = AHSearch(bookname, |
| query); |
| if (_err != noErr) return PyMac_Error(_err); |
| Py_INCREF(Py_None); |
| _res = Py_None; |
| return _res; |
| } |
| |
| static PyObject *Ah_AHGotoMainTOC(PyObject *_self, PyObject *_args) |
| { |
| PyObject *_res = NULL; |
| OSStatus _err; |
| AHTOCType toctype; |
| if (!PyArg_ParseTuple(_args, "h", |
| &toctype)) |
| return NULL; |
| _err = AHGotoMainTOC(toctype); |
| if (_err != noErr) return PyMac_Error(_err); |
| Py_INCREF(Py_None); |
| _res = Py_None; |
| return _res; |
| } |
| |
| static PyObject *Ah_AHGotoPage(PyObject *_self, PyObject *_args) |
| { |
| PyObject *_res = NULL; |
| OSStatus _err; |
| CFStringRef bookname; |
| CFStringRef path; |
| CFStringRef anchor; |
| if (!PyArg_ParseTuple(_args, "O&O&O&", |
| CFStringRefObj_Convert, &bookname, |
| CFStringRefObj_Convert, &path, |
| CFStringRefObj_Convert, &anchor)) |
| return NULL; |
| _err = AHGotoPage(bookname, |
| path, |
| anchor); |
| if (_err != noErr) return PyMac_Error(_err); |
| Py_INCREF(Py_None); |
| _res = Py_None; |
| return _res; |
| } |
| |
| static PyObject *Ah_AHLookupAnchor(PyObject *_self, PyObject *_args) |
| { |
| PyObject *_res = NULL; |
| OSStatus _err; |
| CFStringRef bookname; |
| CFStringRef anchor; |
| if (!PyArg_ParseTuple(_args, "O&O&", |
| CFStringRefObj_Convert, &bookname, |
| CFStringRefObj_Convert, &anchor)) |
| return NULL; |
| _err = AHLookupAnchor(bookname, |
| anchor); |
| if (_err != noErr) return PyMac_Error(_err); |
| Py_INCREF(Py_None); |
| _res = Py_None; |
| return _res; |
| } |
| |
| static PyObject *Ah_AHRegisterHelpBook(PyObject *_self, PyObject *_args) |
| { |
| PyObject *_res = NULL; |
| OSStatus _err; |
| FSRef appBundleRef; |
| if (!PyArg_ParseTuple(_args, "O&", |
| PyMac_GetFSRef, &appBundleRef)) |
| return NULL; |
| _err = AHRegisterHelpBook(&appBundleRef); |
| if (_err != noErr) return PyMac_Error(_err); |
| Py_INCREF(Py_None); |
| _res = Py_None; |
| return _res; |
| } |
| |
| static PyMethodDef Ah_methods[] = { |
| {"AHSearch", (PyCFunction)Ah_AHSearch, 1, |
| PyDoc_STR("(CFStringRef bookname, CFStringRef query) -> None")}, |
| {"AHGotoMainTOC", (PyCFunction)Ah_AHGotoMainTOC, 1, |
| PyDoc_STR("(AHTOCType toctype) -> None")}, |
| {"AHGotoPage", (PyCFunction)Ah_AHGotoPage, 1, |
| PyDoc_STR("(CFStringRef bookname, CFStringRef path, CFStringRef anchor) -> None")}, |
| {"AHLookupAnchor", (PyCFunction)Ah_AHLookupAnchor, 1, |
| PyDoc_STR("(CFStringRef bookname, CFStringRef anchor) -> None")}, |
| {"AHRegisterHelpBook", (PyCFunction)Ah_AHRegisterHelpBook, 1, |
| PyDoc_STR("(FSRef appBundleRef) -> None")}, |
| {NULL, NULL, 0} |
| }; |
| |
| |
| |
| |
| void init_AH(void) |
| { |
| PyObject *m; |
| PyObject *d; |
| |
| |
| |
| |
| m = Py_InitModule("_AH", Ah_methods); |
| d = PyModule_GetDict(m); |
| Ah_Error = PyMac_GetOSErrException(); |
| if (Ah_Error == NULL || |
| PyDict_SetItemString(d, "Error", Ah_Error) != 0) |
| return; |
| } |
| |
| /* ========================= End module _AH ========================= */ |
| |