summaryrefslogtreecommitdiff
path: root/src/python_client.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/python_client.cc')
-rw-r--r--src/python_client.cc69
1 files changed, 69 insertions, 0 deletions
diff --git a/src/python_client.cc b/src/python_client.cc
new file mode 100644
index 00000000..3758e427
--- /dev/null
+++ b/src/python_client.cc
@@ -0,0 +1,69 @@
+// -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
+
+#ifdef HAVE_CONFIG_H
+# include "../config.h"
+#endif
+
+#include "python_client.hh"
+#include "openbox.hh"
+
+namespace ob {
+
+extern "C" {
+
+PyObject *get_client_dict(PyObject* self, PyObject* args)
+{
+ if (!PyArg_ParseTuple(args, ":get_client_dict"))
+ return NULL;
+ return PyDictProxy_New(Openbox::instance->pyclients());
+}
+
+
+
+PyObject *getWindow(PyObject* self, PyObject* args)
+{
+ if (!PyArg_ParseTuple(args, ":getWindow"))
+ return NULL;
+ return PyLong_FromLong(((PyClientObject*)self)->window);
+}
+
+
+
+static PyMethodDef attr_methods[] = {
+ {"getWindow", getWindow, METH_VARARGS,
+ "Return the window id."},
+ {NULL, NULL, 0, NULL} /* sentinel */
+};
+
+static PyObject *getattr(PyObject *obj, char *name)
+{
+ return Py_FindMethod(attr_methods, obj, name);
+}
+
+
+
+static void client_dealloc(PyObject* self)
+{
+ PyObject_Del(self);
+}
+
+PyTypeObject PyClient_Type = {
+ PyObject_HEAD_INIT(NULL)
+ 0,
+ "Client",
+ sizeof(PyClientObject),
+ 0,
+ client_dealloc, /*tp_dealloc*/
+ 0, /*tp_print*/
+ getattr, /*tp_getattr*/
+ 0, /*tp_setattr*/
+ 0, /*tp_compare*/
+ 0, /*tp_repr*/
+ 0, /*tp_as_number*/
+ 0, /*tp_as_sequence*/
+ 0, /*tp_as_mapping*/
+ 0, /*tp_hash */
+};
+
+}
+}