Fix #1024 – catch deck rename errors

This commit is contained in:
RumovZ 2021-02-24 13:59:38 +01:00
parent 8e43b29816
commit 1dca43f409
2 changed files with 19 additions and 6 deletions

View file

@ -88,11 +88,7 @@ class DeckBrowser:
elif cmd == "import": elif cmd == "import":
self.mw.onImport() self.mw.onImport()
elif cmd == "create": elif cmd == "create":
deck = getOnlyText(tr(TR.DECKS_NAME_FOR_DECK)) self._on_create()
if deck:
self.mw.col.decks.id(deck)
gui_hooks.sidebar_should_refresh_decks()
self.refresh()
elif cmd == "drag": elif cmd == "drag":
source, target = arg.split(",") source, target = arg.split(",")
self._handle_drag_and_drop(int(source), int(target or 0)) self._handle_drag_and_drop(int(source), int(target or 0))
@ -352,6 +348,17 @@ class DeckBrowser:
def _onShared(self) -> None: def _onShared(self) -> None:
openLink(f"{aqt.appShared}decks/") openLink(f"{aqt.appShared}decks/")
def _on_create(self) -> None:
deck = getOnlyText(tr(TR.DECKS_NAME_FOR_DECK))
if deck:
try:
self.mw.col.decks.id(deck)
except DeckRenameError as err:
show_rename_deck_error(err)
return
gui_hooks.sidebar_should_refresh_decks()
self.refresh()
###################################################################### ######################################################################
def _v1_upgrade_message(self) -> str: def _v1_upgrade_message(self) -> str:

View file

@ -4,6 +4,7 @@
from typing import List, Optional from typing import List, Optional
import aqt import aqt
from anki.decks import DeckRenameError
from aqt import gui_hooks from aqt import gui_hooks
from aqt.qt import * from aqt.qt import *
from aqt.utils import ( from aqt.utils import (
@ -16,6 +17,7 @@ from aqt.utils import (
restoreGeom, restoreGeom,
saveGeom, saveGeom,
shortcut, shortcut,
show_rename_deck_error,
showInfo, showInfo,
tr, tr,
) )
@ -164,7 +166,11 @@ class StudyDeck(QDialog):
n = getOnlyText(tr(TR.DECKS_NEW_DECK_NAME), default=default) n = getOnlyText(tr(TR.DECKS_NEW_DECK_NAME), default=default)
n = n.strip() n = n.strip()
if n: if n:
did = self.mw.col.decks.id(n) try:
did = self.mw.col.decks.id(n)
except DeckRenameError as err:
show_rename_deck_error(err)
return
# deck name may not be the same as user input. ex: ", :: # deck name may not be the same as user input. ex: ", ::
self.name = self.mw.col.decks.name(did) self.name = self.mw.col.decks.name(did)
# make sure we clean up reset hook when manually exiting # make sure we clean up reset hook when manually exiting