Index: ChangeLog =================================================================== --- ChangeLog (revision 67) +++ ChangeLog (working copy) @@ -1,5 +1,9 @@ 2006-08-25 Gustavo J. A. M. Carneiro + * goocanvas.override (_wrap_goo_canvas_item_remove_child): + Override and make it accept either an integer or a goocanvas.Item, + transparently calling goo_canvas_item_find_child if necessary. + * goocanvas.defs: Wrap goo_canvas_view_get_root_view. 2006-08-24 Gustavo J. A. M. Carneiro Index: goocanvas.override =================================================================== --- goocanvas.override (revision 66) +++ goocanvas.override (working copy) @@ -715,3 +715,36 @@ return Py_BuildValue("dd", x, y); } + +%% +override goo_canvas_item_remove_child kwargs + +static PyObject * +_wrap_goo_canvas_item_remove_child(PyGObject *self, PyObject *args, PyObject *kwargs) +{ + static char *kwlist[] = { "child", NULL }; + int child_num; + PyObject *py_child; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O:GooCanvasItem.remove_child", kwlist, &py_child)) + return NULL; + + if (PyInt_Check(py_child)) + child_num = PyInt_AsLong(py_child); + else { + if (!PyObject_IsInstance(py_child, (PyObject *) &PyGooCanvasItem_Type)) { + PyErr_SetString(PyExc_TypeError, "argument must be integer or goocanvas.Item"); + return NULL; + } + child_num = goo_canvas_item_find_child(GOO_CANVAS_ITEM(self->obj), GOO_CANVAS_ITEM(pygobject_get(py_child))); + if (child_num == -1) { + PyErr_SetString(PyExc_ValueError, "child not found"); + return NULL; + } + } + goo_canvas_item_remove_child(GOO_CANVAS_ITEM(self->obj), child_num); + + Py_INCREF(Py_None); + return Py_None; +} +