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