Fix restore defaults

This commit is contained in:
Kovid Goyal 2014-09-23 09:26:41 +05:30
parent d875710f01
commit a7c8de3357

View File

@ -89,11 +89,11 @@ class CreateColorScheme(QDialog):
name = self.name.text() name = self.name.text()
if not name or len(name) < 2 or not name.startswith('#'): if not name or len(name) < 2 or not name.startswith('#'):
return error_dialog(self, _('Invalid name'), _( return error_dialog(self, _('Invalid name'), _(
'The color scheme name %r is invalid. It must start with a # and be at least two characters long.') % name, show=True) 'The color scheme name "%s" is invalid. It must start with a # and be at least two characters long.') % name, show=True)
if name in self.existing_names: if name in self.existing_names:
if not self.is_editing or name != self.scheme_name: if not self.is_editing or name != self.scheme_name:
return error_dialog(self, _('Invalid name'), _( return error_dialog(self, _('Invalid name'), _(
'A color scheme with the name %r already exists.') % name, show=True) 'A color scheme with the name "%s" already exists.') % name, show=True)
QDialog.accept(self) QDialog.accept(self)
class CoverSettingsWidget(QWidget): class CoverSettingsWidget(QWidget):
@ -103,6 +103,7 @@ class CoverSettingsWidget(QWidget):
def __init__(self, mi=None, prefs=None, parent=None, for_global_prefs=False): def __init__(self, mi=None, prefs=None, parent=None, for_global_prefs=False):
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.ignore_changed = False self.ignore_changed = False
self.for_global_prefs = for_global_prefs
self.l = l = QHBoxLayout(self) self.l = l = QHBoxLayout(self)
self.setLayout(l) self.setLayout(l)
@ -134,25 +135,7 @@ class CoverSettingsWidget(QWidget):
l.addWidget(la, 0, 0, 1, -1) l.addWidget(la, 0, 0, 1, -1)
self.colors_list = cl = QListWidget(cp) self.colors_list = cl = QListWidget(cp)
l.addWidget(cl, 1, 0, 1, -1) l.addWidget(cl, 1, 0, 1, -1)
disabled = set(prefs['disabled_color_themes'])
self.colors_map = OrderedDict() self.colors_map = OrderedDict()
color_themes = prefs['color_themes'].copy()
color_themes.update(default_color_themes)
for name in sorted(color_themes, key=sort_key):
self.colors_map[name] = li = QListWidgetItem(name, cl)
li.setFlags(li.flags() | Qt.ItemIsUserCheckable)
li.setCheckState(Qt.Unchecked if name in disabled else Qt.Checked)
li.setData(Qt.UserRole, color_themes[name])
lu = prefs.get('last_used_colors')
if not for_global_prefs and lu in self.colors_map and self.colors_map[lu].checkState() == Qt.Checked:
self.colors_map[lu].setSelected(True)
else:
for name, li in self.colors_map.iteritems():
if li.checkState() == Qt.Checked:
li.setSelected(True)
break
else:
next(self.colors_map.itervalues()).setSelected(True)
self.ncs = ncs = QPushButton(QIcon(I('plus.png')), _('&New color scheme'), cp) self.ncs = ncs = QPushButton(QIcon(I('plus.png')), _('&New color scheme'), cp)
ncs.clicked.connect(self.create_color_scheme) ncs.clicked.connect(self.create_color_scheme)
l.addWidget(ncs) l.addWidget(ncs)
@ -181,22 +164,7 @@ class CoverSettingsWidget(QWidget):
l.addWidget(la) l.addWidget(la)
self.styles_list = sl = QListWidget(sp) self.styles_list = sl = QListWidget(sp)
l.addWidget(sl) l.addWidget(sl)
disabled = set(prefs['disabled_styles'])
self.style_map = OrderedDict() self.style_map = OrderedDict()
for name in sorted(all_styles(), key=sort_key):
self.style_map[name] = li = QListWidgetItem(name, sl)
li.setFlags(li.flags() | Qt.ItemIsUserCheckable)
li.setCheckState(Qt.Unchecked if name in disabled else Qt.Checked)
lu = prefs.get('last_used_style')
if not for_global_prefs and lu in self.style_map and self.style_map[lu].checkState() == Qt.Checked:
self.style_map[lu].setSelected(True)
else:
for name, li in self.style_map.iteritems():
if li.checkState() == Qt.Checked:
li.setSelected(True)
break
else:
next(self.style_map.itervalues()).setSelected(True)
self.font_page = fp = QWidget(st) self.font_page = fp = QWidget(st)
st.addTab(fp, _('Fonts')) st.addTab(fp, _('Fonts'))
@ -238,7 +206,7 @@ class CoverSettingsWidget(QWidget):
heading = QLabel('<h2>' + title) heading = QLabel('<h2>' + title)
setattr(tp, attr + '_heading', heading) setattr(tp, attr + '_heading', heading)
l.addWidget(heading) l.addWidget(heading)
la = QLabel(prefs[attr]) la = QLabel()
setattr(self, attr, la) setattr(self, attr, la)
l.addWidget(la), la.setTextFormat(Qt.PlainText), la.setStyleSheet('QLabel {font-family: monospace}') l.addWidget(la), la.setTextFormat(Qt.PlainText), la.setStyleSheet('QLabel {font-family: monospace}')
la.setWordWrap(True) la.setWordWrap(True)
@ -282,6 +250,49 @@ class CoverSettingsWidget(QWidget):
attr = '%s_font_size' % x attr = '%s_font_size' % x
getattr(self, attr).setValue(prefs[attr]) getattr(self, attr).setValue(prefs[attr])
for x in ('title', 'subtitle', 'footer'):
x += '_template'
getattr(self, x).setText(prefs[x])
color_themes = prefs['color_themes'].copy()
color_themes.update(default_color_themes)
disabled = set(prefs['disabled_color_themes'])
self.colors_list.clear()
self.colors_map = {}
for name in sorted(color_themes, key=sort_key):
self.colors_map[name] = li = QListWidgetItem(name, self.colors_list)
li.setFlags(li.flags() | Qt.ItemIsUserCheckable)
li.setCheckState(Qt.Unchecked if name in disabled else Qt.Checked)
li.setData(Qt.UserRole, color_themes[name])
lu = prefs.get('last_used_colors')
if not self.for_global_prefs and lu in self.colors_map and self.colors_map[lu].checkState() == Qt.Checked:
self.colors_map[lu].setSelected(True)
else:
for name, li in self.colors_map.iteritems():
if li.checkState() == Qt.Checked:
li.setSelected(True)
break
else:
next(self.colors_map.itervalues()).setSelected(True)
disabled = set(prefs['disabled_styles'])
self.styles_list.clear()
self.style_map.clear()
for name in sorted(all_styles(), key=sort_key):
self.style_map[name] = li = QListWidgetItem(name, self.styles_list)
li.setFlags(li.flags() | Qt.ItemIsUserCheckable)
li.setCheckState(Qt.Unchecked if name in disabled else Qt.Checked)
lu = prefs.get('last_used_style')
if not self.for_global_prefs and lu in self.style_map and self.style_map[lu].checkState() == Qt.Checked:
self.style_map[lu].setSelected(True)
else:
for name, li in self.style_map.iteritems():
if li.checkState() == Qt.Checked:
li.setSelected(True)
break
else:
next(self.style_map.itervalues()).setSelected(True)
@property @property
def current_colors(self): def current_colors(self):
for name, li in self.colors_map.iteritems(): for name, li in self.colors_map.iteritems():
@ -429,9 +440,9 @@ class CoverSettingsWidget(QWidget):
return mi return mi
def restore_defaults(self): def restore_defaults(self):
# Dont delete custom color themes when restoring defaults
defaults = self.original_prefs.defaults.copy() defaults = self.original_prefs.defaults.copy()
defaults['colors_themes'] = self.custom_colors # Dont delete custom color themes when restoring defaults
defaults['color_themes'] = self.custom_colors
self.apply_prefs(defaults) self.apply_prefs(defaults)
self.update_preview() self.update_preview()