/* ========================== Module _Evt =========================== */ #include "Python.h" #include "macglue.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) #ifdef WITHOUT_FRAMEWORKS #include #else #include #endif static PyObject *Evt_Error; static PyObject *Evt_GetMouse(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Point mouseLoc; if (!PyArg_ParseTuple(_args, "")) return NULL; GetMouse(&mouseLoc); _res = Py_BuildValue("O&", PyMac_BuildPoint, mouseLoc); return _res; } static PyObject *Evt_Button(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = Button(); _res = Py_BuildValue("b", _rv); return _res; } static PyObject *Evt_StillDown(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = StillDown(); _res = Py_BuildValue("b", _rv); return _res; } static PyObject *Evt_WaitMouseUp(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = WaitMouseUp(); _res = Py_BuildValue("b", _rv); return _res; } static PyObject *Evt_TickCount(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; UInt32 _rv; if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = TickCount(); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *Evt_GetCaretTime(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; UInt32 _rv; if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = GetCaretTime(); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *Evt_GetKeys(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; KeyMap theKeys__out__; if (!PyArg_ParseTuple(_args, "")) return NULL; GetKeys(theKeys__out__); _res = Py_BuildValue("s#", (char *)&theKeys__out__, (int)sizeof(KeyMap)); return _res; } static PyObject *Evt_GetDblTime(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; UInt32 _rv; if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = GetDblTime(); _res = Py_BuildValue("l", _rv); return _res; } static PyObject *Evt_SetEventMask(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; EventMask value; if (!PyArg_ParseTuple(_args, "H", &value)) return NULL; SetEventMask(value); Py_INCREF(Py_None); _res = Py_None; return _res; } static PyObject *Evt_GetNextEvent(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; EventMask eventMask; EventRecord theEvent; if (!PyArg_ParseTuple(_args, "H", &eventMask)) return NULL; _rv = GetNextEvent(eventMask, &theEvent); _res = Py_BuildValue("bO&", _rv, PyMac_BuildEventRecord, &theEvent); return _res; } static PyObject *Evt_EventAvail(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; EventMask eventMask; EventRecord theEvent; if (!PyArg_ParseTuple(_args, "H", &eventMask)) return NULL; _rv = EventAvail(eventMask, &theEvent); _res = Py_BuildValue("bO&", _rv, PyMac_BuildEventRecord, &theEvent); return _res; } static PyObject *Evt_PostEvent(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; OSErr _err; EventKind eventNum; UInt32 eventMsg; if (!PyArg_ParseTuple(_args, "Hl", &eventNum, &eventMsg)) return NULL; _err = PostEvent(eventNum, eventMsg); if (_err != noErr) return PyMac_Error(_err); Py_INCREF(Py_None); _res = Py_None; return _res; } #if !TARGET_API_MAC_CARBON static PyObject *Evt_OSEventAvail(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; EventMask mask; EventRecord theEvent; if (!PyArg_ParseTuple(_args, "H", &mask)) return NULL; _rv = OSEventAvail(mask, &theEvent); _res = Py_BuildValue("bO&", _rv, PyMac_BuildEventRecord, &theEvent); return _res; } #endif #if !TARGET_API_MAC_CARBON static PyObject *Evt_GetOSEvent(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; EventMask mask; EventRecord theEvent; if (!PyArg_ParseTuple(_args, "H", &mask)) return NULL; _rv = GetOSEvent(mask, &theEvent); _res = Py_BuildValue("bO&", _rv, PyMac_BuildEventRecord, &theEvent); return _res; } #endif static PyObject *Evt_FlushEvents(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; EventMask whichMask; EventMask stopMask; if (!PyArg_ParseTuple(_args, "HH", &whichMask, &stopMask)) return NULL; FlushEvents(whichMask, stopMask); Py_INCREF(Py_None); _res = Py_None; return _res; } #if !TARGET_API_MAC_CARBON static PyObject *Evt_SystemClick(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; EventRecord theEvent; WindowPtr theWindow; if (!PyArg_ParseTuple(_args, "O&O&", PyMac_GetEventRecord, &theEvent, WinObj_Convert, &theWindow)) return NULL; SystemClick(&theEvent, theWindow); Py_INCREF(Py_None); _res = Py_None; return _res; } #endif #if !TARGET_API_MAC_CARBON static PyObject *Evt_SystemTask(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; if (!PyArg_ParseTuple(_args, "")) return NULL; SystemTask(); Py_INCREF(Py_None); _res = Py_None; return _res; } #endif #if !TARGET_API_MAC_CARBON static PyObject *Evt_SystemEvent(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; EventRecord theEvent; if (!PyArg_ParseTuple(_args, "O&", PyMac_GetEventRecord, &theEvent)) return NULL; _rv = SystemEvent(&theEvent); _res = Py_BuildValue("b", _rv); return _res; } #endif #if TARGET_API_MAC_CARBON static PyObject *Evt_GetGlobalMouse(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Point globalMouse; if (!PyArg_ParseTuple(_args, "")) return NULL; GetGlobalMouse(&globalMouse); _res = Py_BuildValue("O&", PyMac_BuildPoint, globalMouse); return _res; } #endif #if TARGET_API_MAC_CARBON static PyObject *Evt_GetCurrentKeyModifiers(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; UInt32 _rv; if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = GetCurrentKeyModifiers(); _res = Py_BuildValue("l", _rv); return _res; } #endif #if TARGET_API_MAC_CARBON static PyObject *Evt_CheckEventQueueForUserCancel(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; if (!PyArg_ParseTuple(_args, "")) return NULL; _rv = CheckEventQueueForUserCancel(); _res = Py_BuildValue("b", _rv); return _res; } #endif static PyObject *Evt_WaitNextEvent(PyObject *_self, PyObject *_args) { PyObject *_res = NULL; Boolean _rv; EventMask eventMask; EventRecord theEvent; UInt32 sleep; Handle mouseregion = (Handle)0; if (!PyArg_ParseTuple(_args, "Hl|O&", &eventMask, &sleep, OptResObj_Convert, &mouseregion)) return NULL; _rv = WaitNextEvent(eventMask, &theEvent, sleep, (RgnHandle)mouseregion); _res = Py_BuildValue("bO&", _rv, PyMac_BuildEventRecord, &theEvent); return _res; } static PyMethodDef Evt_methods[] = { {"GetMouse", (PyCFunction)Evt_GetMouse, 1, "() -> (Point mouseLoc)"}, {"Button", (PyCFunction)Evt_Button, 1, "() -> (Boolean _rv)"}, {"StillDown", (PyCFunction)Evt_StillDown, 1, "() -> (Boolean _rv)"}, {"WaitMouseUp", (PyCFunction)Evt_WaitMouseUp, 1, "() -> (Boolean _rv)"}, {"TickCount", (PyCFunction)Evt_TickCount, 1, "() -> (UInt32 _rv)"}, {"GetCaretTime", (PyCFunction)Evt_GetCaretTime, 1, "() -> (UInt32 _rv)"}, {"GetKeys", (PyCFunction)Evt_GetKeys, 1, "() -> (KeyMap theKeys)"}, {"GetDblTime", (PyCFunction)Evt_GetDblTime, 1, "() -> (UInt32 _rv)"}, {"SetEventMask", (PyCFunction)Evt_SetEventMask, 1, "(EventMask value) -> None"}, {"GetNextEvent", (PyCFunction)Evt_GetNextEvent, 1, "(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)"}, {"EventAvail", (PyCFunction)Evt_EventAvail, 1, "(EventMask eventMask) -> (Boolean _rv, EventRecord theEvent)"}, {"PostEvent", (PyCFunction)Evt_PostEvent, 1, "(EventKind eventNum, UInt32 eventMsg) -> None"}, #if !TARGET_API_MAC_CARBON {"OSEventAvail", (PyCFunction)Evt_OSEventAvail, 1, "(EventMask mask) -> (Boolean _rv, EventRecord theEvent)"}, #endif #if !TARGET_API_MAC_CARBON {"GetOSEvent", (PyCFunction)Evt_GetOSEvent, 1, "(EventMask mask) -> (Boolean _rv, EventRecord theEvent)"}, #endif {"FlushEvents", (PyCFunction)Evt_FlushEvents, 1, "(EventMask whichMask, EventMask stopMask) -> None"}, #if !TARGET_API_MAC_CARBON {"SystemClick", (PyCFunction)Evt_SystemClick, 1, "(EventRecord theEvent, WindowPtr theWindow) -> None"}, #endif #if !TARGET_API_MAC_CARBON {"SystemTask", (PyCFunction)Evt_SystemTask, 1, "() -> None"}, #endif #if !TARGET_API_MAC_CARBON {"SystemEvent", (PyCFunction)Evt_SystemEvent, 1, "(EventRecord theEvent) -> (Boolean _rv)"}, #endif #if TARGET_API_MAC_CARBON {"GetGlobalMouse", (PyCFunction)Evt_GetGlobalMouse, 1, "() -> (Point globalMouse)"}, #endif #if TARGET_API_MAC_CARBON {"GetCurrentKeyModifiers", (PyCFunction)Evt_GetCurrentKeyModifiers, 1, "() -> (UInt32 _rv)"}, #endif #if TARGET_API_MAC_CARBON {"CheckEventQueueForUserCancel", (PyCFunction)Evt_CheckEventQueueForUserCancel, 1, "() -> (Boolean _rv)"}, #endif {"WaitNextEvent", (PyCFunction)Evt_WaitNextEvent, 1, "(EventMask eventMask, UInt32 sleep [,RegionHandle]) -> (Boolean _rv, EventRecord theEvent)"}, {NULL, NULL, 0} }; void init_Evt(void) { PyObject *m; PyObject *d; m = Py_InitModule("_Evt", Evt_methods); d = PyModule_GetDict(m); Evt_Error = PyMac_GetOSErrException(); if (Evt_Error == NULL || PyDict_SetItemString(d, "Error", Evt_Error) != 0) return; } /* ======================== End module _Evt ========================= */