summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2000-06-27 16:32:17 +0000
committerJames Henstridge <jamesh@src.gnome.org>2000-06-27 16:32:17 +0000
commitb63063176b2ab5e871826b5566586613c7c84e5a (patch)
treee2befc13e6a41b3523a7d7eaed515cf727e0a4e2
parent3857fe92a26226de993b173a478d60bdadf32906 (diff)
downloadpygobject-b63063176b2ab5e871826b5566586613c7c84e5a.tar.gz
pygobject-b63063176b2ab5e871826b5566586613c7c84e5a.tar.xz
pygobject-b63063176b2ab5e871826b5566586613c7c84e5a.zip
add get_data / set_data methods. Add get_param / set_param methods.
2000-06-28 James Henstridge <james@daa.com.au> * gobjectmodule.c: add get_data / set_data methods. Add get_param / set_param methods.
-rw-r--r--gobject/gobjectmodule.c85
1 files changed, 85 insertions, 0 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c
index de9e26d..5697628 100644
--- a/gobject/gobjectmodule.c
+++ b/gobject/gobjectmodule.c
@@ -467,8 +467,93 @@ pygobject__class_init__(PyObject *something, PyObject *args)
return Py_None;
}
+static PyObject *
+pygobject_get_param(PyGObject *self, PyObject *args)
+{
+ gchar *param_name;
+ GParamSpec *pspec;
+ GValue value;
+
+ if (!PyArg_ParseTuple(args, "s:GObject.get_param", &param_name))
+ return NULL;
+ pspec = g_object_class_find_param_spec(G_OBJECT_GET_CLASS(self->obj),
+ param_name);
+ if (!pspec) {
+ PyErr_SetString(PyExc_TypeError,
+ "the object does not support the given parameter");
+ return NULL;
+ }
+ g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
+ g_object_get_param(self->obj, param_name, &value);
+ return pyg_value_as_pyobject(&value);
+}
+
+static PyObject *
+pygobject_set_param(PyGObject *self, PyObject *args)
+{
+ gchar *param_name;
+ GParamSpec *pspec;
+ GValue value;
+ PyObject *pvalue;
+
+ if (!PyArg_ParseTuple(args, "sO:GObject.set_param", &param_name, &pvalue))
+ return NULL;
+ pspec = g_object_class_find_param_spec(G_OBJECT_GET_CLASS(self->obj),
+ param_name);
+ if (!pspec) {
+ PyErr_SetString(PyExc_TypeError,
+ "the object does not support the given parameter");
+ return NULL;
+ }
+ g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(pspec));
+ if (pyg_value_from_pyobject(&value, pvalue) < 0) {
+ PyErr_SetString(PyExc_TypeError,
+ "could not convert argument to correct param type");
+ return NULL;
+ }
+ g_object_set_param(self->obj, param_name, &value);
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
+static PyObject *
+pygobject_get_data(PyGObject *self, PyObject *args)
+{
+ char *key;
+ GQuark quark;
+ PyObject *data;
+
+ if (!PyArg_ParseTuple(args, "s:GObject.get_data", &key))
+ return NULL;
+ quark = g_quark_from_string(key);
+ data = g_object_get_qdata(self->obj, quark);
+ if (!data) data = Py_None;
+ Py_INCREF(data);
+ return data;
+}
+
+static PyObject *
+pygobject_set_data(PyGObject *self, PyObject *args)
+{
+ char *key;
+ GQuark quark;
+ PyObject *data;
+
+ if (!PyArg_ParseTuple(args, "sO:GObject.get_data", &key, &data))
+ return NULL;
+ quark = g_quark_from_string(key);
+ Py_INCREF(data);
+ g_object_set_qdata_full(self->obj, quark, data, pygobject_destroy_notify);
+ Py_INCREF(Py_None);
+ return Py_None;
+}
+
static PyMethodDef pygobject_methods[] = {
{ "__class_init__", (PyCFunction)pygobject__class_init__, METH_VARARGS|METH_CLASS_METHOD },
+ { "get_param", (PyCFunction)pygobject_get_param, METH_VARARGS },
+ { "set_param", (PyCFunction)pygobject_set_param, METH_VARARGS },
+ { "get_data", (PyCFunction)pygobject_get_data, METH_VARARGS },
+ { "set_data", (PyCFunction)pygobject_set_data, METH_VARARGS },
{ NULL, NULL, 0 }
};