diff options
| author | James Henstridge <james@daa.com.au> | 2001-06-23 10:15:45 +0000 |
|---|---|---|
| committer | James Henstridge <jamesh@src.gnome.org> | 2001-06-23 10:15:45 +0000 |
| commit | 5963920662bde148852d89a56713f168a4c47a35 (patch) | |
| tree | 9809f0be7d5f601ebec156213146bf0d8e77e654 /gobject/gobjectmodule.c | |
| parent | 9b322a660e816c67109ac6246afd774b799b3a9d (diff) | |
| download | pygobject-5963920662bde148852d89a56713f168a4c47a35.tar.gz pygobject-5963920662bde148852d89a56713f168a4c47a35.tar.xz pygobject-5963920662bde148852d89a56713f168a4c47a35.zip | |
more fixups to use pyg_type_from_object.
2001-06-23 James Henstridge <james@daa.com.au>
* gobjectmodule.c (pyg_signal_new): more fixups to use
pyg_type_from_object.
* gtk/gtk.override (_wrap_gtk_accel_group_new): don't use
PyGtkAccelGroup_New (not sure why I am fixing this -- will change
soon anyway).
(_wrap_gtk_tree_store_set_value): use pyg_type_from_object here.
(_wrap_gtk_list_store_set_value): same here.
* codegen/argtypes.py (CustomBoxedArg): rename from BoxedArg.
(BoxedArg): new code for standardised PyGBoxed handling.
(ArgMatcher.register_custom_boxed): rename from register_boxed
(ArgMatcher.register_boxed): new function for PyGBoxed types.
(arg): use ArgMatcher.register_boxed to register GtkAccelGroup.
* pygobject.h (pyg_boxed_check): change macro to check against the
typecode, rather than python wrapper type.
Diffstat (limited to 'gobject/gobjectmodule.c')
| -rw-r--r-- | gobject/gobjectmodule.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/gobject/gobjectmodule.c b/gobject/gobjectmodule.c index 9e71563..d8ab589 100644 --- a/gobject/gobjectmodule.c +++ b/gobject/gobjectmodule.c @@ -1897,7 +1897,7 @@ pyg_signal_new(PyObject *self, PyObject *args) PyObject *py_type; GSignalFlags signal_flags; GType return_type; - PyObject *py_param_types; + PyObject *py_return_type, *py_param_types; GType instance_type = 0; guint n_params, i; @@ -1906,12 +1906,15 @@ pyg_signal_new(PyObject *self, PyObject *args) guint signal_id; if (!PyArg_ParseTuple(args, "sOiiO:gobject.signal_new", &signal_name, - &py_type, &signal_flags, &return_type, + &py_type, &signal_flags, &py_return_type, &py_param_types)) return NULL; instance_type = pyg_type_from_object(py_type); if (!instance_type) return NULL; + return_type = pyg_type_from_object(py_return_type); + if (!return_type) + return NULL; if (!PySequence_Check(py_param_types)) { PyErr_SetString(PyExc_TypeError, "argument 5 must be a sequence of GType codes"); @@ -1922,8 +1925,8 @@ pyg_signal_new(PyObject *self, PyObject *args) for (i = 0; i < n_params; i++) { PyObject *item = PySequence_GetItem(py_param_types, i); - param_types[i] = (GType) PyInt_AsLong(item); - if (PyErr_Occurred()) { + param_types[i] = pyg_type_from_object(item); + if (param_types[i] == 0) { PyErr_Clear(); Py_DECREF(item); PyErr_SetString(PyExc_TypeError, @@ -1974,6 +1977,7 @@ static struct _PyGObject_Functions functions = { pyg_register_interface, + &PyGBoxed_Type, pyg_register_boxed, pyg_boxed_new, }; |
