diff --git a/nw/gui/elements/docdetails.py b/nw/gui/elements/docdetails.py index 303c78d0..a04d30cc 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, QIcon, QPixmap +from PyQt5.QtGui import QFont, QIcon, QPixmap, QFontMetrics from PyQt5.QtWidgets import QFrame, QGridLayout, QLabel from nw.constants import ( @@ -77,7 +77,6 @@ class GuiDocDetails(QFrame): self.labelName.setAlignment(Qt.AlignLeft | Qt.AlignBaseline) self.labelFlag = QLabel("") - # self.labelFlag.setFont(self.fntFixed) self.labelFlag.setAlignment(Qt.AlignRight | Qt.AlignBaseline) self.labelData = QLabel("") @@ -178,7 +177,12 @@ class GuiDocDetails(QFrame): self.mainBox.setColumnStretch(2,1) self.mainBox.setColumnStretch(3,0) self.mainBox.setColumnStretch(4,0) - self.mainBox.setColumnMinimumWidth(1, 20) + + # Make sure the columns for flags and counts don't resize too often + flagWidth = QFontMetrics(self.fntFixed).boundingRect("Mm").width() + countWidth = QFontMetrics(self.fntValue).boundingRect("99,999").width() + self.mainBox.setColumnMinimumWidth(1, flagWidth) + self.mainBox.setColumnMinimumWidth(4, countWidth) logger.debug("DocDetails initialisation complete") diff --git a/nw/gui/elements/doctree.py b/nw/gui/elements/doctree.py index 5025fcfb..5fbfc83d 100644 --- a/nw/gui/elements/doctree.py +++ b/nw/gui/elements/doctree.py @@ -65,11 +65,12 @@ class GuiDocTree(QTreeWidget): self.clearTree() # Build GUI - self.setIconSize(QSize(13, 13)) + iPx = self.theTheme.textIconSize + self.setIconSize(QSize(iPx, iPx)) self.setExpandsOnDoubleClick(True) - self.setIndentation(13) + self.setIndentation(iPx) self.setColumnCount(5) - self.setHeaderLabels(["Label","Words","Inc","Flags","Handle"]) + self.setHeaderLabels(["Label", "Words", "Inc", "Flags", "Handle"]) self.hideColumn(self.C_HANDLE) treeHead = self.headerItem() @@ -92,8 +93,8 @@ class GuiDocTree(QTreeWidget): # self.setSelectionMode(QAbstractItemView.ExtendedSelection) # self.setSelectionBehavior(QAbstractItemView.SelectRows) - for colN in range(len(self.mainConf.treeColWidth)): - self.setColumnWidth(colN, self.mainConf.treeColWidth[colN]) + for colN, colW in enumerate(self.mainConf.treeColWidth): + self.setColumnWidth(colN, colW) self.resizeColumnToContents(self.C_EXPORT) self.resizeColumnToContents(self.C_FLAGS) diff --git a/nw/gui/statusbar.py b/nw/gui/statusbar.py index 0c000761..5b21bbdb 100644 --- a/nw/gui/statusbar.py +++ b/nw/gui/statusbar.py @@ -65,7 +65,7 @@ class GuiMainStatus(QStatusBar): colTrue = QColor(*self.theTheme.statUnsaved) colFalse = QColor(*self.theTheme.statSaved) - iPx = int(round(self.theTheme.baseIconSize)) + iPx = self.theTheme.textIconSize # Permanent Widgets # ================= @@ -73,7 +73,7 @@ class GuiMainStatus(QStatusBar): ## The Spell Checker Language self.langIcon = QLabel("") self.langText = QLabel("None") - self.langIcon.setPixmap(self.theTheme.getPixmap("status_lang" ,(iPx, iPx))) + self.langIcon.setPixmap(self.theTheme.getPixmap("status_lang", (iPx, iPx))) self.langIcon.setContentsMargins(0, 0, 0, 0) self.langText.setContentsMargins(0, 0, 8, 0) self.addPermanentWidget(self.langIcon) diff --git a/nw/gui/theme.py b/nw/gui/theme.py index e1025664..cf29e4b0 100644 --- a/nw/gui/theme.py +++ b/nw/gui/theme.py @@ -124,15 +124,15 @@ class GuiTheme: qMetric = QFontMetrics(self.guiFont) self.fontPointSize = self.guiFont.pointSizeF() - self.fontPixelSize = qMetric.height() - self.baseIconSize = qMetric.ascent() - self.textIconSize = qMetric.ascent() + qMetric.leading() + self.fontPixelSize = int(round(qMetric.height())) + self.baseIconSize = int(round(qMetric.ascent())) + self.textIconSize = int(round(qMetric.ascent() + qMetric.leading())) logger.verbose("GUI Font Family: %s" % self.guiFont.family()) logger.verbose("GUI Font Point Size: %.2f" % self.fontPointSize) - logger.verbose("GUI Font Pixel Size: %.2f" % self.fontPixelSize) - logger.verbose("GUI Base Icon Size: %.2f" % self.baseIconSize) - logger.verbose("GUI Text Icon Size: %.2f" % self.textIconSize) + logger.verbose("GUI Font Pixel Size: %d" % self.fontPixelSize) + logger.verbose("GUI Base Icon Size: %d" % self.baseIconSize) + logger.verbose("GUI Text Icon Size: %d" % self.textIconSize) return