from PyQt5.QtWidgets import QWidget from PyQt5.QtCore import pyqtSignal from typing import Union from utils.base.base import BaseController class Controller(BaseController): signal_widgets = pyqtSignal(list) signal_settings = pyqtSignal(list) signal_open_file = pyqtSignal(str) signal_statusBar = pyqtSignal(int) signal_statusText = pyqtSignal(str) signal_raport_mode = pyqtSignal() signal_seeking_mode = pyqtSignal() signal_update_plots = pyqtSignal() def send_widgets(self, widgets: list[QWidget]) -> None: self.signal_widgets.emit(widgets) def update_settings(self, settings: list[dict]) -> None: # TODO: Почему контроллеру просто не сообщить о медиаторе, и ему сообщать что-то через notify? Тем более, что # медиатор уже знает про контроллер... self.signal_settings.emit(settings) # TODO: Объедини переключение режимов в один метод, и по входному аргументу (например 1 и 2) переключай их. def raport_mode(self) -> None: self.signal_raport_mode.emit() def seeking_mode(self) -> None: self.signal_seeking_mode.emit() def open_file(self, filepath: str) -> None: # TODO: Где тут открытие файла? self.signal_open_file.emit(filepath) def update_plots(self) -> None: self.signal_update_plots.emit() def update_status(self, msg: Union[str, float, int]) -> None: # TODO: Довольно странный набор возможных типов входных аргументов. # TODO: Для чего сюда принимается float, если он все равно приводится к int? # TODO: Из медиатора сюда приходит статус 0.5, который становится нулем. # Это точно ожидаемое и корректное поведение? Сомнительно... # TODO: if isinstance(msg, float): ... if type(msg) == float or type(msg) == int: self.signal_statusBar.emit(int(msg)) else: self.signal_statusText.emit(msg)