diff options
author | John Finlay <finlay@src.gnome.org> | 2004-05-08 04:15:56 +0000 |
---|---|---|
committer | John Finlay <finlay@src.gnome.org> | 2004-05-08 04:15:56 +0000 |
commit | 099cb1d9558a82e52eb8901e79006abc70ec3895 (patch) | |
tree | 6b96a9307f17c2b0390b6c2916fbe0d7fd68ab52 | |
parent | 57adc8658bbb5c54ee3a76f908c29aeefc56d1c8 (diff) | |
download | pygtk-099cb1d9558a82e52eb8901e79006abc70ec3895.tar.gz |
gtk/gtktreeview.override (_wrap_gtk_tree_model_get) Add.
* gtk/gtktreeview.override (_wrap_gtk_tree_model_get) Add.
-rw-r--r-- | ChangeLog | 4 | ||||
-rw-r--r-- | gtk/gtktreeview.override | 52 |
2 files changed, 55 insertions, 1 deletions
@@ -1,3 +1,7 @@ +2004-05-07 John Finlay <finlay@moeraki.com> + + * gtk/gtktreeview.override (_wrap_gtk_tree_model_get) Add. + 2004-05-03 John Finlay <finlay@moeraki.com> * gtk/gtktextview.override (_wrap_gtk_text_iter_forward_find_char) diff --git a/gtk/gtktreeview.override b/gtk/gtktreeview.override index 8174e83a..fdab1b6d 100644 --- a/gtk/gtktreeview.override +++ b/gtk/gtktreeview.override @@ -48,7 +48,6 @@ ignore-glob %% ignore gtk_tree_view_new - gtk_tree_model_get gtk_tree_model_get_valist gtk_tree_row_reference_new_proxy gtk_tree_row_reference_inserted @@ -2638,3 +2637,54 @@ _wrap_gtk_tree_store_reorder(PyGObject *self, PyObject *args, PyObject *kwargs) Py_INCREF(Py_None); return Py_None; } +%% +override gtk_tree_model_get args +static PyObject * +_wrap_gtk_tree_model_get(PyGObject *self, PyObject *args) +{ + PyObject *py_iter, *ret; + gint len, i, n_columns; + GtkTreeIter *iter; + + len = PyTuple_Size(args) - 1; + + if (len < 1) { + PyErr_SetString(PyExc_TypeError, + "gtk.TreeModel.get requires at least two arguments"); + return NULL; + } + + py_iter = PyTuple_GetItem(args, 0); + + if (!pyg_boxed_check(py_iter, GTK_TYPE_TREE_ITER)) { + PyErr_SetString(PyExc_TypeError, "iter must be a GtkTreeIter"); + return NULL; + } + iter = pyg_boxed_get(py_iter, GtkTreeIter); + + ret = PyTuple_New(len); + + n_columns = gtk_tree_model_get_n_columns(GTK_TREE_MODEL(self->obj)); + for (i = 0; i < len; i++) { + GValue value = { 0, }; + gint column; + PyObject *py_column = PyTuple_GetItem(args, i+1); + + if (!PyInt_Check(py_column)) { + PyErr_SetString(PyExc_TypeError, "column numbers must be ints"); + Py_DECREF(ret); + return NULL; + } + column = PyInt_AsLong(py_column); + if (column < 0 || column >= n_columns) { + PyErr_SetString(PyExc_ValueError, "column number is out of range"); + Py_DECREF(ret); + return NULL; + } + gtk_tree_model_get_value(GTK_TREE_MODEL(self->obj), iter, + column, &value); + PyTuple_SetItem(ret, i, pyg_value_as_pyobject(&value, TRUE)); + g_value_unset(&value); + } + return ret; +} |