Hello,

I want to make a treeview displaying listview with the possibility of sorting and filtering. I must be doing something wrong. This should generate numbers from zero through twenty and only even numbers are filtered - this works fine.

#!/usr/bin/python
import gtk, random

ls = gtk.ListStore(int)
values = range(20)
random.shuffle(values)
for i in values:
    ls.append((i,))

rend = gtk.CellRendererText()

col = gtk.TreeViewColumn('Number', rend, text = 0)
col.set_sort_column_id(0)


def visiblefunc(model, iter):
    return model.get_value(iter, 0) % 2 == 0

filter = ls.filter_new()
filter.set_visible_func(visiblefunc)

tv = gtk.TreeView(filter)
tv.append_column(col)

w = gtk.Window()
w.add(tv)
w.connect('destroy', gtk.main_quit)
w.show_all()
gtk.main()

But clicking on header does not sort the numbers. I get these errors instead:

treeviewtest_visfil.py:29: Warning: invalid cast from `GtkTreeModelFilter' to `GtkTreeSortable'
  gtk.main()
treeviewtest_visfil.py:29: GtkWarning: gtk_tree_sortable_get_sort_column_id: assertion `GTK_IS_TREE_SORTABLE (sortable)' failed
  gtk.main()
treeviewtest_visfil.py:29: GtkWarning: gtk_tree_sortable_has_default_sort_func: assertion `GTK_IS_TREE_SORTABLE (sortable)' failed
  gtk.main()
treeviewtest_visfil.py:29: GtkWarning: gtk_tree_sortable_set_sort_column_id: assertion `GTK_IS_TREE_SORTABLE (sortable)' failed
  gtk.main()


Thank you for help,
Jan Martinek
_______________________________________________
pygtk mailing list   [email protected]
http://www.daa.com.au/mailman/listinfo/pygtk
Read the PyGTK FAQ: http://www.async.com.br/faq/pygtk/

Reply via email to