diff --git a/nw/gui/elements/docdetails.py b/nw/gui/elements/docdetails.py index e72f6486..303c78d0 100644 --- a/nw/gui/elements/docdetails.py +++ b/nw/gui/elements/docdetails.py @@ -29,7 +29,7 @@ import logging import nw from PyQt5.QtCore import Qt -from PyQt5.QtGui import QFont +from PyQt5.QtGui import QFont, QIcon, QPixmap from PyQt5.QtWidgets import QFrame, QGridLayout, QLabel from nw.constants import ( @@ -47,30 +47,37 @@ class GuiDocDetails(QFrame): self.mainConf = nw.CONFIG self.theParent = theParent self.theProject = theProject + self.theTheme = theParent.theTheme self.mainBox = QGridLayout(self) self.mainBox.setVerticalSpacing(1) self.mainBox.setHorizontalSpacing(6) self.setLayout(self.mainBox) + self.pS = 0.9*self.theTheme.fontPointSize + self.iS = self.theTheme.textIconSize + + self.expCheck = self.theTheme.getPixmap("check", (self.iS, self.iS)) + self.expCross = self.theTheme.getPixmap("cross", (self.iS, self.iS)) + self.fntLabel = QFont() self.fntLabel.setPointSize(10) - self.fntLabel.setBold(True) + self.fntLabel.setPointSizeF(self.pS) self.fntFixed = QFont() self.fntFixed.setFamily("Monospace") - self.fntFixed.setPointSize(10) + self.fntFixed.setPointSizeF(self.pS) self.fntValue = QFont() - self.fntValue.setPointSize(10) + self.fntValue.setPointSizeF(self.pS) # Label - self.labelName = QLabel("Label ") + self.labelName = QLabel("Label") self.labelName.setFont(self.fntLabel) self.labelName.setAlignment(Qt.AlignLeft | Qt.AlignBaseline) self.labelFlag = QLabel("") - self.labelFlag.setFont(self.fntFixed) + # self.labelFlag.setFont(self.fntFixed) self.labelFlag.setAlignment(Qt.AlignRight | Qt.AlignBaseline) self.labelData = QLabel("") @@ -79,12 +86,11 @@ class GuiDocDetails(QFrame): self.labelData.setWordWrap(True) # Status - self.statusName = QLabel("Status ") + self.statusName = QLabel("Status") self.statusName.setFont(self.fntLabel) self.statusName.setAlignment(Qt.AlignLeft) self.statusFlag = QLabel("") - self.statusFlag.setFont(self.fntFixed) self.statusFlag.setAlignment(Qt.AlignRight | Qt.AlignVCenter) self.statusData = QLabel("") @@ -92,7 +98,7 @@ class GuiDocDetails(QFrame): self.statusData.setAlignment(Qt.AlignLeft) # Class - self.className = QLabel("Class ") + self.className = QLabel("Class") self.className.setFont(self.fntLabel) self.className.setAlignment(Qt.AlignLeft) @@ -105,7 +111,7 @@ class GuiDocDetails(QFrame): self.classData.setAlignment(Qt.AlignLeft) # Layout - self.layoutName = QLabel("Layout ") + self.layoutName = QLabel("Layout") self.layoutName.setFont(self.fntLabel) self.layoutName.setAlignment(Qt.AlignLeft) @@ -172,6 +178,7 @@ class GuiDocDetails(QFrame): self.mainBox.setColumnStretch(2,1) self.mainBox.setColumnStretch(3,0) self.mainBox.setColumnStretch(4,0) + self.mainBox.setColumnMinimumWidth(1, 20) logger.debug("DocDetails initialisation complete") @@ -214,14 +221,12 @@ class GuiDocDetails(QFrame): if nwItem.itemType == nwItemType.FILE: if nwItem.isExported: - exportFlag = nwUnicode.U_CHECK + self.labelFlag.setPixmap(self.expCheck) else: - exportFlag = " " + self.labelFlag.setPixmap(self.expCross) else: - exportFlag = "-" - - self.labelFlag.setText(exportFlag) - self.statusFlag.setPixmap(flagIcon.pixmap(10, 10)) + self.labelFlag.setPixmap(QPixmap(1,1)) + self.statusFlag.setPixmap(flagIcon.pixmap(0.9*self.iS, 0.9*self.iS)) self.classFlag.setText(nwLabels.CLASS_FLAG[nwItem.itemClass]) if nwItem.itemLayout == nwItemLayout.NO_LAYOUT: self.layoutFlag.setText("-") diff --git a/nw/gui/elements/doctree.py b/nw/gui/elements/doctree.py index 6da9e5d7..5025fcfb 100644 --- a/nw/gui/elements/doctree.py +++ b/nw/gui/elements/doctree.py @@ -29,7 +29,7 @@ import logging import nw from PyQt5.QtCore import Qt, QSize -from PyQt5.QtGui import QFont, QColor +from PyQt5.QtGui import QFont, QColor, QIcon from PyQt5.QtWidgets import ( qApp, QTreeWidget, QTreeWidgetItem, QAbstractItemView, QMessageBox ) @@ -45,8 +45,9 @@ class GuiDocTree(QTreeWidget): C_NAME = 0 C_COUNT = 1 - C_FLAGS = 2 - C_HANDLE = 3 + C_EXPORT = 2 + C_FLAGS = 3 + C_HANDLE = 4 def __init__(self, theParent, theProject): QTreeWidget.__init__(self, theParent) @@ -64,15 +65,19 @@ class GuiDocTree(QTreeWidget): self.clearTree() # Build GUI - self.setIconSize(QSize(13,13)) + self.setIconSize(QSize(13, 13)) self.setExpandsOnDoubleClick(True) self.setIndentation(13) - self.setColumnCount(4) - self.setHeaderLabels(["Label","Words","Flags","Handle"]) + self.setColumnCount(5) + self.setHeaderLabels(["Label","Words","Inc","Flags","Handle"]) self.hideColumn(self.C_HANDLE) treeHead = self.headerItem() - treeHead.setTextAlignment(self.C_COUNT,Qt.AlignRight) + treeHead.setTextAlignment(self.C_COUNT, Qt.AlignRight) + treeHead.setToolTip(self.C_NAME, "Item label") + treeHead.setToolTip(self.C_COUNT, "Word count") + treeHead.setToolTip(self.C_EXPORT, "Include in build") + treeHead.setToolTip(self.C_FLAGS, "Status, class, and layout flags") # Allow Move by Drag & Drop self.setDragEnabled(True) @@ -88,10 +93,14 @@ class GuiDocTree(QTreeWidget): # self.setSelectionBehavior(QAbstractItemView.SelectRows) for colN in range(len(self.mainConf.treeColWidth)): - self.setColumnWidth(colN,self.mainConf.treeColWidth[colN]) + self.setColumnWidth(colN, self.mainConf.treeColWidth[colN]) - self.fontFlags = QFont("Monospace",10) - self.fontCount = QFont("Monospace",10) + self.resizeColumnToContents(self.C_EXPORT) + self.resizeColumnToContents(self.C_FLAGS) + + self.fntFixed = QFont() + self.fntFixed.setFamily("Monospace") + self.fntFixed.setPointSizeF(0.9*self.theTheme.fontPointSize) logger.debug("DocTree initialisation complete") @@ -271,7 +280,6 @@ class GuiDocTree(QTreeWidget): retVals = [ self.columnWidth(0), self.columnWidth(1), - self.columnWidth(2), ] return retVals @@ -422,30 +430,30 @@ class GuiDocTree(QTreeWidget): tHandle = nwItem.itemHandle pHandle = nwItem.parHandle - stExport = " " - stClass = nwLabels.CLASS_FLAG[nwItem.itemClass] - stLayout = "" + expIcon = QIcon() + stClass = nwLabels.CLASS_FLAG[nwItem.itemClass] + stLayout = "" if nwItem.itemType == nwItemType.FILE: stLayout = "."+nwLabels.LAYOUT_FLAG[nwItem.itemLayout] if nwItem.isExported: - stExport = nwUnicode.U_CHECK - else: - stExport = "-" - - tStatus = stExport+" "+stClass+stLayout + expIcon = self.theTheme.getIcon("check") + else: + expIcon = self.theTheme.getIcon("cross") + tStatus = stClass+stLayout iStatus = nwItem.itemStatus if tClass == nwItemClass.NOVEL: - iStatus = self.theProject.statusItems.checkEntry(iStatus) # Make sure it's valid + 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 + iStatus = self.theProject.importItems.checkEntry(iStatus) # Make sure it's valid flagIcon = self.theParent.importIcons[iStatus] trItem.setText(self.C_NAME, tName) - trItem.setText(self.C_FLAGS,tStatus) - trItem.setIcon(self.C_FLAGS,flagIcon) + trItem.setIcon(self.C_EXPORT, expIcon) + trItem.setText(self.C_FLAGS, tStatus) + trItem.setIcon(self.C_FLAGS, flagIcon) return @@ -569,12 +577,14 @@ class GuiDocTree(QTreeWidget): newItem.setText(self.C_NAME, "") newItem.setText(self.C_COUNT, "0") + newItem.setText(self.C_EXPORT, "") newItem.setText(self.C_FLAGS, "") newItem.setText(self.C_HANDLE, tHandle) # newItem.setForeground(self.C_COUNT,QColor(*self.theParent.theTheme.treeWCount)) newItem.setTextAlignment(self.C_COUNT, Qt.AlignRight) - newItem.setFont(self.C_FLAGS, self.fontFlags) + # newItem.setTextAlignment(self.C_EXPORT, Qt.AlignHCenter) + newItem.setFont(self.C_FLAGS, self.fntFixed) self.theMap[tHandle] = newItem if pHandle is None: @@ -627,6 +637,7 @@ class GuiDocTree(QTreeWidget): newItem = QTreeWidgetItem([""]*4) newItem.setText(self.C_NAME, "Orphaned Files") newItem.setText(self.C_COUNT, "") + newItem.setText(self.C_EXPORT, "") newItem.setText(self.C_FLAGS, "") newItem.setText(self.C_HANDLE, "") self.addTopLevelItem(newItem)