X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fpython.hh;h=2bf656d8620a4696f27c54350d1c74772636dba9;hb=15d3efa69c40c93ae609a791e4b57c3d793e646f;hp=c5e566f440271acf8daf5d245d51f8f109268d93;hpb=b35dae95a5cdb902f1661b9572af47c3f55c975c;p=chaz%2Fopenbox diff --git a/src/python.hh b/src/python.hh index c5e566f4..2bf656d8 100644 --- a/src/python.hh +++ b/src/python.hh @@ -6,6 +6,9 @@ @brief wee */ +#include "otk/point.hh" +#include "otk/rect.hh" + extern "C" { #include #include @@ -19,6 +22,7 @@ namespace ob { enum MouseContext { MC_Frame, MC_Titlebar, + MC_Handle, MC_Window, MC_MaximizeButton, MC_CloseButton, @@ -44,30 +48,92 @@ enum KeyContext { NUM_KEY_CONTEXT }; +enum EventAction { + EventEnterWindow, + EventLeaveWindow, + EventNewWindow, + EventCloseWindow, + NUM_EVENTS +}; + #ifndef SWIG + +// *** MotionData can be (and is) cast ButtonData!! (in actions.cc) *** // +typedef struct { + PyObject_HEAD; + Window window; + Time time; + unsigned int state; + unsigned int button; + MouseContext context; + MouseAction action; + int xroot; + int yroot; + int pressx; + int pressy; + int press_clientx; + int press_clienty; + int press_clientwidth; + int press_clientheight; +} MotionData; + +// *** MotionData can be (and is) cast ButtonData!! (in actions.cc) *** // +typedef struct { + PyObject_HEAD; + Window window; + Time time; + unsigned int state; + unsigned int button; + MouseContext context; + MouseAction action; +} ButtonData; + +typedef struct { + PyObject_HEAD; + Window window; + unsigned int state; + EventAction action; +} EventData; + +typedef struct { + PyObject_HEAD; + Window window; + Time time; + unsigned int state; + unsigned int key; +} KeyData; + void python_init(char *argv0); void python_destroy(); bool python_exec(const std::string &path); -void python_callback(PyObject *func, MouseAction action, - Window window, MouseContext context, - unsigned int state, unsigned int button, - int xroot, int yroot, Time time); - -void python_callback(PyObject *func, Window window, unsigned int state, - unsigned int key, Time time); +MotionData *new_motion_data(Window window, Time time, unsigned int state, + unsigned int button, MouseContext context, + MouseAction action, int xroot, int yroot, + const otk::Point &initpos, + const otk::Rect &initarea); +ButtonData *new_button_data(Window window, Time time, unsigned int state, + unsigned int button, MouseContext context, + MouseAction action); +EventData *new_event_data(Window window, EventAction action, + unsigned int state); +KeyData *new_key_data(Window window, Time time, unsigned int state, + unsigned int key); +void python_callback(PyObject *func, PyObject *data); +bool python_get_long(const char *name, long *value); bool python_get_string(const char *name, std::string *value); bool python_get_stringlist(const char *name, std::vector *value); #endif -PyObject * mbind(const std::string &button, ob::MouseContext context, - ob::MouseAction action, PyObject *func); +PyObject *mbind(const std::string &button, ob::MouseContext context, + ob::MouseAction action, PyObject *func); + +PyObject *kbind(PyObject *keylist, ob::KeyContext context, PyObject *func); + +PyObject *ebind(ob::EventAction action, PyObject *func); -PyObject * kbind(PyObject *keylist, ob::KeyContext context, PyObject *func); -PyObject * kunbind(PyObject *keylist); -void kunbind_all(); void set_reset_key(const std::string &key); }