Fixes #1909332 [Rules editor: Duplicated rules appear to overwrite next item in list](https://bugs.launchpad.net/calibre/+bug/1909332)
Fixes #1909339 [Enhancement Request: Rules editors: Button to open icons folder](https://bugs.launchpad.net/calibre/+bug/1909339)
This commit is contained in:
Kovid Goyal 2020-12-26 17:25:34 +05:30
commit 28455a23c4
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -17,7 +17,8 @@ from PyQt5.Qt import (QWidget, QDialog, QLabel, QGridLayout, QComboBox, QSize,
from calibre import prepare_string_for_xml, sanitize_file_name, as_unicode
from calibre.constants import config_dir
from calibre.utils.icu import sort_key
from calibre.gui2 import error_dialog, choose_files, pixmap_to_data, gprefs, choose_save_file
from calibre.gui2 import (error_dialog, choose_files, pixmap_to_data, gprefs,
choose_save_file, open_local_file)
from calibre.gui2.dialogs.template_dialog import TemplateDialog
from calibre.gui2.metadata.single_download import RichTextDelegate
from calibre.gui2.widgets2 import ColorButton
@ -784,12 +785,11 @@ class RulesModel(QAbstractListModel): # {{{
def move(self, idx, delta):
row = idx.row() + delta
if row >= 0 and row < len(self.rules):
t = self.rules[row]
self.rules[row] = self.rules[row-delta]
self.rules[row-delta] = t
self.dataChanged.emit(idx, idx)
self.beginResetModel()
t = self.rules.pop(row-delta)
self.rules.insert(row, t) # does append if row >= len(rules)
self.endResetModel()
idx = self.index(row)
self.dataChanged.emit(idx, idx)
return idx
def clear(self):
@ -961,6 +961,12 @@ class EditRules(QWidget): # {{{
b.setEnabled(False)
hb.addWidget(b)
hb.addStretch(10)
self.open_icon_folder_button = b = QPushButton(QIcon(I('icon_choose.png')),
_('Open icon directory'), self)
connect_lambda(b.clicked, self,
lambda _: open_local_file(os.path.join(config_dir, 'cc_icons')))
hb.addWidget(b)
hb.addStretch(10)
self.export_button = b = QPushButton(_('E&xport'), self)
b.clicked.connect(self.export_rules)
b.setToolTip(_('Export these rules to a file'))
@ -1136,6 +1142,7 @@ class EditRules(QWidget): # {{{
idx = self.model.move(idx, -1)
if idx is not None:
sm.select(idx, QItemSelectionModel.SelectionFlag.Toggle)
self.rules_view.setCurrentIndex(idx)
self.changed.emit()
def move_down(self):
@ -1150,6 +1157,7 @@ class EditRules(QWidget): # {{{
idx = self.model.move(idx, 1)
if idx is not None:
sm.select(idx, QItemSelectionModel.SelectionFlag.Toggle)
self.rules_view.setCurrentIndex(idx)
self.changed.emit()
def clear(self):