summaryrefslogtreecommitdiff
path: root/gtk/pygtktreemodel.c
diff options
context:
space:
mode:
authorJames Henstridge <james@daa.com.au>2000-12-06 06:55:16 +0000
committerJames Henstridge <jamesh@src.gnome.org>2000-12-06 06:55:16 +0000
commit8fd02269f1de89f4e72e316890bbbbc32b81f254 (patch)
tree5b41c5b784185af08d9824d24bb2c931d50a06c1 /gtk/pygtktreemodel.c
parente49f0432406a2ea6325caca7b847298c6fa8189b (diff)
downloadpygtk-8fd02269f1de89f4e72e316890bbbbc32b81f254.tar.gz
fix PyObject_CallMethod calls to add parentheses around argument type
2000-12-06 James Henstridge <james@daa.com.au> * gtk/pygtktreemodel.c: fix PyObject_CallMethod calls to add parentheses around argument type list. (pygtk_tree_model_get_flags): decref py_ret -- not Py_None (pygtk_tree_model_get_n_columns): same here. (pygtk_tree_model_get_column_type): same here. (*): conditionally print out debugging messages. * examples/testgtk/demos/treemodel.py: simple test of PyGtkTreeModel. * gtk/pygtktreemodel.c: set iter->tree_node to NULL when returning FALSE, as GTK sometimes ignores the return value :( * codegen/codegen.py (interfacetypetmpl): don't set the interface type as having an instance dictionary. (write_interface): actually use interfacetypetmpl when writing out the interface type def. * codegen/argtypes.py (_conv_special_cases): add a special case for the underscore version of PyGtkTreeModel. * gtk/gtk.override: include pygtktreemodel.h * gtk/__init__.py: don't error out if we can't import ltihooks. * gtk/gtk-extrafuncs.defs: include defs for PyGtkTreeModel type. * gtk/Makefile.am (_gtkmodule_la_SOURCES): compile PyGtkTreeModel into pygtk. * gtk/pygtktreemodel.c: fix errors.
Diffstat (limited to 'gtk/pygtktreemodel.c')
-rw-r--r--gtk/pygtktreemodel.c98
1 files changed, 71 insertions, 27 deletions
diff --git a/gtk/pygtktreemodel.c b/gtk/pygtktreemodel.c
index 02de0c40..2bc5e309 100644
--- a/gtk/pygtktreemodel.c
+++ b/gtk/pygtktreemodel.c
@@ -6,6 +6,10 @@
#include "pygtktreemodel.h"
#include <Python.h>
#include "pygobject.h"
+#include "pygtk-private.h"
+
+/* define this to print out debug messages */
+#undef DEBUG_TREE_MODEL
static void pygtk_tree_model_class_init(PyGtkTreeModelClass *klass);
static void pygtk_tree_model_init(PyGtkTreeModel *self);
@@ -155,7 +159,7 @@ pygtk_tree_model_new(void)
/* format of GtkTreeIter's for PyGtkTreeModel:
- * tree_node1 == python object
+ * tree_node == python object
* tree_node2 == floating reference?
*
* I haven't worked out how everything should work. For now I will
@@ -169,15 +173,18 @@ pygtk_tree_model_get_flags(GtkTreeModel *tree_model)
{
PyObject *self, *py_ret;
- g_return_val_if_fail(PYGTK_IS_TREE_MODEL(tree_model));
+ g_return_val_if_fail(PYGTK_IS_TREE_MODEL(tree_model), 0);
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
+#ifdef DEBUG_TREE_MODEL
+ g_message("get_flags()");
+#endif
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "get_flags", "");
if (py_ret) {
- guint ret = PyInt_FromLong(py_ret);
+ guint ret = PyInt_AsLong(py_ret);
- Py_DECREF(Py_None);
+ Py_DECREF(py_ret);
return ret;
} else {
PyErr_Print();
@@ -196,11 +203,14 @@ pygtk_tree_model_get_n_columns(GtkTreeModel *tree_model)
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
+#ifdef DEBUG_TREE_MODEL
+ g_message("get_n_columns()");
+#endif
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "get_n_columns", "");
if (py_ret) {
- gint ret = PyInt_FromLong(py_ret);
+ gint ret = PyInt_AsLong(py_ret);
- Py_DECREF(Py_None);
+ Py_DECREF(py_ret);
return ret;
} else {
PyErr_Print();
@@ -219,12 +229,15 @@ pygtk_tree_model_get_column_type(GtkTreeModel *tree_model, gint index)
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
+#ifdef DEBUG_TREE_MODEL
+ g_message("get_column_type(%d)", index);
+#endif
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "get_column_type",
- "i", index);
+ "(i)", index);
if (py_ret) {
- GType ret = PyInt_FromLong(py_ret);
+ GType ret = PyInt_AsLong(py_ret);
- Py_DECREF(Py_None);
+ Py_DECREF(py_ret);
return ret;
} else {
PyErr_Print();
@@ -244,12 +257,15 @@ pygtk_tree_model_get_path(GtkTreeModel *tree_model, GtkTreeIter *iter)
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
- py_ret = PyObject_CallMethod(self, METHOD_PREFIX "get_column_type",
- "O", (PyObject *)iter->tree_node1);
+#ifdef DEBUG_TREE_MODEL
+ g_message("get_tree_path(%p)", iter);
+#endif
+ py_ret = PyObject_CallMethod(self, METHOD_PREFIX "get_tree_path",
+ "(O)", (PyObject *)iter->tree_node);
if (py_ret) {
GtkTreePath *path = pygtk_tree_path_from_pyobject(py_ret);
- Py_DECREF(Py_None);
+ Py_DECREF(py_ret);
return path;
} else {
PyErr_Print();
@@ -267,15 +283,17 @@ pygtk_tree_model_get_value(GtkTreeModel*tree_model, GtkTreeIter *iter,
g_return_if_fail(tree_model != NULL);
g_return_if_fail(PYGTK_IS_TREE_MODEL(tree_model));
g_return_if_fail(iter != NULL);
-
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
+#ifdef DEBUG_TREE_MODEL
+ g_message("get_value(%p, %d)", iter, column);
+#endif
/* init value to column type */
g_value_init(value, pygtk_tree_model_get_column_type(tree_model, column));
py_value = PyObject_CallMethod(self, METHOD_PREFIX "get_value",
- "Oi", (PyObject *)iter->tree_node1, column);
+ "(Oi)", (PyObject *)iter->tree_node,column);
if (py_value) {
pyg_value_from_pyobject(value, py_value);
@@ -297,18 +315,23 @@ pygtk_tree_model_iter_next(GtkTreeModel *tree_model, GtkTreeIter *iter)
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
+#ifdef DEBUG_TREE_MODEL
+ g_message("iter_next(%p)", iter);
+#endif
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "iter_next",
- "O", (PyObject *)iter->tree_node1);
+ "(O)", (PyObject *)iter->tree_node);
if (py_ret) {
if (py_ret != Py_None) {
/* XXXX handle reference counting here */
- iter->tree_node1 = py_ret;
+ iter->tree_node = py_ret;
return TRUE;
} else {
+ iter->tree_node = NULL;
Py_DECREF(py_ret);
return FALSE;
}
} else {
+ iter->tree_node = NULL;
PyErr_Print();
PyErr_Clear();
return FALSE;
@@ -327,19 +350,24 @@ pygtk_tree_model_iter_children(GtkTreeModel *tree_model, GtkTreeIter *iter,
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
- if (parent) py_parent = (PyObject *)parent->tree_node1;
+#ifdef DEBUG_TREE_MODEL
+ g_message("iter_children(%p, %p)", iter, parent);
+#endif
+ if (parent) py_parent = (PyObject *)parent->tree_node;
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "iter_children",
- "O", py_parent);
+ "(O)", py_parent);
if (py_ret) {
if (py_ret != Py_None) {
/* XXXX handle reference counting here */
- iter->tree_node1 = py_ret;
+ iter->tree_node = py_ret;
return TRUE;
} else {
+ iter->tree_node = NULL;
Py_DECREF(py_ret);
return FALSE;
}
} else {
+ iter->tree_node = NULL;
PyErr_Print();
PyErr_Clear();
return FALSE;
@@ -357,8 +385,11 @@ pygtk_tree_model_iter_has_child(GtkTreeModel *tree_model, GtkTreeIter *iter)
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
+#ifdef DEBUG_TREE_MODEL
+ g_message("iter_has_child(%p)", iter);
+#endif
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "iter_has_child",
- "O", (PyObject *)iter->tree_node1);
+ "(O)", (PyObject *)iter->tree_node);
if (py_ret) {
gboolean ret = PyObject_IsTrue(py_ret);
@@ -382,8 +413,11 @@ pygtk_tree_model_iter_n_children(GtkTreeModel *tree_model, GtkTreeIter *iter)
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
+#ifdef DEBUG_TREE_MODEL
+ g_message("iter_n_children(%p)", iter);
+#endif
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "iter_n_children",
- "O", (PyObject *)iter->tree_node1);
+ "(O)", (PyObject *)iter->tree_node);
if (py_ret) {
gint ret = PyInt_AsLong(py_ret);
@@ -408,19 +442,24 @@ pygtk_tree_model_iter_nth_child(GtkTreeModel *tree_model, GtkTreeIter *iter,
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
- if (parent) py_parent = (PyObject *)parent->tree_node1;
+#ifdef DEBUG_TREE_MODEL
+ g_message("iter_nth_child(%p, %p, %d)", iter, parent, n);
+#endif
+ if (parent) py_parent = (PyObject *)parent->tree_node;
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "iter_nth_child",
- "Oi", py_parent, n);
+ "(Oi)", py_parent, n);
if (py_ret) {
if (py_ret != Py_None) {
/* XXXX handle reference counting here */
- iter->tree_node1 = py_ret;
+ iter->tree_node = py_ret;
return TRUE;
} else {
+ iter->tree_node = NULL;
Py_DECREF(py_ret);
return FALSE;
}
} else {
+ iter->tree_node = NULL;
PyErr_Print();
PyErr_Clear();
return FALSE;
@@ -439,19 +478,24 @@ pygtk_tree_model_iter_parent(GtkTreeModel *tree_model, GtkTreeIter *iter,
/* this call finds the wrapper for this GObject */
self = pygobject_new((GObject *)tree_model);
- if (child) py_child = (PyObject *)child->tree_node1;
+#ifdef DEBUG_TREE_MODEL
+ g_message("iter_parent(%p, %p)", iter, child);
+#endif
+ if (child) py_child = (PyObject *)child->tree_node;
py_ret = PyObject_CallMethod(self, METHOD_PREFIX "iter_parent",
- "O", py_child);
+ "(O)", py_child);
if (py_ret) {
if (py_ret != Py_None) {
/* XXXX handle reference counting here */
- iter->tree_node1 = py_ret;
+ iter->tree_node = py_ret;
return TRUE;
} else {
+ iter->tree_node = NULL;
Py_DECREF(py_ret);
return FALSE;
}
} else {
+ iter->tree_node = NULL;
PyErr_Print();
PyErr_Clear();
return FALSE;