From 50b55e4d3ed77be980c24943f580d356ff34acd0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Fri, 12 Apr 2019 08:55:51 +0530 Subject: [PATCH] Confirm cancel on library restore dialog Fixes #1823204 [Enhancement: avoid losing hours of work](https://bugs.launchpad.net/calibre/+bug/1823204) --- src/calibre/gui2/dialogs/restore_library.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/calibre/gui2/dialogs/restore_library.py b/src/calibre/gui2/dialogs/restore_library.py index 849feb0065..dc260c0aff 100644 --- a/src/calibre/gui2/dialogs/restore_library.py +++ b/src/calibre/gui2/dialogs/restore_library.py @@ -35,7 +35,7 @@ class DBRestore(QDialog): self.msg.setWordWrap(True) self.bb = QDialogButtonBox(QDialogButtonBox.Cancel) self.l.addWidget(self.bb) - self.bb.rejected.connect(self.reject) + self.bb.rejected.connect(self.confirm_cancel) self.resize(self.sizeHint() + QSize(100, 50)) self.error = None self.rejected = False @@ -58,6 +58,12 @@ class DBRestore(QDialog): self.restorer.progress_callback = lambda x, y: x QDialog.reject(self) + def confirm_cancel(self): + if question_dialog(self, _('Are you sure?'), _( + 'The restore has not completed, are you sure you want to cancel?'), + default_yes=False, override_icon='dialog_warning.png'): + self.reject() + def update(self): if self.restorer.is_alive(): QTimer.singleShot(10, self.update) @@ -136,4 +142,8 @@ def repair_library_at(library_path, parent=None, wait_time=2): return True - +if __name__ == '__main__': + from calibre.gui2 import Application + app = Application([]) + repair_library_at('/t') + del app