From 36d8ad4d8c53b2f065f5840b242359837e50a547 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 29 Jan 2025 18:17:32 +0100 Subject: [PATCH 1/3] Add a flag to disable asking before exit --- novelwriter/config.py | 3 +++ novelwriter/guimain.py | 2 +- tests/reference/baseConfig_novelwriter.conf | 3 ++- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/novelwriter/config.py b/novelwriter/config.py index 0b038272..bfcc73a7 100644 --- a/novelwriter/config.py +++ b/novelwriter/config.py @@ -135,6 +135,7 @@ class Config: self.emphLabels = True # Add emphasis to H1 and H2 item labels self.backupOnClose = False # Flag for running automatic backups self.askBeforeBackup = True # Flag for asking before running automatic backup + self.askBeforeExit = True # Flag for asking before exiting the app # Text Editor Settings self.textFont = QFont() # Editor font @@ -628,6 +629,7 @@ class Config: self._backupPath = conf.rdPath(sec, "backuppath", self._backupPath) self.backupOnClose = conf.rdBool(sec, "backuponclose", self.backupOnClose) self.askBeforeBackup = conf.rdBool(sec, "askbeforebackup", self.askBeforeBackup) + self.askBeforeExit = conf.rdBool(sec, "askbeforeexit", self.askBeforeExit) # Editor sec = "Editor" @@ -739,6 +741,7 @@ class Config: "backuppath": str(self._backupPath), "backuponclose": str(self.backupOnClose), "askbeforebackup": str(self.askBeforeBackup), + "askbeforeexit": str(self.askBeforeExit), } conf["Editor"] = { diff --git a/novelwriter/guimain.py b/novelwriter/guimain.py index eabcc185..ad3e69d1 100644 --- a/novelwriter/guimain.py +++ b/novelwriter/guimain.py @@ -852,7 +852,7 @@ class GuiMain(QMainWindow): def closeMain(self) -> bool: """Save everything, and close novelWriter.""" - if SHARED.hasProject and not SHARED.question("%s
%s" % ( + if SHARED.hasProject and CONFIG.askBeforeExit and not SHARED.question("%s
%s" % ( self.tr("Do you want to exit novelWriter?"), self.tr("Changes are saved automatically.") )): diff --git a/tests/reference/baseConfig_novelwriter.conf b/tests/reference/baseConfig_novelwriter.conf index 0f30fe3f..93854809 100644 --- a/tests/reference/baseConfig_novelwriter.conf +++ b/tests/reference/baseConfig_novelwriter.conf @@ -1,5 +1,5 @@ [Meta] -timestamp = 2025-01-26 18:17:44 +timestamp = 2025-01-29 11:56:34 [Main] font = @@ -26,6 +26,7 @@ emphlabels = True backuppath = backuponclose = False askbeforebackup = True +askbeforeexit = True [Editor] textfont = From fd4fa68553532f6ad1c49b5123159a2bb39be451 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 29 Jan 2025 18:17:50 +0100 Subject: [PATCH 2/3] Add ask before exit setting in Preferences --- novelwriter/dialogs/preferences.py | 18 +++++++++++++----- tests/test_dialogs/test_dlg_preferences.py | 7 +++++-- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/novelwriter/dialogs/preferences.py b/novelwriter/dialogs/preferences.py index f700a267..64e43d19 100644 --- a/novelwriter/dialogs/preferences.py +++ b/novelwriter/dialogs/preferences.py @@ -271,10 +271,10 @@ class GuiPreferences(NDialog): self.tr("Include project notes in status bar word count"), self.incNotesWCount ) - # Auto Save + # Behaviour # ========= - title = self.tr("Auto Save") + title = self.tr("Behaviour") section += 1 self.sidebar.addButton(title, section) self.mainForm.addGroupLabel(title, section) @@ -301,6 +301,13 @@ class GuiPreferences(NDialog): self.tr("How often the project is automatically saved."), unit=self.tr("seconds") ) + # Ask before exiting novelWriter + self.askBeforeExit = NSwitch(self) + self.askBeforeExit.setChecked(CONFIG.askBeforeExit) + self.mainForm.addRow( + self.tr("Ask before exiting novelWriter"), self.askBeforeExit + ) + # Project Backup # ============== @@ -927,9 +934,10 @@ class GuiPreferences(NDialog): CONFIG.incNotesWCount = self.incNotesWCount.isChecked() CONFIG.setTextFont(self._textFont) - # Auto Save - CONFIG.autoSaveDoc = self.autoSaveDoc.value() - CONFIG.autoSaveProj = self.autoSaveProj.value() + # Behaviour + CONFIG.autoSaveDoc = self.autoSaveDoc.value() + CONFIG.autoSaveProj = self.autoSaveProj.value() + CONFIG.askBeforeExit = self.askBeforeExit.isChecked() # Project Backup CONFIG.setBackupPath(self.backupPath) diff --git a/tests/test_dialogs/test_dlg_preferences.py b/tests/test_dialogs/test_dlg_preferences.py index df0a0ff8..9bb081db 100644 --- a/tests/test_dialogs/test_dlg_preferences.py +++ b/tests/test_dialogs/test_dlg_preferences.py @@ -182,12 +182,14 @@ def testDlgPreferences_Settings(qtbot, monkeypatch, nwGUI, tstPaths): assert CONFIG.showFullPath is True assert CONFIG.incNotesWCount is True - # Auto Save + # Behaviour prefs.autoSaveDoc.stepUp() prefs.autoSaveProj.stepUp() + prefs.askBeforeExit.setChecked(False) assert CONFIG.autoSaveDoc == 30 assert CONFIG.autoSaveProj == 60 + assert CONFIG.askBeforeExit is True # Project Backup with monkeypatch.context() as mp: @@ -333,9 +335,10 @@ def testDlgPreferences_Settings(qtbot, monkeypatch, nwGUI, tstPaths): assert CONFIG.showFullPath is False assert CONFIG.incNotesWCount is False - # Auto Save + # Behaviour assert CONFIG.autoSaveDoc == 31 assert CONFIG.autoSaveProj == 61 + assert CONFIG.askBeforeExit is False # Project Backup assert CONFIG._backupPath == tstPaths.testDir From 1a96441bbd717ada2690f7b44d08b4962102a304 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Wed, 29 Jan 2025 18:24:38 +0100 Subject: [PATCH 3/3] Add help text to ask before exit setting --- novelwriter/dialogs/preferences.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/novelwriter/dialogs/preferences.py b/novelwriter/dialogs/preferences.py index 64e43d19..273e47b9 100644 --- a/novelwriter/dialogs/preferences.py +++ b/novelwriter/dialogs/preferences.py @@ -305,7 +305,8 @@ class GuiPreferences(NDialog): self.askBeforeExit = NSwitch(self) self.askBeforeExit.setChecked(CONFIG.askBeforeExit) self.mainForm.addRow( - self.tr("Ask before exiting novelWriter"), self.askBeforeExit + self.tr("Ask before exiting novelWriter"), self.askBeforeExit, + self.tr("Only applies when a project is open.") ) # Project Backup