X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.i;h=edc29ae82303c0081fefc2a62a8b211c2b340b4f;hb=2627b85226b621868a4425f4aea695ed089d7de5;hp=cf7859d4cdea40a3e199781c2beb1998f9a993bc;hpb=fe55bb846db1933d8d6f023236298940cab441f8;p=chaz%2Fopenbox diff --git a/src/openbox.i b/src/openbox.i index cf7859d4..edc29ae8 100644 --- a/src/openbox.i +++ b/src/openbox.i @@ -10,30 +10,95 @@ #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; - +//%template(ClientList) std::list; %ignore ob::Openbox::instance; -%ignore ob::OBScreen::clients; - -%include "openbox.hh" -%include "screen.hh" -%include "client.hh" - %inline %{ 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::Screen::clients; %{ #include %} -%extend ob::OBScreen { - OBClient *client(int i) { - ob::OBScreen::ClientList::iterator it = self->clients.begin(); +%extend ob::Screen { + Client *client(int i) { + if (i >= (int)self->clients.size()) + return NULL; + ob::Client::List::iterator it = self->clients.begin(); std::advance(it,i); return *it; } @@ -41,3 +106,29 @@ return (int) self->clients.size(); } }; + +%ignore otk::Display::display; +%inline %{ + Display *Display_display() { return otk::Display::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" + +%include "../otk/eventhandler.hh" +%include "../otk/eventdispatcher.hh" + +%import "widgetbase.hh" +%import "actions.hh" + +%include "openbox.hh" +%include "screen.hh" +%include "client.hh" +%include "python.hh" + +// for Mod1Mask etc +%include "X11/X.h"