Kaydet (Commit) 883765eb authored tarafından Jack Jansen's avatar Jack Jansen

added SetEventHandler

üst 3757523f
...@@ -499,27 +499,39 @@ MacOS_EnableAppswitch(PyObject *self, PyObject *args) ...@@ -499,27 +499,39 @@ MacOS_EnableAppswitch(PyObject *self, PyObject *args)
return Py_BuildValue("i", old); return Py_BuildValue("i", old);
} }
static char setevh_doc[] = "Set python event handler to be called in mainloop";
static PyObject *
MacOS_SetEventHandler(self, args)
PyObject *self;
PyObject *args;
{
PyObject *evh = NULL;
if (!PyArg_ParseTuple(args, "|O", &evh))
return NULL;
if (evh == Py_None)
evh = NULL;
if ( evh && !PyCallable_Check(evh) ) {
PyErr_SetString(PyExc_ValueError, "SetEventHandler argument must be callable");
return NULL;
}
if ( !PyMac_SetEventHandler(evh) )
return NULL;
Py_INCREF(Py_None);
return Py_None;
}
static char handleev_doc[] = "Pass event to other interested parties like sioux"; static char handleev_doc[] = "Pass event to other interested parties like sioux";
static PyObject * static PyObject *
MacOS_HandleEvent(PyObject *self, PyObject *args) MacOS_HandleEvent(PyObject *self, PyObject *args)
{ {
EventRecord ev; EventRecord ev;
static int inhere;
/*
** With HandleEvent and SetEventHandler we have a chance of recursive
** calls. We check that here (for lack of a better place)
*/
if ( inhere ) {
PyErr_SetString(PyExc_RuntimeError, "Recursive call to MacOS.HandleEvent");
return NULL;
}
if (!PyArg_ParseTuple(args, "O&", PyMac_GetEventRecord, &ev)) if (!PyArg_ParseTuple(args, "O&", PyMac_GetEventRecord, &ev))
return NULL; return NULL;
inhere = 1; PyMac_HandleEventIntern(&ev);
PyMac_HandleEvent(&ev, 1);
inhere = 0;
Py_INCREF(Py_None); Py_INCREF(Py_None);
return Py_None; return Py_None;
} }
...@@ -658,6 +670,7 @@ static PyMethodDef MacOS_Methods[] = { ...@@ -658,6 +670,7 @@ static PyMethodDef MacOS_Methods[] = {
#endif #endif
{"SchedParams", MacOS_SchedParams, 1, schedparams_doc}, {"SchedParams", MacOS_SchedParams, 1, schedparams_doc},
{"EnableAppswitch", MacOS_EnableAppswitch, 1, appswitch_doc}, {"EnableAppswitch", MacOS_EnableAppswitch, 1, appswitch_doc},
{"SetEventHandler", MacOS_SetEventHandler, 1, setevh_doc},
{"HandleEvent", MacOS_HandleEvent, 1, handleev_doc}, {"HandleEvent", MacOS_HandleEvent, 1, handleev_doc},
{"GetErrorString", MacOS_GetErrorString, 1, geterr_doc}, {"GetErrorString", MacOS_GetErrorString, 1, geterr_doc},
{"openrf", MacOS_openrf, 1, openrf_doc}, {"openrf", MacOS_openrf, 1, openrf_doc},
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment