Source code for src.data_acquisition.eventful_screen
from typing import Callable, Generic, TypeVar
from .event_manager import EventManager
from .screens import Screen
from .types import ResultEventCallback
T = TypeVar("T")
[docs]
class EventfulScreen(Generic[T]):
def __init__(
self,
*,
screen: Screen,
event_manager: EventManager[T],
screen_show_callback: Callable[[], None] = lambda: None,
) -> None:
self._screen = screen
self._event_manager = event_manager
self._screen_show_callback = screen_show_callback
[docs]
def show(self, *, end_callback: ResultEventCallback[T]) -> None:
"""
Starts the event manager and shows the screen.
"""
self._end_callback = end_callback
self._event_manager.register_callback(end_callback)
self._event_manager.start()
self._screen.show()
self._screen_show_callback()
[docs]
def exit(self) -> None:
"""
Stops the event manager after exiting the screen.
"""
self._event_manager.deregister_callback(self._end_callback)
self._event_manager.stop()