From fda647da54bfd14819e8786c7f13b7a26fb70e59 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Tue, 23 May 2023 18:39:52 +0200 Subject: [PATCH] Fix a few issues with the build settings dialog --- novelwriter/tools/manussettings.py | 30 ++++++++++++++++++++++++------ 1 file changed, 24 insertions(+), 6 deletions(-) diff --git a/novelwriter/tools/manussettings.py b/novelwriter/tools/manussettings.py index 635c07a6..fecf764e 100644 --- a/novelwriter/tools/manussettings.py +++ b/novelwriter/tools/manussettings.py @@ -43,9 +43,9 @@ from PyQt5.QtWidgets import ( from novelwriter import CONFIG from novelwriter.constants import nwConst, nwHeadingFormats from novelwriter.core.buildsettings import BuildSettings, FilterMode -from novelwriter.extensions.configlayout import NConfigLayout, NSimpleLayout from novelwriter.extensions.switch import NSwitch from novelwriter.extensions.switchbox import NSwitchBox +from novelwriter.extensions.configlayout import NConfigLayout, NSimpleLayout from novelwriter.extensions.pagedsidebar import NPagedSideBar if TYPE_CHECKING: @@ -211,7 +211,8 @@ class GuiBuildSettings(QDialog): if role == QDialogButtonBox.AcceptRole: self.accept() elif role == QDialogButtonBox.RejectRole: - self.reject() + if self._checkOkClose(): + self.reject() return @@ -222,14 +223,26 @@ class GuiBuildSettings(QDialog): def closeEvent(self, event: QEvent): """Capture the user closing the window so we can save settings. """ - self._saveSettings() - event.accept() + if self._checkOkClose(): + self._saveSettings() + event.accept() return ## # Internal Functions ## + def _checkOkClose(self) -> bool: + """Check if there are unsaved changes, and if there are, ask if + it';'s ok to reject them. + """ + if self._build.changed: + return self.mainGui.askQuestion( + self.tr("Close"), + self.tr("There are unsaved changes. Close anyway?") + ) + return True + def _saveSettings(self): """Save the various user settings. """ @@ -330,7 +343,7 @@ class GuiBuildFilterTab(QWidget): self.excludedButton.clicked.connect(lambda: self._setSelectedMode(self.F_EXCLUDED)) self.modeBox = QHBoxLayout() - self.modeBox.addWidget(QLabel(self.tr("Mark items as"))) + self.modeBox.addWidget(QLabel(self.tr("Mark selection as"))) self.modeBox.addStretch(1) self.modeBox.addWidget(self.filteredButton) self.modeBox.addWidget(self.includedButton) @@ -359,6 +372,8 @@ class GuiBuildFilterTab(QWidget): self.mainSplit = QSplitter() self.mainSplit.addWidget(self.selectionWidget) self.mainSplit.addWidget(self.filterOpt) + self.mainSplit.setCollapsible(0, False) + self.mainSplit.setCollapsible(1, False) if wTree > 0: self.mainSplit.setSizes([wTree, fTree]) @@ -495,7 +510,10 @@ class GuiBuildFilterTab(QWidget): itemIcon = self.mainTheme.getItemIcon( nwItem.itemType, nwItem.itemClass, nwItem.itemLayout ) - self.filterOpt.addItem(itemIcon, nwItem.itemName, f"root:{tHandle}", default=True) + self.filterOpt.addItem( + itemIcon, nwItem.itemName, f"root:{tHandle}", + default=self._build.isRootAllowed(tHandle) + ) return