From 530238b2fbd390c8f23113cd7cee1745b0e6607c Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sat, 26 Dec 2020 09:22:12 +0000 Subject: [PATCH 1/2] Bug #1909332: Duplicated rules appear to overwrite next item in list Edit Actually the duplicated rule was exchanged with the last rule. --- src/calibre/gui2/preferences/coloring.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/calibre/gui2/preferences/coloring.py b/src/calibre/gui2/preferences/coloring.py index 866b391168..f75bc5da7f 100644 --- a/src/calibre/gui2/preferences/coloring.py +++ b/src/calibre/gui2/preferences/coloring.py @@ -784,12 +784,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): @@ -1136,6 +1135,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 +1150,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): From 10e227c70c8a09bc4397b7ded652e3e4f5879f29 Mon Sep 17 00:00:00 2001 From: Charles Haley Date: Sat, 26 Dec 2020 10:14:53 +0000 Subject: [PATCH 2/2] Bug 1909339]: Enhancement Request: Rules editors: Button to open icons folder --- src/calibre/gui2/preferences/coloring.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/preferences/coloring.py b/src/calibre/gui2/preferences/coloring.py index f75bc5da7f..0ce5157b98 100644 --- a/src/calibre/gui2/preferences/coloring.py +++ b/src/calibre/gui2/preferences/coloring.py @@ -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 @@ -960,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'))