From 2d65e81b13c922d2152cd325c72df892c2534b0c Mon Sep 17 00:00:00 2001 From: Henrik Giesel Date: Mon, 19 Oct 2020 20:37:17 +0200 Subject: [PATCH 1/4] Add search_for method --- qt/aqt/browser.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index 14e461d31..849fbc3d2 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -794,6 +794,11 @@ class Browser(QMainWindow): self._lastSearchTxt = txt self.search() + def search_for(self, search: str, prompt: Optional[str] = None) -> None: + self._lastSearchTxt = search + self.form.searchEdit.lineEdit().setText(prompt or search) + self.search() + # search triggered programmatically. caller must have saved note first. def search(self) -> None: if "is:current" in self._lastSearchTxt: From 54dc97825ea8da2a9d5f466dffab75d530ccd5cd Mon Sep 17 00:00:00 2001 From: Henrik Giesel Date: Mon, 19 Oct 2020 20:51:36 +0200 Subject: [PATCH 2/4] Add uses of search_for --- qt/aqt/browser.py | 32 ++++++++++++++------------------ 1 file changed, 14 insertions(+), 18 deletions(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index 849fbc3d2..6d2061a12 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -760,10 +760,8 @@ class Browser(QMainWindow): self.form.searchEdit.addItems( [self._searchPrompt] + self.mw.pm.profile["searchHistory"] ) - self._lastSearchTxt = "is:current" - self.search() + self.search_for("is:current") # then replace text for easily showing the deck - self.form.searchEdit.lineEdit().setText(self._searchPrompt) self.form.searchEdit.lineEdit().selectAll() self.form.searchEdit.setFocus() @@ -772,12 +770,14 @@ class Browser(QMainWindow): self.editor.saveNow(self._onSearchActivated) def _onSearchActivated(self): - # convert guide text before we save history - if self.form.searchEdit.lineEdit().text() == self._searchPrompt: - self.form.searchEdit.lineEdit().setText("deck:current ") - # grab search text and normalize - txt = self.form.searchEdit.lineEdit().text() + prompt = self.form.searchEdit.lineEdit().text() + + # convert guide text before we save history + if prompt == self._searchPrompt: + txt = "deck:current " + else: + txt = prompt # update history sh = self.mw.pm.profile["searchHistory"] @@ -791,8 +791,7 @@ class Browser(QMainWindow): # keep track of search string so that we reuse identical search when # refreshing, rather than whatever is currently in the search field - self._lastSearchTxt = txt - self.search() + self.search_for(txt) def search_for(self, search: str, prompt: Optional[str] = None) -> None: self._lastSearchTxt = search @@ -1802,13 +1801,13 @@ where id in %s""" def _selectNotes(self): nids = self.selectedNotes() - # bypass search history - self._lastSearchTxt = "nid:" + ",".join([str(x) for x in nids]) - self.form.searchEdit.lineEdit().setText(self._lastSearchTxt) # clear the selection so we don't waste energy preserving it tv = self.form.tableView tv.selectionModel().clear() - self.search() + + search = "nid:" + ",".join([str(x) for x in nids]) + self.search_for(search) + tv.selectAll() def invertSelection(self): @@ -2031,10 +2030,7 @@ where id in %s""" tooltip(_("Notes tagged.")) def dupeLinkClicked(self, link): - self.form.searchEdit.lineEdit().setText(link) - # manually, because we've already saved - self._lastSearchTxt = link - self.search() + self.search_for(link) self.onNote() # Jumping From 450e85d36d2a6606e67de61962d462bc9d07a104 Mon Sep 17 00:00:00 2001 From: Henrik Giesel Date: Mon, 19 Oct 2020 20:57:19 +0200 Subject: [PATCH 3/4] Add search prompt for setupSearch --- qt/aqt/browser.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index 6d2061a12..ce65bba69 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -760,7 +760,7 @@ class Browser(QMainWindow): self.form.searchEdit.addItems( [self._searchPrompt] + self.mw.pm.profile["searchHistory"] ) - self.search_for("is:current") + self.search_for("is:current", self._searchPrompt) # then replace text for easily showing the deck self.form.searchEdit.lineEdit().selectAll() self.form.searchEdit.setFocus() From 9e44b2be7fe6c9939ed64c7beef85862b27b3a9b Mon Sep 17 00:00:00 2001 From: Henrik Giesel Date: Mon, 19 Oct 2020 21:07:29 +0200 Subject: [PATCH 4/4] Turn update_search into its own method --- qt/aqt/browser.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index ce65bba69..5381e6fd7 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -774,25 +774,23 @@ class Browser(QMainWindow): prompt = self.form.searchEdit.lineEdit().text() # convert guide text before we save history - if prompt == self._searchPrompt: - txt = "deck:current " - else: - txt = prompt - - # update history - sh = self.mw.pm.profile["searchHistory"] - if txt in sh: - sh.remove(txt) - sh.insert(0, txt) - sh = sh[:30] - self.form.searchEdit.clear() - self.form.searchEdit.addItems(sh) - self.mw.pm.profile["searchHistory"] = sh + txt = "deck:current " if prompt == self._searchPrompt else prompt + self.update_history(txt) # keep track of search string so that we reuse identical search when # refreshing, rather than whatever is currently in the search field self.search_for(txt) + def update_history(self, search: str) -> None: + sh = self.mw.pm.profile["searchHistory"] + if search in sh: + sh.remove(search) + sh.insert(0, search) + sh = sh[:30] + self.form.searchEdit.clear() + self.form.searchEdit.addItems(sh) + self.mw.pm.profile["searchHistory"] = sh + def search_for(self, search: str, prompt: Optional[str] = None) -> None: self._lastSearchTxt = search self.form.searchEdit.lineEdit().setText(prompt or search)