Add toolbar to sidebar

This commit is contained in:
RumovZ 2021-02-25 11:03:57 +01:00
parent 9d3da3b844
commit 17afcb094f
2 changed files with 27 additions and 1 deletions

View file

@ -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)

View file

@ -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)