summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-15 15:27:22 -0400
committerJeff Armstrong <jeffrey.armstrong@approximatrix.com>2011-07-15 15:27:22 -0400
commit23b87723883c224c03dedd303a61a10d054292d9 (patch)
tree62c252e539a51fca0d5a1a62e4cdcc6f7258284e /lib
parent7e9b495ca8c5aef1b4f3e4d5a29283df27348a84 (diff)
downloadgempy-23b87723883c224c03dedd303a61a10d054292d9.tar.gz
gempy-23b87723883c224c03dedd303a61a10d054292d9.zip
Added the event processing call.
Diffstat (limited to 'lib')
-rw-r--r--lib/gem.c7
-rw-r--r--lib/py_aes.c37
-rw-r--r--lib/py_aes.h2
3 files changed, 42 insertions, 4 deletions
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 <gem.h>
+#include <macros.h>
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 */