summaryrefslogtreecommitdiff
path: root/gtk/pygtktreemodel.c
diff options
context:
space:
mode:
authorGian Mario Tagliaretti <gianmt@src.gnome.org>2007-07-29 21:17:54 +0000
committerGian Mario Tagliaretti <gianmt@src.gnome.org>2007-07-29 21:17:54 +0000
commit37e5cec4a8208b7bfdf963716db52c2cf2092bac (patch)
tree6e1a93c8e3dede65bb93cc4cb084175a4b0a3e13 /gtk/pygtktreemodel.c
parent64ea0c9868c3a8561515e2bc36c2f9911ec86e0c (diff)
downloadpygtk-37e5cec4a8208b7bfdf963716db52c2cf2092bac.tar.gz
add wrapping/unwrapping of GtkTreeItermethods to gtk.GenericTreeModel, fix #388754. by Paul Pogonyshev
svn path=/trunk/; revision=2868
Diffstat (limited to 'gtk/pygtktreemodel.c')
-rw-r--r--gtk/pygtktreemodel.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/gtk/pygtktreemodel.c b/gtk/pygtktreemodel.c
index a3f85805..f908c37b 100644
--- a/gtk/pygtktreemodel.c
+++ b/gtk/pygtktreemodel.c
@@ -24,7 +24,6 @@
#endif
#include "pygtktreemodel.h"
-#include <Python.h>
#include "pygtk-private.h"
/* define this to print out debug messages */
@@ -801,3 +800,42 @@ pygtk_generic_tree_model_iter_is_valid(PyGtkGenericTreeModel *tree_model,
return VALID_ITER(iter, tree_model);
}
+
+PyObject *
+pygtk_generic_tree_model_get_user_data(PyGtkGenericTreeModel *tree_model,
+ GtkTreeIter *iter)
+{
+ g_return_val_if_fail(tree_model != NULL, NULL);
+
+ if (VALID_ITER(iter, tree_model)) {
+ /* Py_INCREF and NULL checking is done at _wrap_*() level. */
+ return iter->user_data;
+ }
+ else {
+ g_warning("iter is not valid for the tree model");
+ return NULL;
+ }
+}
+
+GtkTreeIter
+pygtk_generic_tree_model_create_tree_iter(PyGtkGenericTreeModel *tree_model,
+ PyObject *user_data)
+{
+ GtkTreeIter iter;
+
+ if (tree_model != NULL) {
+ iter.user_data = user_data;
+ iter.stamp = PYGTK_GENERIC_TREE_MODEL(tree_model)->stamp;
+
+ /* Otherwise, caller is supposed to hold a reference somewhere. */
+ if (PYGTK_GENERIC_TREE_MODEL(tree_model)->leak_references)
+ Py_INCREF(user_data);
+ }
+ else {
+ /* FIXME: I guess this is still not enough. */
+ iter.user_data = NULL;
+ iter.stamp = 0;
+ }
+
+ return iter;
+}