view finch/libgnt/pygnt/gnttree.override @ 21174:6e0c99e134c2

Fix the win32 build for the file synchronization changes. Hopefully this will fix some of the occasional issues that people have had on Windows with their files getting corrupted on power failure or something.
author Daniel Atallah <daniel.atallah@gmail.com>
date Fri, 09 Nov 2007 01:39:51 +0000
parents 66001118617d
children
line wrap: on
line source

/**
 * pygnt- Python bindings for the GNT toolkit.
 * Copyright (C) 2007 Sadrul Habib Chowdhury <sadrul@pidgin.im>
 *
 *   gnttree.override: overrides for the tree widget.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301
 * USA
 */
%%
headers
#include "common.h"
%%
ignore 
gnt_tree_create_row
gnt_tree_create_row_from_list
%%
override gnt_tree_get_selection_text_list noargs
static PyObject *
_wrap_gnt_tree_get_selection_text_list(PyGObject *self)
{
	GList *list = gnt_tree_get_selection_text_list(GNT_TREE(self->obj));
	return create_pyobject_from_string_list(list);
}
%%
override gnt_tree_get_rows noargs
static PyObject *
_wrap_gnt_tree_get_rows(PyGObject *self)
{
	GList *list = gnt_tree_get_rows(GNT_TREE(self->obj));
	PyObject *py_list;
	if (list == NULL) {
		Py_INCREF(Py_None);
		return Py_None;
	}
	if ((py_list = PyList_New(0)) == NULL) {
		return NULL;
	}
	while (list) {
		PyObject *obj = list->data;
		PyList_Append(py_list, obj);
		list = list->next;
	}
	return py_list;
}
%%
override gnt_tree_add_row_after
static PyObject *
_wrap_gnt_tree_add_row_after(PyGObject *self, PyObject *args)
{
	static char *kwlist[] = {"key", "row", "parent", "bigbro", NULL};
	PyObject *py_list;
	gpointer key, parent, bigbro = NULL;
	int len, i;
	GList *list = NULL;
	GntTreeRow *row;
	gboolean insert_last = FALSE;

	if (!PyArg_ParseTuple(args,
				"OOO|O:GntTree.add_row_after",
				&key,
				&py_list,
				&parent,
				&bigbro))
		return NULL;

	len = PySequence_Length(py_list);
	for (i = 0; i < len; i++) {
		PyObject *item = PySequence_GetItem(py_list, i);
		if (!pygobject_check(item, &PyString_Type)) {
			PyErr_SetString(PyExc_TypeError,
					"column_list members must be strings");
			Py_DECREF(item);
			return NULL;
		}
		list = g_list_prepend(list, PyString_AsString(item));
		Py_DECREF(item);
	}

	if (parent == Py_None)
		parent = NULL;
	if (bigbro == Py_None)
		bigbro = NULL;
	else if (bigbro == NULL)
		insert_last = TRUE;

	Py_INCREF((PyObject*)key);

	list = g_list_reverse(list);
	row = gnt_tree_create_row_from_list(GNT_TREE(self->obj), list);
	if (insert_last)
		gnt_tree_add_row_last(GNT_TREE(self->obj),
				key, row, parent);
	else
		gnt_tree_add_row_after(GNT_TREE(self->obj),
				key, row,
				parent, bigbro);
	g_list_free(list);

	Py_INCREF(Py_None);
	return Py_None;
}
%%
override gnt_tree_get_selection_data noargs
static PyObject *
_wrap_gnt_tree_get_selection_data(PyGObject *self)
{
	PyObject *ret = gnt_tree_get_selection_data(GNT_TREE(self->obj));
	if (!ret)
		ret = Py_None;
	Py_INCREF(ret);
	return ret;
}
%%
override gnt_tree_change_text
static PyObject *
_wrap_gnt_tree_change_text(PyGObject *self, PyObject *args, PyObject *kwargs)
{
	static char *kwlist[] = { "key", "colno", "text", NULL };
	char *text;
	int colno;
	gpointer key;

	if (!PyArg_ParseTupleAndKeywords(args, kwargs,"Ois:GntTree.change_text", kwlist, &key, &colno, &text))
		return NULL;

	gnt_tree_change_text(GNT_TREE(self->obj), key, colno, text);

	Py_INCREF(Py_None);
	return Py_None;
}
%%
override gnt_tree_set_row_flags
static PyObject *
_wrap_gnt_tree_set_row_flags(PyGObject *self, PyObject *args, PyObject *kwargs)
{
	static char *kwlist[] = { "key", "flag", NULL };
	int flag;
	gpointer key;

	if (!PyArg_ParseTupleAndKeywords(args, kwargs,"Oi:GntTree.set_row_flags", kwlist, &key, &flag))
		return NULL;

	gnt_tree_set_row_flags(GNT_TREE(self->obj), key, flag);

	Py_INCREF(Py_None);
	return Py_None;
}
%%
override gnt_tree_remove
static PyObject *
_wrap_gnt_tree_remove(PyGObject *self, PyObject *args, PyObject *kwargs)
{
	static char *kwlist[] = { "key", NULL };
	gpointer key;

	if (!PyArg_ParseTupleAndKeywords(args, kwargs,"O:GntTree.remove", kwlist, &key))
		return NULL;

	gnt_tree_remove(GNT_TREE(self->obj), key);

	Py_INCREF(Py_None);
	return Py_None;
}
%%
override gnt_tree_set_selected
static PyObject *
_wrap_gnt_tree_set_selected(PyGObject *self, PyObject *args)
{
	gpointer key;
	if (!PyArg_ParseTuple(args, "O:GntTree.set_selected", &key)) {
		return NULL;
	}
	gnt_tree_set_selected(GNT_TREE(self->obj), key);
	Py_INCREF(Py_None);
	return Py_None;
}
%%
override gnt_tree_set_compare_func
static PyObject *
_wrap_gnt_tree_set_compare_func(PyGObject *self, PyObject *args)
{
	static char *kwlist[] = {"compare_func", NULL};
	PyGObject *compare;

	if (!PyArg_ParseTuple(args, "O:GntTree.set_compare_func", &compare)) {
		return NULL;
	}

	if (!PyCallable_Check(compare)) {
		PyErr_SetString(PyExc_TypeError, "the callback must be callable ... doh!");
		return NULL;
	}

	Py_INCREF(compare);
	gnt_tree_set_compare_func(GNT_TREE(self->obj), (GCompareFunc)compare->obj);

	Py_INCREF(Py_None);
	return Py_None;
}