Source code for fortrace.utility.applications.application_factory

from fortrace.core.qemu_monitor import QEMUMonitorSession
from fortrace.utility.applications.application import (
    ApplicationType,
    GenericApplication,
    ParentNotifier,
)
from fortrace.utility.applications.console.linux_terminal import GenericLinuxTerminal
from fortrace.utility.applications.console.terminal_factory import get_terminal
from fortrace.utility.applications.file_manager.file_manager_factory import (
    get_file_browser,
)
from fortrace.utility.applications.text_editor.text_editor_factory import (
    get_text_editor,
)
from fortrace.utility.applications.web_browsers.web_browser_factory import (
    get_web_browser,
)


[docs] def get_application( application_type: ApplicationType, name: str, qs: QEMUMonitorSession, parent_notifier: ParentNotifier, **kwargs, ) -> GenericApplication: """Factory to create an application object by calling the correct sub-factory. Args: application_type: ApplicationType to filter for correct sub-factory name: name of the application (if not included ValueError is thrown) qs: handle to QEMUMonitor parent_notifier: attribute of desktop environment to handle changes in windows **kwargs: relevant to certain applications that might be started with extra arguments, e.g., Terminals Returns: Handle to opened application """ match application_type: case ApplicationType.FILE_MANAGER: return get_file_browser(name, qs, parent_notifier) case ApplicationType.TERMINAL: return get_terminal(name, qs, parent_notifier, **kwargs) case ApplicationType.TEXT_EDITOR: return get_text_editor(name, qs, parent_notifier) case ApplicationType.WEB_BROWSER: return get_web_browser(name, qs, parent_notifier) case ApplicationType.OTHER: return GenericApplication(name, application_type, qs, parent_notifier) case _: raise ValueError(f"ApplicationType {application_type} is not supported")