diff options
author | Miroslav <ttahabatt@gmail.com> | 2018-02-28 00:18:18 +0200 |
---|---|---|
committer | Miroslav <ttahabatt@gmail.com> | 2018-02-28 00:18:18 +0200 |
commit | 5161458217227123069911c4d2dae39fcb603720 (patch) | |
tree | 758f5478937049b4d8c50a825e5221edd143254e | |
parent | 90166084866952c578b2dd81a0aa19ed516a619e (diff) | |
download | mitmproxy-5161458217227123069911c4d2dae39fcb603720.tar.gz mitmproxy-5161458217227123069911c4d2dae39fcb603720.tar.bz2 mitmproxy-5161458217227123069911c4d2dae39fcb603720.zip |
Shortening notifications in statusbar
-rw-r--r-- | mitmproxy/tools/console/master.py | 3 | ||||
-rw-r--r-- | mitmproxy/tools/console/statusbar.py | 32 |
2 files changed, 33 insertions, 2 deletions
diff --git a/mitmproxy/tools/console/master.py b/mitmproxy/tools/console/master.py index 5da6ef0b..397fc8e8 100644 --- a/mitmproxy/tools/console/master.py +++ b/mitmproxy/tools/console/master.py @@ -94,7 +94,8 @@ class ConsoleMaster(master.Master): self.start_err = entry else: signals.status_message.send( - message=(entry.level, "{}: {}".format(entry.level.title(), entry.msg)), + message=(entry.level, "{}: {}".format(entry.level.title(), + entry.msg.lstrip())), expire=5 ) diff --git a/mitmproxy/tools/console/statusbar.py b/mitmproxy/tools/console/statusbar.py index 8553a66f..d4563515 100644 --- a/mitmproxy/tools/console/statusbar.py +++ b/mitmproxy/tools/console/statusbar.py @@ -49,7 +49,7 @@ class ActionBar(urwid.WidgetWrap): def sig_message(self, sender, message, expire=1): if self.prompting: return - w = urwid.Text(message) + w = urwid.Text(self.prep_message(message)) self._w = w if expire: def cb(*args): @@ -60,6 +60,36 @@ class ActionBar(urwid.WidgetWrap): def prep_prompt(self, p): return p.strip() + ": " + def prep_message(self, msg): + cols, _ = self.master.ui.get_cols_rows() + eventlog_prompt = "(more in eventlog)" + if isinstance(msg, (tuple, list)): + log_level, msg_text = msg + elif isinstance(msg, str): + log_level, msg_text = None, msg + else: + return msg + + msg_lines = msg_text.split("\n") + first_line = msg_lines[0] + + def prep_line(line, eventlog_prompt, cols): + if cols < len(eventlog_prompt) + 3: + first_line = "..." + else: + first_line = line[:cols - len(eventlog_prompt) - 3] + "..." + return first_line + + if len(msg_lines) > 1: + if len(first_line) + len(eventlog_prompt) > cols: + first_line = prep_line(first_line, eventlog_prompt, cols) + else: + if len(first_line) > cols: + first_line = prep_line(first_line, eventlog_prompt, cols) + else: + eventlog_prompt = "" + return [(log_level, first_line), ("warn", eventlog_prompt)] + def sig_prompt(self, sender, prompt, text, callback, args=()): signals.focus.send(self, section="footer") self._w = urwid.Edit(self.prep_prompt(prompt), text or "") |