Use col instead of backend in aqt for search strs

This commit is contained in:
RumovZ 2021-01-28 11:17:24 +01:00
parent 51e1e82a9a
commit ea46e24662
3 changed files with 25 additions and 52 deletions

View file

@ -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()

View file

@ -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

View file

@ -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: