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)