From 808bb2155b122232107f00d2d78461dfa678a3f6 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 29 Dec 2008 15:04:13 -0800 Subject: [PATCH] Make delete books confirmation dialog show by default --- src/calibre/gui2/dialogs/config.py | 2 - src/calibre/gui2/dialogs/config.ui | 11 +-- src/calibre/gui2/dialogs/confirm_delete.py | 31 +++++++ src/calibre/gui2/dialogs/confirm_delete.ui | 100 +++++++++++++++++++++ src/calibre/gui2/main.py | 9 +- 5 files changed, 136 insertions(+), 17 deletions(-) create mode 100644 src/calibre/gui2/dialogs/confirm_delete.py create mode 100644 src/calibre/gui2/dialogs/confirm_delete.ui diff --git a/src/calibre/gui2/dialogs/config.py b/src/calibre/gui2/dialogs/config.py index def355d974..5e63bcdfd5 100644 --- a/src/calibre/gui2/dialogs/config.py +++ b/src/calibre/gui2/dialogs/config.py @@ -186,7 +186,6 @@ class ConfigDialog(QDialog, Ui_Dialog): single_format = config['save_to_disk_single_format'] self.single_format.setCurrentIndex(BOOK_EXTENSIONS.index(single_format)) self.cover_browse.setValue(config['cover_flow_queue_length']) - self.confirm_delete.setChecked(config['confirm_delete']) from calibre.translations.compiled import translations from calibre.translations import language_codes from calibre.startup import get_lang @@ -393,7 +392,6 @@ class ConfigDialog(QDialog, Ui_Dialog): config['column_map'] = cols config['toolbar_icon_size'] = self.ICON_SIZES[self.toolbar_button_size.currentIndex()] config['show_text_in_toolbar'] = bool(self.show_toolbar_text.isChecked()) - config['confirm_delete'] = bool(self.confirm_delete.isChecked()) pattern = self.filename_pattern.commit() prefs['filename_pattern'] = pattern p = {0:'normal', 1:'high', 2:'low'}[self.priority.currentIndex()] diff --git a/src/calibre/gui2/dialogs/config.ui b/src/calibre/gui2/dialogs/config.ui index 99c74fc345..0bfbfd73c4 100644 --- a/src/calibre/gui2/dialogs/config.ui +++ b/src/calibre/gui2/dialogs/config.ui @@ -72,7 +72,7 @@ - 4 + 0 @@ -127,17 +127,10 @@ - - - - Ask for &confirmation before deleting files - - - - If you disable this setting, metadatas is guessed from the filename instead. This can be configured in the Advanced section. + If you disable this setting, metadata is guessed from the filename instead. This can be configured in the Advanced section. Read &metadata from files diff --git a/src/calibre/gui2/dialogs/confirm_delete.py b/src/calibre/gui2/dialogs/confirm_delete.py new file mode 100644 index 0000000000..08db53e9a7 --- /dev/null +++ b/src/calibre/gui2/dialogs/confirm_delete.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python +__license__ = 'GPL v3' +__copyright__ = '2008, Kovid Goyal kovid@kovidgoyal.net' +__docformat__ = 'restructuredtext en' + +from calibre.gui2 import dynamic +from calibre.gui2.dialogs.confirm_delete_ui import Ui_Dialog +from PyQt4.Qt import QDialog, SIGNAL + +def _config_name(name): + return name + '_again' + +class Dialog(QDialog, Ui_Dialog): + + def __init__(self, msg, name, parent): + QDialog.__init__(self, parent) + self.setupUi(self) + + self.msg.setText(msg) + self.name = name + self.connect(self.again, SIGNAL('stateChanged(int)'), self.toggle) + + + def toggle(self, x): + dynamic[_config_name(self.name)] = self.again.isChecked() + +def confirm(msg, name, parent=None): + if not dynamic.get(_config_name(name), True): + return True + d = Dialog(msg, name, parent) + return d.exec_() == d.Accepted \ No newline at end of file diff --git a/src/calibre/gui2/dialogs/confirm_delete.ui b/src/calibre/gui2/dialogs/confirm_delete.ui new file mode 100644 index 0000000000..1ee4cb79d9 --- /dev/null +++ b/src/calibre/gui2/dialogs/confirm_delete.ui @@ -0,0 +1,100 @@ + + Dialog + + + + 0 + 0 + 439 + 300 + + + + Are you sure? + + + + :/images/dialog_warning.svg:/images/dialog_warning.svg + + + + + + + + :/images/dialog_warning.svg + + + + + + + TextLabel + + + true + + + + + + + + + &Show this warning again + + + true + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + + + + + + + + + + buttonBox + accepted() + Dialog + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + Dialog + reject() + + + 316 + 260 + + + 286 + 274 + + + + + diff --git a/src/calibre/gui2/main.py b/src/calibre/gui2/main.py index abf0aed0fa..0385d7f57f 100644 --- a/src/calibre/gui2/main.py +++ b/src/calibre/gui2/main.py @@ -49,6 +49,7 @@ from calibre.library.database2 import LibraryDatabase2, CoverCache from calibre.parallel import JobKilled from calibre.utils.filenames import ascii_filename from calibre.gui2.widgets import WarningDialog +from calibre.gui2.dialogs.confirm_delete import confirm class Main(MainWindow, Ui_MainWindow): @@ -758,13 +759,9 @@ class Main(MainWindow, Ui_MainWindow): rows = view.selectionModel().selectedRows() if not rows or len(rows) == 0: return - if config['confirm_delete']: - d = question_dialog(self, _('Confirm delete'), - _('Are you sure you want to delete these %d books?')%len(rows)) - if d.exec_() != QMessageBox.Yes: - return - if self.stack.currentIndex() == 0: + if not confirm('

'+_('The selected books will be permanently deleted and the files removed from your computer. Are you sure?')+'

', 'library_delete_books', self): + return view.model().delete_books(rows) else: view = self.memory_view if self.stack.currentIndex() == 1 else self.card_view