From ea46e2466274a1b5ad3e18cf92171b2a984a0e97 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Thu, 28 Jan 2021 11:17:24 +0100 Subject: [PATCH] Use col instead of backend in aqt for search strs --- qt/aqt/browser.py | 48 ++++++++++++------------------------------- qt/aqt/dyndeckconf.py | 4 ++-- qt/aqt/sidebar.py | 25 +++++++++------------- 3 files changed, 25 insertions(+), 52 deletions(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index ee1576108..91d53d4f8 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -13,19 +13,11 @@ from typing import List, Optional, Sequence, Tuple, cast import aqt import aqt.forms from anki.cards import Card -from anki.collection import Collection +from anki.collection import Collection, InvalidInput, NamedFilter from anki.consts import * from anki.lang import without_unicode_isolation from anki.models import NoteType from anki.notes import Note -from anki.rsbackend import ( - BackendNoteTypeID, - ConcatSeparator, - DupeIn, - FilterToSearchIn, - InvalidInput, - NamedFilter, -) from anki.stats import CardStats from anki.utils import htmlToTextLine, ids2str, isMac, isWin from aqt import AnkiQt, gui_hooks @@ -678,7 +670,7 @@ class Browser(QMainWindow): self._onRowChanged(None, None) def normalize_search(self, search: str) -> str: - normed = self.col.backend.normalize_search(search) + normed = self.col.search_string(searches=[search]) self._lastSearchTxt = normed self.form.searchEdit.lineEdit().setText(normed) return normed @@ -961,29 +953,19 @@ QTableView {{ gridline-color: {grid} }} def update_search(self, *terms: str): "Modify the current search string based on modified keys, then refresh." try: - search = self.col.backend.concatenate_searches( - sep=ConcatSeparator.AND, searches=terms - ) + search = self.col.search_string(searches=list(terms)) mods = self.mw.app.keyboardModifiers() if mods & Qt.AltModifier: - search = self.col.backend.negate_search(search) + search = self.col.search_string(negate=True, searches=[search]) cur = str(self.form.searchEdit.lineEdit().text()) if cur != self._searchPrompt: if mods & Qt.ControlModifier and mods & Qt.ShiftModifier: - search = self.col.backend.replace_search_term( - search=cur, replacement=search - ) + search = self.col.replace_search_term(cur, search) elif mods & Qt.ControlModifier: - search = self.col.backend.concatenate_searches( - # pylint: disable=no-member - sep=ConcatSeparator.AND, - searches=[cur, search], - ) + search = self.col.search_string(searches=[cur, search]) elif mods & Qt.ShiftModifier: - search = self.col.backend.concatenate_searches( - # pylint: disable=no-member - sep=ConcatSeparator.OR, - searches=[cur, search], + search = self.col.search_string( + concat_by_or=True, searches=[cur, search] ) except InvalidInput as e: show_invalid_search_error(e) @@ -1062,8 +1044,8 @@ QTableView {{ gridline-color: {grid} }} def _onSaveFilter(self) -> None: try: - filt = self.col.backend.normalize_search( - self.form.searchEdit.lineEdit().text() + filt = self.col.search_string( + searches=[self.form.searchEdit.lineEdit().text()] ) except InvalidInput as e: show_invalid_search_error(e) @@ -1105,12 +1087,12 @@ QTableView {{ gridline-color: {grid} }} def _currentFilterIsSaved(self) -> Optional[str]: filt = self.form.searchEdit.lineEdit().text() try: - filt = self.col.backend.normalize_search(filt) + filt = self.col.search_string(searches=[filt]) except InvalidInput: pass for k, v in self.col.get_config("savedFilters").items(): try: - v = self.col.backend.normalize_search(v) + v = self.col.search_string(searches=[v]) except InvalidInput: pass if filt == v: @@ -1657,11 +1639,7 @@ where id in %s""" # filter called by the editor def search_dupe(self, mid: int, text: str): self.form.searchEdit.lineEdit().setText( - self.col.backend.filter_to_search( - FilterToSearchIn( - dupe=DupeIn(mid=BackendNoteTypeID(ntid=mid), text=text) - ) - ) + self.col.search_string(dupe=(mid, text)) ) self.onSearchActivated() diff --git a/qt/aqt/dyndeckconf.py b/qt/aqt/dyndeckconf.py index 6c47528a1..34e68a395 100644 --- a/qt/aqt/dyndeckconf.py +++ b/qt/aqt/dyndeckconf.py @@ -119,11 +119,11 @@ class DeckConf(QDialog): else: d["delays"] = None - search = self.mw.col.backend.normalize_search(f.search.text()) + search = self.mw.col.search_string(searches=[f.search.text()]) terms = [[search, f.limit.value(), f.order.currentIndex()]] if f.secondFilter.isChecked(): - search_2 = self.mw.col.backend.normalize_search(f.search_2.text()) + search_2 = self.mw.col.search_string(searches=[f.search_2.text()]) terms.append([search_2, f.limit_2.value(), f.order_2.currentIndex()]) d["terms"] = terms diff --git a/qt/aqt/sidebar.py b/qt/aqt/sidebar.py index 0c68570e7..f9732241c 100644 --- a/qt/aqt/sidebar.py +++ b/qt/aqt/sidebar.py @@ -9,8 +9,12 @@ from enum import Enum from typing import Iterable, List, Optional import aqt +from anki.collection import ( # pylint: disable=unused-import + FilterToSearchIn, + NamedFilter, +) from anki.errors import DeckRenameError -from anki.rsbackend import DeckTreeNode, FilterToSearchIn, NamedFilter, TagTreeNode +from anki.rsbackend import DeckTreeNode, TagTreeNode from aqt import gui_hooks from aqt.main import ResetReason from aqt.models import Models @@ -390,29 +394,20 @@ class SidebarTreeView(QTreeView): root.addChild(item) def _named_filter(self, name: "FilterToSearchIn.NamedFilterValue") -> Callable: - return lambda: self.browser.update_search( - self.col.backend.filter_to_search(FilterToSearchIn(name=name)) - ) + return lambda: self.browser.update_search(self.col.search_string(name=name)) def _tag_filter(self, tag: str) -> Callable: - return lambda: self.browser.update_search( - self.col.backend.filter_to_search(FilterToSearchIn(tag=tag)) - ) + return lambda: self.browser.update_search(self.col.search_string(tag=tag)) def _deck_filter(self, deck: str) -> Callable: - return lambda: self.browser.update_search( - self.col.backend.filter_to_search(FilterToSearchIn(deck=deck)) - ) + return lambda: self.browser.update_search(self.col.search_string(deck=deck)) def _note_filter(self, note: str) -> Callable: - return lambda: self.browser.update_search( - self.col.backend.filter_to_search(FilterToSearchIn(note=note)) - ) + return lambda: self.browser.update_search(self.col.search_string(note=note)) def _template_filter(self, note: str, template: int) -> Callable: return lambda: self.browser.update_search( - self.col.backend.filter_to_search(FilterToSearchIn(note=note)), - self.col.backend.filter_to_search(FilterToSearchIn(template=template)), + self.col.search_string(note=note), self.col.search_string(template=template) ) def _saved_filter(self, saved: str) -> Callable: