mirror of
https://github.com/ankitects/anki.git
synced 2025-09-24 16:56:36 -04:00
Use col instead of backend in aqt for search strs
This commit is contained in:
parent
51e1e82a9a
commit
ea46e24662
3 changed files with 25 additions and 52 deletions
|
@ -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()
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in a new issue