Source code for ooodev.gui.menu.context.action_trigger_container

from __future__ import annotations
from typing import Any, Tuple

try:
    # python 3.12+
    from typing import override  # noqa # type: ignore
except ImportError:
    from typing_extensions import override  # noqa # type: ignore

import uno
from com.sun.star.container import XIndexContainer
from com.sun.star.lang import XMultiServiceFactory
from ooodev.io.log.named_logger import NamedLogger
from ooodev.uno_helper.base_class.base import Base
from ooodev.uno_helper.base_class.base_service_info import BaseServiceInfo


[docs]class ActionTriggerContainer(Base, BaseServiceInfo, XIndexContainer, XMultiServiceFactory): """Provides container for items.""" # region Init
[docs] def __init__(self): self._items = [] self._logger = NamedLogger(self.__class__.__name__)
# endregion Init # region BaseServiceInfo
[docs] @override def getImplementationName(self) -> str: """ Provides the implementation name of the service implementation. """ return "action_trigger_container"
[docs] @override def supportsService(self, ServiceName: str) -> bool: """ Tests whether the specified service is supported, i.e. implemented by the implementation. """ return ServiceName in self.getAvailableServiceNames()
[docs] @override def getSupportedServiceNames(self) -> Tuple[str]: """ Provides the supported service names of the implementation, including also indirect service names. """ return ("com.sun.star.ui.ActionTriggerContainer",)
# endregion BaseServiceInfo # region XMultiServiceFactory
[docs] @override def createInstance(self, aServiceSpecifier: str): """Raises NotImplementedError""" self._logger.warning("createInstance is not implement in this context") raise NotImplementedError
[docs] @override def createInstanceWithArguments(self, ServiceSpecifier: str, Arguments: Any): """Raises NotImplementedError""" self._logger.warning("createInstanceWithArguments is not implement in this context") raise NotImplementedError
[docs] def getAvailableServiceNames(self): return ()
# endregion XMultiServiceFactory # region XIndexContainer
[docs] @override def hasElements(self) -> bool: return len(self._items) != 0
[docs] @override def getElementType(self) -> Any: return uno.getTypeByName("com.sun.star.beans.XPropertyValue")
[docs] @override def getCount(self) -> int: return len(self._items)
[docs] @override def getByIndex(self, Index: int) -> Any: if 0 <= Index < len(self._items): return self._items[Index] return None # should be raise IllegalArgumentException
[docs] @override def replaceByIndex(self, Index: int, Element: Any) -> None: if 0 <= Index < len(self._items): self._items[Index] = Element
[docs] @override def insertByIndex(self, Index: int, Element: Any) -> None: if 0 <= Index <= len(self._items): self._items.insert(Index, Element)
[docs] @override def removeByIndex(self, Index: int) -> None: if 0 <= Index < len(self._items): self._items.pop(Index)
# endregion XIndexContainer # region Dunder methods def __len__(self): return len(self._items) def __getitem__(self, key): return self.getByIndex(key) def __setitem__(self, key, value): self.replaceByIndex(key, value) def __delitem__(self, key): self.removeByIndex(key) def __iter__(self): return iter(self._items) # endregion Dunder methods # region Other Methods
[docs] def append(self, item: Any): self._items.append(item)
# endregion Other Methods