diff options
author | Johan Dahlin <johan@src.gnome.org> | 2004-07-18 19:30:34 +0000 |
---|---|---|
committer | Johan Dahlin <johan@src.gnome.org> | 2004-07-18 19:30:34 +0000 |
commit | 0caf54f414b108603c1e0f57f0e31489fdc31d32 (patch) | |
tree | befb5168c006019807ca94ce25012aab9ff50929 /gobject/pygflags.c | |
parent | 3b9951be52eeac3d76755808eafcdca864bc4e74 (diff) | |
download | pygobject-0caf54f414b108603c1e0f57f0e31489fdc31d32.tar.gz pygobject-0caf54f414b108603c1e0f57f0e31489fdc31d32.tar.xz pygobject-0caf54f414b108603c1e0f57f0e31489fdc31d32.zip |
New getters
* gobject/pygflags.c (pyg_flags_get_value_nicks)
(pyg_flags_get_value_names): New getters
* gobject/pygenum.c (pyg_enum_get_value_nick)
(pyg_enum_get_value_name): New getters
* gobject/gobjectmodule.c (pyg_param_spec_getattr): add enum_class
and flags_class properties.
Diffstat (limited to 'gobject/pygflags.c')
-rw-r--r-- | gobject/pygflags.c | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/gobject/pygflags.c b/gobject/pygflags.c index 2c37cc1..f5f3091 100644 --- a/gobject/pygflags.c +++ b/gobject/pygflags.c @@ -283,6 +283,50 @@ pyg_flags_warn (PyObject *self, PyObject *args) return Py_None; } +static PyObject * +pyg_flags_get_value_names(PyGFlags *self, void *closure) +{ + GFlagsClass *flags_class; + PyObject *retval; + int i; + + flags_class = g_type_class_ref(self->gtype); + g_assert(G_IS_FLAGS_CLASS(flags_class)); + + retval = PyTuple_New(flags_class->n_values); + for (i = 0; i < flags_class->n_values; i++) + PyTuple_SetItem(retval, i, PyString_FromString(flags_class->values[i].value_name)); + + g_type_class_unref(flags_class); + + return retval; +} + +static PyObject * +pyg_flags_get_value_nicks(PyGFlags *self, void *closure) +{ + GFlagsClass *flags_class; + PyObject *retval; + int i; + + flags_class = g_type_class_ref(self->gtype); + g_assert(G_IS_FLAGS_CLASS(flags_class)); + + retval = PyTuple_New(flags_class->n_values); + for (i = 0; i < flags_class->n_values; i++) + PyTuple_SetItem(retval, i, PyString_FromString(flags_class->values[i].value_nick)); + + g_type_class_unref(flags_class); + + return retval; +} + +static PyGetSetDef pyg_flags_getsets[] = { + { "value_names", (getter)pyg_flags_get_value_names, (setter)0 }, + { "value_nicks", (getter)pyg_flags_get_value_nicks, (setter)0 }, + { NULL, 0, 0 } +}; + static PyNumberMethods pyg_flags_as_number = { (binaryfunc)pyg_flags_warn, /* nb_add */ (binaryfunc)pyg_flags_warn, /* nb_subtract */ @@ -355,7 +399,7 @@ PyTypeObject PyGFlags_Type = { 0, /* tp_iternext */ 0, /* tp_methods */ 0, /* tp_members */ - 0, /* tp_getset */ + pyg_flags_getsets, /* tp_getset */ &PyInt_Type, /* tp_base */ 0, /* tp_dict */ 0, /* tp_descr_get */ |