Source code for fortrace.utility.applications.file_manager.file_manager_factory

from typing import Any, Callable

from fortrace.core.qemu_monitor import QEMUMonitorSession
from fortrace.utility.applications.application import ParentNotifier
from fortrace.utility.applications.file_manager.file_manager import GenericFileManager
from fortrace.utility.applications.file_manager.files import Files
from fortrace.utility.applications.file_manager.windows_explorer import Explorer


[docs] def get_file_browser( name: str, qs: QEMUMonitorSession, parent_notifier: ParentNotifier ) -> GenericFileManager: """Factory to create a specific file browser application object. Args: 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 Returns: Application handle to opened file manager """ match name: case "Files": return Files(qs, parent_notifier) case ( "File Explorer" ): # do not add 'Explorer' here, since Windows yields Edge as top result return Explorer(qs, parent_notifier) case _: raise ValueError(f"File browser {name} not known")