mirror of
https://github.com/zhigang1992/mitmproxy.git
synced 2026-04-29 12:45:00 +08:00
Status bar message expiry based on signals and Urwid main loop
This commit is contained in:
@@ -212,6 +212,12 @@ class ConsoleMaster(flow.FlowMaster):
|
||||
|
||||
if options.app:
|
||||
self.start_app(self.options.app_host, self.options.app_port)
|
||||
signals.call_in.connect(self.sig_call_in)
|
||||
|
||||
def sig_call_in(self, sender, seconds, callback, args=()):
|
||||
def cb(*_):
|
||||
return callback(*args)
|
||||
self.loop.set_alarm_in(seconds, cb)
|
||||
|
||||
def start_stream_to_path(self, path, mode="wb"):
|
||||
path = os.path.expanduser(path)
|
||||
@@ -576,7 +582,7 @@ class ConsoleMaster(flow.FlowMaster):
|
||||
self.prompt_done()
|
||||
msg = p(txt, *args)
|
||||
if msg:
|
||||
signals.status_message.send(message=msg, expire=1000)
|
||||
signals.status_message.send(message=msg, expire=1)
|
||||
|
||||
def prompt_cancel(self):
|
||||
self.prompt_done()
|
||||
|
||||
@@ -132,7 +132,7 @@ class GridWalker(urwid.ListWalker):
|
||||
errors = self.lst[self.focus][1]
|
||||
emsg = self.editor.is_error(self.focus_col, val)
|
||||
if emsg:
|
||||
signals.status_message.send(message = emsg, expire = 1000)
|
||||
signals.status_message.send(message = emsg, expire = 1)
|
||||
errors.add(self.focus_col)
|
||||
else:
|
||||
errors.discard(self.focus_col)
|
||||
|
||||
@@ -2,3 +2,4 @@
|
||||
import blinker
|
||||
|
||||
status_message = blinker.Signal()
|
||||
call_in = blinker.Signal()
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
|
||||
import time
|
||||
|
||||
import urwid
|
||||
@@ -7,11 +6,14 @@ from . import pathedit, signals
|
||||
from .. import utils
|
||||
|
||||
|
||||
|
||||
class ActionBar(urwid.WidgetWrap):
|
||||
def __init__(self):
|
||||
urwid.WidgetWrap.__init__(self, urwid.Text(""))
|
||||
signals.status_message.connect(self.message)
|
||||
urwid.WidgetWrap.__init__(self, None)
|
||||
self.clear()
|
||||
signals.status_message.connect(self.sig_message)
|
||||
|
||||
def clear(self):
|
||||
self._w = urwid.Text("")
|
||||
|
||||
def selectable(self):
|
||||
return True
|
||||
@@ -22,9 +24,14 @@ class ActionBar(urwid.WidgetWrap):
|
||||
def prompt(self, prompt, text = ""):
|
||||
self._w = urwid.Edit(prompt, text or "")
|
||||
|
||||
def message(self, sender, message, expire=None):
|
||||
self.expire = expire
|
||||
self._w = urwid.Text(message)
|
||||
def sig_message(self, sender, message, expire=None):
|
||||
w = urwid.Text(message)
|
||||
self._w = w
|
||||
if expire:
|
||||
def cb(*args):
|
||||
if w == self._w:
|
||||
self.clear()
|
||||
signals.call_in.send(seconds=expire, callback=cb)
|
||||
|
||||
|
||||
class StatusBar(urwid.WidgetWrap):
|
||||
|
||||
Reference in New Issue
Block a user