1from __future__ import annotations
2
3from typing import TYPE_CHECKING, TypeVar
4
5if TYPE_CHECKING:
6 from .toolbar import ToolbarItem
7
8
9T = TypeVar("T", bound=type["ToolbarItem"])
10
11
12class ToolbarItemRegistry:
13 def __init__(self) -> None:
14 self._items: dict[str, type[ToolbarItem]] = {}
15
16 def register_item(self, item_class: type[ToolbarItem]) -> None:
17 self._items[item_class.name] = item_class
18
19 def get_items(self) -> list[type[ToolbarItem]]:
20 return list(self._items.values())
21
22
23# Global registry instance
24registry = ToolbarItemRegistry()
25
26
27def register_toolbar_item(item_class: T) -> T:
28 """Decorator to register a toolbar item."""
29 registry.register_item(item_class)
30 return item_class