diff options
| author | James Henstridge <james@daa.com.au> | 2001-06-26 16:55:34 +0000 |
|---|---|---|
| committer | James Henstridge <jamesh@src.gnome.org> | 2001-06-26 16:55:34 +0000 |
| commit | 78028c23416411537215f07adb15b41b9bd889a9 (patch) | |
| tree | b6b6bf331de5e73ddca439299e1497266fbbb8a5 | |
| parent | 526b1c7f2467aa16dfdc100b3472dd4cffac2eb7 (diff) | |
| download | pygtk-78028c23416411537215f07adb15b41b9bd889a9.tar.gz | |
remove registrations for `custom' boxed types for objects converted to
2001-06-27 James Henstridge <james@daa.com.au>
* codegen/argtypes.py (arg): remove registrations for `custom'
boxed types for objects converted to PyGBoxed.
* gtk/gtk.override: use PyGBoxed calls fro GtkTreeIters.
* gtk/gtk-types.c: remove GtkTreeIter stuff from here.
* gtk/gtk.defs (TreeIter): add boxed type here.
2001-06-26 James Henstridge <james@daa.com.au>
* gtk/gtk-types.c: remove traces of GdkColor from this file.
* gtk/gtk.override: convert occurences of PyGdkColor_* with
correct PyGBoxed calls.
* gtk/gdk.defs (Color): add GdkColor boxed type here.
| -rw-r--r-- | ChangeLog | 20 | ||||
| -rw-r--r-- | codegen/argtypes.py | 17 | ||||
| -rw-r--r-- | gtk/gdk.defs | 11 | ||||
| -rw-r--r-- | gtk/gtk-types.c | 199 | ||||
| -rw-r--r-- | gtk/gtk.defs | 7 | ||||
| -rw-r--r-- | gtk/gtk.override | 139 | ||||
| -rw-r--r-- | gtk/gtkmodule.c | 1 | ||||
| -rw-r--r-- | gtk/pygtk-private.h | 25 | ||||
| -rw-r--r-- | gtk/pygtk.h | 24 |
9 files changed, 125 insertions, 318 deletions
@@ -1,3 +1,23 @@ +2001-06-27 James Henstridge <james@daa.com.au> + + * codegen/argtypes.py (arg): remove registrations for `custom' + boxed types for objects converted to PyGBoxed. + + * gtk/gtk.override: use PyGBoxed calls fro GtkTreeIters. + + * gtk/gtk-types.c: remove GtkTreeIter stuff from here. + + * gtk/gtk.defs (TreeIter): add boxed type here. + +2001-06-26 James Henstridge <james@daa.com.au> + + * gtk/gtk-types.c: remove traces of GdkColor from this file. + + * gtk/gtk.override: convert occurences of PyGdkColor_* with + correct PyGBoxed calls. + + * gtk/gdk.defs (Color): add GdkColor boxed type here. + 2001-06-25 James Henstridge <james@daa.com.au> * gtk/gtk.override (_wrap_gtk_binding_entry_add_signal): new diff --git a/codegen/argtypes.py b/codegen/argtypes.py index 13653793..e8e659c2 100644 --- a/codegen/argtypes.py +++ b/codegen/argtypes.py @@ -515,9 +515,13 @@ class ArgMatcher: self.register('GdkBitmap', oa) self.register('GdkBitmap*', oa) def register_boxed(self, ptype): - self.register(ptype+'*', BoxedArg(ptype)) + arg = BoxedArg(ptype) + self.register(ptype+'*', arg) + self.register('const-'+ptype+'*', arg) def register_custom_boxed(self, ptype, pytype, getter, new): - self.register(ptype+'*', CustomBoxedArg(ptype, pytype, getter, new)) + arg = CustomBoxedArg(ptype, pytype, getter, new) + self.register(ptype+'*', arg) + self.register('const-'+ptype+'*', arg) def get(self, ptype): return self.argtypes[ptype] @@ -581,15 +585,13 @@ matcher.register('FILE*', arg) # enums, flags, objects -matcher.register_custom_boxed('GdkFont', 'PyGdkFont_Type', - 'PyGdkFont_Get', 'PyGdkFont_New') -matcher.register_custom_boxed('GdkColor', 'PyGdkColor_Type', - 'PyGdkColor_Get', 'PyGdkColor_New') matcher.register_custom_boxed('GdkEvent', 'PyGdkEvent_Type', 'PyGdkEvent_Get', 'PyGdkEvent_New') matcher.register_custom_boxed('GtkSelectionData', 'PyGtkSelectionData_Type', 'PyGtkSelectionData_Get', 'PyGtkSelectionData_New') +matcher.register_custom_boxed('GdkCursor', 'PyGdkCursor_Type', + 'PyGdkCursor_Get', 'PyGdkCursor_New') matcher.register_custom_boxed('GtkCTreeNode', 'PyGtkCTreeNode_Type', 'PyGtkCTreeNode_Get', 'PyGtkCTreeNode_New') matcher.register_custom_boxed('GdkDevice', 'PyGdkDevice_Type', @@ -597,9 +599,6 @@ matcher.register_custom_boxed('GdkDevice', 'PyGdkDevice_Type', matcher.register_custom_boxed('GtkTextIter', 'PyGtkTextIter_Type', 'PyGtkTextIter_Get', 'PyGtkTextIter_New') matcher.register('const-GtkTextIter*', matcher.get('GtkTextIter*')) -matcher.register_custom_boxed('GtkTreeIter', 'PyGtkTreeIter_Type', - 'PyGtkTreeIter_Get', 'PyGtkTreeIter_New') -matcher.register('const-GtkTreeIter*', matcher.get('GtkTreeIter*')) matcher.register('GdkAtom', AtomArg()) diff --git a/gtk/gdk.defs b/gtk/gdk.defs index cbf29ffc..c2bd2d47 100644 --- a/gtk/gdk.defs +++ b/gtk/gdk.defs @@ -104,6 +104,17 @@ (field (type-and-name gint descent)) ) +(boxed Color + (in-module Gdk) + (c-name GdkColor) + (copy-func gdk_color_copy) + (release-func gdk_color_free) + (field (type-and-name guint32 pixel)) + (field (type-and-name guint16 red)) + (field (type-and-name guint16 green)) + (field (type-and-name guint16 blue)) +) + ;; Enumerations and flags ... diff --git a/gtk/gtk-types.c b/gtk/gtk-types.c index 146ac217..5fa29dd9 100644 --- a/gtk/gtk-types.c +++ b/gtk/gtk-types.c @@ -26,26 +26,8 @@ PyGtkStyle_New(GtkStyle *obj) gtk_style_ref(self->obj); return (PyObject *)self; } -#endif PyObject * -PyGdkColor_New(GdkColor *obj) -{ - PyGdkColor_Object *self; - - self = (PyGdkColor_Object *)PyObject_NEW(PyGdkColor_Object, - &PyGdkColor_Type); - if (self == NULL) - return NULL; - self->obj.pixel = obj->pixel; - self->obj.red = obj->red; - self->obj.green = obj->green; - self->obj.blue = obj->blue; - return (PyObject *)self; -} - -#if 0 -PyObject * PyGdkWindow_New(GdkWindow *win) { PyGdkWindow_Object *self; @@ -71,9 +53,7 @@ PyGdkGC_New(GdkGC *gc) gdk_gc_ref(self->obj); return (PyObject *)self; } -#endif -#if 0 PyObject * PyGdkColormap_New(GdkColormap *cmap) { @@ -184,22 +164,6 @@ PyGtkTextIter_New(GtkTextIter *iter) return (PyObject *)self; } -PyObject * -PyGtkTreeIter_New(GtkTreeIter *iter) -{ - PyGtkTreeIter_Object *self; - - self = (PyGtkTreeIter_Object *)PyObject_NEW(PyGtkTreeIter_Object, - &PyGtkTreeIter_Type); - if (self == NULL) - return NULL; - if (iter) - self->iter = *iter; - else - memset(&self->iter, 0, sizeof(GtkTreeIter)); - return (PyObject *)self; -} - #if 0 typedef struct { PyObject_HEAD @@ -536,88 +500,6 @@ PyTypeObject PyGtkStyle_Type = { }; #endif -static void -pygdk_color_dealloc(PyGdkColor_Object *self) -{ - PyMem_DEL(self); -} - -static PyObject * -pygdk_color_getattr(PyGdkColor_Object *self, char *key) -{ - if (!strcmp(key, "red")) - return PyInt_FromLong(self->obj.red); - if (!strcmp(key, "green")) - return PyInt_FromLong(self->obj.green); - if (!strcmp(key, "blue")) - return PyInt_FromLong(self->obj.blue); - if (!strcmp(key, "pixel")) - return PyInt_FromLong(self->obj.pixel); - PyErr_SetString(PyExc_AttributeError, key); - return NULL; -} - -static PyObject * -pygdk_color_setattr(PyGdkColor_Object *self, char *key, PyObject * val) -{ - if (!strcmp(key, "red")) - self->obj.red = PyInt_AsLong(val); - if (!strcmp(key, "green")) - self->obj.green = PyInt_AsLong(val); - if (!strcmp(key, "blue")) - self->obj.blue = PyInt_AsLong(val); - if (!strcmp(key, "pixel")) - self->obj.pixel = PyInt_AsLong(val); - PyErr_SetString(PyExc_AttributeError, key); - return NULL; -} - -static int -pygdk_color_compare(PyGdkColor_Object *self, PyGdkColor_Object *v) -{ - if (self->obj.pixel == v->obj.pixel) return 0; - if (self->obj.pixel > v->obj.pixel) return -1; - return 1; -} - -static long -pygdk_color_hash(PyGdkColor_Object *self) -{ - return (long)self->obj.pixel; -} - -static PyObject * -pygdk_color_repr(PyGdkColor_Object *self) -{ - char buf[80]; - - g_snprintf(buf, 79, "<GdkColor (%hu, %hu, %hu)>", self->obj.red, - self->obj.green, self->obj.blue); - return PyString_FromString(buf); -} - -PyTypeObject PyGdkColor_Type = { - PyObject_HEAD_INIT(NULL) - 0, - "GdkColor", - sizeof(PyGdkColor_Object), - 0, - (destructor)pygdk_color_dealloc, - (printfunc)0, - (getattrfunc)pygdk_color_getattr, - (setattrfunc)pygdk_color_setattr, - (cmpfunc)pygdk_color_compare, - (reprfunc)pygdk_color_repr, - 0, - 0, - 0, - (hashfunc)pygdk_color_hash, - (ternaryfunc)0, - (reprfunc)0, - 0L,0L,0L,0L, - NULL -}; - PyObject * PyGdkEvent_New(GdkEvent *obj) { @@ -3233,57 +3115,6 @@ PyTypeObject PyGtkTextIter_Type = { NULL }; -static void -pygtk_tree_iter_dealloc(PyGtkTreeIter_Object *self) -{ - PyMem_DEL(self); -} - -static int -pygtk_tree_iter_compare(PyGtkTreeIter_Object *self, PyGtkTreeIter_Object *v) -{ - if (self->iter.stamp == v->iter.stamp && - self->iter.user_data == v->iter.user_data && - self->iter.user_data2 == v->iter.user_data2 && - self->iter.user_data3 == v->iter.user_data3) return 0; - if (self->iter.stamp > v->iter.stamp || - (self->iter.stamp == v->iter.stamp && - (self->iter.user_data > v->iter.user_data || - (self->iter.user_data == v->iter.user_data && - (self->iter.user_data2 > v->iter.user_data2 || - (self->iter.user_data2 == v->iter.user_data2 && - self->iter.user_data3 > v->iter.user_data3)))))) return -1; - return 1; -} - -static long -pygtk_tree_iter_hash(PyGtkTreeIter_Object *self) -{ - return (long)self->iter.user_data; -} - -PyTypeObject PyGtkTreeIter_Type = { - PyObject_HEAD_INIT(NULL) - 0, - "GtkTreeIter", - sizeof(PyGtkTreeIter_Object), - 0, - (destructor)pygtk_tree_iter_dealloc, - (printfunc)0, - (getattrfunc)0, - (setattrfunc)0, - (cmpfunc)pygtk_tree_iter_compare, - (reprfunc)0, - 0, - 0, - 0, - (hashfunc)pygtk_tree_iter_hash, - (ternaryfunc)0, - (reprfunc)0, - 0L,0L,0L,0L, - NULL -}; - PyObject * pygtk_tree_path_to_pyobject(GtkTreePath *path) { @@ -3327,20 +3158,6 @@ pygtk_tree_path_from_pyobject(PyObject *object) /* marshalers for the boxed types. Uses uppercase notation so that * the macro below can automatically install them. */ static PyObject * -PyGdkColor_from_value(const GValue *value) -{ - return PyGdkColor_New(g_value_get_boxed(value)); -} -static int -PyGdkColor_to_value(GValue *value, PyObject *object) -{ - if (PyGdkColor_Check(object)) { - g_value_set_boxed(value, PyGdkColor_Get(object)); - return 0; - } - return -1; -} -static PyObject * PyGdkEvent_from_value(const GValue *value) { return PyGdkEvent_New(g_value_get_boxed(value)); @@ -3383,20 +3200,6 @@ PyGtkTextIter_to_value(GValue *value, PyObject *object) return -1; } static PyObject * -PyGtkTreeIter_from_value(const GValue *value) -{ - return PyGtkTreeIter_New(g_value_get_boxed(value)); -} -static int -PyGtkTreeIter_to_value(GValue *value, PyObject *object) -{ - if (PyGtkTreeIter_Check(object)) { - g_value_set_boxed(value, PyGtkTreeIter_Get(object)); - return 0; - } - return -1; -} -static PyObject * PyGtkTreePath_from_value(const GValue *value) { GtkTreePath *path = (GtkTreePath *)g_value_get_boxed(value); @@ -3433,7 +3236,6 @@ _pygtk_register_boxed_types(PyObject *moddict) register_tp(GtkStyle); PyGtkStyleHelper_Type.ob_type = &PyType_Type; #endif - register_tp2(GdkColor, GDK_TYPE_COLOR); register_tp2(GdkEvent, GDK_TYPE_EVENT); #if 0 register_tp(GdkWindow); @@ -3447,7 +3249,6 @@ _pygtk_register_boxed_types(PyObject *moddict) register_tp(GtkCTreeNode); register_tp(GdkDevice); register_tp2(GtkTextIter, GTK_TYPE_TEXT_ITER); - register_tp2(GtkTreeIter, GTK_TYPE_TREE_ITER); pyg_boxed_register(GTK_TYPE_TREE_PATH, PyGtkTreePath_from_value, PyGtkTreePath_to_value); diff --git a/gtk/gtk.defs b/gtk/gtk.defs index 46d1ef09..3794ea6f 100644 --- a/gtk/gtk.defs +++ b/gtk/gtk.defs @@ -766,6 +766,13 @@ (release-func gtk_accel_group_unref) ) +(boxed TreeIter + (in-module Gtk) + (c-name GtkTreeIter) + (copy-func gtk_tree_iter_copy) + (release-func gtk_tree_iter_free) +) + ;; Enumerations and flags ... diff --git a/gtk/gtk.override b/gtk/gtk.override index 68522e24..0c8a48ea 100644 --- a/gtk/gtk.override +++ b/gtk/gtk.override @@ -289,8 +289,8 @@ _wrap_gdk_pixmap_create_from_xpm(PyObject *self, PyObject *args, PyErr_SetString(PyExc_TypeError, "window must be a GdkWindow"); return NULL; } - if (PyGdkColor_Check(py_trans_color)) - trans_color = PyGdkColor_Get(py_trans_color); + if (pyg_boxed_check(py_trans_color, GDK_TYPE_COLOR)) + trans_color = pyg_boxed_get(py_trans_color, GdkColor); else if (py_trans_color != Py_None) { PyErr_SetString(PyExc_TypeError, "transparent_color must be a colour or None"); @@ -343,8 +343,8 @@ _wrap_gdk_pixmap_colormap_create_from_xpm(PyObject *self, PyObject *args, "colormap must be a GdkColormap or None"); return NULL; } - if (PyGdkColor_Check(py_trans_color)) - trans_color = PyGdkColor_Get(py_trans_color); + if (pyg_boxed_check(py_trans_color, GDK_TYPE_COLOR)) + trans_color = pyg_boxed_get(py_trans_color, GdkColor); else if (py_trans_color != Py_None) { PyErr_SetString(PyExc_TypeError, "transparent_color must be a colour or None"); @@ -387,8 +387,8 @@ _wrap_gdk_pixmap_create_from_xpm_d(PyObject *self, PyObject *args, PyErr_SetString(PyExc_TypeError, "window must be a GdkWindow"); return NULL; } - if (PyGdkColor_Check(py_trans_color)) - trans_color = PyGdkColor_Get(py_trans_color); + if (pyg_boxed_check(py_trans_color, GDK_TYPE_COLOR)) + trans_color = pyg_boxed_get(py_trans_color, GdkColor); else if (py_trans_color != Py_None) { PyErr_SetString(PyExc_TypeError, "transparent_color must be a colour or None"); @@ -455,8 +455,8 @@ _wrap_gdk_pixmap_colormap_create_from_xpm_d(PyObject *self, PyObject *args, "colormap must be a GdkColormap or None"); return NULL; } - if (PyGdkColor_Check(py_trans_color)) - trans_color = PyGdkColor_Get(py_trans_color); + if (pyg_boxed_check(py_trans_color, GDK_TYPE_COLOR)) + trans_color = pyg_boxed_get(py_trans_color, GdkColor); else if (py_trans_color != Py_None) { PyErr_SetString(PyExc_TypeError, "transparent_color must be a colour or None"); @@ -1183,16 +1183,16 @@ _wrap_gdk_gc_new_with_values(PyGObject *self, PyObject *args, PyObject *kwargs) &graphics_exposures, &line_width, &line_style, &cap_style, &join_style)) return NULL; - if (PyGdkColor_Check(foreground)) { + if (pyg_boxed_check(foreground, GDK_TYPE_COLOR)) { mask |= GDK_GC_FOREGROUND; - values.foreground = *PyGdkColor_Get(foreground); + values.foreground = *pyg_boxed_get(foreground, GdkColor); } else if (foreground != Py_None) { PyErr_SetString(PyExc_TypeError, "foreground must be a GdkColor"); return NULL; } - if (PyGdkColor_Check(background)) { + if (pyg_boxed_check(background, GDK_TYPE_COLOR)) { mask |= GDK_GC_BACKGROUND; - values.background = *PyGdkColor_Get(background); + values.background = *pyg_boxed_get(background, GdkColor); } else if (background != Py_None) { PyErr_SetString(PyExc_TypeError, "background must be a GdkColor"); return NULL; @@ -1608,7 +1608,7 @@ _wrap_gtk_tree_model_get_iter(PyGObject *self, PyObject *args) { } if (gtk_tree_model_get_iter(GTK_TREE_MODEL(self->obj), &iter, path)) { gtk_tree_path_free(path); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } else { gtk_tree_path_free(path); PyErr_SetString(PyExc_ValueError, "invalid tree path"); @@ -1625,17 +1625,20 @@ _wrap_gtk_tree_model_get_value(PyGObject *self, PyObject*args, PyObject*kwargs) gint column; GValue value = { 0, }; - if (!PyArg_ParseTupleAndKeywords(args,kwargs, "O!i:GtkTreeModel.get_value", - kwlist, &PyGtkTreeIter_Type, &iter, - &column)) + if (!PyArg_ParseTupleAndKeywords(args,kwargs, "Oi:GtkTreeModel.get_value", + kwlist, &iter, &column)) return NULL; if (column < 0 || column >= gtk_tree_model_get_n_columns(GTK_TREE_MODEL(self->obj))) { PyErr_SetString(PyExc_ValueError, "column number is out of range"); return NULL; } + if (!pyg_boxed_check(iter, GTK_TYPE_TREE_ITER)) { + PyErr_SetString(PyExc_TypeError, "iter must be a GtkTreeIter"); + return NULL; + } gtk_tree_model_get_value(GTK_TREE_MODEL(self->obj), - PyGtkTreeIter_Get(iter), column, &value); + pyg_boxed_get(iter, GtkTreeIter), column, &value); ret = pyg_value_as_pyobject(&value); g_value_unset(&value); return ret; @@ -1681,15 +1684,18 @@ _wrap_gtk_list_store_set_value(PyGObject *self, PyObject *args, GValue value = { 0 }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, - "O!iO:GtkListStore.set_value", - kwlist, &PyGtkTreeIter_Type, &iter, - &column, &pyvalue)) + "OiO:GtkListStore.set_value", + kwlist, &iter, &column, &pyvalue)) return NULL; if (column < 0 || column >= gtk_tree_model_get_n_columns(GTK_TREE_MODEL(self->obj))) { PyErr_SetString(PyExc_ValueError, "column number is out of range"); return NULL; } + if (!pyg_boxed_check(iter, GTK_TYPE_TREE_ITER)) { + PyErr_SetString(PyExc_TypeError, "iter must be a GtkTreeIter"); + return NULL; + } g_value_init(&value, GTK_LIST_STORE(self->obj)->column_headers[column]); if (pyg_value_from_pyobject(&value, pyvalue)) { PyErr_SetString(PyExc_TypeError, @@ -1697,7 +1703,7 @@ _wrap_gtk_list_store_set_value(PyGObject *self, PyObject *args, return NULL; } gtk_list_store_set_value(GTK_LIST_STORE(self->obj), - PyGtkTreeIter_Get(iter), column, &value); + pyg_boxed_get(iter, GtkTreeIter), column, &value); g_value_unset(&value); Py_INCREF(Py_None); return Py_None; @@ -1715,7 +1721,7 @@ _wrap_gtk_list_store_insert(PyGObject *self, PyObject *args, PyObject *kwargs) kwlist, &position)) return NULL; gtk_list_store_insert(GTK_LIST_STORE(self->obj), &iter, position); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_list_store_insert_before kwargs @@ -1728,12 +1734,16 @@ _wrap_gtk_list_store_insert_before(PyGObject *self, PyObject *args, GtkTreeIter iter; if (!PyArg_ParseTupleAndKeywords(args, kwargs, - "O!:GtkListStore.insert_before", - kwlist, &PyGtkTreeIter_Type, &sibling)) + "O:GtkListStore.insert_before", + kwlist, &sibling)) + return NULL; + if (!pyg_boxed_check(sibling, GTK_TYPE_TREE_ITER)) { + PyErr_SetString(PyExc_TypeError, "iter must be a GtkTreeIter"); return NULL; + } gtk_list_store_insert_before(GTK_LIST_STORE(self->obj), &iter, - PyGtkTreeIter_Get(sibling)); - return PyGtkTreeIter_New(&iter); + pyg_boxed_get(sibling, GtkTreeIter)); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_list_store_insert_after kwargs @@ -1746,12 +1756,16 @@ _wrap_gtk_list_store_insert_after(PyGObject *self, PyObject *args, GtkTreeIter iter; if (!PyArg_ParseTupleAndKeywords(args, kwargs, - "O!:GtkListStore.insert_after", - kwlist, &PyGtkTreeIter_Type, &sibling)) + "O:GtkListStore.insert_after", + kwlist, &sibling)) + return NULL; + if (!pyg_boxed_check(sibling, GTK_TYPE_TREE_ITER)) { + PyErr_SetString(PyExc_TypeError, "iter must be a GtkTreeIter"); return NULL; + } gtk_list_store_insert_after(GTK_LIST_STORE(self->obj), &iter, - PyGtkTreeIter_Get(sibling)); - return PyGtkTreeIter_New(&iter); + pyg_boxed_get(sibling, GtkTreeIter)); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_list_store_prepend @@ -1763,7 +1777,7 @@ _wrap_gtk_list_store_prepend(PyGObject *self, PyObject *args) if (!PyArg_ParseTuple(args, ":GtkListStore.prepend")) return NULL; gtk_list_store_prepend(GTK_LIST_STORE(self->obj), &iter); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_list_store_append @@ -1775,7 +1789,7 @@ _wrap_gtk_list_store_append(PyGObject *self, PyObject *args) if (!PyArg_ParseTuple(args, ":GtkListStore.append")) return NULL; gtk_list_store_append(GTK_LIST_STORE(self->obj), &iter); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% ignore gtk_tree_store_new_with_types @@ -1818,15 +1832,18 @@ _wrap_gtk_tree_store_set_value(PyGObject *self, PyObject *args, GValue value = { 0 }; if (!PyArg_ParseTupleAndKeywords(args, kwargs, - "O!iO:GtkTreeStore.set_value", - kwlist, &PyGtkTreeIter_Type, &iter, - &column, &pyvalue)) + "OiO:GtkTreeStore.set_value", + kwlist, &iter, &column, &pyvalue)) return NULL; if (column < 0 || column >= gtk_tree_model_get_n_columns(GTK_TREE_MODEL(self->obj))) { PyErr_SetString(PyExc_ValueError, "column number is out of range"); return NULL; } + if (!pyg_boxed_check(iter, GTK_TYPE_TREE_ITER)) { + PyErr_SetString(PyExc_TypeError, "iter must be a GtkTreeIter"); + return NULL; + } g_value_init(&value, GTK_TREE_STORE(self->obj)->column_headers[column]); if (pyg_value_from_pyobject(&value, pyvalue)) { PyErr_SetString(PyExc_TypeError, @@ -1834,7 +1851,7 @@ _wrap_gtk_tree_store_set_value(PyGObject *self, PyObject *args, return NULL; } gtk_tree_store_set_value(GTK_TREE_STORE(self->obj), - PyGtkTreeIter_Get(iter), column, &value); + pyg_boxed_get(iter, GtkTreeIter), column, &value); g_value_unset(&value); Py_INCREF(Py_None); return Py_None; @@ -1858,16 +1875,15 @@ _wrap_gtk_tree_store_insert(PyGObject *self, PyObject *args, PyObject *kwargs) if (!PyArg_ParseTupleAndKeywords(args, kwargs, "Oi:GtkTreeStore.insert", kwlist, &py_parent, &position)) return NULL; - if (PyGtkTreeIter_Check(py_parent)) - parent = PyGtkTreeIter_Get(py_parent); + if (pyg_boxed_check(py_parent, GTK_TYPE_TREE_ITER)) + parent = pyg_boxed_get(py_parent, GtkTreeIter); else if (py_parent != Py_None) { PyErr_SetString(PyExc_TypeError, "parent must be a GtkTreeIter or None"); return NULL; } - gtk_tree_store_insert(GTK_TREE_STORE(self->obj), &iter, - PyGtkTreeIter_Get(parent), position); - return PyGtkTreeIter_New(&iter); + gtk_tree_store_insert(GTK_TREE_STORE(self->obj), &iter, parent, position); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_tree_store_insert_before kwargs @@ -1883,15 +1899,15 @@ _wrap_gtk_tree_store_insert_before(PyGObject *self, PyObject *args, "OO:GtkTreeStore.insert_before", kwlist, &py_parent, &py_sibling)) return NULL; - if (PyGtkTreeIter_Check(py_parent)) - parent = PyGtkTreeIter_Get(py_parent); + if (pyg_boxed_check(py_parent, GTK_TYPE_TREE_ITER)) + parent = pyg_boxed_get(py_parent, GtkTreeIter); else if (py_parent != Py_None) { PyErr_SetString(PyExc_TypeError, "parent must be a GtkTreeIter or None"); return NULL; } - if (PyGtkTreeIter_Check(py_sibling)) - sibling = PyGtkTreeIter_Get(py_sibling); + if (pyg_boxed_check(py_sibling, GTK_TYPE_TREE_ITER)) + sibling = pyg_boxed_get(py_sibling, GtkTreeIter); else if (py_sibling != Py_None) { PyErr_SetString(PyExc_TypeError, "sibling must be a GtkTreeIter or None"); @@ -1899,7 +1915,7 @@ _wrap_gtk_tree_store_insert_before(PyGObject *self, PyObject *args, } gtk_tree_store_insert_before(GTK_TREE_STORE(self->obj), &iter, parent, sibling); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_tree_store_insert_after kwargs @@ -1915,15 +1931,15 @@ _wrap_gtk_tree_store_insert_after(PyGObject *self, PyObject *args, "OO:GtkTreeStore.insert_after", kwlist, &py_parent, &py_sibling)) return NULL; - if (PyGtkTreeIter_Check(py_parent)) - parent = PyGtkTreeIter_Get(py_parent); + if (pyg_boxed_check(py_parent, GTK_TYPE_TREE_ITER)) + parent = pyg_boxed_get(py_parent, GtkTreeIter); else if (py_parent != Py_None) { PyErr_SetString(PyExc_TypeError, "parent must be a GtkTreeIter or None"); return NULL; } - if (PyGtkTreeIter_Check(py_sibling)) - sibling = PyGtkTreeIter_Get(py_sibling); + if (pyg_boxed_check(py_sibling, GTK_TYPE_TREE_ITER)) + sibling = pyg_boxed_get(py_sibling, GtkTreeIter); else if (py_sibling != Py_None) { PyErr_SetString(PyExc_TypeError, "sibling must be a GtkTreeIter or None"); @@ -1931,7 +1947,7 @@ _wrap_gtk_tree_store_insert_after(PyGObject *self, PyObject *args, } gtk_tree_store_insert_after(GTK_TREE_STORE(self->obj), &iter, parent, sibling); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_tree_store_prepend kwargs @@ -1945,15 +1961,15 @@ _wrap_gtk_tree_store_prepend(PyGObject *self, PyObject *args, PyObject *kwargs) if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:GtkTreeStore.prepend", kwlist, &py_parent)) return NULL; - if (PyGtkTreeIter_Check(py_parent)) - parent = PyGtkTreeIter_Get(py_parent); + if (pyg_boxed_check(py_parent, GTK_TYPE_TREE_ITER)) + parent = pyg_boxed_get(py_parent, GtkTreeIter); else if (py_parent != Py_None) { PyErr_SetString(PyExc_TypeError, "parent must be a GtkTreeIter or None"); return NULL; } gtk_tree_store_prepend(GTK_TREE_STORE(self->obj), &iter, parent); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_tree_store_append kwargs @@ -1967,15 +1983,15 @@ _wrap_gtk_tree_store_append(PyGObject *self, PyObject *args, PyObject *kwargs) if (!PyArg_ParseTupleAndKeywords(args, kwargs, "O:GtkTreeStore.append", kwlist, &py_parent)) return NULL; - if (PyGtkTreeIter_Check(py_parent)) - parent = PyGtkTreeIter_Get(py_parent); + if (pyg_boxed_check(py_parent, GTK_TYPE_TREE_ITER)) + parent = pyg_boxed_get(py_parent, GtkTreeIter); else if (py_parent != Py_None) { PyErr_SetString(PyExc_TypeError, "parent must be a GtkTreeIter or None"); return NULL; } gtk_tree_store_append(GTK_TREE_STORE(self->obj), &iter, parent); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% override gtk_tree_store_get_root_iter @@ -1987,7 +2003,7 @@ _wrap_gtk_tree_store_get_root_iter(PyGObject *self, PyObject *args) if (!PyArg_ParseTuple(args, ":GtkTreeStore.get_root_iter")) return NULL; gtk_tree_store_get_root_iter(GTK_TREE_STORE(self->obj), &iter); - return PyGtkTreeIter_New(&iter); + return pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, TRUE, TRUE); } %% ignore @@ -2098,7 +2114,8 @@ _wrap_gtk_tree_selection_get_selected(PyGObject *self, PyObject *args) if (gtk_tree_selection_get_selected(GTK_TREE_SELECTION(self->obj), &model, &iter)) return Py_BuildValue("(NN)", pygobject_new((GObject *)model), - PyGtkTreeIter_New(&iter)); + pyg_boxed_new(GTK_TYPE_TREE_ITER, &iter, + TRUE, TRUE)); Py_INCREF(Py_None); return Py_None; } @@ -3750,7 +3767,7 @@ _wrap_gtk_color_selection_get_current_color(PyGObject *self, PyObject *args) return NULL; gtk_color_selection_get_current_color(GTK_COLOR_SELECTION(self->obj), &colour); - return PyGdkColor_New(&colour); + return pyg_boxed_new(GDK_TYPE_COLOR, &colour, TRUE, TRUE); } %% override gtk_color_selection_get_previous_color @@ -3763,7 +3780,7 @@ _wrap_gtk_color_selection_get_previous_color(PyGObject *self, PyObject *args) return NULL; gtk_color_selection_get_previous_color(GTK_COLOR_SELECTION(self->obj), &colour); - return PyGdkColor_New(&colour); + return pyg_boxed_new(GDK_TYPE_COLOR, &colour, TRUE, TRUE); } %% override gtk_calendar_get_date diff --git a/gtk/gtkmodule.c b/gtk/gtkmodule.c index 9e10d7c3..24782d16 100644 --- a/gtk/gtkmodule.c +++ b/gtk/gtkmodule.c @@ -21,7 +21,6 @@ static struct _PyGtk_FunctionStruct functions = { pygtk_destroy_notify, - &PyGdkColor_Type, PyGdkColor_New, &PyGdkEvent_Type, PyGdkEvent_New, &PyGtkSelectionData_Type, PyGtkSelectionData_New, &PyGdkAtom_Type, PyGdkAtom_New, diff --git a/gtk/pygtk-private.h b/gtk/pygtk-private.h index 52221229..665a2d95 100644 --- a/gtk/pygtk-private.h +++ b/gtk/pygtk-private.h @@ -14,7 +14,6 @@ #undef WITH_THREAD /* type objects */ -extern PyTypeObject PyGdkColor_Type; extern PyTypeObject PyGdkEvent_Type; extern PyTypeObject PyGtkSelectionData_Type; extern PyTypeObject PyGdkAtom_Type; @@ -22,10 +21,8 @@ extern PyTypeObject PyGdkCursor_Type; extern PyTypeObject PyGtkCTreeNode_Type; extern PyTypeObject PyGdkDevice_Type; extern PyTypeObject PyGtkTextIter_Type; -extern PyTypeObject PyGtkTreeIter_Type; /* check the type of a PyObject */ -#define PyGdkColor_Check(v) ((v)->ob_type == &PyGdkColor_Type) #define PyGdkEvent_Check(v) ((v)->ob_type == &PyGdkEvent_Type) #define PyGtkSelectionData_Check(v) ((v)->ob_type == &PyGtkSelectionData_Type) #define PyGdkAtom_Check(v) ((v)->ob_type == &PyGdkAtom_Type) @@ -33,10 +30,8 @@ extern PyTypeObject PyGtkTreeIter_Type; #define PyGtkCTreeNode_Check(v) ((v)->ob_type == &PyGtkCTreeNode_Type) #define PyGdkDevice_Check(v) ((v)->ob_type == &PyGdkDevice_Type) #define PyGtkTextIter_Check(v) ((v)->ob_type == &PyGtkTextIter_Type) -#define PyGtkTreeIter_Check(v) ((v)->ob_type == &PyGtkTreeIter_Type) /* constructors for PyObject wrappers ... */ -PyObject *PyGdkColor_New(GdkColor *colour); PyObject *PyGdkEvent_New(GdkEvent *event); PyObject *PyGtkSelectionData_New(GtkSelectionData *data); PyObject *PyGdkAtom_New(GdkAtom atom); @@ -44,34 +39,16 @@ PyObject *PyGdkCursor_New(GdkCursor *cursor); PyObject *PyGtkCTreeNode_New(GtkCTreeNode *node); PyObject *PyGdkDevice_New(GdkDevice *device); PyObject *PyGtkTextIter_New(GtkTextIter *iter); -PyObject *PyGtkTreeIter_New(GtkTreeIter *iter); /* miscelaneous functions */ void pygtk_block_threads(void); void pygtk_unblock_threads(void); void pygtk_destroy_notify(gpointer data); -void pygtk_callback_marshal(GtkObject *o, gpointer d, guint nargs, - GtkArg *args); -void pygtk_signal_marshal(GtkObject *object, gpointer user_data, - int nparams, GtkArg *args, GtkType *arg_types, - GtkType return_type); + void pygtk_handler_marshal(gpointer a, PyObject *func, int nargs,GtkArg *args); void pygtk_input_marshal(gpointer a, PyObject *func, int nargs, GtkArg *args); -PyObject *pygtk_args_as_tuple(int nparams, GtkArg *args); -int pygtk_args_from_sequence(GtkArg *args, int nparams, PyObject *seq); -int pygtk_arg_from_pyobject(GtkArg *arg, PyObject *obj); -PyObject *pygtk_arg_as_pyobject(GtkArg *arg); -void pygtk_ret_from_pyobject(GtkArg *ret, PyObject *py_ret); -PyObject *pygtk_ret_as_pyobject(GtkArg *arg); -GtkArg *pygtk_dict_as_container_args(PyObject *dict, GtkType type, - gint *nargs); - -void pygtk_register_boxed(GtkType boxed_type, - PyObject *(*fromarg)(gpointer boxed), - int (*toarg)(gpointer *boxed, PyObject *obj)); - /* private */ PyObject *pygtk_tree_path_to_pyobject(GtkTreePath *path); GtkTreePath *pygtk_tree_path_from_pyobject(PyObject *object); diff --git a/gtk/pygtk.h b/gtk/pygtk.h index 5e3f1dfb..f47f4aa2 100644 --- a/gtk/pygtk.h +++ b/gtk/pygtk.h @@ -17,9 +17,6 @@ struct _PyGtk_FunctionStruct { GtkDestroyNotify destroy_notify; - PyTypeObject *gdkColor_type; - PyObject *(* gdkColor_new)(GdkColor *colour); - PyTypeObject *gdkEvent_type; PyObject *(* gdkEvent_new)(GdkEvent *event); @@ -40,19 +37,11 @@ struct _PyGtk_FunctionStruct { PyTypeObject *gtkTextIter_type; PyObject *(* gtkTextIter_new)(GtkTextIter *iter); - - PyTypeObject *gtkTreeIter_type; - PyObject *(* gtkTreeIter_new)(GtkTreeIter *iter); }; /* structure definitions for the various object types in PyGTK */ typedef struct { PyObject_HEAD - GdkColor obj; -} PyGdkColor_Object; - -typedef struct { - PyObject_HEAD GdkEvent *obj; PyObject *attrs; } PyGdkEvent_Object; @@ -88,13 +77,7 @@ typedef struct { GtkTextIter iter; } PyGtkTextIter_Object; -typedef struct { - PyObject_HEAD - GtkTreeIter iter; -} PyGtkTreeIter_Object; - /* routines to get the C object value out of the PyObject wrapper */ -#define PyGdkColor_Get(v) (&((PyGdkColor_Object *)(v))->obj) #define PyGdkEvent_Get(v) (((PyGdkEvent_Object *)(v))->obj) #define PyGtkSelectionData_Get(v) (((PyGtkSelectionData_Object *)(v))->obj) #define PyGdkAtom_Get(v) (((PyGdkAtom_Object *)(v))->atom) @@ -102,7 +85,6 @@ typedef struct { #define PyGtkCTreeNode_Get(v) (((PyGtkCTreeNode_Object *)(v))->node) #define PyGdkDevice_Get(v) (((PyGdkDevice_Object *)(v))->obj) #define PyGtkTextIter_Get(v) (&((PyGtkTextIter_Object *)(v))->iter) -#define PyGtkTreeIter_Get(v) (&((PyGtkTreeIter_Object *)(v))->iter) /* this section is dependent on whether we are being included from gtkmodule.c * or not. A similar source level interface should be provided in both @@ -118,7 +100,6 @@ struct _PyGtk_FunctionStruct *_PyGtk_API; #endif /* type objects */ -#define PyGdkColor_Type *(_PyGtk_API->gdkColor_type) #define PyGdkEvent_Type *(_PyGtk_API->gdkEvent_type) #define PyGtkSelectionData_Type *(_PyGtk_API->gtkSelectionData_type) #define PyGdkAtom_Type *(_PyGtk_API->gdkAtom_type) @@ -126,10 +107,8 @@ struct _PyGtk_FunctionStruct *_PyGtk_API; #define PyGtkCTreeNode_Type *(_PyGtk_API->gtkCTreeNode_type) #define PyGdkDevice_Type *(_PyGtk_API->gdkDevice_type) #define PyGtkTextIter_Type *(_PyGtk_API->gtkTextIter_type) -#define PyGtkTreeIter_Type *(_PyGtk_API->gtkTreeIter_type) /* type checking routines */ -#define PyGdkColor_Check(v) ((v)->ob_type == _PyGtk_API->gdkColor_type) #define PyGdkEvent_Check(v) ((v)->ob_type == _PyGtk_API->gdkEvent_type) #define PyGtkSelectionData_Check(v) ((v)->ob_type == _PyGtk_API->gtkSelectionData_type) #define PyGdkAtom_Check(v) ((v)->ob_type == _PyGtk_API->gdkAtom_type) @@ -137,10 +116,8 @@ struct _PyGtk_FunctionStruct *_PyGtk_API; #define PyGtkCTreeNode_Check(v) ((v)->ob_type == _PyGtk_API->gtkCTreeNode_type) #define PyGdkDevice_Check(v) ((v)->ob_type == _PyGtk_API->gdkDevice_type) #define PyGtkTextIter_Check(v) ((v)->ob_type == _PyGtk_API->gtkTextIter_type) -#define PyGtkTreeIter_Check(v) ((v)->ob_type == _PyGtk_API->gtkTreeIter_type) /* type objects */ -#define PyGdkColor_New (_PyGtk_API->gdkColor_new) #define PyGdkEvent_New (_PyGtk_API->gdkEvent_new) #define PyGtkSelectionData_New (_PyGtk_API->gtkSelectionData_new) #define PyGdkAtom_New (_PyGtk_API->gdkAtom_new) @@ -148,7 +125,6 @@ struct _PyGtk_FunctionStruct *_PyGtk_API; #define PyGtkCTreeNode_New (_PyGtk_API->gtkCTreeNode_new) #define PyGdkDevice_New (_PyGtk_API->gdkDevice_new) #define PyGtkTextIter_New (_PyGtk_API->gtkTextIter_new) -#define PyGtkTreeIter_New (_PyGtk_API->gtkTreeIter_new) /* miscelaneous other functions */ #define pygtk_block_threads (_PyGtk_API->block_threads) |
