diff --git a/nw/gui/elements/docdetails.py b/nw/gui/elements/docdetails.py index a55e44c2..de547c06 100644 --- a/nw/gui/elements/docdetails.py +++ b/nw/gui/elements/docdetails.py @@ -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