diff options
Diffstat (limited to 'libmproxy/console/tabs.py')
-rw-r--r-- | libmproxy/console/tabs.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/libmproxy/console/tabs.py b/libmproxy/console/tabs.py new file mode 100644 index 00000000..3245f430 --- /dev/null +++ b/libmproxy/console/tabs.py @@ -0,0 +1,35 @@ +import urwid + +class Tabs(urwid.WidgetWrap): + def __init__(self, tabs, tab_offset=0): + urwid.WidgetWrap.__init__(self, "") + self.tab_offset = tab_offset + self.tabs = tabs + self.show() + + def _tab(self, content, attr): + p = urwid.Text(content) + p = urwid.Padding(p, align="left", width=("relative", 100)) + p = urwid.AttrWrap(p, attr) + return p + + def keypress(self, size, key): + if key == "tab": + self.tab_offset = (self.tab_offset + 1)%(len(self.tabs)) + self.show() + else: + return key + + def show(self): + headers = [] + for i in range(len(self.tabs)): + txt = self.tabs[i][0]() + if i == self.tab_offset: + headers.append(self._tab(txt, "heading")) + else: + headers.append(self._tab(txt, "heading_inactive")) + headers = urwid.Columns(headers) + self._w = urwid.Frame( + body = self.tabs[self.tab_offset][1](), + header = headers + ) |