Coding style.
- Use a context manager for signal_handlers.
This commit is contained in:
parent
cf95fa1088
commit
39bda8cafb
1 changed files with 20 additions and 15 deletions
|
|
@ -479,26 +479,31 @@ def on_terminal_input(screen_widget):
|
||||||
return screen_widget.on_input_event(code) # keyboard
|
return screen_widget.on_input_event(code) # keyboard
|
||||||
|
|
||||||
|
|
||||||
|
@contextlib.contextmanager
|
||||||
|
def signal_handler(loop, signal_, func):
|
||||||
|
loop.add_signal_handler(signal_, func)
|
||||||
|
try:
|
||||||
|
yield
|
||||||
|
finally:
|
||||||
|
loop.remove_signal_handler(signal_)
|
||||||
|
|
||||||
|
|
||||||
@contextlib.contextmanager
|
@contextlib.contextmanager
|
||||||
def context(loop, appearance_changed_event, screen_widget, exit_loop=None):
|
def context(loop, appearance_changed_event, screen_widget, exit_loop=None):
|
||||||
appearance_changed_event.set()
|
appearance_changed_event.set()
|
||||||
if exit_loop is None:
|
if exit_loop is None:
|
||||||
exit_loop = loop.stop
|
exit_loop = loop.stop
|
||||||
loop.add_signal_handler(signal.SIGWINCH, lambda: draw_screen(screen_widget))
|
with signal_handler(loop, signal.SIGWINCH,
|
||||||
loop.add_signal_handler(signal.SIGINT, exit_loop)
|
lambda: draw_screen(screen_widget)), \
|
||||||
loop.add_signal_handler(signal.SIGTERM, exit_loop)
|
signal_handler(loop, signal.SIGINT, exit_loop), \
|
||||||
try:
|
signal_handler(loop, signal.SIGTERM, exit_loop), \
|
||||||
with terminal.alternate_buffer(), terminal.interactive(), \
|
terminal.alternate_buffer(), terminal.interactive(), \
|
||||||
terminal.mouse_tracking():
|
terminal.mouse_tracking():
|
||||||
loop.add_reader(sys.stdin, on_terminal_input, screen_widget)
|
loop.add_reader(sys.stdin, on_terminal_input, screen_widget)
|
||||||
try:
|
try:
|
||||||
yield
|
yield
|
||||||
finally:
|
finally:
|
||||||
loop.remove_reader(sys.stdin)
|
loop.remove_reader(sys.stdin)
|
||||||
finally:
|
|
||||||
loop.remove_signal_handler(signal.SIGWINCH)
|
|
||||||
loop.remove_signal_handler(signal.SIGINT)
|
|
||||||
loop.remove_signal_handler(signal.SIGTERM)
|
|
||||||
|
|
||||||
|
|
||||||
##########################
|
##########################
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue