Visual cues for splitter

This commit is contained in:
Olivier Keshavjee 2016-04-11 07:50:44 +02:00
parent b4e95f3629
commit a77e6fc79f

View file

@ -3,7 +3,7 @@
import locale import locale
from PyQt5.QtCore import QModelIndex, QRect, QPoint, Qt, QObject, QSize from PyQt5.QtCore import QModelIndex, QRect, QPoint, Qt, QObject, QSize
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon, QPalette
from PyQt5.QtWidgets import QWidget, QPushButton, qApp from PyQt5.QtWidgets import QWidget, QPushButton, qApp
from manuskript.functions import mainWindow from manuskript.functions import mainWindow
@ -15,7 +15,7 @@ class tabSplitter(QWidget, Ui_tabSplitter):
def __init__(self, parent=None, mainEditor=None): def __init__(self, parent=None, mainEditor=None):
QWidget.__init__(self, parent) QWidget.__init__(self, parent)
self.setupUi(self) self.setupUi(self)
self.tab.setStyleSheet(style.mainEditorTabSS()) self.setStyleSheet(style.mainEditorTabSS())
try: try:
self.tab.setTabBarAutoHide(True) self.tab.setTabBarAutoHide(True)
@ -32,6 +32,7 @@ class tabSplitter(QWidget, Ui_tabSplitter):
# self.btnSplit.setCheckable(True) # self.btnSplit.setCheckable(True)
self.btnSplit.setFlat(True) self.btnSplit.setFlat(True)
self.btnSplit.setObjectName("btnSplit") self.btnSplit.setObjectName("btnSplit")
self.btnSplit.installEventFilter(self)
self.mainEditor = mainEditor or parent self.mainEditor = mainEditor or parent
@ -120,6 +121,7 @@ class tabSplitter(QWidget, Ui_tabSplitter):
def addSecondTab(self): def addSecondTab(self):
self.secondTab = tabSplitter(mainEditor=self.mainEditor) self.secondTab = tabSplitter(mainEditor=self.mainEditor)
self.secondTab.setObjectName(self.objectName() + "_")
self.splitter.addWidget(self.secondTab) self.splitter.addWidget(self.secondTab)
self.splitter.setStretchFactor(0, 10) self.splitter.setStretchFactor(0, 10)
self.splitter.setStretchFactor(1, 10) self.splitter.setStretchFactor(1, 10)
@ -130,10 +132,17 @@ class tabSplitter(QWidget, Ui_tabSplitter):
self.mainEditor.setCurrentModelIndex(idx) self.mainEditor.setCurrentModelIndex(idx)
def closeSplit(self): def closeSplit(self):
if self.secondTab: st = self.secondTab
self.secondTab.setParent(None) l = []
self.secondTab.deleteLater() while st:
qApp.focusChanged.disconnect(self.secondTab.focusChanged) l.append(st)
st = st.secondTab
for st in reversed(l):
st.setParent(None)
qApp.focusChanged.disconnect(st.focusChanged)
st.deleteLater()
self.focusTab = 1 self.focusTab = 1
self.secondTab = None self.secondTab = None
# self.btnSplit.setChecked(False) # self.btnSplit.setChecked(False)
@ -164,4 +173,13 @@ class tabSplitter(QWidget, Ui_tabSplitter):
new = new.parent() new = new.parent()
if self.focusTab != oldFT: if self.focusTab != oldFT:
self.mainEditor.tabChanged() self.mainEditor.tabChanged()
def eventFilter(self, object, event):
if object == self.btnSplit and event.type() == event.HoverEnter:
self.setAutoFillBackground(True)
self.setBackgroundRole(QPalette.Midlight)
elif object == self.btnSplit and event.type() == event.HoverLeave:
self.setAutoFillBackground(False)
self.setBackgroundRole(QPalette.Window)
return QWidget.eventFilter(self, object, event)