From 17afcb094f9d19ec453590dfe8c585eb43c8e174 Mon Sep 17 00:00:00 2001 From: RumovZ Date: Thu, 25 Feb 2021 11:03:57 +0100 Subject: [PATCH] Add toolbar to sidebar --- qt/aqt/browser.py | 4 +++- qt/aqt/sidebar.py | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/qt/aqt/browser.py b/qt/aqt/browser.py index 23703342b..13c293412 100644 --- a/qt/aqt/browser.py +++ b/qt/aqt/browser.py @@ -28,7 +28,7 @@ from aqt.previewer import BrowserPreviewer as PreviewDialog from aqt.previewer import Previewer from aqt.qt import * from aqt.scheduling import forget_cards, set_due_date_dialog -from aqt.sidebar import SidebarSearchBar, SidebarTreeView +from aqt.sidebar import SidebarSearchBar, SidebarToolbar, SidebarTreeView from aqt.theme import theme_manager from aqt.utils import ( TR, @@ -940,12 +940,14 @@ QTableView {{ gridline-color: {grid} }} self.sidebar = SidebarTreeView(self) self.sidebarTree = self.sidebar # legacy alias dw.setWidget(self.sidebar) + self.sidebar.toolbar = toolbar = SidebarToolbar(self.sidebar) self.sidebar.searchBar = searchBar = SidebarSearchBar(self.sidebar) qconnect( self.form.actionSidebarFilter.triggered, self.focusSidebarSearchBar, ) l = QVBoxLayout() + l.addWidget(toolbar) l.addWidget(searchBar) l.addWidget(self.sidebar) l.setContentsMargins(0, 0, 0, 0) diff --git a/qt/aqt/sidebar.py b/qt/aqt/sidebar.py index 41856e3c7..4e3cef208 100644 --- a/qt/aqt/sidebar.py +++ b/qt/aqt/sidebar.py @@ -29,6 +29,11 @@ from aqt.utils import ( ) +class SidebarTool(Enum): + SELECT = auto() + SEARCH = auto() + + class SidebarItemType(Enum): ROOT = auto() SAVED_SEARCH_ROOT = auto() @@ -238,6 +243,25 @@ class SidebarModel(QAbstractItemModel): return cast(Qt.ItemFlags, flags) +class SidebarToolbar(QToolBar): + _tools: Tuple[SidebarTool, str, str] = ( + (SidebarTool.SELECT, ":/icons/select.svg", "select"), + (SidebarTool.SEARCH, ":/icons/magnifying_glass.svg", "search"), + ) + + def __init__(self, sidebar: SidebarTreeView) -> None: + super().__init__() + self.sidebar = sidebar + self._action_group = QActionGroup(self) + qconnect(self._action_group.triggered, self._on_action_group_triggered) + self._add_tools() + + def _add_tools(self) -> None: + for row in self._tools: + action = self.addAction(theme_manager.icon_from_resources(row[1]), row[2]) + action.setCheckable(True) + self._action_group.addAction(action) + class SidebarSearchBar(QLineEdit): def __init__(self, sidebar: SidebarTreeView) -> None: QLineEdit.__init__(self, sidebar)