X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fopenbox.i;h=5419832585bdb6292877110c1df73b01e574eb0d;hb=7fe3301e7ea905a8a76d54c22751f3d8a346e28b;hp=bde9a8cb2c48f510611c04056fbd11866c9cf167;hpb=5f78b51429b204f89b654d634bb4cc8cb78b95f6;p=chaz%2Fopenbox diff --git a/src/openbox.i b/src/openbox.i index bde9a8cb..54198325 100644 --- a/src/openbox.i +++ b/src/openbox.i @@ -1,28 +1,147 @@ // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- -%module openbox +%module ob %{ #ifdef HAVE_CONFIG_H # include "../config.h" #endif +#include "frame.hh" #include "openbox.hh" #include "screen.hh" #include "client.hh" +#include "bindings.hh" +#include "actions.hh" +#include "python.hh" +#include "otk/otk.hh" %} -%immutable ob::Openbox::instance; +%include "stl.i" +//%include std_list.i +//%template(ClientList) std::list; -%include "openbox.hh" -%include "screen.hh" -%include "client.hh" +%ignore ob::openbox; +%inline %{ + ob::Openbox *Openbox_instance() { return ob::openbox; } +%}; + +%{ +namespace ob { +void python_callback(PyObject *func, MouseData *data) +{ + PyObject *arglist, *result, *pdata; + + pdata = SWIG_NewPointerObj((void *) data, SWIGTYPE_p_ob__MouseData, 0); + arglist = Py_BuildValue("(O)", pdata); + Py_DECREF(pdata); + + // 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, *result, *pdata; + + pdata = SWIG_NewPointerObj((void *) data, SWIGTYPE_p_ob__EventData, 0); + arglist = Py_BuildValue("(O)", pdata); + Py_DECREF(pdata); + + // 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, *result, *pdata; + + pdata = SWIG_NewPointerObj((void *) data, SWIGTYPE_p_ob__KeyData, 0); + arglist = Py_BuildValue("(O)", pdata); + Py_DECREF(pdata); + + // 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); +} +} +%} -%include stl.i -%include std_list.i +#ignore ob::openbox; +%ignore ob::Screen::clients; %{ -class OBClient; + #include %} -%template(ClientList) std::list; +%extend ob::Screen { + Client *client(int i) { + if (i < 0 || i >= (int)self->clients.size()) + return NULL; + ob::Client::List::iterator it = self->clients.begin(); + std::advance(it,i); + return *it; + } + int clientCount() const { + return (int) self->clients.size(); + } +}; + +/* +%include "../otk/ustring.i" + +%ignore otk::display; +%inline %{ + otk::Display *Display_instance() { return otk::display; } +%}; + +%ignore otk::Property::atoms; +%inline %{ + const otk::Atoms& Property_atoms() { return otk::Property::atoms; } +%}; + +%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 "../otk/widget.hh" +*/ +%import "../otk/otk.i" + +%import "widgetbase.hh" +%import "actions.hh" + +%include "openbox.hh" +%include "screen.hh" +%include "client.hh" +%include "frame.hh" +%include "python.hh" + +// for Mod1Mask etc +%include "X11/X.h"