Improve grouping of sidebar methods

This commit is contained in:
RumovZ 2021-03-13 09:45:06 +01:00
parent 53665f0cf4
commit 35fa58730c

View file

@ -256,7 +256,7 @@ class SidebarModel(QAbstractItemModel):
def setData( def setData(
self, index: QModelIndex, text: QVariant, _role: int = Qt.EditRole self, index: QModelIndex, text: QVariant, _role: int = Qt.EditRole
) -> bool: ) -> bool:
return self.sidebar.rename_node(index.internalPointer(), text) return self.sidebar._on_rename(index.internalPointer(), text)
def supportedDropActions(self) -> Qt.DropActions: def supportedDropActions(self) -> Qt.DropActions:
return cast(Qt.DropActions, Qt.MoveAction) return cast(Qt.DropActions, Qt.MoveAction)
@ -557,6 +557,7 @@ class SidebarTreeView(QTreeView):
else: else:
super().keyPressEvent(event) super().keyPressEvent(event)
# Slots
########### ###########
def _on_selection_changed(self, _new: QItemSelection, _old: QItemSelection) -> None: def _on_selection_changed(self, _new: QItemSelection, _old: QItemSelection) -> None:
@ -641,6 +642,18 @@ class SidebarTreeView(QTreeView):
if search_node := item.search_node: if search_node := item.search_node:
self.update_search(search_node) self.update_search(search_node)
def _on_rename(self, item: SidebarItem, text: str) -> bool:
new_name = text.replace('"', "")
if new_name and new_name != item.name:
if item.item_type == SidebarItemType.DECK:
self.rename_deck(item, new_name)
elif item.item_type == SidebarItemType.SAVED_SEARCH:
self.rename_saved_search(item, new_name)
elif item.item_type == SidebarItemType.TAG:
self.rename_tag(item, new_name)
# renaming may be asynchronous so always return False
return False
def _on_delete_key(self, index: QModelIndex) -> None: def _on_delete_key(self, index: QModelIndex) -> None:
if item := self.model().item_for_index(index): if item := self.model().item_for_index(index):
if self._enable_delete(item): if self._enable_delete(item):
@ -1034,7 +1047,7 @@ class SidebarTreeView(QTreeView):
root.add_child(item) root.add_child(item)
# Context menu actions # Context menu
########################### ###########################
def onContextMenu(self, point: QPoint) -> None: def onContextMenu(self, point: QPoint) -> None:
@ -1134,6 +1147,9 @@ class SidebarTreeView(QTreeView):
lambda: set_children_expanded(False), lambda: set_children_expanded(False),
) )
# Decks
###########################
def rename_deck(self, item: SidebarItem, new_name: str) -> None: def rename_deck(self, item: SidebarItem, new_name: str) -> None:
deck = self.mw.col.decks.get(item.id) deck = self.mw.col.decks.get(item.id)
new_name = item.name_prefix + new_name new_name = item.name_prefix + new_name
@ -1149,6 +1165,27 @@ class SidebarTreeView(QTreeView):
self.mw.deckBrowser.refresh() self.mw.deckBrowser.refresh()
self.mw.update_undo_actions() self.mw.update_undo_actions()
def delete_decks(self, _item: SidebarItem) -> None:
self.browser.editor.saveNow(self._delete_decks)
def _delete_decks(self) -> None:
def do_delete() -> int:
return self.mw.col.decks.remove(dids)
def on_done(fut: Future) -> None:
self.mw.requireReset(reason=ResetReason.BrowserDeleteDeck, context=self)
self.browser.search()
self.browser.model.endReset()
tooltip(tr(TR.BROWSING_CARDS_DELETED, count=fut.result()), parent=self)
self.refresh()
dids = self._selected_decks()
self.browser.model.beginReset()
self.mw.taskman.with_progress(do_delete, on_done)
# Tags
###########################
def remove_tags(self, item: SidebarItem) -> None: def remove_tags(self, item: SidebarItem) -> None:
self.browser.editor.saveNow(lambda: self._remove_tags(item)) self.browser.editor.saveNow(lambda: self._remove_tags(item))
@ -1202,38 +1239,8 @@ class SidebarTreeView(QTreeView):
self.browser.model.beginReset() self.browser.model.beginReset()
self.mw.taskman.with_progress(do_rename, on_done) self.mw.taskman.with_progress(do_rename, on_done)
def delete_decks(self, _item: SidebarItem) -> None:
self.browser.editor.saveNow(self._delete_decks)
def _delete_decks(self) -> None:
def do_delete() -> int:
return self.mw.col.decks.remove(dids)
def on_done(fut: Future) -> None:
self.mw.requireReset(reason=ResetReason.BrowserDeleteDeck, context=self)
self.browser.search()
self.browser.model.endReset()
tooltip(tr(TR.BROWSING_CARDS_DELETED, count=fut.result()), parent=self)
self.refresh()
dids = self._selected_decks()
self.browser.model.beginReset()
self.mw.taskman.with_progress(do_delete, on_done)
def rename_node(self, item: SidebarItem, text: str) -> bool:
new_name = text.replace('"', "")
if new_name and new_name != item.name:
if item.item_type == SidebarItemType.DECK:
self.rename_deck(item, new_name)
elif item.item_type == SidebarItemType.SAVED_SEARCH:
self.rename_saved_search(item, new_name)
elif item.item_type == SidebarItemType.TAG:
self.rename_tag(item, new_name)
# renaming may be asynchronous so always return False
return False
# Saved searches # Saved searches
################## ####################################
_saved_searches_key = "savedFilters" _saved_searches_key = "savedFilters"
@ -1293,6 +1300,9 @@ class SidebarTreeView(QTreeView):
and item.name == name and item.name == name
) )
# Notetypes and templates
####################################
def manage_notetype(self, item: SidebarItem) -> None: def manage_notetype(self, item: SidebarItem) -> None:
Models( Models(
self.mw, parent=self.browser, fromMain=True, selected_notetype_id=item.id self.mw, parent=self.browser, fromMain=True, selected_notetype_id=item.id
@ -1303,7 +1313,7 @@ class SidebarTreeView(QTreeView):
CardLayout(self.mw, note, ord=item.id, parent=self, fill_empty=True) CardLayout(self.mw, note, ord=item.id, parent=self, fill_empty=True)
# Helpers # Helpers
################## ####################################
def _selected_items(self) -> List[SidebarItem]: def _selected_items(self) -> List[SidebarItem]:
return [self.model().item_for_index(idx) for idx in self.selectedIndexes()] return [self.model().item_for_index(idx) for idx in self.selectedIndexes()]