from typing import Callable, Dict, List, Any class NotificationType: THEME = 0 LANGUAGE = 1 DICOM = 2 class ObserverManager: """ Gestionnaire d'observateurs pour gérer les événements et notifier les abonnés. Chaque événement est identifié par une clé (string), et les abonnés sont des callbacks. """ def __init__(self): self.observers: Dict[str, List[Callable[[Any], None]]] = {} def subscribe(self, event: str, callback: Callable[[Any], None]) -> None: """ Ajoute un callback à la liste des abonnés pour l'événement donné. """ if event not in self.observers: self.observers[event] = [] if callback not in self.observers[event]: self.observers[event].append(callback) def unsubscribe(self, event: str, callback: Callable[[Any], None]) -> None: """ Retire un callback de la liste des abonnés pour l'événement donné. """ if event in self.observers and callback in self.observers[event]: self.observers[event].remove(callback) if not self.observers[event]: del self.observers[event] def notify(self, event: NotificationType) -> None: """ Notifie tous les abonnés de l'événement donné, en leur passant la donnée. """ if event in self.observers: for callback in self.observers[event]: callback()