from app.core.observer_manager import ObserverManager, NotificationType from app.core.language_manager import LanguageManager from app.core.theme_manager import ThemeManager from app.core.settings_manager import SettingsManager from app.core.alert_manager import AlertManager from app.core.update_manager import UpdateManager from app.core.dicom_manager import DicomManager from app.core.export_manager import ExportManager from typing import Optional class MainManager: _instance: Optional['MainManager'] = None def __init__(self) -> None: if MainManager._instance is not None: raise Exception("This class is a singleton!") else: MainManager._instance = self self.observer_manager: ObserverManager = ObserverManager() self.theme_manager: ThemeManager = ThemeManager() self.settings_manager: SettingsManager = SettingsManager(self.observer_manager, self.theme_manager) self.language_manager: LanguageManager = LanguageManager(self.settings_manager) self.alert_manager: AlertManager = AlertManager(self.language_manager, self.theme_manager) self.update_manager: UpdateManager = UpdateManager(self.settings_manager, self.language_manager, self.alert_manager) self.dicom_manager: DicomManager = DicomManager() self.export_manager: ExportManager = ExportManager(self.dicom_manager) @classmethod def get_instance(cls) -> 'MainManager': if cls._instance is None: cls._instance = cls() return cls._instance def get_observer_manager(self) -> ObserverManager: return self.observer_manager def get_theme_manager(self) -> ThemeManager: return self.theme_manager def get_settings_manager(self) -> SettingsManager: return self.settings_manager def get_language_manager(self) -> LanguageManager: return self.language_manager def get_alert_manager(self) -> AlertManager: return self.alert_manager def get_update_manager(self) -> UpdateManager: return self.update_manager def get_dicom_manager(self) -> DicomManager: return self.dicom_manager def get_export_manager(self) -> ExportManager: return self.export_manager