Ejemplo n.º 1
0
    def saveConf(self) -> None:
        f = self.form
        d = self.deck

        if f.name.text() and d["name"] != f.name.text():
            self.mw.col.decks.rename(d, f.name.text())
            gui_hooks.sidebar_should_refresh_decks()

        d["resched"] = f.resched.isChecked()
        d["delays"] = None

        if self.mw.col.schedVer() == 1 and f.stepsOn.isChecked():
            steps = self.userToList(f.steps)
            if steps:
                d["delays"] = steps
            else:
                d["delays"] = None

        search = self.mw.col.build_search_string(f.search.text())
        terms = [[search, f.limit.value(), f.order.currentIndex()]]

        if f.secondFilter.isChecked():
            search_2 = self.mw.col.build_search_string(f.search_2.text())
            terms.append(
                [search_2,
                 f.limit_2.value(),
                 f.order_2.currentIndex()])

        d["terms"] = terms
        d["previewDelay"] = f.previewDelay.value()

        self.mw.col.decks.save(d)
Ejemplo n.º 2
0
 def _linkHandler(self, url):
     if ":" in url:
         (cmd, arg) = url.split(":")
     else:
         cmd = url
     if cmd == "open":
         self._selDeck(arg)
     elif cmd == "opts":
         self._showOptions(arg)
     elif cmd == "shared":
         self._onShared()
     elif cmd == "import":
         self.mw.onImport()
     elif cmd == "create":
         deck = getOnlyText(_("Name for deck:"))
         if deck:
             self.mw.col.decks.id(deck)
             gui_hooks.sidebar_should_refresh_decks()
             self.refresh()
     elif cmd == "drag":
         draggedDeckDid, ontoDeckDid = arg.split(",")
         self._dragDeckOnto(draggedDeckDid, ontoDeckDid)
     elif cmd == "collapse":
         self._collapse(int(arg))
     return False
Ejemplo n.º 3
0
 def _linkHandler(self, url: str) -> Any:
     if ":" in url:
         (cmd, arg) = url.split(":", 1)
     else:
         cmd = url
     if cmd == "open":
         self._selDeck(arg)
     elif cmd == "opts":
         self._showOptions(arg)
     elif cmd == "shared":
         self._onShared()
     elif cmd == "import":
         self.mw.onImport()
     elif cmd == "create":
         deck = getOnlyText(tr(TR.DECKS_NAME_FOR_DECK))
         if deck:
             self.mw.col.decks.id(deck)
             gui_hooks.sidebar_should_refresh_decks()
             self.refresh()
     elif cmd == "drag":
         source, target = arg.split(",")
         self._handle_drag_and_drop(int(source), int(target or 0))
     elif cmd == "collapse":
         self._collapse(int(arg))
     elif cmd == "v2upgrade":
         self._confirm_upgrade()
     elif cmd == "v2upgradeinfo":
         openLink("https://faqs.ankiweb.net/the-anki-2.1-scheduler.html")
     elif cmd == "v2upgradelater":
         self._v1_message_dismissed_at = intTime()
         self.refresh()
     return False
Ejemplo n.º 4
0
 def _linkHandler(self, url: str) -> Any:
     if ":" in url:
         (cmd, arg) = url.split(":", 1)
     else:
         cmd = url
     if cmd == "open":
         self._selDeck(arg)
     elif cmd == "opts":
         self._showOptions(arg)
     elif cmd == "shared":
         self._onShared()
     elif cmd == "import":
         self.mw.onImport()
     elif cmd == "create":
         deck = getOnlyText(tr(TR.DECKS_NAME_FOR_DECK))
         if deck:
             self.mw.col.decks.id(deck)
             gui_hooks.sidebar_should_refresh_decks()
             self.refresh()
     elif cmd == "drag":
         source, target = arg.split(",")
         self._handle_drag_and_drop(int(source), int(target or 0))
     elif cmd == "collapse":
         self._collapse(int(arg))
     return False
Ejemplo n.º 5
0
    def _dragDeckOnto(self, draggedDeckDid, ontoDeckDid):
        try:
            self.mw.col.decks.renameForDragAndDrop(draggedDeckDid, ontoDeckDid)
            gui_hooks.sidebar_should_refresh_decks()
        except DeckRenameError as e:
            return showWarning(e.description)

        self.show()
