From 23b87723883c224c03dedd303a61a10d054292d9 Mon Sep 17 00:00:00 2001 From: Jeff Armstrong Date: Fri, 15 Jul 2011 15:27:22 -0400 Subject: Added the event processing call. --- lib/gem.c | 7 ++++++- lib/py_aes.c | 37 ++++++++++++++++++++++++++++++++++--- lib/py_aes.h | 2 ++ 3 files changed, 42 insertions(+), 4 deletions(-) (limited to 'lib') diff --git a/lib/gem.c b/lib/gem.c index 02b2c54..3d70fcb 100644 --- a/lib/gem.c +++ b/lib/gem.c @@ -45,6 +45,8 @@ GemMethods[] = { {"wind_set", py_wind_set, METH_VARARGS, "Set a window parameter"}, {"wind_update", py_wind_update, METH_VARARGS, "Lock window redraw for updates"}, + {"evnt_multi", py_evnt_multi, METH_KEYWORDS | METH_VARARGS, "Process multiple GEM events."}, + {NULL,NULL,0,NULL} }; @@ -107,11 +109,14 @@ PROC LibFunc[] = { "py_wind_update", "Internal\n", py_wind_update, "py_wind_set", "Internal\n", py_wind_set, + /* AES Event Library */ + "py_evnt_multi", "Internal\n", py_evnt_multi, + NULL,NULL,NULL }; LDGLIB LibLdg[] = { - 0x0001, 20, LibFunc, "GEM Extensions for Python", 0 + 0x0001, 21, LibFunc, "GEM Extensions for Python", 0 }; int main( void) diff --git a/lib/py_aes.c b/lib/py_aes.c index 702f996..9a3ef54 100644 --- a/lib/py_aes.c +++ b/lib/py_aes.c @@ -1,5 +1,6 @@ #include "ldg_Python.h" #include +#include extern PyObject *GEMError; @@ -367,7 +368,7 @@ PyObject *tple; /* --- Event Library --- */ -static PyObject* __CDECL py_evnt_multi(PyObject self, PyObject *args) +static PyObject* __CDECL py_evnt_multi(PyObject self, PyObject *args, PyObject *kwargs) { /* Because this is possibly the ugliest call ever created in the C * language, we'll use the same variable names as the docs use. @@ -376,8 +377,36 @@ int ev_mflags, ev_mbclicks, ev_mbmask, ev_mbstate, ev_mm1flags, ev_mm1x, ev_mm1y int ev_mm2x, ev_mm2y, ev_mm2width, ev_mm2height, ev_mmgpbuff, ev_mtlocount, ev_mthicount, ev_mmox, ev_mmoy; int ev_mmbutton, ev_mmokstate, ev_mkreturn, ev_mbreturn; - /* More is still needed */ +PyObject *mbuttons; +PyObject *mmovement; +long int timer; + +static char *kwlist[] = {"mouse_buttons","mouse_movement","timer",NULL}; + + mbuttons = NULL; + mmoverment = NULL; + timer = 0l; + + if(!PyArg_ParseTupleAndKeywords(args, keywds, "i|OOl", kwlist, + &ev_mflags, &mbuttons, &mmovement, &timer)) + return NULL; + + /* Timer handling */ + ev_mtlocount = loword(timer); + ev_mthicount = hiword(timer); + /* Mouse button handling */ + if(mouse_buttons != NULL) { + PyArg_ParseTuple(mbuttons,"iii",&ev_mbclicks,&ev_mbmask,&ev_mbstate); + } + + /* Mouse movement handling */ + if(mouse_movement != NULL) { + PyArg_ParseTuple(mmovement,"(iiiii)(iiiii)",&ev_mm1flags,&ev_mm1x,&ev_mm1y,&ev_mm1width,ev_mm1height, + &ev_mm2flags,&ev_mm2x,&ev_mm2y,&ev_mm2width,ev_mm2height); + } + + /* More is still needed */ ret = evnt_multi(ev_mflags, ev_mbclicks, ev_mbmask, @@ -402,6 +431,8 @@ int ev_mmbutton, ev_mmokstate, ev_mkreturn, ev_mbreturn; &ev_mkreturn, &ev_mbreturn); - + return Py_BuildValue("{s:i,s:i,s:(ii),s:(iii),s:i", "events", ret, "message", ev_mmgpbuff, + "mouse_position", ev_mmox, ev_mmoy, "mouse_button", ev_mmbutton, ev_mmokstate, ev_mbreturn + "key", ev_mkreturn); } diff --git a/lib/py_aes.h b/lib/py_aes.h index 60d0b78..a6eed9b 100644 --- a/lib/py_aes.h +++ b/lib/py_aes.h @@ -26,4 +26,6 @@ static PyObject* __CDECL py_wind_close(PyObject *self, PyObject *args); static PyObject* __CDECL py_wind_set(PyObject *self, PyObject *args); static PyObject* __CDECL py_wind_update(PyObject *self, PyObject *args); +static PyObject* __CDECL py_evnt_multi(PyObject self, PyObject *args, PyObject *kwargs); + #endif /* __PY_AES_HEADERS */ -- cgit v1.2.3