summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2001-06-26 16:55:34 +0000
committerJames Henstridge <jamesh@src.gnome.org>2001-06-26 16:55:34 +0000
commit78028c23416411537215f07adb15b41b9bd889a9 (patch)
treeb6b6bf331de5e73ddca439299e1497266fbbb8a5
parent526b1c7f2467aa16dfdc100b3472dd4cffac2eb7 (diff)
downloadpygtk-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--ChangeLog20
-rw-r--r--codegen/argtypes.py17
-rw-r--r--gtk/gdk.defs11
-rw-r--r--gtk/gtk-types.c199
-rw-r--r--gtk/gtk.defs7
-rw-r--r--gtk/gtk.override139
-rw-r--r--gtk/gtkmodule.c1
-rw-r--r--gtk/pygtk-private.h25
-rw-r--r--gtk/pygtk.h24
9 files changed, 125 insertions, 318 deletions
diff --git a/ChangeLog b/ChangeLog
index f20fb909..0f45ba42 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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)