summaryrefslogtreecommitdiff
path: root/gtk/pygtktreemodel.c
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2001-06-27 11:05:03 +0000
committerJames Henstridge <jamesh@src.gnome.org>2001-06-27 11:05:03 +0000
commitd6e5d85e94533f2866085652c537558749814f71 (patch)
tree9222594eb8cc1234923f89082596b7324be5088d /gtk/pygtktreemodel.c
parent78028c23416411537215f07adb15b41b9bd889a9 (diff)
downloadpygtk-d6e5d85e94533f2866085652c537558749814f71.tar.gz
fix up toolbar constructor.
2001-06-27 James Henstridge <james@daa.com.au> * examples/pygtk-demo/demos/toolbar.py (main): fix up toolbar constructor. * examples/pygtk-demo/demos/treemodel.py: add on_get_iter() method, and put tree view in a scrolled window. * gtk/pygtktreemodel.c (pygtk_tree_model_get_iter): add missing function to GtkTreeModel implementation.
Diffstat (limited to 'gtk/pygtktreemodel.c')
-rw-r--r--gtk/pygtktreemodel.c42
1 files changed, 42 insertions, 0 deletions
diff --git a/gtk/pygtktreemodel.c b/gtk/pygtktreemodel.c
index 51bc6057..91dfdc74 100644
--- a/gtk/pygtktreemodel.c
+++ b/gtk/pygtktreemodel.c
@@ -57,6 +57,9 @@ static guint pygtk_tree_model_get_flags(GtkTreeModel *tree_model);
static gint pygtk_tree_model_get_n_columns(GtkTreeModel *tree_model);
static GType pygtk_tree_model_get_column_type(GtkTreeModel *tree_model,
gint index);
+static gboolean pygtk_tree_model_get_iter(GtkTreeModel *tree_model,
+ GtkTreeIter *iter,
+ GtkTreePath *path);
static GtkTreePath *pygtk_tree_model_get_path(GtkTreeModel *tree_model,
GtkTreeIter *iter);
static void pygtk_tree_model_get_value(GtkTreeModel*tree_model,
@@ -85,6 +88,7 @@ pygtk_tree_model_iface_init(GtkTreeModelIface *iface)
iface->get_flags = pygtk_tree_model_get_flags;
iface->get_n_columns = pygtk_tree_model_get_n_columns;
iface->get_column_type = pygtk_tree_model_get_column_type;
+ iface->get_iter = pygtk_tree_model_get_iter;
iface->get_path = pygtk_tree_model_get_path;
iface->get_value = pygtk_tree_model_get_value;
iface->iter_next = pygtk_tree_model_iter_next;
@@ -195,6 +199,44 @@ pygtk_tree_model_get_column_type(GtkTreeModel *tree_model, gint index)
}
}
+static gboolean
+pygtk_tree_model_get_iter(GtkTreeModel *tree_model,
+ GtkTreeIter *iter, GtkTreePath *path)
+{
+ PyObject *self, *py_path, *py_ret;
+
+ g_return_val_if_fail(tree_model != NULL, FALSE);
+ g_return_val_if_fail(PYGTK_IS_TREE_MODEL(tree_model), FALSE);
+ g_return_val_if_fail(iter != NULL, FALSE);
+ g_return_val_if_fail(path != NULL, FALSE);
+ /* this call finds the wrapper for this GObject */
+ self = pygobject_new((GObject *)tree_model);
+
+#ifdef DEBUG_TREE_MODEL
+ g_message("get_tree_iter(%p)", path);
+#endif
+ py_path = pygtk_tree_path_to_pyobject(path);
+ py_ret = PyObject_CallMethod(self, METHOD_PREFIX "get_iter",
+ "(O)", py_path);
+ Py_DECREF(py_path);
+
+ if (py_ret) {
+ if (py_ret != Py_None) {
+ iter->user_data = py_ret;
+ return TRUE;
+ } else {
+ iter->user_data = NULL;
+ Py_DECREF(py_ret);
+ return FALSE;
+ }
+ } else {
+ PyErr_Print();
+ PyErr_Clear();
+ iter->user_data = NULL;
+ return FALSE;
+ }
+}
+
static GtkTreePath *
pygtk_tree_model_get_path(GtkTreeModel *tree_model, GtkTreeIter *iter)
{