diff --git a/src/calibre/gui2/main_window.py b/src/calibre/gui2/main_window.py index 3b0e995308..2779a18733 100644 --- a/src/calibre/gui2/main_window.py +++ b/src/calibre/gui2/main_window.py @@ -4,7 +4,7 @@ __copyright__ = '2008, Kovid Goyal ' 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) diff --git a/src/calibre/gui2/ui.py b/src/calibre/gui2/ui.py index bf520f62e7..99ab5470dc 100644 --- a/src/calibre/gui2/ui.py +++ b/src/calibre/gui2/ui.py @@ -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)