From 2e1c08cbfad226e361a31a485305b7a85910e058 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Fri, 5 Jul 2024 13:21:39 +0200 Subject: [PATCH 1/4] Fix em unit calculation in document preview (#1961) --- novelwriter/core/toqdoc.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/novelwriter/core/toqdoc.py b/novelwriter/core/toqdoc.py index 493c4898..482da1fd 100644 --- a/novelwriter/core/toqdoc.py +++ b/novelwriter/core/toqdoc.py @@ -26,7 +26,7 @@ from __future__ import annotations import logging from PyQt5.QtGui import ( - QColor, QFont, QFontMetrics, QTextBlockFormat, QTextCharFormat, + QColor, QFont, QFontMetricsF, QTextBlockFormat, QTextCharFormat, QTextCursor, QTextDocument ) @@ -99,8 +99,8 @@ class ToQTextDocument(Tokenizer): self._document.clear() self._document.setDefaultFont(self._textFont) - qMetric = QFontMetrics(self._textFont) - mScale = qMetric.height() + qMetric = QFontMetricsF(self._textFont) + mScale = qMetric.ascent() fPt = self._textFont.pointSizeF() # Scaled Sizes From abd503b5a24bd0e67362afb79929495b66576bd2 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Fri, 5 Jul 2024 14:51:12 +0200 Subject: [PATCH 2/4] Rename the em variable for clarity --- novelwriter/core/toqdoc.py | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/novelwriter/core/toqdoc.py b/novelwriter/core/toqdoc.py index 482da1fd..f8a092e6 100644 --- a/novelwriter/core/toqdoc.py +++ b/novelwriter/core/toqdoc.py @@ -100,18 +100,18 @@ class ToQTextDocument(Tokenizer): self._document.setDefaultFont(self._textFont) qMetric = QFontMetricsF(self._textFont) - mScale = qMetric.ascent() + mPx = qMetric.ascent() # 1 em in pixels fPt = self._textFont.pointSizeF() # Scaled Sizes # ============ self._mHead = { - self.T_TITLE: (mScale * self._marginTitle[0], mScale * self._marginTitle[1]), - self.T_HEAD1: (mScale * self._marginHead1[0], mScale * self._marginHead1[1]), - self.T_HEAD2: (mScale * self._marginHead2[0], mScale * self._marginHead2[1]), - self.T_HEAD3: (mScale * self._marginHead3[0], mScale * self._marginHead3[1]), - self.T_HEAD4: (mScale * self._marginHead4[0], mScale * self._marginHead4[1]), + self.T_TITLE: (mPx * self._marginTitle[0], mPx * self._marginTitle[1]), + self.T_HEAD1: (mPx * self._marginHead1[0], mPx * self._marginHead1[1]), + self.T_HEAD2: (mPx * self._marginHead2[0], mPx * self._marginHead2[1]), + self.T_HEAD3: (mPx * self._marginHead3[0], mPx * self._marginHead3[1]), + self.T_HEAD4: (mPx * self._marginHead4[0], mPx * self._marginHead4[1]), } self._sHead = { @@ -122,12 +122,12 @@ class ToQTextDocument(Tokenizer): self.T_HEAD4: nwHeaders.H_SIZES.get(4, 1.0) * fPt, } - self._mText = (mScale * self._marginText[0], mScale * self._marginText[1]) - self._mMeta = (mScale * self._marginMeta[0], mScale * self._marginMeta[1]) - self._mSep = (mScale * self._marginSep[0], mScale * self._marginSep[1]) + self._mText = (mPx * self._marginText[0], mPx * self._marginText[1]) + self._mMeta = (mPx * self._marginMeta[0], mPx * self._marginMeta[1]) + self._mSep = (mPx * self._marginSep[0], mPx * self._marginSep[1]) - self._mIndent = mScale * 2.0 - self._tIndent = mScale * self._firstWidth + self._mIndent = mPx * 2.0 + self._tIndent = mPx * self._firstWidth # Block Format # ============ From 446163c6de3ceea96dbd1bbaf8901d0e22b2dde6 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Fri, 5 Jul 2024 15:14:30 +0200 Subject: [PATCH 3/4] Add DPI scaling to status LEDs --- novelwriter/extensions/statusled.py | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/novelwriter/extensions/statusled.py b/novelwriter/extensions/statusled.py index 061c0373..d1641234 100644 --- a/novelwriter/extensions/statusled.py +++ b/novelwriter/extensions/statusled.py @@ -28,6 +28,7 @@ import logging from PyQt5.QtGui import QColor, QPainter, QPaintEvent from PyQt5.QtWidgets import QAbstractButton, QWidget +from novelwriter import CONFIG from novelwriter.enum import nwTrinary from novelwriter.types import QtBlack, QtPaintAnitAlias @@ -36,6 +37,10 @@ logger = logging.getLogger(__name__) class StatusLED(QAbstractButton): + __slots__ = ( + "_neutral", "_postitve", "_negative", "_color", "_state", "_bPx" + ) + def __init__(self, sW: int, sH: int, parent: QWidget | None = None) -> None: super().__init__(parent=parent) self._neutral = QtBlack @@ -43,6 +48,7 @@ class StatusLED(QAbstractButton): self._negative = QtBlack self._color = QtBlack self._state = nwTrinary.NEUTRAL + self._bPx = CONFIG.pxInt(1) self.setFixedWidth(sW) self.setFixedHeight(sH) return @@ -76,8 +82,12 @@ class StatusLED(QAbstractButton): """Draw the LED.""" painter = QPainter(self) painter.setRenderHint(QtPaintAnitAlias, True) - painter.setPen(self.palette().dark().color()) + painter.setPen(self.palette().mid().color()) painter.setBrush(self._color) painter.setOpacity(1.0) - painter.drawEllipse(1, 1, self.width() - 2, self.height() - 2) + painter.drawEllipse( + self._bPx, self._bPx, + self.width() - 2*self._bPx, + self.height() - 2*self._bPx + ) return From 08e6d320dfac7d021addf9f51b3b2190d90daa66 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Fri, 5 Jul 2024 15:16:58 +0200 Subject: [PATCH 4/4] Use text colour for LED border --- novelwriter/extensions/statusled.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/novelwriter/extensions/statusled.py b/novelwriter/extensions/statusled.py index d1641234..4aae2208 100644 --- a/novelwriter/extensions/statusled.py +++ b/novelwriter/extensions/statusled.py @@ -82,7 +82,7 @@ class StatusLED(QAbstractButton): """Draw the LED.""" painter = QPainter(self) painter.setRenderHint(QtPaintAnitAlias, True) - painter.setPen(self.palette().mid().color()) + painter.setPen(self.palette().windowText().color()) painter.setBrush(self._color) painter.setOpacity(1.0) painter.drawEllipse(