From 9c2eb8bf001735809b81259aa445dc2c051a96d4 Mon Sep 17 00:00:00 2001 From: BlueGreenMagick <50060875+BlueGreenMagick@users.noreply.github.com> Date: Sun, 26 Apr 2020 11:50:10 +0900 Subject: [PATCH] add context menu to SidebarTreeView --- qt/aqt/browser.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index 6ddf8c8c2..3e12f017a 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -589,6 +589,10 @@ class SidebarTreeView(QTreeView): self.expanded.connect(self.onExpansion) self.collapsed.connect(self.onCollapse) + self.setContextMenuPolicy(Qt.CustomContextMenu) + self.customContextMenuRequested.connect(self.onContextMenu) + self.context_menus = {SidebarItemType.DECK: ()} + def onClickCurrent(self) -> None: idx = self.currentIndex() if idx.isValid(): @@ -619,6 +623,19 @@ class SidebarTreeView(QTreeView): if item.onExpanded: item.onExpanded(expanded) + def onContextMenu(self, point: QPoint) -> None: + idx: QModelIndex = self.indexAt(point) + item: SidebarItem = idx.internalPointer() + item_type: SidebarItemType = item.item_type + if item_type not in self.context_menus: + return + + m = QMenu() + for action in self.context_menus[item_type]: + a = m.addAction(action[0]) + a.triggered.connect(action[1]) + m.exec_(QCursor.pos()) + # Browser window ###################################################################### @@ -1204,6 +1221,7 @@ QTableView {{ gridline-color: {grid} }} m["name"], ":/icons/notetype.svg", lambda m=m: self.setFilter("note", m["name"]), # type: ignore + item_type=SidebarItemType.NOTETYPE, ) root.addChild(item)