diff --git a/src/calibre/gui2/tweak_book/check.py b/src/calibre/gui2/tweak_book/check.py index 71e0883b16..192d8d0f51 100644 --- a/src/calibre/gui2/tweak_book/check.py +++ b/src/calibre/gui2/tweak_book/check.py @@ -43,6 +43,14 @@ def prefix_for_level(level): text += ': ' return text +def build_error_message(error, with_level=False, with_line_numbers=False): + prefix = '' + filename = error.name + if with_level: + prefix = prefix_for_level(error.level) + if with_line_numbers and error.line: + filename = f'{filename}:{error.line}' + return f'{prefix}{error.msg}\xa0\xa0\xa0\xa0[{filename}]' class Delegate(QStyledItemDelegate): @@ -99,8 +107,8 @@ class Check(QSplitter): def copy_to_clipboard(self): items = [] for item in (self.items.item(i) for i in range(self.items.count())): - msg = str(item.text()) - msg = prefix_for_level(item.data(Qt.ItemDataRole.UserRole).level) + msg + err = item.data(Qt.ItemDataRole.UserRole) + msg = build_error_message(err, with_level=True, with_line_numbers=True) items.append(msg) if items: QApplication.clipboard().setText('\n'.join(items)) @@ -214,7 +222,7 @@ class Check(QSplitter): self.hide_busy() for err in sorted(errors, key=lambda e:(100 - e.level, e.name)): - i = QListWidgetItem(f'{err.msg}\xa0\xa0\xa0\xa0[{err.name}]', self.items) + i = QListWidgetItem(build_error_message(err), self.items) i.setData(Qt.ItemDataRole.UserRole, err) i.setIcon(icon_for_level(err.level)) if errors: