示例#1
0
    def update_search(self, *terms: Union[str, SearchNode]) -> None:
        """Modify the current search string based on modifier keys, then refresh."""
        mods = self.mw.app.keyboardModifiers()
        previous = SearchNode(parsable_text=self.browser.current_search())
        current = self.mw.col.group_searches(*terms)

        # if Alt pressed, invert
        if mods & Qt.AltModifier:
            current = SearchNode(negated=current)

        try:
            if mods & Qt.ControlModifier and mods & Qt.ShiftModifier:
                # If Ctrl+Shift, replace searches nodes of the same type.
                search = self.col.replace_in_search_node(previous, current)
            elif mods & Qt.ControlModifier:
                # If Ctrl, AND with previous
                search = self.col.join_searches(previous, current, "AND")
            elif mods & Qt.ShiftModifier:
                # If Shift, OR with previous
                search = self.col.join_searches(previous, current, "OR")
            else:
                search = self.col.build_search_string(current)
        except InvalidInput as e:
            show_invalid_search_error(e)
        else:
            self.browser.search_for(search)
示例#2
0
 def _on_search_button(self, line: QLineEdit) -> None:
     try:
         search = self.mw.col.build_search_string(line.text())
     except InvalidInput as err:
         line.setFocus()
         line.selectAll()
         show_invalid_search_error(err)
     else:
         aqt.dialogs.open("Browser", self.mw, search=(search, ))
示例#3
0
def search(self) -> None:
    try:
        self.model.search(self._lastSearchTxt)
    except Exception as err:
        if(self._returnPressed):
            show_invalid_search_error(err)
            self._returnPressed = False
    if not self.model.cards:
        # no row change will fire
        self._onRowChanged(None, None)
示例#4
0
def onSearchActivated(self) -> None:
    text = self.form.searchEdit.lineEdit().text()
    try:
        normed = self.col.build_search_string(text)
    except InvalidInput as err:
        if(self._returnPressed):
            show_invalid_search_error(err)
            self._returnPressed = False
    else:
        self.search_for(normed)
        self.update_history()
示例#5
0
 def accept(self):
     try:
         self.saveConf()
     except InvalidInput as err:
         show_invalid_search_error(err)
         return
     if not self.mw.col.sched.rebuild_filtered_deck(self.deck["id"]):
         if askUser(tr(TR.DECKS_THE_PROVIDED_SEARCH_DID_NOT_MATCH)):
             return
     self.mw.reset()
     QDialog.accept(self)
示例#6
0
 def save_current_search(self, _item: Any = None) -> None:
     try:
         filt = self.col.build_search_string(
             self.browser.form.searchEdit.lineEdit().text())
     except InvalidInput as e:
         show_invalid_search_error(e)
     else:
         name = getOnlyText(tr(TR.BROWSING_PLEASE_GIVE_YOUR_FILTER_A_NAME))
         if not name:
             return
         conf = self._get_saved_searches()
         conf[name] = filt
         self._set_saved_searches(conf)
         self.refresh()
示例#7
0
 def accept(self) -> None:
     try:
         self.saveConf()
     except InvalidInput as err:
         show_invalid_search_error(err)
     except DeckRenameError as err:
         showWarning(err.description)
     else:
         if not self.mw.col.sched.rebuild_filtered_deck(self.deck["id"]):
             if askUser(tr(TR.DECKS_THE_PROVIDED_SEARCH_DID_NOT_MATCH)):
                 return
         saveGeom(self, "dyndeckconf")
         self.mw.reset()
         QDialog.accept(self)
         aqt.dialogs.markClosed("DynDeckConfDialog")
示例#8
0
文件: sidebar.py 项目: corkine/anki
 def save_current_search(self) -> None:
     try:
         filt = self.col.build_search_string(
             self.browser.form.searchEdit.lineEdit().text())
     except InvalidInput as e:
         show_invalid_search_error(e)
         return
     name = getOnlyText(tr(TR.BROWSING_PLEASE_GIVE_YOUR_FILTER_A_NAME))
     if not name:
         return
     conf = self._get_saved_searches()
     if name in conf and not askUser(
             tr(TR.BROWSING_CONFIRM_SAVED_SEARCH_OVERWRITE, name=name)):
         return
     conf[name] = filt
     self._set_saved_searches(conf)
     self.refresh(lambda item: item.item_type == SidebarItemType.
                  SAVED_SEARCH and item.name == name)
示例#9
0
 def update_search(self, *terms: Union[str, SearchTerm]) -> None:
     """Modify the current search string based on modified keys, then refresh."""
     try:
         search = self.col.build_search_string(*terms)
         mods = self.mw.app.keyboardModifiers()
         if mods & Qt.AltModifier:
             search = self.col.build_search_string(search, negate=True)
         current = self.browser.current_search()
         if mods & Qt.ControlModifier and mods & Qt.ShiftModifier:
             search = self.col.replace_search_term(current, search)
         elif mods & Qt.ControlModifier:
             search = self.col.build_search_string(current, search)
         elif mods & Qt.ShiftModifier:
             search = self.col.build_search_string(current,
                                                   search,
                                                   match_any=True)
     except InvalidInput as e:
         show_invalid_search_error(e)
     else:
         self.browser.search_for(search)
示例#10
0
 def on_hint_button(self) -> None:
     """Open the browser to show cards that match the typed-in filters but cannot be included
     due to internal limitations.
     """
     manual_filters = (self.form.search.text(), *self._second_filter())
     implicit_filters = (
         SearchNode(card_state=SearchNode.CARD_STATE_SUSPENDED),
         SearchNode(card_state=SearchNode.CARD_STATE_BURIED),
         *self._learning_search_node(),
         *self._filtered_search_node(),
     )
     manual_filter = self.col.group_searches(*manual_filters, joiner="OR")
     implicit_filter = self.col.group_searches(*implicit_filters,
                                               joiner="OR")
     try:
         search = self.col.build_search_string(manual_filter,
                                               implicit_filter)
     except InvalidInput as err:
         show_invalid_search_error(err)
     else:
         aqt.dialogs.open("Browser", self.mw, search=(search, ))