From c182133d645a07b7dee4504ecf6f99cc3f72f93a Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 20 Mar 2015 13:26:08 +1300 Subject: console: pull primary window frame management out into window.py --- libmproxy/console/window.py | 150 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 150 insertions(+) create mode 100644 libmproxy/console/window.py (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py new file mode 100644 index 00000000..8019adce --- /dev/null +++ b/libmproxy/console/window.py @@ -0,0 +1,150 @@ +import urwid + +class Window(urwid.Frame): + def __init__(self, master, body, header, footer): + urwid.Frame.__init__(self, body, header=header, footer=footer) + self.master = master + + def keypress(self, size, k): + if self.master.prompting: + if k == "esc": + self.master.prompt_cancel() + elif self.master.onekey: + if k == "enter": + self.master.prompt_cancel() + elif k in self.master.onekey: + self.master.prompt_execute(k) + elif k == "enter": + self.master.prompt_execute() + else: + if common.is_keypress(k): + urwid.Frame.keypress(self, self.master.loop.screen_size, k) + else: + return k + else: + k = urwid.Frame.keypress(self, self.master.loop.screen_size, k) + if k == "?": + self.master.view_help() + elif k == "c": + if not self.master.client_playback: + self.master.path_prompt( + "Client replay: ", + self.master.state.last_saveload, + self.master.client_playback_path + ) + else: + self.master.prompt_onekey( + "Stop current client replay?", + ( + ("yes", "y"), + ("no", "n"), + ), + self.master.stop_client_playback_prompt, + ) + elif k == "H": + self.master.view_grideditor( + grideditor.SetHeadersEditor( + self.master, + self.master.setheaders.get_specs(), + self.master.setheaders.set + ) + ) + elif k == "I": + self.master.view_grideditor( + grideditor.HostPatternEditor( + self.master, + [[x] for x in self.master.get_ignore_filter()], + self.master.edit_ignore_filter + ) + ) + elif k == "T": + self.master.view_grideditor( + grideditor.HostPatternEditor( + self.master, + [[x] for x in self.master.get_tcp_filter()], + self.master.edit_tcp_filter + ) + ) + elif k == "i": + self.master.prompt( + "Intercept filter: ", + self.master.state.intercept_txt, + self.master.set_intercept + ) + elif k == "Q": + raise urwid.ExitMainLoop + elif k == "q": + self.master.prompt_onekey( + "Quit", + ( + ("yes", "y"), + ("no", "n"), + ), + self.master.quit, + ) + elif k == "M": + self.master.prompt_onekey( + "Global default display mode", + contentview.view_prompts, + self.master.change_default_display_mode + ) + elif k == "R": + self.master.view_grideditor( + grideditor.ReplaceEditor( + self.master, + self.master.replacehooks.get_specs(), + self.master.replacehooks.set + ) + ) + elif k == "s": + self.master.view_grideditor( + grideditor.ScriptEditor( + self.master, + [[i.command] for i in self.master.scripts], + self.master.edit_scripts + ) + ) + elif k == "S": + if not self.master.server_playback: + self.master.path_prompt( + "Server replay path: ", + self.master.state.last_saveload, + self.master.server_playback_path + ) + else: + self.master.prompt_onekey( + "Stop current server replay?", + ( + ("yes", "y"), + ("no", "n"), + ), + self.master.stop_server_playback_prompt, + ) + elif k == "o": + self.master.prompt_onekey( + "Options", + ( + ("anticache", "a"), + ("anticomp", "c"), + ("showhost", "h"), + ("killextra", "k"), + ("norefresh", "n"), + ("no-upstream-certs", "u"), + ), + self.master._change_options + ) + elif k == "t": + self.master.prompt( + "Sticky cookie filter: ", + self.master.stickycookie_txt, + self.master.set_stickycookie + ) + elif k == "u": + self.master.prompt( + "Sticky auth filter: ", + self.master.stickyauth_txt, + self.master.set_stickyauth + ) + else: + return k + self.footer.redraw() -- cgit v1.2.3 From b475c8d6eacd0d6a100cf6aaddc9c9915fdfb149 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 20 Mar 2015 15:22:05 +1300 Subject: Add window.py import missed in refactoring --- libmproxy/console/window.py | 1 + 1 file changed, 1 insertion(+) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 8019adce..69f35183 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -1,4 +1,5 @@ import urwid +from . import common class Window(urwid.Frame): def __init__(self, master, body, header, footer): -- cgit v1.2.3 From 8725d50d03cf21b37a78c1d2fa03ade055c8a821 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sat, 21 Mar 2015 11:19:20 +1300 Subject: Add blinker dependency, start using it to refactor console app Blinker lets us set up a central pub/sub mechanism to disentangle our object structure. --- libmproxy/console/window.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 69f35183..44a5a316 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -1,5 +1,5 @@ import urwid -from . import common +from . import common, grideditor class Window(urwid.Frame): def __init__(self, master, body, header, footer): -- cgit v1.2.3 From 89383e9c138f68caf1cc394174250c133d21aa04 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 22 Mar 2015 13:32:24 +1300 Subject: Refactor status bar prompting to use signal system --- libmproxy/console/window.py | 255 +++++++++++++++++++++----------------------- 1 file changed, 124 insertions(+), 131 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 44a5a316..55145c48 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -1,151 +1,144 @@ import urwid -from . import common, grideditor +from . import common, grideditor, signals, contentview class Window(urwid.Frame): def __init__(self, master, body, header, footer): urwid.Frame.__init__(self, body, header=header, footer=footer) self.master = master + signals.focus.connect(self.sig_focus) + + def sig_focus(self, sender, section): + self.focus_position = section def keypress(self, size, k): - if self.master.prompting: - if k == "esc": - self.master.prompt_cancel() - elif self.master.onekey: - if k == "enter": - self.master.prompt_cancel() - elif k in self.master.onekey: - self.master.prompt_execute(k) - elif k == "enter": - self.master.prompt_execute() - else: - if common.is_keypress(k): - urwid.Frame.keypress(self, self.master.loop.screen_size, k) - else: - return k - else: - k = urwid.Frame.keypress(self, self.master.loop.screen_size, k) - if k == "?": - self.master.view_help() - elif k == "c": - if not self.master.client_playback: - self.master.path_prompt( - "Client replay: ", - self.master.state.last_saveload, - self.master.client_playback_path - ) - else: - self.master.prompt_onekey( - "Stop current client replay?", - ( - ("yes", "y"), - ("no", "n"), - ), - self.master.stop_client_playback_prompt, - ) - elif k == "H": - self.master.view_grideditor( - grideditor.SetHeadersEditor( - self.master, - self.master.setheaders.get_specs(), - self.master.setheaders.set - ) - ) - elif k == "I": - self.master.view_grideditor( - grideditor.HostPatternEditor( - self.master, - [[x] for x in self.master.get_ignore_filter()], - self.master.edit_ignore_filter - ) + k = urwid.Frame.keypress(self, self.master.loop.screen_size, k) + if k == "?": + self.master.view_help() + elif k == "c": + if not self.master.client_playback: + signals.status_path_prompt.send( + self, + prompt = "Client replay: ", + text = self.master.state.last_saveload, + callback = self.master.client_playback_path ) - elif k == "T": - self.master.view_grideditor( - grideditor.HostPatternEditor( - self.master, - [[x] for x in self.master.get_tcp_filter()], - self.master.edit_tcp_filter - ) - ) - elif k == "i": - self.master.prompt( - "Intercept filter: ", - self.master.state.intercept_txt, - self.master.set_intercept - ) - elif k == "Q": - raise urwid.ExitMainLoop - elif k == "q": - self.master.prompt_onekey( - "Quit", - ( + else: + signals.status_prompt_onekey.send( + self, + prompt = "Stop current client replay?", + keys = ( ("yes", "y"), ("no", "n"), ), - self.master.quit, + callback = self.master.stop_client_playback_prompt, ) - elif k == "M": - self.master.prompt_onekey( - "Global default display mode", - contentview.view_prompts, - self.master.change_default_display_mode + elif k == "H": + self.master.view_grideditor( + grideditor.SetHeadersEditor( + self.master, + self.master.setheaders.get_specs(), + self.master.setheaders.set ) - elif k == "R": - self.master.view_grideditor( - grideditor.ReplaceEditor( - self.master, - self.master.replacehooks.get_specs(), - self.master.replacehooks.set - ) + ) + elif k == "I": + self.master.view_grideditor( + grideditor.HostPatternEditor( + self.master, + [[x] for x in self.master.get_ignore_filter()], + self.master.edit_ignore_filter ) - elif k == "s": - self.master.view_grideditor( - grideditor.ScriptEditor( - self.master, - [[i.command] for i in self.master.scripts], - self.master.edit_scripts - ) + ) + elif k == "T": + self.master.view_grideditor( + grideditor.HostPatternEditor( + self.master, + [[x] for x in self.master.get_tcp_filter()], + self.master.edit_tcp_filter ) - elif k == "S": - if not self.master.server_playback: - self.master.path_prompt( - "Server replay path: ", - self.master.state.last_saveload, - self.master.server_playback_path - ) - else: - self.master.prompt_onekey( - "Stop current server replay?", - ( - ("yes", "y"), - ("no", "n"), - ), - self.master.stop_server_playback_prompt, - ) - elif k == "o": - self.master.prompt_onekey( - "Options", - ( - ("anticache", "a"), - ("anticomp", "c"), - ("showhost", "h"), - ("killextra", "k"), - ("norefresh", "n"), - ("no-upstream-certs", "u"), - ), - self.master._change_options + ) + elif k == "i": + signals.status_prompt.send( + self, + prompt = "Intercept filter: ", + text = self.master.state.intercept_txt, + callback = self.master.set_intercept + ) + elif k == "Q": + raise urwid.ExitMainLoop + elif k == "q": + signals.status_prompt_onekey.send( + self, + prompt = "Quit", + keys = ( + ("yes", "y"), + ("no", "n"), + ), + callback = self.master.quit, + ) + elif k == "M": + signals.status_prompt_onekey.send( + prompt = "Global default display mode", + keys = contentview.view_prompts, + callback = self.master.change_default_display_mode + ) + elif k == "R": + self.master.view_grideditor( + grideditor.ReplaceEditor( + self.master, + self.master.replacehooks.get_specs(), + self.master.replacehooks.set ) - elif k == "t": - self.master.prompt( - "Sticky cookie filter: ", - self.master.stickycookie_txt, - self.master.set_stickycookie + ) + elif k == "s": + self.master.view_grideditor( + grideditor.ScriptEditor( + self.master, + [[i.command] for i in self.master.scripts], + self.master.edit_scripts ) - elif k == "u": - self.master.prompt( - "Sticky auth filter: ", - self.master.stickyauth_txt, - self.master.set_stickyauth + ) + elif k == "S": + if not self.master.server_playback: + signals.status_path_prompt.send( + self, + prompt = "Server replay path: ", + text = self.master.state.last_saveload, + callback = self.master.server_playback_path ) else: - return k - self.footer.redraw() + signals.status_prompt_onekey.send( + self, + prompt = "Stop current server replay?", + keys = ( + ("yes", "y"), + ("no", "n"), + ), + callback = self.master.stop_server_playback_prompt, + ) + elif k == "o": + signals.status_prompt_onekey.send( + prompt = "Options", + keys = ( + ("anticache", "a"), + ("anticomp", "c"), + ("showhost", "h"), + ("killextra", "k"), + ("norefresh", "n"), + ("no-upstream-certs", "u"), + ), + callback = self.master._change_options + ) + elif k == "t": + signals.status_prompt.send( + prompt = "Sticky cookie filter: ", + text = self.master.stickycookie_txt, + callback = self.master.set_stickycookie + ) + elif k == "u": + signals.status_prompt.send( + prompt = "Sticky auth filter: ", + text = self.master.stickyauth_txt, + callback = self.master.set_stickyauth + ) + else: + return k -- cgit v1.2.3 From 572000aa039a789ba35d4ef14e0c096256d6997d Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 22 Mar 2015 13:59:34 +1300 Subject: Rationalise prompt calling conventions --- libmproxy/console/window.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 55145c48..87f06637 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -16,9 +16,9 @@ class Window(urwid.Frame): self.master.view_help() elif k == "c": if not self.master.client_playback: - signals.status_path_prompt.send( + signals.status_prompt_path.send( self, - prompt = "Client replay: ", + prompt = "Client replay", text = self.master.state.last_saveload, callback = self.master.client_playback_path ) @@ -59,7 +59,7 @@ class Window(urwid.Frame): elif k == "i": signals.status_prompt.send( self, - prompt = "Intercept filter: ", + prompt = "Intercept filter", text = self.master.state.intercept_txt, callback = self.master.set_intercept ) @@ -99,9 +99,9 @@ class Window(urwid.Frame): ) elif k == "S": if not self.master.server_playback: - signals.status_path_prompt.send( + signals.status_prompt_path.send( self, - prompt = "Server replay path: ", + prompt = "Server replay path", text = self.master.state.last_saveload, callback = self.master.server_playback_path ) @@ -130,13 +130,13 @@ class Window(urwid.Frame): ) elif k == "t": signals.status_prompt.send( - prompt = "Sticky cookie filter: ", + prompt = "Sticky cookie filter", text = self.master.stickycookie_txt, callback = self.master.set_stickycookie ) elif k == "u": signals.status_prompt.send( - prompt = "Sticky auth filter: ", + prompt = "Sticky auth filter", text = self.master.stickyauth_txt, callback = self.master.set_stickyauth ) -- cgit v1.2.3 From 200498e7aa57effd7158c8d735f95c6556203a07 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Sun, 22 Mar 2015 14:14:44 +1300 Subject: Simplify the way in which path prompts keep state In the past, we kept the last path the user specified for a number of different path types to pre-seed the path prompt. Now, we no longer distinguish between types, and pre-seed with the last used directory regardless. --- libmproxy/console/window.py | 2 -- 1 file changed, 2 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 87f06637..d686f61d 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -19,7 +19,6 @@ class Window(urwid.Frame): signals.status_prompt_path.send( self, prompt = "Client replay", - text = self.master.state.last_saveload, callback = self.master.client_playback_path ) else: @@ -102,7 +101,6 @@ class Window(urwid.Frame): signals.status_prompt_path.send( self, prompt = "Server replay path", - text = self.master.state.last_saveload, callback = self.master.server_playback_path ) else: -- 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/window.py | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index d686f61d..14a3acd2 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -1,19 +1,21 @@ import urwid -from . import common, grideditor, signals, contentview +from . import grideditor, signals, contentview + class Window(urwid.Frame): - def __init__(self, master, body, header, footer): + def __init__(self, master, body, header, footer, helpctx): urwid.Frame.__init__(self, body, header=header, footer=footer) self.master = master + self.helpctx = helpctx signals.focus.connect(self.sig_focus) def sig_focus(self, sender, section): self.focus_position = section def keypress(self, size, k): - k = urwid.Frame.keypress(self, self.master.loop.screen_size, k) + k = super(self.__class__, self).keypress(size, k) if k == "?": - self.master.view_help() + self.master.view_help(self.helpctx) elif k == "c": if not self.master.client_playback: signals.status_prompt_path.send( @@ -65,15 +67,7 @@ class Window(urwid.Frame): elif k == "Q": raise urwid.ExitMainLoop elif k == "q": - signals.status_prompt_onekey.send( - self, - prompt = "Quit", - keys = ( - ("yes", "y"), - ("no", "n"), - ), - callback = self.master.quit, - ) + signals.pop_view_state.send(self) elif k == "M": signals.status_prompt_onekey.send( prompt = "Global default display mode", -- cgit v1.2.3 From 65971f02ade7cc2126b4142a32c363e02112f95c Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Fri, 3 Apr 2015 14:10:57 +1300 Subject: console: basic options page --- libmproxy/console/window.py | 15 ++------------- 1 file changed, 2 insertions(+), 13 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 14a3acd2..1d22f280 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -64,6 +64,8 @@ class Window(urwid.Frame): text = self.master.state.intercept_txt, callback = self.master.set_intercept ) + elif k == "o": + self.master.view_options() elif k == "Q": raise urwid.ExitMainLoop elif k == "q": @@ -107,19 +109,6 @@ class Window(urwid.Frame): ), callback = self.master.stop_server_playback_prompt, ) - elif k == "o": - signals.status_prompt_onekey.send( - prompt = "Options", - keys = ( - ("anticache", "a"), - ("anticomp", "c"), - ("showhost", "h"), - ("killextra", "k"), - ("norefresh", "n"), - ("no-upstream-certs", "u"), - ), - callback = self.master._change_options - ) elif k == "t": signals.status_prompt.send( prompt = "Sticky cookie filter", -- cgit v1.2.3 From 9e39999706dc1fbe3907a4d98aa30d777d6dfba7 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 6 Apr 2015 16:46:51 +1200 Subject: Add headings to options, start migrating more options into options screen SetHeaders first... --- libmproxy/console/window.py | 8 -------- 1 file changed, 8 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 1d22f280..f2ef920b 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -33,14 +33,6 @@ class Window(urwid.Frame): ), callback = self.master.stop_client_playback_prompt, ) - elif k == "H": - self.master.view_grideditor( - grideditor.SetHeadersEditor( - self.master, - self.master.setheaders.get_specs(), - self.master.setheaders.set - ) - ) elif k == "I": self.master.view_grideditor( grideditor.HostPatternEditor( -- cgit v1.2.3 From 15246c34039ecd1c27da52d1474910cecf6e2061 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 6 Apr 2015 17:02:51 +1200 Subject: console: ignore patterns to new options screen. --- libmproxy/console/window.py | 8 -------- 1 file changed, 8 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index f2ef920b..c28e6b13 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -33,14 +33,6 @@ class Window(urwid.Frame): ), callback = self.master.stop_client_playback_prompt, ) - elif k == "I": - self.master.view_grideditor( - grideditor.HostPatternEditor( - self.master, - [[x] for x in self.master.get_ignore_filter()], - self.master.edit_ignore_filter - ) - ) elif k == "T": self.master.view_grideditor( grideditor.HostPatternEditor( -- cgit v1.2.3 From 488adcb79ef2820d1bed59ab51728e59c7924e1f Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 6 Apr 2015 17:05:52 +1200 Subject: console: replacement patterns to new option screen --- libmproxy/console/window.py | 8 -------- 1 file changed, 8 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index c28e6b13..b0db8cbe 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -60,14 +60,6 @@ class Window(urwid.Frame): keys = contentview.view_prompts, callback = self.master.change_default_display_mode ) - elif k == "R": - self.master.view_grideditor( - grideditor.ReplaceEditor( - self.master, - self.master.replacehooks.get_specs(), - self.master.replacehooks.set - ) - ) elif k == "s": self.master.view_grideditor( grideditor.ScriptEditor( -- cgit v1.2.3 From acb6b5667cd3dfd972b0229be2e2e7dc62ea01ac Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 6 Apr 2015 17:11:02 +1200 Subject: console: scripts to new options screen --- libmproxy/console/window.py | 8 -------- 1 file changed, 8 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index b0db8cbe..772102eb 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -60,14 +60,6 @@ class Window(urwid.Frame): keys = contentview.view_prompts, callback = self.master.change_default_display_mode ) - elif k == "s": - self.master.view_grideditor( - grideditor.ScriptEditor( - self.master, - [[i.command] for i in self.master.scripts], - self.master.edit_scripts - ) - ) elif k == "S": if not self.master.server_playback: signals.status_prompt_path.send( -- cgit v1.2.3 From ec7572697a3877d26a5a05569c71a1487556889e Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 6 Apr 2015 17:14:32 +1200 Subject: console: default display mode to new options screen --- libmproxy/console/window.py | 6 ------ 1 file changed, 6 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 772102eb..bb811537 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -54,12 +54,6 @@ class Window(urwid.Frame): raise urwid.ExitMainLoop elif k == "q": signals.pop_view_state.send(self) - elif k == "M": - signals.status_prompt_onekey.send( - prompt = "Global default display mode", - keys = contentview.view_prompts, - callback = self.master.change_default_display_mode - ) elif k == "S": if not self.master.server_playback: signals.status_prompt_path.send( -- cgit v1.2.3 From c4e0f9d8d77c7306f7af4509250541f4b9ea8524 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 6 Apr 2015 17:19:52 +1200 Subject: console: TCP proxy patterns to new options screen --- libmproxy/console/window.py | 8 -------- 1 file changed, 8 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index bb811537..cdc57b17 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -33,14 +33,6 @@ class Window(urwid.Frame): ), callback = self.master.stop_client_playback_prompt, ) - elif k == "T": - self.master.view_grideditor( - grideditor.HostPatternEditor( - self.master, - [[x] for x in self.master.get_tcp_filter()], - self.master.edit_tcp_filter - ) - ) elif k == "i": signals.status_prompt.send( self, -- cgit v1.2.3 From 0d6de19b070789405ed2713b6d973b06ea7922fc Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Mon, 6 Apr 2015 17:27:46 +1200 Subject: console: sticky cookies and auth to options screen --- libmproxy/console/window.py | 12 ------------ 1 file changed, 12 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index cdc57b17..af9da81f 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -63,17 +63,5 @@ class Window(urwid.Frame): ), callback = self.master.stop_server_playback_prompt, ) - elif k == "t": - signals.status_prompt.send( - prompt = "Sticky cookie filter", - text = self.master.stickycookie_txt, - callback = self.master.set_stickycookie - ) - elif k == "u": - signals.status_prompt.send( - prompt = "Sticky auth filter", - text = self.master.stickyauth_txt, - callback = self.master.set_stickyauth - ) else: return k -- cgit v1.2.3 From f6a3bd15b3b8c3d30abf6e5209e10cff3c4784e0 Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Tue, 7 Apr 2015 10:01:18 +1200 Subject: console: All palettes now explicitly set a background colour There's a new option --palette-transparent to turn this off if you want to use your own terminal background. --- libmproxy/console/window.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index af9da81f..d64e83df 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -1,10 +1,15 @@ import urwid -from . import grideditor, signals, contentview +from . import signals class Window(urwid.Frame): def __init__(self, master, body, header, footer, helpctx): - urwid.Frame.__init__(self, body, header=header, footer=footer) + urwid.Frame.__init__( + self, + urwid.AttrWrap(body, "background"), + header = urwid.AttrWrap(header, "background") if header else None, + footer = urwid.AttrWrap(footer, "background") if footer else None + ) self.master = master self.helpctx = helpctx signals.focus.connect(self.sig_focus) -- cgit v1.2.3 From 62330e4b0f690e1b5a187b0b1d18654fc51dfe8a Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Tue, 2 Jun 2015 11:05:45 +1200 Subject: Enable mouse interaction, add a hint for selecting text. Fixes #597 --- libmproxy/console/window.py | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index d64e83df..600ae413 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -17,6 +17,16 @@ class Window(urwid.Frame): def sig_focus(self, sender, section): self.focus_position = section + def mouse_event(self, *args, **kwargs): + # args: (size, event, button, col, row) + k = super(self.__class__, self).mouse_event(*args, **kwargs) + if args[1] == "mouse drag": + signals.status_message.send( + message = "Hold down alt or ctrl to select text.", + expire = 1 + ) + return False + def keypress(self, size, k): k = super(self.__class__, self).keypress(size, k) if k == "?": -- cgit v1.2.3 From b5bb4106fd9a017b87fc9515bb3448b78497f80c Mon Sep 17 00:00:00 2001 From: Aldo Cortesi Date: Tue, 2 Jun 2015 11:13:12 +1200 Subject: console: mouse scrollwheel throughout. --- libmproxy/console/window.py | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) (limited to 'libmproxy/console/window.py') diff --git a/libmproxy/console/window.py b/libmproxy/console/window.py index 600ae413..8754ed57 100644 --- a/libmproxy/console/window.py +++ b/libmproxy/console/window.py @@ -20,12 +20,19 @@ class Window(urwid.Frame): def mouse_event(self, *args, **kwargs): # args: (size, event, button, col, row) k = super(self.__class__, self).mouse_event(*args, **kwargs) - if args[1] == "mouse drag": - signals.status_message.send( - message = "Hold down alt or ctrl to select text.", - expire = 1 - ) - return False + if not k: + if args[1] == "mouse drag": + signals.status_message.send( + message = "Hold down alt or ctrl to select text.", + expire = 1 + ) + elif args[1] == "mouse press" and args[2] == 4: + self.keypress(args[0], "up") + elif args[1] == "mouse press" and args[2] == 5: + self.keypress(args[0], "down") + else: + return False + return True def keypress(self, size, k): k = super(self.__class__, self).keypress(size, k) -- cgit v1.2.3