Use a check box instead of a button to save cover generation settings as defaults

This commit is contained in:
Kovid Goyal 2014-09-24 11:17:21 +05:30
parent d663c95b54
commit b1dbaa82ac

View File

@ -13,7 +13,7 @@ from PyQt5.Qt import (
QWidget, QHBoxLayout, QTabWidget, QLabel, QSizePolicy, QSize, QFormLayout, QWidget, QHBoxLayout, QTabWidget, QLabel, QSizePolicy, QSize, QFormLayout,
QSpinBox, pyqtSignal, QPixmap, QDialog, QVBoxLayout, QDialogButtonBox, QSpinBox, pyqtSignal, QPixmap, QDialog, QVBoxLayout, QDialogButtonBox,
QListWidget, QListWidgetItem, Qt, QGridLayout, QPushButton, QIcon, 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.ebooks.covers import all_styles, cprefs, generate_cover, override_prefs, default_color_themes
from calibre.gui2 import gprefs, error_dialog from calibre.gui2 import gprefs, error_dialog
@ -106,6 +106,7 @@ class CoverSettingsWidget(QWidget):
self.for_global_prefs = for_global_prefs self.for_global_prefs = for_global_prefs
self.l = l = QHBoxLayout(self) self.l = l = QHBoxLayout(self)
l.setContentsMargins(0, 0, 0, 0)
self.setLayout(l) self.setLayout(l)
self.settings_tabs = st = QTabWidget(self) self.settings_tabs = st = QTabWidget(self)
l.addWidget(st) l.addWidget(st)
@ -128,8 +129,7 @@ class CoverSettingsWidget(QWidget):
else: else:
msg = _('Choose a color scheme to be used for this generated cover.') + '<p>' + _( msg = _('Choose a color scheme to be used for this generated cover.') + '<p>' + _(
'In normal cover generation, the color scheme is chosen at random from the list of color schemes below. You' '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' ' can prevent an individual color scheme from being chosen by unchecking it here.')
' "Save as default settings" button.')
cp.la = la = QLabel('<p>' + msg) cp.la = la = QLabel('<p>' + msg)
la.setWordWrap(True) la.setWordWrap(True)
l.addWidget(la, 0, 0, 1, -1) l.addWidget(la, 0, 0, 1, -1)
@ -157,8 +157,7 @@ class CoverSettingsWidget(QWidget):
else: else:
msg = _('Choose a style to be used for this generated cover.') + '<p>' + _( msg = _('Choose a style to be used for this generated cover.') + '<p>' + _(
'In normal cover generation, the style is chosen at random from the list of styles below. You' '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' ' can prevent an individual style from being chosen by unchecking it here.')
' "Save as default settings" button.')
sp.la = la = QLabel('<p>' + msg) sp.la = la = QLabel('<p>' + msg)
la.setWordWrap(True) la.setWordWrap(True)
l.addWidget(la) l.addWidget(la)
@ -506,14 +505,15 @@ class CoverSettingsDialog(QDialog):
self.setLayout(l) self.setLayout(l)
self.settings = CoverSettingsWidget(mi=mi, prefs=prefs, parent=self) self.settings = CoverSettingsWidget(mi=mi, prefs=prefs, parent=self)
l.addWidget(self.settings) 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) self.bb = bb = QDialogButtonBox(QDialogButtonBox.Ok | QDialogButtonBox.Cancel)
l.addWidget(bb) l.addWidget(bb)
bb.accepted.connect(self.accept), bb.rejected.connect(self.reject) bb.accepted.connect(self.accept), bb.rejected.connect(self.reject)
bb.b = b = bb.addButton(_('Restore &defaults'), bb.ActionRole) bb.b = b = bb.addButton(_('Restore &defaults'), bb.ActionRole)
b.clicked.connect(self.restore_defaults) b.clicked.connect(self.restore_defaults)
bb.b2 = b = bb.addButton(_('&Save settings'), bb.ActionRole) ss.setToolTip('<p>' + _(
b.clicked.connect(self.settings.save_as_prefs)
b.setToolTip('<p>' + _(
'Save the current settings as the settings to use always instead of just this time. Remember that' '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' ' for styles and colors the actual style or color used is chosen at random from'
' the list of checked styles/colors.')) ' the list of checked styles/colors.'))
@ -528,18 +528,20 @@ class CoverSettingsDialog(QDialog):
self.settings.restore_defaults() self.settings.restore_defaults()
self.settings.save_as_prefs() self.settings.save_as_prefs()
def sizeHint(self): def _save_settings(self):
return QSize(800, 600) gprefs.set('cover_generation_save_settings_for_future', self.save_settings.isChecked())
def accept(self):
gprefs.set('cover_settings_dialog_geom', bytearray(self.saveGeometry())) gprefs.set('cover_settings_dialog_geom', bytearray(self.saveGeometry()))
self.settings.save_state() self.settings.save_state()
def accept(self):
self._save_settings()
self.prefs_for_rendering = self.settings.prefs_for_rendering self.prefs_for_rendering = self.settings.prefs_for_rendering
if self.save_settings.isChecked():
self.settings.save_as_prefs()
QDialog.accept(self) QDialog.accept(self)
def reject(self): def reject(self):
gprefs.set('cover_settings_dialog_geom', bytearray(self.saveGeometry())) self._save_settings()
self.settings.save_state()
QDialog.reject(self) QDialog.reject(self)
if __name__ == '__main__': if __name__ == '__main__':