X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;ds=sidebyside;f=src%2Fopenbox.i;h=0f54362bd14eda1f3879ae4b1bc8410f5d214963;hb=345d957e1ea577480f807b892b73c3f52fe913d2;hp=b914ce9c52bd4d4ee0a3386bb79b06ef77a6e792;hpb=b1739374a61d0c33270bafe84da9d787e79c0686;p=chaz%2Fopenbox diff --git a/src/openbox.i b/src/openbox.i index b914ce9c..0f54362b 100644 --- a/src/openbox.i +++ b/src/openbox.i @@ -12,6 +12,8 @@ #include "client.hh" #include "bindings.hh" #include "actions.hh" +#include "python.hh" +#include "otk/display.hh" %} %include "stl.i" @@ -23,6 +25,91 @@ ob::Openbox *Openbox_instance() { return ob::Openbox::instance; } %}; +%{ +namespace ob { +void python_callback(PyObject *func, MotionData *data) +{ + PyObject *arglist; + PyObject *result; + + arglist = Py_BuildValue("(O)", SWIG_NewPointerObj((void *) data, + SWIGTYPE_p_ob__MotionData, + 0)); + + // call the callback + result = PyEval_CallObject(func, arglist); + if (!result || PyErr_Occurred()) { + // an exception occured in the script, display it + PyErr_Print(); + } + + Py_XDECREF(result); + Py_DECREF(arglist); +} + +void python_callback(PyObject *func, ButtonData *data) +{ + PyObject *arglist; + PyObject *result; + + arglist = Py_BuildValue("(O)", SWIG_NewPointerObj((void *) data, + SWIGTYPE_p_ob__ButtonData, + 0)); + + // call the callback + result = PyEval_CallObject(func, arglist); + if (!result || PyErr_Occurred()) { + // an exception occured in the script, display it + PyErr_Print(); + } + + Py_XDECREF(result); + Py_DECREF(arglist); +} + +void python_callback(PyObject *func, EventData *data) +{ + PyObject *arglist; + PyObject *result; + + arglist = Py_BuildValue("(O)", SWIG_NewPointerObj((void *) data, + SWIGTYPE_p_ob__EventData, + 0)); + + // call the callback + result = PyEval_CallObject(func, arglist); + if (!result || PyErr_Occurred()) { + // an exception occured in the script, display it + PyErr_Print(); + } + + Py_XDECREF(result); + Py_DECREF(arglist); +} + +void python_callback(PyObject *func, KeyData *data) +{ + PyObject *arglist; + PyObject *result; + + arglist = Py_BuildValue("(O)", SWIG_NewPointerObj((void *) data, + SWIGTYPE_p_ob__KeyData, + 0)); + + // call the callback + result = PyEval_CallObject(func, arglist); + if (!result || PyErr_Occurred()) { + // an exception occured in the script, display it + PyErr_Print(); + } + + Py_XDECREF(result); + Py_DECREF(arglist); +} + +} +%} + %ignore ob::OBScreen::clients; %{ #include