From d64acb038b201dd064ef16ae02574e4b2ef2986e Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 13 May 2024 18:31:14 +0200 Subject: [PATCH] Allow multiple widgets in config form --- novelwriter/dialogs/preferences.py | 10 +--------- novelwriter/extensions/configlayout.py | 24 +++++++++++++++++------- 2 files changed, 18 insertions(+), 16 deletions(-) diff --git a/novelwriter/dialogs/preferences.py b/novelwriter/dialogs/preferences.py index c28ed169..af4e6980 100644 --- a/novelwriter/dialogs/preferences.py +++ b/novelwriter/dialogs/preferences.py @@ -589,16 +589,8 @@ class GuiPreferences(QDialog): self.altDialogClose.setAlignment(QtAlignCenter) self.altDialogClose.setText(CONFIG.altDialogClose) - self.altDialogBox = QHBoxLayout() - self.altDialogBox.addWidget(self.altDialogOpen) - self.altDialogBox.addWidget(self.altDialogClose) - self.altDialogBox.setContentsMargins(0, 0, 0, 0) - - self.altDialog = QWidget(self) - self.altDialog.setLayout(self.altDialogBox) - self.mainForm.addRow( - self.tr("Alternative dialog symbols"), self.altDialog, + self.tr("Alternative dialog symbols"), [self.altDialogOpen, self.altDialogClose], self.tr("Custom highlighting of dialog text.") ) diff --git a/novelwriter/extensions/configlayout.py b/novelwriter/extensions/configlayout.py index d73774eb..e9f8194d 100644 --- a/novelwriter/extensions/configlayout.py +++ b/novelwriter/extensions/configlayout.py @@ -180,16 +180,26 @@ class NScrollableForm(QScrollArea): self._sections[identifier] = qLabel return - def addRow(self, label: str, widget: QWidget, helpText: str = "", unit: str | None = None, - button: QWidget | None = None, editable: str | None = None, + def addRow(self, label: str, widget: QWidget | list[QWidget], helpText: str = "", + unit: str | None = None, button: QWidget | None = None, editable: str | None = None, stretch: tuple[int, int] = (1, 0)) -> None: """Add a label and a widget as a new row of the form.""" row = QHBoxLayout() row.setSpacing(CONFIG.pxInt(12)) + if isinstance(widget, list): + wBox = QHBoxLayout() + wBox.setContentsMargins(0, 0, 0, 0) + for item in widget: + wBox.addWidget(item) + qWidget = QWidget(self) + qWidget.setLayout(wBox) + else: + qWidget = widget + qLabel = QLabel(label, self) qLabel.setIndent(self._indent) - qLabel.setBuddy(widget) + qLabel.setBuddy(qWidget) if helpText: qHelp = NColourLabel( @@ -208,19 +218,19 @@ class NScrollableForm(QScrollArea): if isinstance(unit, str): box = QHBoxLayout() - box.addWidget(widget, 1) + box.addWidget(qWidget, 1) box.addWidget(QLabel(unit, self), 0) row.addLayout(box, stretch[1]) elif isinstance(button, QAbstractButton): box = QHBoxLayout() - box.addWidget(widget, 1) + box.addWidget(qWidget, 1) box.addWidget(button, 0) row.addLayout(box, stretch[1]) else: - row.addWidget(widget, stretch[1]) + row.addWidget(qWidget, stretch[1]) self._layout.addLayout(row) - self._index[label.strip()] = widget + self._index[label.strip()] = qWidget self._first = False return