From b1dbaa82acf697a0e6fccffe3cb7da864229e6a0 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 24 Sep 2014 11:17:21 +0530 Subject: [PATCH] Use a check box instead of a button to save cover generation settings as defaults --- src/calibre/gui2/covers.py | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/src/calibre/gui2/covers.py b/src/calibre/gui2/covers.py index bd55135f2b..810bf46c1d 100644 --- a/src/calibre/gui2/covers.py +++ b/src/calibre/gui2/covers.py @@ -13,7 +13,7 @@ from PyQt5.Qt import ( QWidget, QHBoxLayout, QTabWidget, QLabel, QSizePolicy, QSize, QFormLayout, QSpinBox, pyqtSignal, QPixmap, QDialog, QVBoxLayout, QDialogButtonBox, QListWidget, QListWidgetItem, Qt, QGridLayout, QPushButton, QIcon, - QColorDialog, QToolButton, QLineEdit, QColor, QFrame, QTimer) + QColorDialog, QToolButton, QLineEdit, QColor, QFrame, QTimer, QCheckBox) from calibre.ebooks.covers import all_styles, cprefs, generate_cover, override_prefs, default_color_themes from calibre.gui2 import gprefs, error_dialog @@ -106,6 +106,7 @@ class CoverSettingsWidget(QWidget): self.for_global_prefs = for_global_prefs self.l = l = QHBoxLayout(self) + l.setContentsMargins(0, 0, 0, 0) self.setLayout(l) self.settings_tabs = st = QTabWidget(self) l.addWidget(st) @@ -128,8 +129,7 @@ class CoverSettingsWidget(QWidget): else: msg = _('Choose a color scheme to be used for this generated cover.') + '

' + _( 'In normal cover generation, the color scheme is chosen at random from the list of color schemes below. You' - ' can prevent an individual color scheme from being chosen by unchecking it here and clicking the' - ' "Save as default settings" button.') + ' can prevent an individual color scheme from being chosen by unchecking it here.') cp.la = la = QLabel('

' + msg) la.setWordWrap(True) l.addWidget(la, 0, 0, 1, -1) @@ -157,8 +157,7 @@ class CoverSettingsWidget(QWidget): else: msg = _('Choose a style to be used for this generated cover.') + '

' + _( 'In normal cover generation, the style is chosen at random from the list of styles below. You' - ' can prevent an individual style from being chosen by unchecking it here and clicking the' - ' "Save as default settings" button.') + ' can prevent an individual style from being chosen by unchecking it here.') sp.la = la = QLabel('

' + msg) la.setWordWrap(True) l.addWidget(la) @@ -506,14 +505,15 @@ class CoverSettingsDialog(QDialog): self.setLayout(l) self.settings = CoverSettingsWidget(mi=mi, prefs=prefs, parent=self) l.addWidget(self.settings) + self.save_settings = ss = QCheckBox(_('Save these settings as the &defaults for future use')) + ss.setChecked(gprefs.get('cover_generation_save_settings_for_future', True)) + l.addWidget(ss) self.bb = bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel) l.addWidget(bb) bb.accepted.connect(self.accept), bb.rejected.connect(self.reject) bb.b = b = bb.addButton(_('Restore &defaults'), bb.ActionRole) b.clicked.connect(self.restore_defaults) - bb.b2 = b = bb.addButton(_('&Save settings'), bb.ActionRole) - b.clicked.connect(self.settings.save_as_prefs) - b.setToolTip('

' + _( + ss.setToolTip('

' + _( 'Save the current settings as the settings to use always instead of just this time. Remember that' ' for styles and colors the actual style or color used is chosen at random from' ' the list of checked styles/colors.')) @@ -528,18 +528,20 @@ class CoverSettingsDialog(QDialog): self.settings.restore_defaults() self.settings.save_as_prefs() - def sizeHint(self): - return QSize(800, 600) - - def accept(self): + def _save_settings(self): + gprefs.set('cover_generation_save_settings_for_future', self.save_settings.isChecked()) gprefs.set('cover_settings_dialog_geom', bytearray(self.saveGeometry())) self.settings.save_state() + + def accept(self): + self._save_settings() self.prefs_for_rendering = self.settings.prefs_for_rendering + if self.save_settings.isChecked(): + self.settings.save_as_prefs() QDialog.accept(self) def reject(self): - gprefs.set('cover_settings_dialog_geom', bytearray(self.saveGeometry())) - self.settings.save_state() + self._save_settings() QDialog.reject(self) if __name__ == '__main__':