1 | # test GTK3+ GtkTreeModel in PyGI |
---|
2 | from gi.repository import Gtk |
---|
3 | |
---|
4 | class 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 | |
---|
59 | if __name__ == '__main__': |
---|
60 | base = Base() |
---|
61 | base.main() |
---|