extern "C" {
#include <X11/Xlib.h>
-#include <Python.h>
}
#include <string>
#include <vector>
+
namespace ob {
class Client;
Titlebar,
Handle,
Window,
+ IconButton,
MaximizeButton,
CloseButton,
IconifyButton,
Grip,
Root,
MenuItem
-#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+#ifndef DOXYGEN_IGNORE
, NUM_MOUSE_CONTEXT
#endif
};
Click,
DoubleClick,
Motion
-#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+#ifndef DOXYGEN_IGNORE
, NUM_MOUSE_ACTION
#endif
};
enum KC {
Menu,
All
-#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+#ifndef DOXYGEN_IGNORE
, NUM_KEY_CONTEXT
#endif
};
enum KA {
Press,
Release
-#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
+#ifndef DOXYGEN_IGNORE
, NUM_KEY_ACTION
#endif
};
The Client::urgent method can be used to get the status.
*/
UrgentWindow
-#if ! (defined(DOXYGEN_IGNORE) || defined(SWIG))
- , NUM_EVENTS
+#ifndef DOXYGEN_IGNORE
+ , NUM_EVENT_ACTION
#endif
};
};
}
};
-#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<otk::ustring> *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 *mgrab(int screen);
-PyObject *mungrab();
-
-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);
-
}