From 9e51ab957cd6167358114073b12f349bc447ab35 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Wed, 30 May 2012 15:39:55 +0530 Subject: [PATCH] Nicer styling for the ToC panel in the ebook viewer --- src/calibre/gui2/viewer/main.ui | 7 +++++- src/calibre/gui2/viewer/toc.py | 38 +++++++++++++++++++++++++++------ 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/src/calibre/gui2/viewer/main.ui b/src/calibre/gui2/viewer/main.ui index 3137ad2e07..4a54ac189d 100644 --- a/src/calibre/gui2/viewer/main.ui +++ b/src/calibre/gui2/viewer/main.ui @@ -24,7 +24,7 @@ Qt::Horizontal - + QFrame::StyledPanel @@ -322,6 +322,11 @@
calibre/gui2/viewer/documentview.h
1 + + TOCView + QTreeView +
calibre/gui2/viewer/toc.h
+
diff --git a/src/calibre/gui2/viewer/toc.py b/src/calibre/gui2/viewer/toc.py index ae11c17065..7beefca8b8 100644 --- a/src/calibre/gui2/viewer/toc.py +++ b/src/calibre/gui2/viewer/toc.py @@ -9,10 +9,41 @@ __docformat__ = 'restructuredtext en' import re from PyQt4.Qt import (QStandardItem, QStandardItemModel, Qt, QFont, - QApplication) + QTreeView) from calibre.ebooks.metadata.toc import TOC as MTOC +class TOCView(QTreeView): + + def __init__(self, *args): + QTreeView.__init__(self, *args) + self.setAttribute(Qt.WA_OpaquePaintEvent, False) + self.setStyleSheet(''' + QTreeView { + background-color: palette(window); + color: palette(text); + } + QTreeView::item { + border: none; + padding-top:0.5ex; + padding-bottom:0.5ex; + } + + QTreeView::item:hover { + background: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, stop: 0 #e7effd, stop: 1 #cbdaf1); + border: 1px solid #bfcde4; + } + QHeaderView::section { + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 #616161, stop: 0.5 #505050, + stop: 0.6 #434343, stop:1 #656565); + color: white; + padding-left: 4px; + border: 1px solid #6c6c6c; + font-weight: bold; + } + ''') + class TOCItem(QStandardItem): def __init__(self, spine, toc, depth, all_items, parent=None): @@ -25,9 +56,6 @@ class TOCItem(QStandardItem): self.abspath = toc.abspath self.fragment = toc.fragment all_items.append(self) - p = QApplication.palette() - self.base = p.base() - self.alternate_base = p.alternateBase() self.bold_font = QFont(self.font()) self.bold_font.setBold(True) self.normal_font = self.font() @@ -105,8 +133,6 @@ class TOCItem(QStandardItem): self.is_being_viewed = is_being_viewed if changed: self.setFont(self.bold_font if is_being_viewed else self.normal_font) - self.setBackground(self.alternate_base if is_being_viewed else - self.base) def __repr__(self): return 'TOC Item: %s %s#%s'%(self.title, self.abspath, self.fragment)