X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fpython.hh;h=c1655503fafc25dc37dffa20c5577e4d23d97f71;hb=e659f95516867e2082aa171e818b372624bc5ebf;hp=ac5bd3e1821f727cc4588a6ba870db1530beffdc;hpb=997f94cf8657201ea9d1f2497e4ec4f56342e22f;p=chaz%2Fopenbox diff --git a/src/python.hh b/src/python.hh index ac5bd3e1..c1655503 100644 --- a/src/python.hh +++ b/src/python.hh @@ -14,12 +14,12 @@ extern "C" { #include -#include } #include #include + namespace ob { class Client; @@ -30,56 +30,100 @@ struct MouseContext { Titlebar, Handle, Window, + IconButton, MaximizeButton, CloseButton, IconifyButton, AllDesktopsButton, Grip, Root, - MenuItem, - NUM_MOUSE_CONTEXT + MenuItem +#ifndef DOXYGEN_IGNORE + , NUM_MOUSE_CONTEXT +#endif }; }; struct MouseAction { enum MA { Press, + Release, Click, DoubleClick, - Motion, - NUM_MOUSE_ACTION + Motion +#ifndef DOXYGEN_IGNORE + , NUM_MOUSE_ACTION +#endif }; }; struct KeyContext { enum KC { Menu, - All, - NUM_KEY_CONTEXT + All +#ifndef DOXYGEN_IGNORE + , NUM_KEY_CONTEXT +#endif }; }; struct KeyAction { enum KA { Press, - Release, - NUM_KEY_ACTION + Release +#ifndef DOXYGEN_IGNORE + , NUM_KEY_ACTION +#endif }; }; struct EventAction { enum EA { - EnterWindow, - LeaveWindow, + EnterWindow, //!< Occurs when the mouse enters a window + LeaveWindow, //!< Occurs when the mouse leaves a window + //! Occurs while a window is being managed. The handler should call + //! Client::move on the window PlaceWindow, + //! Occurs while a window is being managed, just before the window is + //! displayed + /*! + Note that the window's state may not be completely stabilized by this + point. The NewWindow event should be used when possible. + */ + DisplayingWindow, + //! Occurs when a window is finished being managed NewWindow, + //! Occurs when a window has been closed and is going to be unmanaged CloseWindow, + //! Occurs when the window manager manages a screen + /*! + This event occurs on each managed screen during startup. + */ Startup, + //! Occurs when the window manager unmanages a screen + /*! + This event occurs on each managed screen during shutdown. + */ Shutdown, + //! Occurs when the input focus target changes + /*! + The data.client will be None of no client is focused. + */ Focus, + //! Occurs when the system is fired through X. + /*! + The data.client will hold the client associated with the bell if + one has been specified, or None. + */ Bell, - UrgentWindow, - NUM_EVENTS + //! Occurs when a client toggles its urgent status. + /*! + The Client::urgent method can be used to get the status. + */ + UrgentWindow +#ifndef DOXYGEN_IGNORE + , NUM_EVENT_ACTION +#endif }; }; @@ -179,44 +223,20 @@ public: } }; -#ifndef SWIG +// The void*'s will be used to hold the native language's function pointer +typedef void (*MouseCallback)(MouseData*, void*); +typedef void (*KeyCallback)(KeyData*, void*); +typedef void (*EventCallback)(EventData*, void*); void python_init(char *argv0); void python_destroy(); -bool python_exec(const std::string &path); +//! Returns 0 for success, 1 for failing to open the file, 2 for an exception +int python_exec(const std::string &path); bool python_get_long(const char *name, long *value); bool python_get_string(const char *name, otk::ustring *value); bool python_get_stringlist(const char *name, std::vector *value); -/*********************************************** - * These are found in openbox.i, not python.cc * - ***********************************************/ -void python_callback(PyObject *func, MouseData *data); -void python_callback(PyObject *func, EventData *data); -void python_callback(PyObject *func, KeyData *data); - -#endif // SWIG - -PyObject *mbind(const std::string &button, ob::MouseContext::MC context, - ob::MouseAction::MA action, PyObject *func); - -PyObject *kbind(PyObject *keylist, ob::KeyContext::KC context, PyObject *func); - -PyObject *kgrab(int screen, PyObject *func); -PyObject *kungrab(); - -PyObject *ebind(ob::EventAction::EA action, PyObject *func); - -void set_reset_key(const std::string &key); - -PyObject *send_client_msg(Window target, Atom type, Window about, - long data, long data1 = 0, long data2 = 0, - long data3 = 0, long data4 = 0); - - -void execute(const std::string &bin, int screen=0); - }