(self, menu_builder: MenuBuilder, menu_renderer=None, menu_renderer_config=None)
| 17 | that controls the menu and its associated rendering to a screen.""" |
| 18 | |
| 19 | def __init__(self, menu_builder: MenuBuilder, menu_renderer=None, menu_renderer_config=None): |
| 20 | self._menus: Dict[str, Menu] = {} |
| 21 | self._active_menu: Optional[Menu] = None |
| 22 | self._menu_renderer = menu_renderer |
| 23 | self._menu_builder: MenuBuilder = menu_builder |
| 24 | self._menu_renderer_config: Optional[MenuRendererConfig] |
| 25 | if menu_renderer_config is None: |
| 26 | self._menu_renderer_config = MenuRendererConfig() |
| 27 | else: |
| 28 | self._menu_renderer_config = menu_renderer_config |
| 29 | |
| 30 | if menu_renderer is None: # default to LumaOled renderer if nothing else is stated |
| 31 | self._menu_renderer = MenuRendererLumaOled(self._menu_renderer_config) |
| 32 | else: |
| 33 | self._menu_renderer = menu_renderer |
| 34 | self._transition: Optional[Transition] = None |
| 35 | if self._menu_renderer_config.transition is None: |
| 36 | self._transition = None |
| 37 | return |
| 38 | try: |
| 39 | module = importlib.import_module("menu.transition") |
| 40 | try: |
| 41 | transition_class = getattr(module, self._menu_renderer_config.transition) |
| 42 | if transition_class is not None: |
| 43 | self._transition = transition_class(self._menu_renderer.disp) |
| 44 | except AttributeError: |
| 45 | pass |
| 46 | except ImportError: |
| 47 | print("transition module does not exist. Falling back to default.") |
| 48 | self._transition = None |
| 49 | |
| 50 | def add(self, name: str, context_object=None): |
| 51 | """Adds a menu to the menu collection internal to the controller by name. |
nothing calls this directly
no test coverage detected