Interpret a Keyboard interrupt (Ctrl+C) as a request to quit the main GUI

This commit is contained in:
Kovid Goyal 2010-05-08 20:18:31 -06:00
parent c97464fd22
commit 2660fcae0f
2 changed files with 8 additions and 1 deletions

View File

@ -4,7 +4,7 @@ __copyright__ = '2008, Kovid Goyal <kovid at kovidgoyal.net>'
import StringIO, traceback, sys
from PyQt4.Qt import QMainWindow, QString, Qt, QFont, QCoreApplication, SIGNAL,\
QAction, QMenu, QMenuBar, QIcon
QAction, QMenu, QMenuBar, QIcon, pyqtSignal
from calibre.gui2.dialogs.conversion_error import ConversionErrorDialog
from calibre.utils.config import OptionParser
from calibre.gui2 import error_dialog
@ -41,6 +41,8 @@ class MainWindow(QMainWindow):
___menu = None
__actions = []
keyboard_interrupt = pyqtSignal()
@classmethod
def create_application_menubar(cls):
mb = QMenuBar(None)
@ -76,6 +78,9 @@ class MainWindow(QMainWindow):
print 'Received signal:', repr(signal)
def unhandled_exception(self, type, value, tb):
if type == KeyboardInterrupt:
self.keyboard_interrupt.emit()
return
try:
sio = StringIO.StringIO()
traceback.print_exception(type, value, tb, file=sio)

View File

@ -634,6 +634,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
height = v.rowHeight(0)
self.library_view.verticalHeader().setDefaultSectionSize(height)
self.keyboard_interrupt.connect(self.quit, type=Qt.QueuedConnection)
def resizeEvent(self, ev):
MainWindow.resizeEvent(self, ev)