[Xfce4-commits] <pyxfce:master> fix XfconfChannel.get_properties()
Danny Milosavljevic
noreply at xfce.org
Wed Dec 29 00:38:01 CET 2010
Updating branch refs/heads/master
to c397903391346d2078219ba03488f2ffa27cac6c (commit)
from ed71ded18db1b056936cb44537aea2a84e640a76 (commit)
commit c397903391346d2078219ba03488f2ffa27cac6c
Author: Danny Milosavljevic <dannym at xfce.org>
Date: Wed Dec 29 00:34:21 2010 +0100
fix XfconfChannel.get_properties()
xfconf/channel.override | 27 +++++++++++++++++++++++++++
xfconf/tests/testwmconf.py | 9 +++++++++
xfconf/xfconfmodule.c | 7 +++++--
3 files changed, 41 insertions(+), 2 deletions(-)
diff --git a/xfconf/channel.override b/xfconf/channel.override
index c17574f..6c89fd9 100644
--- a/xfconf/channel.override
+++ b/xfconf/channel.override
@@ -44,3 +44,30 @@ _wrap_xfconf_list_channels(PyObject *self, PyObject *args, PyObject *kwargs)
Py_INCREF(Py_None);
return Py_None;
}
+%%
+override xfconf_channel_get_properties kwargs
+static PyObject *
+_wrap_xfconf_channel_get_properties(PyGObject *self, PyObject *args, PyObject *kwargs)
+{
+ static char *kwlist[] = { "property_base", NULL };
+ GHashTable *ret;
+ char* path;
+
+ if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s:XfconfChannel.get_properties", kwlist, &path))
+ return NULL;
+ ret = xfconf_channel_get_properties(XFCONF_CHANNEL(self->obj), path);
+ if (ret) {
+ GHashTableIter iter;
+ gpointer key, value;
+ PyObject* py_ret;
+ py_ret = PyDict_New();
+ g_hash_table_iter_init(&iter, ret);
+ while(g_hash_table_iter_next(&iter, &key, &value)) {
+ PyDict_SetItem(py_ret, PyString_FromString((const char*) key), pyg_value_as_pyobject((GValue*) value, TRUE));
+ }
+ g_hash_table_destroy(ret);
+ return py_ret;
+ }
+ Py_INCREF(Py_None);
+ return Py_None;
+}
diff --git a/xfconf/tests/testwmconf.py b/xfconf/tests/testwmconf.py
new file mode 100644
index 0000000..2b26a37
--- /dev/null
+++ b/xfconf/tests/testwmconf.py
@@ -0,0 +1,9 @@
+#!/usr/bin/env python
+
+import xfce4.xfconf
+print(xfce4.xfconf.list_channels())
+wm = xfce4.xfconf.channel_get("xfwm4")
+print(wm.get_properties("/"))
+wm = xfce4.xfconf.channel_get("xfwm4")
+print(wm.get_properties("/"))
+
diff --git a/xfconf/xfconfmodule.c b/xfconf/xfconfmodule.c
index 5cf0de0..3594597 100644
--- a/xfconf/xfconfmodule.c
+++ b/xfconf/xfconfmodule.c
@@ -11,6 +11,8 @@
#include <pygobject.h>
#include <pyerrors.h>
+#include <xfconf/xfconf.h>
+
extern const PyMethodDef pybinding_functions[];
extern const PyMethodDef pychannel_functions[];
extern const PyMethodDef pyerrors_functions[];
@@ -71,8 +73,9 @@ init_xfconf(void)
init_pygobject ();
if(!xfconf_init(&error)) {
- fprintf (stderr, "Unable to initialize xfconf: %s\n", error->message);
- g_error_free(error);
+ fprintf(stderr, "Unable to initialize xfconf: %s\n", error->message);
+ if(pyg_error_check(&error))
+ return;
}
my_register1 ();
More information about the Xfce4-commits
mailing list