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