X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.i;h=7322426bb9992deaa6790aeb69cb869b5c95634c;hb=385de86d903c95e9897bd106b04e3ef1f70d9d2d;hp=508b678cf990274fb188d3bf4ae8e057ad41dc8d;hpb=c7b22b4f9cee63d860ad4f6617cd5210299b9d8b;p=chaz%2Fopenbox diff --git a/src/openbox.i b/src/openbox.i index 508b678c..7322426b 100644 --- a/src/openbox.i +++ b/src/openbox.i @@ -12,10 +12,11 @@ #include "client.hh" #include "bindings.hh" #include "actions.hh" +#include "python.hh" +#include "otk/display.hh" %} %include "stl.i" -%include "exception.i" //%include std_list.i //%template(ClientList) std::list; @@ -24,6 +25,71 @@ ob::Openbox *Openbox_instance() { return ob::Openbox::instance; } %}; +%{ +namespace ob { +void python_callback(PyObject *func, MouseData *data) +{ + PyObject *arglist; + PyObject *result; + + arglist = Py_BuildValue("(O)", SWIG_NewPointerObj((void *) data, + SWIGTYPE_p_ob__MouseData, + 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 @@ -46,6 +112,9 @@ %import "widget.hh" %import "actions.hh" +%include "../otk/point.hh" +%include "../otk/rect.hh" + %include "openbox.hh" %include "screen.hh" %include "client.hh"