Always return False from rename_node

setData expects a result but due to the asynchrony of the editor it
might not be known, yet.
This commit is contained in:
RumovZ 2021-02-28 22:36:21 +01:00
parent 1b8cebb8c5
commit dc1711b630

View file

@ -700,7 +700,7 @@ class SidebarTreeView(QTreeView):
icon, icon,
search_node=SearchNode(parsable_text=filt), search_node=SearchNode(parsable_text=filt),
item_type=SidebarItemType.SAVED_SEARCH, item_type=SidebarItemType.SAVED_SEARCH,
editable=True editable=True,
) )
root.add_child(item) root.add_child(item)
@ -1062,22 +1062,21 @@ class SidebarTreeView(QTreeView):
lambda: set_children_collapsed(True), lambda: set_children_collapsed(True),
) )
def rename_deck(self, item: SidebarItem, new_name: Optional[str] = None) -> bool: def rename_deck(self, item: SidebarItem, new_name: Optional[str] = None) -> None:
deck = self.mw.col.decks.get(item.id) deck = self.mw.col.decks.get(item.id)
old_name = deck["name"] old_name = deck["name"]
new_name = new_name or getOnlyText(tr(TR.DECKS_NEW_DECK_NAME), default=old_name) new_name = new_name or getOnlyText(tr(TR.DECKS_NEW_DECK_NAME), default=old_name)
new_name = new_name.replace('"', "") new_name = new_name.replace('"', "")
if not new_name or new_name == old_name: if not new_name or new_name == old_name:
return False return
self.mw.checkpoint(tr(TR.ACTIONS_RENAME_DECK)) self.mw.checkpoint(tr(TR.ACTIONS_RENAME_DECK))
try: try:
self.mw.col.decks.rename(deck, new_name) self.mw.col.decks.rename(deck, new_name)
except DeckRenameError as e: except DeckRenameError as e:
showWarning(e.description) showWarning(e.description)
return False return
self.refresh() self.refresh()
self.mw.deckBrowser.refresh() self.mw.deckBrowser.refresh()
return True
def remove_tag(self, item: SidebarItem) -> None: def remove_tag(self, item: SidebarItem) -> None:
self.browser.editor.saveNow(lambda: self._remove_tag(item)) self.browser.editor.saveNow(lambda: self._remove_tag(item))
@ -1153,13 +1152,14 @@ class SidebarTreeView(QTreeView):
def rename_node(self, item: SidebarItem, text: str) -> bool: def rename_node(self, item: SidebarItem, text: str) -> bool:
if text.replace('"', ""): if text.replace('"', ""):
new_name = re.sub(re.escape(item.name) + '$', text, item.full_name) new_name = re.sub(re.escape(item.name) + "$", text, item.full_name)
if item.item_type == SidebarItemType.DECK: if item.item_type == SidebarItemType.DECK:
return self.rename_deck(item, new_name) self.rename_deck(item, new_name)
if item.item_type == SidebarItemType.SAVED_SEARCH: if item.item_type == SidebarItemType.SAVED_SEARCH:
return self.rename_saved_search(item, new_name) self.rename_saved_search(item, new_name)
if item.item_type == SidebarItemType.TAG: if item.item_type == SidebarItemType.TAG:
self.rename_tag(item, new_name) self.rename_tag(item, new_name)
# renaming may be asynchronous so always return False
return False return False
# Saved searches # Saved searches
@ -1182,21 +1182,20 @@ class SidebarTreeView(QTreeView):
self._set_saved_searches(conf) self._set_saved_searches(conf)
self.refresh() self.refresh()
def rename_saved_search(self, item: SidebarItem, new_name: str = None) -> bool: def rename_saved_search(self, item: SidebarItem, new_name: str = None) -> None:
old = item.name old = item.name
conf = self._get_saved_searches() conf = self._get_saved_searches()
try: try:
filt = conf[old] filt = conf[old]
except KeyError: except KeyError:
return False return
new = new_name or getOnlyText(tr(TR.ACTIONS_NEW_NAME), default=old) new = new_name or getOnlyText(tr(TR.ACTIONS_NEW_NAME), default=old)
if new == old or not new: if new == old or not new:
return False return
conf[new] = filt conf[new] = filt
del conf[old] del conf[old]
self._set_saved_searches(conf) self._set_saved_searches(conf)
self.refresh() self.refresh()
return True
def save_current_search(self, _item: Any = None) -> None: def save_current_search(self, _item: Any = None) -> None:
try: try: