e357dbf6b3
Means URLs like :/icons/foo.jpg should become icons:foo.jpg This is part of the prep work for a PyQt6 update. PyQt6 has dropped pyrcc, so we can longer generate the icons_qrc.py file we did previously. Qt Designer expects us to use the resource system, so we continue to generate the icons.qrc file to make editing the UI files easier. But at runtime, we no longer use that file.
51 lines
1.7 KiB
Python
51 lines
1.7 KiB
Python
# Copyright: Ankitects Pty Ltd and contributors
|
|
# License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
from __future__ import annotations
|
|
|
|
from enum import Enum, auto
|
|
|
|
import aqt
|
|
from aqt.qt import *
|
|
from aqt.theme import theme_manager
|
|
from aqt.utils import tr
|
|
|
|
|
|
class SidebarTool(Enum):
|
|
SELECT = auto()
|
|
SEARCH = auto()
|
|
|
|
|
|
class SidebarToolbar(QToolBar):
|
|
_tools: tuple[tuple[SidebarTool, str, Callable[[], str]], ...] = (
|
|
(SidebarTool.SEARCH, "icons:magnifying_glass.svg", tr.actions_search),
|
|
(SidebarTool.SELECT, "icons:select.svg", tr.actions_select),
|
|
)
|
|
|
|
def __init__(self, sidebar: aqt.browser.sidebar.SidebarTreeView) -> None:
|
|
super().__init__()
|
|
self.sidebar = sidebar
|
|
self._action_group = QActionGroup(self)
|
|
qconnect(self._action_group.triggered, self._on_action_group_triggered)
|
|
self._setup_tools()
|
|
self.setIconSize(QSize(16, 16))
|
|
self.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
|
|
self.setStyle(QStyleFactory.create("fusion"))
|
|
|
|
def _setup_tools(self) -> None:
|
|
for row, tool in enumerate(self._tools):
|
|
action = self.addAction(
|
|
theme_manager.icon_from_resources(tool[1]), tool[2]()
|
|
)
|
|
action.setCheckable(True)
|
|
action.setShortcut(f"Alt+{row + 1}")
|
|
self._action_group.addAction(action)
|
|
# always start with first tool
|
|
active = 0
|
|
self._action_group.actions()[active].setChecked(True)
|
|
self.sidebar.tool = self._tools[active][0]
|
|
|
|
def _on_action_group_triggered(self, action: QAction) -> None:
|
|
index = self._action_group.actions().index(action)
|
|
self.sidebar.tool = self._tools[index][0]
|