mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Nicer styling for the ToC panel in the ebook viewer
This commit is contained in:
parent
260e5a9e08
commit
9e51ab957c
@ -24,7 +24,7 @@
|
|||||||
<property name="orientation">
|
<property name="orientation">
|
||||||
<enum>Qt::Horizontal</enum>
|
<enum>Qt::Horizontal</enum>
|
||||||
</property>
|
</property>
|
||||||
<widget class="QTreeView" name="toc"/>
|
<widget class="TOCView" name="toc"/>
|
||||||
<widget class="QFrame" name="frame">
|
<widget class="QFrame" name="frame">
|
||||||
<property name="frameShape">
|
<property name="frameShape">
|
||||||
<enum>QFrame::StyledPanel</enum>
|
<enum>QFrame::StyledPanel</enum>
|
||||||
@ -322,6 +322,11 @@
|
|||||||
<header>calibre/gui2/viewer/documentview.h</header>
|
<header>calibre/gui2/viewer/documentview.h</header>
|
||||||
<container>1</container>
|
<container>1</container>
|
||||||
</customwidget>
|
</customwidget>
|
||||||
|
<customwidget>
|
||||||
|
<class>TOCView</class>
|
||||||
|
<extends>QTreeView</extends>
|
||||||
|
<header>calibre/gui2/viewer/toc.h</header>
|
||||||
|
</customwidget>
|
||||||
</customwidgets>
|
</customwidgets>
|
||||||
<resources>
|
<resources>
|
||||||
<include location="../../../../resources/images.qrc"/>
|
<include location="../../../../resources/images.qrc"/>
|
||||||
|
@ -9,10 +9,41 @@ __docformat__ = 'restructuredtext en'
|
|||||||
|
|
||||||
import re
|
import re
|
||||||
from PyQt4.Qt import (QStandardItem, QStandardItemModel, Qt, QFont,
|
from PyQt4.Qt import (QStandardItem, QStandardItemModel, Qt, QFont,
|
||||||
QApplication)
|
QTreeView)
|
||||||
|
|
||||||
from calibre.ebooks.metadata.toc import TOC as MTOC
|
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):
|
class TOCItem(QStandardItem):
|
||||||
|
|
||||||
def __init__(self, spine, toc, depth, all_items, parent=None):
|
def __init__(self, spine, toc, depth, all_items, parent=None):
|
||||||
@ -25,9 +56,6 @@ class TOCItem(QStandardItem):
|
|||||||
self.abspath = toc.abspath
|
self.abspath = toc.abspath
|
||||||
self.fragment = toc.fragment
|
self.fragment = toc.fragment
|
||||||
all_items.append(self)
|
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 = QFont(self.font())
|
||||||
self.bold_font.setBold(True)
|
self.bold_font.setBold(True)
|
||||||
self.normal_font = self.font()
|
self.normal_font = self.font()
|
||||||
@ -105,8 +133,6 @@ class TOCItem(QStandardItem):
|
|||||||
self.is_being_viewed = is_being_viewed
|
self.is_being_viewed = is_being_viewed
|
||||||
if changed:
|
if changed:
|
||||||
self.setFont(self.bold_font if is_being_viewed else self.normal_font)
|
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):
|
def __repr__(self):
|
||||||
return 'TOC Item: %s %s#%s'%(self.title, self.abspath, self.fragment)
|
return 'TOC Item: %s %s#%s'%(self.title, self.abspath, self.fragment)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user