From 35fa58730c0e3d085b9fb1768c7ff1b2fb6d18c3 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Sat, 13 Mar 2021 09:45:06 +0100 Subject: [PATCH] Improve grouping of sidebar methods --- qt/aqt/sidebar.py | 78 ++++++++++++++++++++++++++--------------------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/qt/aqt/sidebar.py b/qt/aqt/sidebar.py index 182160704..03d903152 100644 --- a/qt/aqt/sidebar.py +++ b/qt/aqt/sidebar.py @@ -256,7 +256,7 @@ class SidebarModel(QAbstractItemModel): def setData( self, index: QModelIndex, text: QVariant, _role: int = Qt.EditRole ) -> bool: - return self.sidebar.rename_node(index.internalPointer(), text) + return self.sidebar._on_rename(index.internalPointer(), text) def supportedDropActions(self) -> Qt.DropActions: return cast(Qt.DropActions, Qt.MoveAction) @@ -557,6 +557,7 @@ class SidebarTreeView(QTreeView): else: super().keyPressEvent(event) + # Slots ########### def _on_selection_changed(self, _new: QItemSelection, _old: QItemSelection) -> None: @@ -641,6 +642,18 @@ class SidebarTreeView(QTreeView): if search_node := item.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: if item := self.model().item_for_index(index): if self._enable_delete(item): @@ -1034,7 +1047,7 @@ class SidebarTreeView(QTreeView): root.add_child(item) - # Context menu actions + # Context menu ########################### def onContextMenu(self, point: QPoint) -> None: @@ -1134,6 +1147,9 @@ class SidebarTreeView(QTreeView): lambda: set_children_expanded(False), ) + # Decks + ########################### + def rename_deck(self, item: SidebarItem, new_name: str) -> None: deck = self.mw.col.decks.get(item.id) new_name = item.name_prefix + new_name @@ -1149,6 +1165,27 @@ class SidebarTreeView(QTreeView): self.mw.deckBrowser.refresh() 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: self.browser.editor.saveNow(lambda: self._remove_tags(item)) @@ -1202,38 +1239,8 @@ class SidebarTreeView(QTreeView): self.browser.model.beginReset() 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_key = "savedFilters" @@ -1293,6 +1300,9 @@ class SidebarTreeView(QTreeView): and item.name == name ) + # Notetypes and templates + #################################### + def manage_notetype(self, item: SidebarItem) -> None: Models( 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) # Helpers - ################## + #################################### def _selected_items(self) -> List[SidebarItem]: return [self.model().item_for_index(idx) for idx in self.selectedIndexes()]