X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.i;h=7422d0a198f16d4b7ccec3e747f358a4f4f0a284;hb=0b12453cf633b914f6712315dfc2c0171d2bb574;hp=1ff7d357e4543041329dc0b0a9ea3cc87c90aeef;hpb=3827c1a76e27865a9e2cc9da43c42399ea354e18;p=chaz%2Fopenbox diff --git a/src/openbox.i b/src/openbox.i index 1ff7d357..7422d0a1 100644 --- a/src/openbox.i +++ b/src/openbox.i @@ -10,11 +10,13 @@ #include "openbox.hh" #include "screen.hh" #include "client.hh" +#include "bindings.hh" +#include "actions.hh" #include "python.hh" +#include "otk/otk.hh" %} - -%include stl.i +%include "stl.i" //%include std_list.i //%template(ClientList) std::list; @@ -23,21 +25,70 @@ ob::Openbox *Openbox_instance() { return ob::Openbox::instance; } %}; -// stuff for registering callbacks! +%{ +namespace ob { +void python_callback(PyObject *func, MouseData *data) +{ + PyObject *arglist; + PyObject *result; -%inline %{ - enum ActionType { - Action_ButtonPress, - Action_ButtonRelease, - Action_EnterWindow, - Action_LeaveWindow, - Action_KeyPress, - Action_MouseMotion - }; + 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::python_callback; -%rename(register) ob::python_register; -%rename(unregister) ob::python_unregister; %ignore ob::OBScreen::clients; %{ @@ -47,7 +98,7 @@ OBClient *client(int i) { if (i >= (int)self->clients.size()) return NULL; - ob::OBScreen::ClientList::iterator it = self->clients.begin(); + ob::OBClient::List::iterator it = self->clients.begin(); std::advance(it,i); return *it; } @@ -56,9 +107,28 @@ } }; -%import "../otk/eventdispatcher.hh" -%import "../otk/eventhandler.hh" -%import "widget.hh" +%ignore otk::OBDisplay::display; +%inline %{ + Display *OBDisplay_display() { return otk::OBDisplay::display; } +%}; + +%include "../otk/display.hh" +%include "../otk/point.hh" +%include "../otk/property.hh" +%include "../otk/rect.hh" +%include "../otk/screeninfo.hh" +%include "../otk/strut.hh" + +%rename(itostring_unsigned) itostring(unsigned int); +%rename(itostring_long) itostring(long); +%rename(itostring_unsigned_long) itostring(unsigned long); +%include "../otk/util.hh" + +%include "../otk/eventhandler.hh" +%include "../otk/eventdispatcher.hh" + +%import "widgetbase.hh" +%import "actions.hh" %include "openbox.hh" %include "screen.hh"