Rewritten the tree details pane to show more info

This commit is contained in:
Veronica K. B. Olsen
2020-05-09 21:48:35 +02:00
parent ef40d4f2de
commit 91dd15ab57
+112 -28
View File
@@ -32,7 +32,7 @@ from PyQt5.QtCore import Qt
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import QFrame, QGridLayout, QLabel
from nw.constants import nwLabels
from nw.constants import nwLabels, nwItemClass, nwUnicode
logger = logging.getLogger(__name__)
@@ -48,7 +48,7 @@ class GuiDocDetails(QFrame):
self.mainBox = QGridLayout(self)
self.mainBox.setVerticalSpacing(1)
self.mainBox.setHorizontalSpacing(15)
self.mainBox.setHorizontalSpacing(6)
self.setLayout(self.mainBox)
self.fntOne = QFont()
@@ -56,50 +56,134 @@ class GuiDocDetails(QFrame):
self.fntOne.setBold(True)
self.fntTwo = QFont()
self.fntTwo.setFamily("Monospace")
self.fntTwo.setPointSize(10)
self.colTwo = [
QLabel(""),
QLabel(""),
QLabel(""),
QLabel("")
]
colOne = ["Label","Status","Class","Layout"]
for nRow in range(4):
lblOne = QLabel(colOne[nRow])
lblOne.setFont(self.fntOne)
lblOne.setAlignment(Qt.AlignTop)
self.mainBox.addWidget(lblOne,nRow,0)
self.mainBox.addWidget(self.colTwo[nRow],nRow,1)
self.colTwo[nRow].setWordWrap(True)
self.colTwo[nRow].setAlignment(Qt.AlignTop)
self.fntThree = QFont()
self.fntThree.setPointSize(10)
# Label
self.labelName = QLabel("Label ")
self.labelName.setFont(self.fntOne)
self.labelName.setAlignment(Qt.AlignLeft | Qt.AlignBaseline)
self.labelFlag = QLabel("")
self.labelFlag.setFont(self.fntTwo)
self.labelFlag.setAlignment(Qt.AlignRight | Qt.AlignBaseline)
self.labelData = QLabel("")
self.labelData.setFont(self.fntThree)
self.labelData.setAlignment(Qt.AlignLeft | Qt.AlignBaseline)
self.labelData.setWordWrap(True)
# Status
self.statusName = QLabel("Status ")
self.statusName.setFont(self.fntOne)
self.statusName.setAlignment(Qt.AlignLeft)
self.statusFlag = QLabel("")
self.statusFlag.setFont(self.fntTwo)
self.statusFlag.setAlignment(Qt.AlignRight | Qt.AlignVCenter)
self.statusData = QLabel("")
self.statusData.setFont(self.fntThree)
self.statusData.setAlignment(Qt.AlignLeft)
# Class
self.className = QLabel("Class ")
self.className.setFont(self.fntOne)
self.className.setAlignment(Qt.AlignLeft)
self.classFlag = QLabel("")
self.classFlag.setFont(self.fntTwo)
self.classFlag.setAlignment(Qt.AlignRight)
self.classData = QLabel("")
self.classData.setFont(self.fntThree)
self.classData.setAlignment(Qt.AlignLeft)
# Layout
self.layoutName = QLabel("Layout ")
self.layoutName.setFont(self.fntOne)
self.layoutName.setAlignment(Qt.AlignLeft)
self.layoutFlag = QLabel("")
self.layoutFlag.setFont(self.fntTwo)
self.layoutFlag.setAlignment(Qt.AlignRight)
self.layoutData = QLabel("")
self.layoutData.setFont(self.fntThree)
self.layoutData.setAlignment(Qt.AlignLeft)
# Assemble
self.mainBox.addWidget(self.labelName, 0, 0)
self.mainBox.addWidget(self.statusName, 1, 0)
self.mainBox.addWidget(self.className, 2, 0)
self.mainBox.addWidget(self.layoutName, 3, 0)
self.mainBox.addWidget(self.labelFlag, 0, 1)
self.mainBox.addWidget(self.statusFlag, 1, 1)
self.mainBox.addWidget(self.classFlag, 2, 1)
self.mainBox.addWidget(self.layoutFlag, 3, 1)
self.mainBox.addWidget(self.labelData, 0, 2)
self.mainBox.addWidget(self.statusData, 1, 2)
self.mainBox.addWidget(self.classData, 2, 2)
self.mainBox.addWidget(self.layoutData, 3, 2)
self.mainBox.setColumnStretch(0,0)
self.mainBox.setColumnStretch(1,1)
self.mainBox.setColumnStretch(1,0)
self.mainBox.setColumnStretch(2,1)
logger.debug("DocDetails initialisation complete")
return
def buildViewBox(self, tHandle):
###
# Class Methods
##
def updateViewBox(self, tHandle):
"""Populate the details box from a given handle.
"""
nwItem = self.theProject.projTree[tHandle]
if nwItem is None:
colTwo = [""]*4
self.labelFlag.setText("")
self.statusFlag.setText("")
self.classFlag.setText("")
self.layoutFlag.setText("")
self.labelData.setText("")
self.statusData.setText("")
self.classData.setText("")
self.layoutData.setText("")
else:
theLabel = nwItem.itemName
if len(theLabel) > 100:
theLabel = theLabel[:96].rstrip()+" ..."
colTwo = [
theLabel,
nwItem.itemStatus,
nwLabels.CLASS_NAME[nwItem.itemClass],
nwLabels.LAYOUT_NAME[nwItem.itemLayout],
]
for nRow in range(4):
self.colTwo[nRow].setText(colTwo[nRow])
iStatus = nwItem.itemStatus
if nwItem.itemClass == nwItemClass.NOVEL:
iStatus = self.theProject.statusItems.checkEntry(iStatus) # Make sure it's valid
flagIcon = self.theParent.statusIcons[iStatus]
else:
iStatus = self.theProject.importItems.checkEntry(iStatus) # Make sure it's valid
flagIcon = self.theParent.importIcons[iStatus]
if nwItem.isExported:
exportFlag = nwUnicode.U_CHECK
else:
exportFlag = " "
self.labelFlag.setText(exportFlag)
self.statusFlag.setPixmap(flagIcon.pixmap(10, 10))
self.classFlag.setText(nwLabels.CLASS_FLAG[nwItem.itemClass])
self.layoutFlag.setText(nwLabels.LAYOUT_FLAG[nwItem.itemLayout])
self.labelData.setText(theLabel)
self.statusData.setText(nwItem.itemStatus)
self.classData.setText(nwLabels.CLASS_NAME[nwItem.itemClass])
self.layoutData.setText(nwLabels.LAYOUT_NAME[nwItem.itemLayout])
return