diff options
Diffstat (limited to 'libmproxy/console/__init__.py')
-rw-r--r-- | libmproxy/console/__init__.py | 58 |
1 files changed, 31 insertions, 27 deletions
diff --git a/libmproxy/console/__init__.py b/libmproxy/console/__init__.py index 3b3f2df2..5c2402f6 100644 --- a/libmproxy/console/__init__.py +++ b/libmproxy/console/__init__.py @@ -16,7 +16,7 @@ import weakref from .. import controller, flow, script from . import flowlist, flowview, help, window, signals, options -from . import grideditor, palettes, contentview, statusbar +from . import grideditor, palettes, contentview, statusbar, palettepicker EVENTLOG_SIZE = 500 @@ -132,6 +132,7 @@ class Options(object): "wfile", "nopop", "palette", + "palette_transparent" ] def __init__(self, **kwargs): @@ -156,9 +157,6 @@ class ConsoleMaster(flow.FlowMaster): for i in options.setheaders: self.setheaders.add(*i) - self.flow_list_walker = None - self.set_palette(options.palette) - r = self.set_intercept(options.intercept) if r: print >> sys.stderr, "Intercept error:", r @@ -183,6 +181,8 @@ class ConsoleMaster(flow.FlowMaster): self.rheaders = options.rheaders self.nopop = options.nopop self.showhost = options.showhost + self.palette = options.palette + self.palette_transparent = options.palette_transparent self.eventlog = options.eventlog self.eventlist = urwid.SimpleListWalker([]) @@ -391,7 +391,11 @@ class ConsoleMaster(flow.FlowMaster): os.unlink(name) def set_palette(self, name): - self.palette = palettes.palettes[name] + self.palette = name + self.ui.register_palette( + palettes.palettes[name].palette(self.palette_transparent) + ) + self.ui.clear() def ticker(self, *userdata): changed = self.tick(self.masterq, timeout=0) @@ -403,8 +407,7 @@ class ConsoleMaster(flow.FlowMaster): def run(self): self.ui = urwid.raw_display.Screen() self.ui.set_terminal_properties(256) - self.ui.register_palette(self.palette.palette()) - self.flow_list_walker = flowlist.FlowListWalker(self, self.state) + self.set_palette(self.palette) self.loop = urwid.MainLoop( urwid.SolidFill("x"), screen = self.ui, @@ -466,13 +469,26 @@ class ConsoleMaster(flow.FlowMaster): ) def view_options(self): + for i in self.view_stack: + if isinstance(i["body"], options.Options): + return signals.push_view_state.send(self) self.loop.widget = window.Window( self, options.Options(self), None, statusbar.StatusBar(self, options.footer), - None + options.help_context, + ) + + def view_palette_picker(self): + signals.push_view_state.send(self) + self.loop.widget = window.Window( + self, + palettepicker.PalettePicker(self), + None, + statusbar.StatusBar(self, palettepicker.footer), + palettepicker.help_context, ) def view_grideditor(self, ge): @@ -547,8 +563,7 @@ class ConsoleMaster(flow.FlowMaster): flow.FlowMaster.load_flows_file(self, path) except flow.FlowReadError, v: reterr = str(v) - if self.flow_list_walker: - self.sync_list_view() + signals.flowlist_change.send(self) return reterr def accept_all(self): @@ -556,7 +571,7 @@ class ConsoleMaster(flow.FlowMaster): def set_limit(self, txt): v = self.state.set_limit(txt) - self.sync_list_view() + signals.flowlist_change.send(self) return v def set_intercept(self, txt): @@ -575,14 +590,7 @@ class ConsoleMaster(flow.FlowMaster): self.unload_scripts() for command in commands: self.load_script(command) - - def edit_ignore_filter(self, ignore): - patterns = (x[0] for x in ignore) - self.set_ignore_filter(patterns) - - def edit_tcp_filter(self, tcp): - patterns = (x[0] for x in tcp) - self.set_tcp_filter(patterns) + signals.update_settings.send(self) def stop_client_playback_prompt(self, a): if a != "n": @@ -600,13 +608,9 @@ class ConsoleMaster(flow.FlowMaster): self.state.killall(self) flow.FlowMaster.shutdown(self) - def sync_list_view(self): - self.flow_list_walker._modified() - signals.update_settings.send(self) - def clear_flows(self): self.state.clear() - self.sync_list_view() + signals.flowlist_change.send(self) def toggle_follow_flows(self): # toggle flow follow @@ -614,11 +618,11 @@ class ConsoleMaster(flow.FlowMaster): # jump to most recent flow if follow is now on if self.state.follow_focus: self.state.set_focus(self.state.flow_count()) - self.sync_list_view() + signals.flowlist_change.send(self) def delete_flow(self, f): self.state.delete_flow(f) - self.sync_list_view() + signals.flowlist_change.send(self) def refresh_focus(self): if self.state.view: @@ -632,7 +636,7 @@ class ConsoleMaster(flow.FlowMaster): f.intercept(self) else: f.reply() - self.sync_list_view() + signals.flowlist_change.send(self) signals.flow_change.send(self, flow = f) def clear_events(self): |