From 56105d474b102e066d53508d8a1dab9e58ecabfe Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 9 Dec 2013 11:29:22 +0530 Subject: [PATCH] Nicer painting of error list --- src/calibre/gui2/tweak_book/check.py | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/src/calibre/gui2/tweak_book/check.py b/src/calibre/gui2/tweak_book/check.py index 21156456eb..7017ca08ff 100644 --- a/src/calibre/gui2/tweak_book/check.py +++ b/src/calibre/gui2/tweak_book/check.py @@ -9,8 +9,8 @@ __copyright__ = '2013, Kovid Goyal ' import sys from PyQt4.Qt import ( - QIcon, Qt, QHBoxLayout, QListWidget, QTextBrowser, QWidget, - QListWidgetItem, pyqtSignal, QApplication) + QIcon, Qt, QHBoxLayout, QListWidget, QTextBrowser, QWidget, QPalette, + QListWidgetItem, pyqtSignal, QApplication, QStyledItemDelegate) from calibre.ebooks.oeb.polish.check.base import WARN, INFO, DEBUG, ERROR, CRITICAL from calibre.ebooks.oeb.polish.check.main import run_checks @@ -26,6 +26,14 @@ def icon_for_level(level): icon = None return QIcon(I(icon)) if icon else QIcon() +class Delegate(QStyledItemDelegate): + + def initStyleOption(self, option, index): + super(Delegate, self).initStyleOption(option, index) + if index.row() == self.parent().currentRow(): + option.font.setBold(True) + option.backgroundBrush = self.parent().palette().brush(QPalette.AlternateBase) + class Check(QWidget): item_activated = pyqtSignal(object) @@ -37,9 +45,12 @@ class Check(QWidget): self.l = l = QHBoxLayout(self) self.setLayout(l) self.items = i = QListWidget(self) - self.items.setSpacing(2) + self.items.setSpacing(3) self.items.itemDoubleClicked.connect(self.current_item_activated) self.items.currentItemChanged.connect(self.current_item_changed) + self.items.setSelectionMode(self.items.NoSelection) + self.delegate = Delegate(self.items) + self.items.setItemDelegate(self.delegate) l.addWidget(i) self.help = h = QTextBrowser(self) h.anchorClicked.connect(self.link_clicked) @@ -65,7 +76,6 @@ class Check(QWidget): if num > 0: row = (row + delta) % num self.items.setCurrentRow(row) - self.items.item(row).setSelected(True) self.current_item_activated() def current_item_activated(self, *args): @@ -89,9 +99,9 @@ class Check(QWidget): loc = ' (%s)' % loc self.help.setText( '''

%s

-

%s

%s %s
- ''' % (header, err.msg, _('Click to open in editor'), err.name, loc)) +

%s

+ ''' % (header, _('Click to open in editor'), err.name, loc, err.HELP)) def run_checks(self, container): from calibre.gui2.tweak_book.boss import BusyCursor @@ -106,7 +116,6 @@ class Check(QWidget): i.setData(Qt.UserRole, err) i.setIcon(icon_for_level(err.level)) if errors: - self.items.item(0).setSelected(True) self.items.setCurrentRow(0) self.current_item_changed() self.items.setFocus(Qt.OtherFocusReason)