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")