Highlight splitter when collapsed

This commit is contained in:
Kovid Goyal 2010-05-01 18:52:47 -06:00
parent 98fa71af77
commit be814cda27
3 changed files with 44 additions and 4 deletions

View File

@ -288,7 +288,7 @@
</layout>
</item>
<item>
<widget class="QSplitter" name="vertical_splitter">
<widget class="Splitter" name="vertical_splitter">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
@ -311,7 +311,7 @@
<widget class="QWidget" name="library">
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QSplitter" name="horizontal_splitter">
<widget class="Splitter" name="horizontal_splitter">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -826,6 +826,12 @@
<header>calibre/gui2/status.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>Splitter</class>
<extends>QSplitter</extends>
<header>calibre/gui2/widgets.h</header>
<container>1</container>
</customwidget>
</customwidgets>
<resources>
<include location="../../../resources/images.qrc"/>

View File

@ -679,6 +679,8 @@ class Main(MainWindow, Ui_MainWindow, DeviceGUI):
bi_state = dynamic.get('book_info_state', None)
if bi_state is not None:
self.vertical_splitter.restoreState(bi_state)
self.horizontal_splitter.initialize()
self.vertical_splitter.initialize()
self._add_filesystem_book = Dispatcher(self.__add_filesystem_book)
v = self.library_view

View File

@ -7,9 +7,9 @@ import re, os, traceback
from PyQt4.Qt import QListView, QIcon, QFont, QLabel, QListWidget, \
QListWidgetItem, QTextCharFormat, QApplication, \
QSyntaxHighlighter, QCursor, QColor, QWidget, \
QPixmap, QPalette, QTimer, QDialog, \
QPixmap, QPalette, QTimer, QDialog, QSplitterHandle, \
QAbstractListModel, QVariant, Qt, SIGNAL, \
QRegExp, QSettings, QSize, QModelIndex, \
QRegExp, QSettings, QSize, QModelIndex, QSplitter, \
QAbstractButton, QPainter, QLineEdit, QComboBox, \
QMenu, QStringListModel, QCompleter, QStringList
@ -951,3 +951,35 @@ class PythonHighlighter(QSyntaxHighlighter):
QApplication.setOverrideCursor(QCursor(Qt.WaitCursor))
QSyntaxHighlighter.rehighlight(self)
QApplication.restoreOverrideCursor()
class SplitterHandle(QSplitterHandle):
def __init__(self, orientation, splitter):
QSplitterHandle.__init__(self, orientation, splitter)
splitter.splitterMoved.connect(self.splitter_moved,
type=Qt.QueuedConnection)
self.highlight = False
def splitter_moved(self, *args):
oh = self.highlight
self.highlight = 0 in self.splitter().sizes()
if oh != self.highlight:
self.update()
def paintEvent(self, ev):
QSplitterHandle.paintEvent(self, ev)
if self.highlight:
painter = QPainter(self)
painter.setClipRect(ev.rect())
painter.fillRect(self.rect(), Qt.yellow)
class Splitter(QSplitter):
def createHandle(self):
return SplitterHandle(self.orientation(), self)
def initialize(self):
for i in range(self.count()):
h = self.handle(i)
if h is not None:
h.splitter_moved()