diff options
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | codegen/codegen.py | 2 | ||||
-rw-r--r-- | gobject/gobjectmodule.c | 21 | ||||
-rw-r--r-- | gobjectmodule.c | 21 |
4 files changed, 46 insertions, 5 deletions
@@ -1,5 +1,12 @@ 2001-09-25 James Henstridge <james@daa.com.au> + * gobjectmodule.c (pygobject_get_dict): getter for __dict__ on + GObject wrappers. + (PyGObject_Type): include getsets list. + + * codegen/codegen.py (write_getsets): change "struct getsets" to + PyGetSetDef to match recent changes in python. + * gtk/gdk.override (_wrap_gdk_device__get_axes): change to getter. (_wrap_gdk_device__get_keys): turn into a getter. (_wrap_gdk_drag_context__get_targets): same here. diff --git a/codegen/codegen.py b/codegen/codegen.py index 00e392be..4a5c28b3 100644 --- a/codegen/codegen.py +++ b/codegen/codegen.py @@ -392,7 +392,7 @@ def write_getsets(parser, objobj, castmacro, overrides, fp=sys.stdout): #traceback.print_exc() if not getsets: return '0' - fp.write('static struct getsetlist %s[] = {\n' % getsets_name) + fp.write('static PyGetSetDef %s[] = {\n' % getsets_name) for getset in getsets: fp.write(getset) fp.write(' { NULL, (getter)0, (setter)0 },\n') diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c index 070dcbc7..14fe42ee 100644 --- a/gobject/gobjectmodule.c +++ b/gobject/gobjectmodule.c @@ -1472,6 +1472,23 @@ static PyMethodDef pygobject_methods[] = { { NULL, NULL, 0 } }; +static PyObject * +pygobject_get_dict(PyGObject *self, void *closure) +{ + if (self->inst_dict == NULL) { + self->inst_dict = PyDict_New(); + if (self->inst_dict == NULL) + return NULL; + } + Py_INCREF(self->inst_dict); + return self->inst_dict; +} + +static PyGetSetDef pygobject_getsets[] = { + { "__dict__", (getter)pygobject_get_dict, (setter)0 }, + { NULL, 0, 0 } +}; + static PyTypeObject PyGObject_Type = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ @@ -1505,13 +1522,13 @@ static PyTypeObject PyGObject_Type = { (iternextfunc)0, /* tp_iternext */ pygobject_methods, /* tp_methods */ 0, /* tp_members */ - 0, /* tp_getset */ + pygobject_getsets, /* tp_getset */ (PyTypeObject *)0, /* tp_base */ (PyObject *)0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ offsetof(PyGObject, inst_dict), /* tp_dictoffset */ - (initproc)pygobject_init, /* tp_init */ + (initproc)pygobject_init, /* tp_init */ PyType_GenericAlloc, /* tp_alloc */ PyType_GenericNew, /* tp_new */ object_gc_free, /* tp_free */ diff --git a/gobjectmodule.c b/gobjectmodule.c index 070dcbc7..14fe42ee 100644 --- a/gobjectmodule.c +++ b/gobjectmodule.c @@ -1472,6 +1472,23 @@ static PyMethodDef pygobject_methods[] = { { NULL, NULL, 0 } }; +static PyObject * +pygobject_get_dict(PyGObject *self, void *closure) +{ + if (self->inst_dict == NULL) { + self->inst_dict = PyDict_New(); + if (self->inst_dict == NULL) + return NULL; + } + Py_INCREF(self->inst_dict); + return self->inst_dict; +} + +static PyGetSetDef pygobject_getsets[] = { + { "__dict__", (getter)pygobject_get_dict, (setter)0 }, + { NULL, 0, 0 } +}; + static PyTypeObject PyGObject_Type = { PyObject_HEAD_INIT(NULL) 0, /* ob_size */ @@ -1505,13 +1522,13 @@ static PyTypeObject PyGObject_Type = { (iternextfunc)0, /* tp_iternext */ pygobject_methods, /* tp_methods */ 0, /* tp_members */ - 0, /* tp_getset */ + pygobject_getsets, /* tp_getset */ (PyTypeObject *)0, /* tp_base */ (PyObject *)0, /* tp_dict */ 0, /* tp_descr_get */ 0, /* tp_descr_set */ offsetof(PyGObject, inst_dict), /* tp_dictoffset */ - (initproc)pygobject_init, /* tp_init */ + (initproc)pygobject_init, /* tp_init */ PyType_GenericAlloc, /* tp_alloc */ PyType_GenericNew, /* tp_new */ object_gc_free, /* tp_free */ |