From c6944876f1aaf129dcefb6e725c8ee8347911226 Mon Sep 17 00:00:00 2001 From: Veronica Berglyd Olsen <1619840+vkbo@users.noreply.github.com> Date: Mon, 25 Mar 2024 11:59:05 +0100 Subject: [PATCH] Save project search toggle state --- novelwriter/config.py | 26 +++++++++++++-------- novelwriter/gui/search.py | 24 +++++++++++++++++++ tests/reference/baseConfig_novelwriter.conf | 6 +++-- 3 files changed, 44 insertions(+), 12 deletions(-) diff --git a/novelwriter/config.py b/novelwriter/config.py index 85786119..670433a0 100644 --- a/novelwriter/config.py +++ b/novelwriter/config.py @@ -183,17 +183,19 @@ class Config: # State self.showViewerPanel = True # The panel for the viewer is visible self.showEditToolBar = False # The document editor toolbar visibility - self.useShortcodes = False # Use shortcodes for basic formatting self.viewComments = True # Comments are shown in the viewer self.viewSynopsis = True # Synopsis is shown in the viewer - # Search Bar Switches - self.searchCase = False - self.searchWord = False - self.searchRegEx = False - self.searchLoop = False - self.searchNextFile = False - self.searchMatchCap = False + # Search Box States + self.searchCase = False + self.searchWord = False + self.searchRegEx = False + self.searchLoop = False + self.searchNextFile = False + self.searchMatchCap = False + self.searchProjCase = False + self.searchProjWord = False + self.searchProjRegEx = False # System and App Information # ========================== @@ -619,7 +621,6 @@ class Config: sec = "State" self.showViewerPanel = conf.rdBool(sec, "showviewerpanel", self.showViewerPanel) self.showEditToolBar = conf.rdBool(sec, "showedittoolbar", self.showEditToolBar) - self.useShortcodes = conf.rdBool(sec, "useshortcodes", self.useShortcodes) self.viewComments = conf.rdBool(sec, "viewcomments", self.viewComments) self.viewSynopsis = conf.rdBool(sec, "viewsynopsis", self.viewSynopsis) self.searchCase = conf.rdBool(sec, "searchcase", self.searchCase) @@ -628,6 +629,9 @@ class Config: self.searchLoop = conf.rdBool(sec, "searchloop", self.searchLoop) self.searchNextFile = conf.rdBool(sec, "searchnextfile", self.searchNextFile) self.searchMatchCap = conf.rdBool(sec, "searchmatchcap", self.searchMatchCap) + self.searchProjCase = conf.rdBool(sec, "searchprojcase", self.searchProjCase) + self.searchProjWord = conf.rdBool(sec, "searchprojword", self.searchProjWord) + self.searchProjRegEx = conf.rdBool(sec, "searchprojregex", self.searchProjRegEx) # Check Values # ============ @@ -725,7 +729,6 @@ class Config: conf["State"] = { "showviewerpanel": str(self.showViewerPanel), "showedittoolbar": str(self.showEditToolBar), - "useshortcodes": str(self.useShortcodes), "viewcomments": str(self.viewComments), "viewsynopsis": str(self.viewSynopsis), "searchcase": str(self.searchCase), @@ -734,6 +737,9 @@ class Config: "searchloop": str(self.searchLoop), "searchnextfile": str(self.searchNextFile), "searchmatchcap": str(self.searchMatchCap), + "searchprojcase": str(self.searchProjCase), + "searchprojword": str(self.searchProjWord), + "searchprojregex": str(self.searchProjRegEx), } # Write config file diff --git a/novelwriter/gui/search.py b/novelwriter/gui/search.py index a91c5a4e..d87d9ab4 100644 --- a/novelwriter/gui/search.py +++ b/novelwriter/gui/search.py @@ -68,12 +68,18 @@ class GuiProjectSearch(QWidget): self.toggleCase = self.searchOpt.addAction(self.tr("Case Sensitive")) self.toggleCase.setCheckable(True) + self.toggleCase.setChecked(CONFIG.searchProjCase) + self.toggleCase.toggled.connect(self._toggleCase) self.toggleWord = self.searchOpt.addAction(self.tr("Whole Words Only")) self.toggleWord.setCheckable(True) + self.toggleWord.setChecked(CONFIG.searchProjWord) + self.toggleWord.toggled.connect(self._toggleWord) self.toggleRegEx = self.searchOpt.addAction(self.tr("RegEx Mode")) self.toggleRegEx.setCheckable(True) + self.toggleRegEx.setChecked(CONFIG.searchProjRegEx) + self.toggleRegEx.toggled.connect(self._toggleRegEx) # Search Box self.searchText = QLineEdit(self) @@ -206,6 +212,24 @@ class GuiProjectSearch(QWidget): ) return + @pyqtSlot(bool) + def _toggleCase(self, state: bool) -> None: + """Enable/disable case sensitive mode.""" + CONFIG.searchProjCase = state + return + + @pyqtSlot(bool) + def _toggleWord(self, state: bool) -> None: + """Enable/disable whole word search mode.""" + CONFIG.searchProjWord = state + return + + @pyqtSlot(bool) + def _toggleRegEx(self, state: bool) -> None: + """Enable/disable regular expression search mode.""" + CONFIG.searchProjRegEx = state + return + ## # Internal Functions ## diff --git a/tests/reference/baseConfig_novelwriter.conf b/tests/reference/baseConfig_novelwriter.conf index 998394a0..4e218943 100644 --- a/tests/reference/baseConfig_novelwriter.conf +++ b/tests/reference/baseConfig_novelwriter.conf @@ -1,5 +1,5 @@ [Meta] -timestamp = 2024-02-09 12:05:00 +timestamp = 2024-03-25 11:57:35 [Main] theme = default @@ -69,7 +69,6 @@ useridletime = 300 [State] showviewerpanel = True showedittoolbar = False -useshortcodes = False viewcomments = True viewsynopsis = True searchcase = False @@ -78,4 +77,7 @@ searchregex = False searchloop = False searchnextfile = False searchmatchcap = False +searchprojcase = False +searchprojword = False +searchprojregex = False