Viewer footer now works and references button shows/hides the references

This commit is contained in:
Veronica K. B. Olsen
2020-06-09 21:47:39 +02:00
parent ef70e63814
commit a24134d4d6
10 changed files with 285 additions and 86 deletions
+28 -3
View File
@@ -33,7 +33,7 @@ from PyQt5.QtCore import Qt, QSize
from PyQt5.QtGui import QPalette, QColor
from PyQt5.QtWidgets import (
qApp, QWidget, QFrame, QGridLayout, QLabel, QLineEdit, QPushButton,
QHBoxLayout
QHBoxLayout, QToolButton
)
from nw.constants import nwDocAction, nwUnicode
@@ -370,9 +370,22 @@ class GuiDocViewFooter(QWidget):
self.setAutoFillBackground(True)
self.setPalette(self.thePalette)
# Show/Hide Details
self.showHide = QToolButton()
self.showHide.setStyleSheet("QToolButton { border: none; background: transparent; }")
self.showHide.setToolButtonStyle(Qt.ToolButtonIconOnly)
self.showHide.setIcon(self.theTheme.getIcon("reference"))
self.showHide.setFixedSize(QSize(fPx, fPx))
self.showHide.setIconSize(QSize(fPx, fPx))
self.showHide.clicked.connect(self._doShowHide)
# Title Label
self.theTitle = QLabel()
self.theTitle.setText("References")
self.theTitle = QLabel("References")
self.theTitle.setIndent(0)
self.theTitle.setMargin(0)
self.theTitle.setContentsMargins(0, 0, 0, 0)
self.theTitle.setAlignment(Qt.AlignLeft | Qt.AlignTop)
self.theTitle.setFixedHeight(fPx)
lblFont = self.theTitle.font()
lblFont.setPointSizeF(0.9*self.theTheme.fontPointSize)
@@ -381,6 +394,7 @@ class GuiDocViewFooter(QWidget):
# Assemble Layout
self.outerBox = QHBoxLayout()
self.outerBox.setSpacing(hSp)
self.outerBox.addWidget(self.showHide, 0)
self.outerBox.addWidget(self.theTitle, 1)
self.setLayout(self.outerBox)
@@ -388,4 +402,15 @@ class GuiDocViewFooter(QWidget):
return
##
# Slots
##
def _doShowHide(self):
"""Toggle the expand/collapse of the panel.
"""
isVisible = self.theParent.theParent.viewMeta.isVisible()
self.theParent.theParent.viewMeta.setVisible(not isVisible)
return
# END Class GuiDocViewFooter
+64 -56
View File
@@ -30,15 +30,15 @@ import nw
from PyQt5.QtCore import Qt, QSize
from PyQt5.QtWidgets import (
QWidget, QLabel, QScrollArea, QFrame, QToolButton, QCheckBox, QGridLayout
QWidget, QLabel, QScrollArea, QFrame, QToolButton, QCheckBox, QGridLayout, QHBoxLayout
)
logger = logging.getLogger(__name__)
class GuiDocViewDetails(QWidget):
class GuiDocViewDetails(QScrollArea):
def __init__(self, theParent):
QWidget.__init__(self, theParent)
QScrollArea.__init__(self, theParent)
logger.debug("Initialising DocViewDetails ...")
self.mainConf = nw.CONFIG
@@ -47,28 +47,28 @@ class GuiDocViewDetails(QWidget):
self.theTheme = theParent.theTheme
self.currHandle = None
x4 = self.mainConf.pxInt(4)
x80 = self.mainConf.pxInt(80)
iPx = self.theTheme.textIconSize
# x4 = self.mainConf.pxInt(4)
# x80 = self.mainConf.pxInt(80)
# iPx = self.theTheme.textIconSize
self.outerBox = QGridLayout(self)
self.outerBox.setContentsMargins(0, 0, 0, 0)
self.outerBox.setHorizontalSpacing(0)
self.outerBox.setVerticalSpacing(x4)
# self.outerBox = QGridLayout(self)
# self.outerBox.setContentsMargins(0, 0, 0, 0)
# self.outerBox.setHorizontalSpacing(0)
# self.outerBox.setVerticalSpacing(x4)
self.refLabel = QLabel("Referenced By", self)
# self.refLabel = QLabel("Referenced By", self)
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.setIconSize(QSize(iPx, iPx))
self.showHide.toggled.connect(self._doShowHide)
# 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.setIconSize(QSize(iPx, iPx))
# self.showHide.toggled.connect(self._doShowHide)
self.isSticky = QCheckBox("Sticky")
self.isSticky.setChecked(False)
self.isSticky.toggled.connect(self._doSticky)
# self.isSticky = QCheckBox("Sticky")
# self.isSticky.setChecked(False)
# self.isSticky.toggled.connect(self._doSticky)
self.refList = QLabel("None")
self.refList.setWordWrap(True)
@@ -76,23 +76,31 @@ class GuiDocViewDetails(QWidget):
self.refList.setScaledContents(True)
self.refList.linkActivated.connect(self._linkClicked)
self.scrollBox = QScrollArea()
self.scrollBox.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
self.scrollBox.setFrameStyle(QFrame.NoFrame)
self.scrollBox.setWidgetResizable(True)
self.scrollBox.setFixedHeight(x80)
self.scrollBox.setWidget(self.refList)
# self.scrollBox = QScrollArea()
# self.scrollBox.setHorizontalScrollBarPolicy(Qt.ScrollBarAlwaysOff)
# self.scrollBox.setFrameStyle(QFrame.NoFrame)
# self.scrollBox.setWidgetResizable(True)
# self.scrollBox.setFixedHeight(x80)
# self.scrollBox.setWidget(self.refList)
self.outerBox.addWidget(self.showHide, 0, 0)
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.outerBox.addWidget(self.showHide, 0, 0)
# 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.setContentsMargins(0, 0, 0, 0)
# Assemble
self.outerWidget = QWidget()
self.outerBox = QHBoxLayout()
self.outerBox.addWidget(self.refList, 1)
self._doShowHide(self.mainConf.showRefPanel)
self.outerWidget.setLayout(self.outerBox)
self.setWidget(self.outerWidget)
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.setWidgetResizable(True)
self.setMinimumHeight(self.mainConf.pxInt(50))
logger.debug("DocViewDetails initialisation complete")
@@ -103,8 +111,7 @@ class GuiDocViewDetails(QWidget):
project index.
"""
self.currHandle = tHandle
if self.isSticky.isChecked():
if self.theParent.docViewer.stickyRef:
return
theRefs = self.theParent.theIndex.getBackReferenceList(tHandle)
@@ -112,9 +119,10 @@ class GuiDocViewDetails(QWidget):
for tHandle in theRefs:
tItem = self.theProject.projTree[tHandle]
if tItem is not None:
theList.append("<a href='#head_%s:%s'>%s</a>" % (
tHandle, theRefs[tHandle], tItem.itemName
))
for n in range(10):
theList.append("<a href='#head_%s:%s'>%s</a>" % (
tHandle, theRefs[tHandle], tItem.itemName
))
self.refList.setText(", ".join(theList))
self.refList.adjustSize()
@@ -135,22 +143,22 @@ class GuiDocViewDetails(QWidget):
self.theParent.viewDocument(tHandle, theLink)
return
def _doShowHide(self, chState):
"""Toggle the expand/collapse of the panel.
"""
self.scrollBox.setVisible(chState)
self.mainConf.setShowRefPanel(chState)
if chState:
self.showHide.setArrowType(Qt.DownArrow)
else:
self.showHide.setArrowType(Qt.RightArrow)
return
# def _doShowHide(self, chState):
# """Toggle the expand/collapse of the panel.
# """
# self.scrollBox.setVisible(chState)
# self.mainConf.setShowRefPanel(chState)
# if chState:
# self.showHide.setArrowType(Qt.DownArrow)
# else:
# self.showHide.setArrowType(Qt.RightArrow)
# return
def _doSticky(self, chState):
"""Toggle the sticky feature of the references.
"""
if not chState and self.currHandle is not None:
self.refreshReferences(self.currHandle)
return
# def _doSticky(self, chState):
# """Toggle the sticky feature of the references.
# """
# if not chState and self.currHandle is not None:
# self.refreshReferences(self.currHandle)
# return
# END Class GuiDocViewDetails
+1
View File
@@ -60,6 +60,7 @@ class GuiDocViewer(QTextBrowser):
# Document Title and Footer
self.docTitle = GuiDocTitleBar(self, self.theProject, isEditor=False)
self.docFooter = GuiDocViewFooter(self, self.theProject)
self.stickyRef = False
theOpt = QTextOption()
if self.mainConf.doJustify:
-2
View File
@@ -216,11 +216,9 @@ class GuiOutlineDetails(QScrollArea):
self.outerBox = QHBoxLayout()
self.outerBox.addWidget(self.mainGroup, 0)
self.outerBox.addWidget(self.tagsGroup, 1)
# self.outerBox.addStretch(1)
self.outerWidget.setLayout(self.outerBox)
self.setWidget(self.outerWidget)
self.show()
self.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
self.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
+3
View File
@@ -537,6 +537,9 @@ class GuiIcons:
"maximise" : (None, None),
"minimise" : (None, None),
"refresh" : (None, None),
"reference" : (None, None),
"sticky-on" : (None, None),
"sticky-off" : (None, None),
## Other Icons
"warning" : (QStyle.SP_MessageBoxWarning, "dialog-warning"),