handle SIGINT with a quit prompt (#1760)

This commit is contained in:
Edgar Boda-Majer 2016-11-20 16:40:04 +01:00 committed by Thomas Kriechbaumer
parent b6e419d640
commit 078f36d86a

View File

@ -3,6 +3,7 @@ import mimetypes
import os
import os.path
import shlex
import signal
import stat
import subprocess
import sys
@ -91,6 +92,11 @@ class ConsoleMaster(master.Master):
self.addons.add(*addons.default_addons())
self.addons.add(intercept.Intercept(), self.view)
def sigint_handler(*args, **kwargs):
self.prompt_for_exit()
signal.signal(signal.SIGINT, sigint_handler)
def __setattr__(self, name, value):
self.__dict__[name] = value
signals.update_settings.send(self)
@ -101,6 +107,17 @@ class ConsoleMaster(master.Master):
expire=1
)
def prompt_for_exit(self):
signals.status_prompt_onekey.send(
self,
prompt = "Quit",
keys = (
("yes", "y"),
("no", "n"),
),
callback = self.quit,
)
def sig_add_log(self, sender, e, level):
if self.options.verbosity < log.log_tier(level):
return
@ -139,15 +156,7 @@ class ConsoleMaster(master.Master):
self.view_stack.pop()
self.loop.widget = self.view_stack[-1]
else:
signals.status_prompt_onekey.send(
self,
prompt = "Quit",
keys = (
("yes", "y"),
("no", "n"),
),
callback = self.quit,
)
self.prompt_for_exit()
def sig_push_view_state(self, sender, window):
"""