Doc viewer meta pannel can be hidden, and has a sticky button

This commit is contained in:
Veronica K. B. Olsen
2019-11-01 21:32:20 +01:00
parent 628c51b4da
commit 537594202a
+49 -9
View File
@@ -13,9 +13,12 @@
import logging import logging
import nw import nw
from PyQt5.QtCore import Qt from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QFont from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QWidget, QHBoxLayout, QLabel, QGroupBox, QScrollArea, QFrame from PyQt5.QtWidgets import (
QWidget, QHBoxLayout, QVBoxLayout, QLabel, QGroupBox, QScrollArea, QFrame, QToolButton,
QSizePolicy, QCheckBox, QGridLayout
)
from nw.constants import nwLabels from nw.constants import nwLabels
@@ -31,13 +34,27 @@ class GuiDocViewDetails(QWidget):
self.debugGUI = self.mainConf.debugGUI self.debugGUI = self.mainConf.debugGUI
self.theParent = theParent self.theParent = theParent
self.theProject = theProject self.theProject = theProject
self.currHandle = None
self.outerBox = QHBoxLayout(self) self.outerBox = QGridLayout(self)
self.outerBox.setContentsMargins(4,4,4,4) self.outerBox.setContentsMargins(0,0,0,0)
self.outerBox.setHorizontalSpacing(0)
self.outerBox.setVerticalSpacing(4)
self.refTags = QGroupBox("Referenced From", self) self.refLabel = QLabel("Referenced By", self)
self.refTagsForm = QHBoxLayout(self.refTags)
self.refTags.setLayout(self.refTagsForm) self.showHide = QToolButton()
self.showHide.setStyleSheet("QToolButton { border: none; }")
self.showHide.setToolButtonStyle(Qt.ToolButtonIconOnly)
self.showHide.setArrowType(Qt.DownArrow)
self.showHide.setCheckable(True)
self.showHide.setChecked(True)
self.showHide.setIconSize(QSize(16,16))
self.showHide.toggled.connect(self._doShowHide)
self.isSticky = QCheckBox("Sticky")
self.isSticky.setChecked(False)
self.isSticky.toggled.connect(self._doSticky)
self.refList = QLabel("None") self.refList = QLabel("None")
self.refList.setWordWrap(True) self.refList.setWordWrap(True)
@@ -50,10 +67,15 @@ class GuiDocViewDetails(QWidget):
self.scrollBox.setFrameStyle(QFrame.NoFrame) self.scrollBox.setFrameStyle(QFrame.NoFrame)
self.scrollBox.setWidgetResizable(True) self.scrollBox.setWidgetResizable(True)
self.scrollBox.setMaximumHeight(300) self.scrollBox.setMaximumHeight(300)
self.scrollBox.setMinimumHeight(60)
self.scrollBox.setWidget(self.refList) self.scrollBox.setWidget(self.refList)
self.refTagsForm.addWidget(self.scrollBox) self.outerBox.addWidget(self.showHide, 0, 0)
self.outerBox.addWidget(self.refTags) self.outerBox.addWidget(self.refLabel, 0, 1)
self.outerBox.addWidget(self.isSticky, 0, 2)
self.outerBox.addWidget(self.scrollBox, 1, 1, 1, 2)
self.outerBox.setColumnStretch(1, 1)
self.setLayout(self.outerBox) self.setLayout(self.outerBox)
self.setContentsMargins(0,0,0,0) self.setContentsMargins(0,0,0,0)
@@ -63,6 +85,11 @@ class GuiDocViewDetails(QWidget):
def refreshReferences(self, tHandle): def refreshReferences(self, tHandle):
self.currHandle = tHandle
if self.isSticky.isChecked():
return
theRefs = self.theParent.theIndex.buildReferenceList(tHandle) theRefs = self.theParent.theIndex.buildReferenceList(tHandle)
if theRefs: if theRefs:
self.setVisible(True) self.setVisible(True)
@@ -91,4 +118,17 @@ class GuiDocViewDetails(QWidget):
self.theParent.viewDocument(tHandle) self.theParent.viewDocument(tHandle)
return return
def _doShowHide(self, chState):
self.scrollBox.setVisible(chState)
if chState:
self.showHide.setArrowType(Qt.DownArrow)
else:
self.showHide.setArrowType(Qt.RightArrow)
return
def _doSticky(self, chState):
if not chState and self.currHandle is not None:
self.refreshReferences(self.currHandle)
return
# END Class GuiDocViewDetails # END Class GuiDocViewDetails