# HG changeset patch # User Goffi # Date 1410184249 -7200 # Node ID 49d39b619e5decc8eb3c4b67122550fa86d725af # Parent a283968818da1e922cc80012eaccb4e2e7b5864c primitivus (profile manager): added FOCUS_UP and FOCUS_DOWN management diff -r a283968818da -r 49d39b619e5d frontends/src/primitivus/profile_manager.py --- a/frontends/src/primitivus/profile_manager.py Sat Sep 06 17:34:26 2014 +0200 +++ b/frontends/src/primitivus/profile_manager.py Mon Sep 08 15:50:49 2014 +0200 @@ -54,8 +54,8 @@ connect_button = urwid.Button(_("Connect"), self.onConnectProfile) #we now build the widget - body_content = urwid.SimpleListWalker([buttons_flow,self.list_profile,divider,self.login_wid, self.pass_wid, connect_button]) - frame_body = urwid.ListBox(body_content) + list_walker = urwid.SimpleFocusListWalker([buttons_flow,self.list_profile,divider,self.login_wid, self.pass_wid, connect_button]) + frame_body = urwid.ListBox(list_walker) frame = urwid.Frame(frame_body,urwid.AttrMap(urwid.Text(_("Profile Manager"),align='center'),'title')) self.main_widget = urwid.LineBox(frame) urwid.WidgetWrap.__init__(self, self.main_widget) @@ -64,6 +64,20 @@ if key == a_key['APP_QUIT']: self.host.onExit() raise urwid.ExitMainLoop() + elif key in (a_key['FOCUS_UP'], a_key['FOCUS_DOWN']): + focus_diff = 1 if key==a_key['FOCUS_DOWN'] else -1 + list_box = self.main_widget.base_widget.body + current_focus = list_box.body.get_focus()[1] + if current_focus is None: + return + while True: + current_focus += focus_diff + if current_focus < 0 or current_focus >= len(list_box.body): + break + if list_box.body[current_focus].selectable(): + list_box.set_focus(current_focus, 'above' if focus_diff == 1 else 'below') + list_box._invalidate() + return return super(ProfileManager, self).keypress(size, key) def __refillProfiles(self):