diff --git a/novelwriter/dialogs/docmerge.py b/novelwriter/dialogs/docmerge.py index 15b54660..a0c43611 100644 --- a/novelwriter/dialogs/docmerge.py +++ b/novelwriter/dialogs/docmerge.py @@ -35,7 +35,7 @@ from PyQt5.QtWidgets import ( from novelwriter import CONFIG, SHARED from novelwriter.extensions.switch import NSwitch -from novelwriter.extensions.configlayout import NHelpLabel +from novelwriter.extensions.configlayout import NColourLabel logger = logging.getLogger(__name__) @@ -54,9 +54,10 @@ class GuiDocMerge(QDialog): self._data = {} self.headLabel = QLabel("{0}".format(self.tr("Documents to Merge"))) - self.helpLabel = NHelpLabel(self.tr( - "Drag and drop items to change the order, or uncheck to exclude." - ), SHARED.theme.helpText) + self.helpLabel = NColourLabel( + self.tr("Drag and drop items to change the order, or uncheck to exclude."), + SHARED.theme.helpText, parent=self, wrap=True + ) iPx = SHARED.theme.baseIconSize hSp = CONFIG.pxInt(12) diff --git a/novelwriter/dialogs/docsplit.py b/novelwriter/dialogs/docsplit.py index 602b860c..b8add4c0 100644 --- a/novelwriter/dialogs/docsplit.py +++ b/novelwriter/dialogs/docsplit.py @@ -35,7 +35,7 @@ from PyQt5.QtWidgets import ( from novelwriter import CONFIG, SHARED from novelwriter.extensions.switch import NSwitch -from novelwriter.extensions.configlayout import NHelpLabel +from novelwriter.extensions.configlayout import NColourLabel logger = logging.getLogger(__name__) @@ -58,9 +58,9 @@ class GuiDocSplit(QDialog): self.setWindowTitle(self.tr("Split Document")) self.headLabel = QLabel("{0}".format(self.tr("Document Headers"))) - self.helpLabel = NHelpLabel( + self.helpLabel = NColourLabel( self.tr("Select the maximum level to split into files."), - SHARED.theme.helpText + SHARED.theme.helpText, parent=self, wrap=True ) # Values diff --git a/novelwriter/dialogs/preferences.py b/novelwriter/dialogs/preferences.py index 32769451..41663a42 100644 --- a/novelwriter/dialogs/preferences.py +++ b/novelwriter/dialogs/preferences.py @@ -26,11 +26,11 @@ from __future__ import annotations import logging -from PyQt5.QtGui import QCloseEvent, QFont, QKeyEvent, QKeySequence, QPalette +from PyQt5.QtGui import QCloseEvent, QFont, QKeyEvent, QKeySequence from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot from PyQt5.QtWidgets import ( QAbstractButton, QComboBox, QCompleter, QDialog, QDialogButtonBox, - QDoubleSpinBox, QFileDialog, QFontDialog, QHBoxLayout, QLabel, QLineEdit, + QDoubleSpinBox, QFileDialog, QFontDialog, QHBoxLayout, QLineEdit, QPushButton, QSpinBox, QToolButton, QVBoxLayout, QWidget, qApp ) @@ -38,7 +38,7 @@ from novelwriter import CONFIG, SHARED from novelwriter.constants import nwConst, nwUnicode from novelwriter.dialogs.quotes import GuiQuoteSelect from novelwriter.extensions.switch import NSwitch -from novelwriter.extensions.configlayout import NScrollableForm +from novelwriter.extensions.configlayout import NColourLabel, NScrollableForm from novelwriter.extensions.pagedsidebar import NPagedSideBar logger = logging.getLogger(__name__) @@ -58,15 +58,9 @@ class GuiPreferences(QDialog): self.resize(*CONFIG.preferencesWinSize) # Title - font = self.font() - font.setPointSizeF(1.25*SHARED.theme.fontPointSize) - - palette = self.palette() - palette.setColor(QPalette.ColorRole.WindowText, SHARED.theme.helpText) - - self.titleLabel = QLabel(self.tr("Preferences"), self) - self.titleLabel.setFont(font) - self.titleLabel.setPalette(palette) + self.titleLabel = NColourLabel( + self.tr("Preferences"), SHARED.theme.helpText, parent=self, scale=1.25 + ) self.titleLabel.setIndent(CONFIG.pxInt(4)) # SideBar diff --git a/novelwriter/extensions/configlayout.py b/novelwriter/extensions/configlayout.py index 54ecb3c8..0ba9b259 100644 --- a/novelwriter/extensions/configlayout.py +++ b/novelwriter/extensions/configlayout.py @@ -3,7 +3,7 @@ novelWriter – Custom Widget: Config Layout ========================================== File History: -Created: 2020-05-03 [0.4.5] NConfigLayout, NHelpLabel +Created: 2020-05-03 [0.4.5] NConfigLayout, NColourLabel Created: 2023-05-23 [2.1b1] NSimpleLayout Created: 2024-01-08 [2.3b1] NScrollableForm @@ -40,6 +40,10 @@ LEFT_TOP = Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignTop class NScrollableForm(QScrollArea): + """Extension: Scrollable Form Widget + + A custom widget that creates a form within a scrollable area. + """ def __init__(self, parent: QWidget) -> None: super().__init__(parent=parent) @@ -48,7 +52,7 @@ class NScrollableForm(QScrollArea): self._first = True self._sections: dict[int, QLabel] = {} - self._editable: dict[str, NHelpLabel] = {} + self._editable: dict[str, NColourLabel] = {} self._index: dict[str, QWidget] = {} self._layout = QVBoxLayout() @@ -130,7 +134,7 @@ class NScrollableForm(QScrollArea): qLabel.setBuddy(widget) if helpText: - qHelp = NHelpLabel(str(helpText), self._helpCol, self._fontScale) + qHelp = NColourLabel(str(helpText), self._helpCol, scale=self._fontScale, wrap=True) qHelp.setIndent(mPx) labelBox = QVBoxLayout() labelBox.addWidget(qLabel) @@ -197,7 +201,7 @@ class NConfigLayout(QGridLayout): """Set the text for the help label.""" if row in self._itemMap: qHelp = self._itemMap[row][1] - if isinstance(qHelp, NHelpLabel): + if isinstance(qHelp, NColourLabel): qHelp.setText(text) return @@ -226,7 +230,7 @@ class NConfigLayout(QGridLayout): qHelp = None if helpText is not None: - qHelp = NHelpLabel(str(helpText), self._helpCol, self._fontScale) + qHelp = NColourLabel(str(helpText), self._helpCol, scale=self._fontScale, wrap=True) qHelp.setIndent(wSp) labelBox = QVBoxLayout() labelBox.addWidget(qLabel) @@ -326,10 +330,16 @@ class NSimpleLayout(QGridLayout): # END Class NSimpleLayout -class NHelpLabel(QLabel): +class NColourLabel(QLabel): + """Extension: A Coloured Label - def __init__(self, text: str, color: QColor, scale: float = FONT_SCALE) -> None: - super().__init__(text) + A custom widget that draws a label in a specific colour, and + optionally at a specific size, and word wrapped. + """ + + def __init__(self, text: str, color: QColor, parent: QWidget | None = None, + scale: float = FONT_SCALE, wrap: bool = False) -> None: + super().__init__(text, parent=parent) lblCol = self.palette() lblCol.setColor(QPalette.WindowText, color) @@ -339,9 +349,10 @@ class NHelpLabel(QLabel): lblFont.setPointSizeF(scale*lblFont.pointSizeF()) self.setFont(lblFont) - self.setWordWrap(True) - self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) + if wrap: + self.setWordWrap(True) + self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) return -# END Class NHelpLabel +# END Class NColourLabel