Mercurial > urwid-satext
diff urwid_satext/sat_widgets.py @ 96:44fc94b0fe18
new FocusPile widget: a Pile which manage FOCUS_KEYS
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 08 Sep 2014 15:42:25 +0200 |
parents | ca9a77f3b53e |
children | 8f5afab948a0 |
line wrap: on
line diff
--- a/urwid_satext/sat_widgets.py Mon Sep 08 15:42:25 2014 +0200 +++ b/urwid_satext/sat_widgets.py Mon Sep 08 15:42:25 2014 +0200 @@ -1142,6 +1142,32 @@ return urwid.CanvasJoin(render) +class FocusPile(urwid.Pile): + """A Pile Widget which manage SàT Focus keys""" + _focus_inversed = False + + def keypress(self, size, key): + ret = super(FocusPile, self).keypress(size, key) + if not ret: + return + + if key in FOCUS_KEYS: + direction, rotate = getFocusDirection(key, inversed = self._focus_inversed) + max_pos = len(self.contents) - 1 + new_pos = self.focus_position + direction + if rotate: + if new_pos > max_pos: + new_pos = 0 + elif new_pos < 0: + new_pos = max_pos + try: + self.focus_position = new_pos + except IndexError: + pass + + return key + + class FocusFrame(urwid.Frame): """Frame-like which manage SàT Focus Keys"""