Ticket #3473: treemodel_test.py

File treemodel_test.py, 1.8 KB (added by humitos, 12 years ago)

Test csae of the pygi bug we did with manuq

Line 
1# test GTK3+ GtkTreeModel in PyGI
2from gi.repository import Gtk
3
4class Base():
5    _COL_ADDRESS = 0
6    _COL_TITLE = 1
7
8    def __init__(self):
9        self.window = Gtk.Window()
10        self.window.connect("delete-event", self.__quit_cb)
11        self.window.show()
12
13        self.store = Gtk.ListStore(str, str)
14        self.view = Gtk.TreeView()
15        self.view.props.headers_visible = False
16
17        self.view.set_model(self.store)
18        self.window.add(self.view)       
19        self.view.show()
20
21        column = Gtk.TreeViewColumn()
22        self.view.append_column(column)
23
24        cell = Gtk.CellRendererText()
25        column.pack_start(cell, True)
26        column.add_attribute(cell, 'text', self._COL_ADDRESS)
27
28        cell = Gtk.CellRendererText()
29        column.pack_start(cell, True)
30        column.add_attribute(cell, 'text', self._COL_TITLE)
31
32        # some data to get the item selected
33        # each append returns an iter
34        self.store.append(['Test 1', 'http://test1.com'])
35        self.store.append(['Test 2', 'http://test2.com'])
36        self.store.append(['Test 3', 'http://test3.com'])
37        self.store.append(['Test 4', 'http://test4.com'])
38
39        self.selection = self.view.get_selection()
40        self.selection.connect("changed", self.__selection_changed_cb)
41
42    def main(self):
43        Gtk.main()
44
45    def __quit_cb(self, *args):
46        Gtk.main_quit()
47       
48    def __selection_changed_cb(self, *args):
49        model, selected = self.selection.get_selected()
50       
51        if selected:
52            next_selection = model.iter_next(selected)
53            previous_selection = model.iter_previous(selected)
54           
55            print 'next: %s' % next_selection
56            print 'previous: %s' % previous_selection
57
58
59if __name__ == '__main__':
60    base = Base()
61    base.main()