| 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() |
|---|