Ejemplo n.º 6
0
 def _handle_drag_and_drop(self, source: int, target: int) -> None:
     try:
         self.mw.col.decks.drag_drop_decks([source], target)
     except Exception as e:
         showWarning(str(e))
         return
     gui_hooks.sidebar_should_refresh_decks()
     self.show()
Ejemplo n.º 7
0
 def _on_create(self) -> None:
     deck = getOnlyText(tr(TR.DECKS_NAME_FOR_DECK))
     if deck:
         try:
             self.mw.col.decks.id(deck)
         except DeckIsFilteredError as err:
             showWarning(str(err))
             return
         gui_hooks.sidebar_should_refresh_decks()
         self.refresh()
Ejemplo n.º 8
0
        def on_done(fut: Future) -> None:
            try:
                fut.result()
            except Exception as e:
                showWarning(str(e))
                return

            self.mw.update_undo_actions()
            gui_hooks.sidebar_should_refresh_decks()
            self.show()
Ejemplo n.º 9
0
 def _rename(self, did: int) -> None:
     self.mw.checkpoint(_("Rename Deck"))
     deck = self.mw.col.decks.get(did)
     oldName = deck["name"]
     newName = getOnlyText(_("New deck name:"), default=oldName)
     newName = newName.replace('"', "")
     if not newName or newName == oldName:
         return
     try:
         self.mw.col.decks.rename(deck, newName)
         gui_hooks.sidebar_should_refresh_decks()
     except DeckRenameError as e:
         return showWarning(e.description)
     self.show()
Ejemplo n.º 10
0
 def _rename(self, did: int) -> None:
     self.mw.checkpoint(tr(TR.ACTIONS_RENAME_DECK))
     deck = self.mw.col.decks.get(did)
     oldName = deck["name"]
     newName = getOnlyText(tr(TR.DECKS_NEW_DECK_NAME), default=oldName)
     newName = newName.replace('"', "")
     if not newName or newName == oldName:
         return
     try:
         self.mw.col.decks.rename(deck, newName)
         gui_hooks.sidebar_should_refresh_decks()
     except DeckRenameError as e:
         return showWarning(e.description)
     self.show()
Ejemplo n.º 11
0
 def _rename(self, did: int) -> None:
     deck = self.mw.col.decks.get(did)
     oldName = deck["name"]
     newName = getOnlyText(tr(TR.DECKS_NEW_DECK_NAME), default=oldName)
     newName = newName.replace('"', "")
     if not newName or newName == oldName:
         return
     try:
         self.mw.col.decks.rename(deck, newName)
         gui_hooks.sidebar_should_refresh_decks()
     except DeckIsFilteredError as err:
         showWarning(str(err))
         return
     self.mw.update_undo_actions()
     self.show()
Ejemplo n.º 12
0
 def onAddDeck(self) -> None:
     row = self.form.list.currentRow()
     if row < 0:
         default = self.form.filter.text()
     else:
         default = self.names[self.form.list.currentRow()]
     n = getOnlyText(_("New deck name:"), default=default)
     if n:
         did = self.mw.col.decks.id(n)
         # deck name may not be the same as user input. ex: ", ::
         self.name = self.mw.col.decks.name(did)
         # make sure we clean up reset hook when manually exiting
         gui_hooks.state_did_reset.remove(self.onReset)
         if self.mw.state == "deckBrowser":
             self.mw.deckBrowser.refresh()
         gui_hooks.sidebar_should_refresh_decks()
         QDialog.accept(self)
Ejemplo n.º 13
0
 def onAddDeck(self) -> None:
     row = self.form.list.currentRow()
     if row < 0:
         default = self.form.filter.text()
     else:
         default = self.names[self.form.list.currentRow()]
     n = getOnlyText(tr(TR.DECKS_NEW_DECK_NAME), default=default)
     n = n.strip()
     if n:
         try:
             did = self.mw.col.decks.id(n)
         except DeckIsFilteredError as err:
             showWarning(str(err))
             return
         # deck name may not be the same as user input. ex: ", ::
         self.name = self.mw.col.decks.name(did)
         # make sure we clean up reset hook when manually exiting
         gui_hooks.state_did_reset.remove(self.onReset)
         if self.mw.state == "deckBrowser":
             self.mw.deckBrowser.refresh()
         gui_hooks.sidebar_should_refresh_decks()
         QDialog.accept(self)
Ejemplo n.º 14
0
 def _handle_drag_and_drop(self, source: int, target: int) -> None:
     self.mw.col.decks.drag_drop_decks([source], target)
     gui_hooks.sidebar_should_refresh_decks()
     self.show()