Improve key navigation on tree view

This commit is contained in:
Cédric Krier committed 2009-11-27 18:46:12 +01:00
1 parent dd2e6af074
commit ceef62f2eb
3 files changed
+46 -2

No files matched your search

+13 -2
View File
@@ -258,7 +258,7 @@ class ViewList(ParserView):
self.widget_tree.connect('drag-data-received', self.drag_data_received)
self.widget_tree.connect('drag-data-delete', self.drag_data_delete)
self.widget_tree.connect('key_press_event', self.on_keypres)
self.widget_tree.connect('key_press_event', self.on_keypress)
def _sig_clicked(self, widget, action, atype):
return self._action(action, atype)
@@ -287,10 +287,21 @@ class ViewList(ParserView):
return value
def on_keypres(self, widget, event):
def on_keypress(self, widget, event):
if event.keyval == gtk.keysyms.c and event.state & gtk.gdk.CONTROL_MASK:
self.on_copy()
return False
if event.keyval in (gtk.keysyms.Down, gtk.keysyms.Up):
path, column = self.widget_tree.get_cursor()
if not path:
return False
store = self.widget_tree.get_model()
if event.keyval == gtk.keysyms.Down:
if path[0] == len(store) - 1:
return True
elif event.keyval == gtk.keysyms.Up:
if path[0] == 0:
return True
def on_copy(self):
clipboard = self.widget_tree.get_clipboard(gtk.gdk.SELECTION_CLIPBOARD)
+19
View File
@@ -353,6 +353,7 @@ class ViewTree(object):
self.view.set_expander_column(self.view.get_column(1))
self.view.set_enable_search(False)
self.view.get_column(0).set_visible(False)
self.view.connect('key_press_event', self.on_keypress)
self.ids = ids
self.view_info = view_info
@@ -365,6 +366,24 @@ class ViewTree(object):
self.search = []
self.next = 0
def on_keypress(self, widget, event):
if event.keyval in (gtk.keysyms.Down, gtk.keysyms.Up):
path, column = self.view.get_cursor()
if not path:
return False
store = self.view.get_model()
if event.keyval == gtk.keysyms.Down:
iter = store.get_iter(path)
if path[0] == len(store) - 1 \
and not store.iter_next(iter) \
and (not store.iter_has_child(iter) \
or not self.view.row_expanded(path)):
return True
elif event.keyval == gtk.keysyms.Up:
if path[0] == 0 \
and len(path) == 1:
return True
def reload(self):
del self.model
self.model = ViewTreeModel(self.ids, self.view_info, self.fields_order,
@@ -24,6 +24,20 @@ class ViewTreeSC(object):
column = gtk.TreeViewColumn (_('Description'), cell, text=1)
self.tree.append_column(column)
self.tree.connect('key_press_event', self.on_keypress)
def on_keypress(self, widget, event):
if event.keyval in (gtk.keysyms.Down, gtk.keysyms.Up):
path, column = self.tree.get_cursor()
if not path:
return False
store = self.tree.get_model()
if event.keyval == gtk.keysyms.Down:
if path[0] == len(store) - 1:
return True
elif event.keyval == gtk.keysyms.Up:
if path[0] == 0:
return True
def update(self):
store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING,