From cacd09fafc19b323c46c4c565d0044593b677e17 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 29 Mar 2015 17:40:43 +1300 Subject: console: add a tabs widget, and use it for flowview. --- libmproxy/console/tabs.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 libmproxy/console/tabs.py (limited to 'libmproxy/console/tabs.py') 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 + ) -- cgit v1.2.3 From 8f5cf833d08aba685263554d0bd89f922cd6afae Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 29 Mar 2015 19:21:54 +1300 Subject: Add flow detail view as a tab in the flow view --- libmproxy/console/tabs.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'libmproxy/console/tabs.py') diff --git a/libmproxy/console/tabs.py b/libmproxy/console/tabs.py index 3245f430..b8943ad4 100644 --- a/libmproxy/console/tabs.py +++ b/libmproxy/console/tabs.py @@ -8,8 +8,8 @@ class Tabs(urwid.WidgetWrap): self.show() def _tab(self, content, attr): - p = urwid.Text(content) - p = urwid.Padding(p, align="left", width=("relative", 100)) + p = urwid.Text(content, align="center") + p = urwid.Padding(p, align="center", width=("relative", 100)) p = urwid.AttrWrap(p, attr) return p @@ -18,7 +18,7 @@ class Tabs(urwid.WidgetWrap): self.tab_offset = (self.tab_offset + 1)%(len(self.tabs)) self.show() else: - return key + return self._w.keypress(size, key) def show(self): headers = [] @@ -28,7 +28,7 @@ class Tabs(urwid.WidgetWrap): headers.append(self._tab(txt, "heading")) else: headers.append(self._tab(txt, "heading_inactive")) - headers = urwid.Columns(headers) + headers = urwid.Columns(headers, dividechars=1) self._w = urwid.Frame( body = self.tabs[self.tab_offset][1](), header = headers -- cgit v1.2.3 From 44fb42185f0e177b775c5e4f11249a55390048f6 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Tue, 31 Mar 2015 15:59:54 +1300 Subject: console: fix body scrolling --- libmproxy/console/tabs.py | 1 + 1 file changed, 1 insertion(+) (limited to 'libmproxy/console/tabs.py') diff --git a/libmproxy/console/tabs.py b/libmproxy/console/tabs.py index b8943ad4..bb188c28 100644 --- a/libmproxy/console/tabs.py +++ b/libmproxy/console/tabs.py @@ -33,3 +33,4 @@ class Tabs(urwid.WidgetWrap): body = self.tabs[self.tab_offset][1](), header = headers ) + self._w.set_focus("body") -- cgit v1.2.3 From 32ba6021b3c07efaa45a9223479151cd7e74ccbd Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Wed, 1 Apr 2015 09:25:50 +1300 Subject: console: improve handling of help contexts, fix key bindings in flow views --- libmproxy/console/tabs.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'libmproxy/console/tabs.py') diff --git a/libmproxy/console/tabs.py b/libmproxy/console/tabs.py index bb188c28..fff13890 100644 --- a/libmproxy/console/tabs.py +++ b/libmproxy/console/tabs.py @@ -17,8 +17,7 @@ class Tabs(urwid.WidgetWrap): if key == "tab": self.tab_offset = (self.tab_offset + 1)%(len(self.tabs)) self.show() - else: - return self._w.keypress(size, key) + return self._w.keypress(size, key) def show(self): headers = [] -- cgit v1.2.3 From c794d362f93df3a13ed5ac96dd6a04f766f8fbbc Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Wed, 1 Apr 2015 10:34:58 +1300 Subject: Next/previous tab keybindings --- libmproxy/console/tabs.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'libmproxy/console/tabs.py') diff --git a/libmproxy/console/tabs.py b/libmproxy/console/tabs.py index fff13890..2c46e59e 100644 --- a/libmproxy/console/tabs.py +++ b/libmproxy/console/tabs.py @@ -14,9 +14,12 @@ class Tabs(urwid.WidgetWrap): return p def keypress(self, size, key): - if key == "tab": + if key in ["tab", "l"]: self.tab_offset = (self.tab_offset + 1)%(len(self.tabs)) self.show() + elif key == "h": + self.tab_offset = (self.tab_offset - 1)%(len(self.tabs)) + self.show() return self._w.keypress(size, key) def show(self): -- cgit v1.2.3 From a05a70d8168a07c92b2a3ecbbb1958d85532efe3 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sat, 30 May 2015 12:03:28 +1200 Subject: Add coding style check, reformat. --- libmproxy/console/tabs.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'libmproxy/console/tabs.py') diff --git a/libmproxy/console/tabs.py b/libmproxy/console/tabs.py index 2c46e59e..953f6b12 100644 --- a/libmproxy/console/tabs.py +++ b/libmproxy/console/tabs.py @@ -1,5 +1,6 @@ import urwid + class Tabs(urwid.WidgetWrap): def __init__(self, tabs, tab_offset=0): urwid.WidgetWrap.__init__(self, "") @@ -15,10 +16,10 @@ class Tabs(urwid.WidgetWrap): def keypress(self, size, key): if key in ["tab", "l"]: - self.tab_offset = (self.tab_offset + 1)%(len(self.tabs)) + self.tab_offset = (self.tab_offset + 1) % (len(self.tabs)) self.show() elif key == "h": - self.tab_offset = (self.tab_offset - 1)%(len(self.tabs)) + self.tab_offset = (self.tab_offset - 1) % (len(self.tabs)) self.show() return self._w.keypress(size, key) -- cgit v1.2.3