2024-11-25 14:01:09 +03:00
|
|
|
|
from PyQt5.QtWidgets import QWidget
|
|
|
|
|
|
from PyQt5.QtCore import pyqtSignal
|
2024-12-25 11:56:17 +03:00
|
|
|
|
from typing import Union
|
2024-11-25 14:01:09 +03:00
|
|
|
|
|
2024-12-05 13:18:53 +03:00
|
|
|
|
from utils.base.base import BaseController
|
2024-11-25 14:01:09 +03:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class Controller(BaseController):
|
|
|
|
|
|
|
|
|
|
|
|
signal_widgets = pyqtSignal(list)
|
2024-11-26 18:28:05 +03:00
|
|
|
|
signal_settings = pyqtSignal(list)
|
2024-12-24 10:37:34 +03:00
|
|
|
|
signal_open_file = pyqtSignal(str)
|
2024-12-25 11:56:17 +03:00
|
|
|
|
signal_statusBar = pyqtSignal(int)
|
|
|
|
|
|
signal_statusText = pyqtSignal(str)
|
2024-12-24 10:37:34 +03:00
|
|
|
|
signal_raport_mode = pyqtSignal()
|
2024-12-18 19:43:46 +03:00
|
|
|
|
signal_seeking_mode = pyqtSignal()
|
2024-12-24 10:37:34 +03:00
|
|
|
|
signal_update_plots = pyqtSignal()
|
2024-11-25 14:01:09 +03:00
|
|
|
|
|
|
|
|
|
|
def send_widgets(self, widgets: list[QWidget]) -> None:
|
|
|
|
|
|
self.signal_widgets.emit(widgets)
|
2024-11-26 18:16:55 +03:00
|
|
|
|
|
2024-12-18 19:43:46 +03:00
|
|
|
|
def update_settings(self, settings: list[dict]) -> None:
|
2025-01-15 18:07:16 +03:00
|
|
|
|
# TODO: Почему контроллеру просто не сообщить о медиаторе, и ему сообщать что-то через notify? Тем более, что
|
|
|
|
|
|
# медиатор уже знает про контроллер...
|
2024-11-26 18:28:05 +03:00
|
|
|
|
self.signal_settings.emit(settings)
|
2024-12-16 15:49:01 +03:00
|
|
|
|
|
2025-01-15 18:07:16 +03:00
|
|
|
|
# TODO: Объедини переключение режимов в один метод, и по входному аргументу (например 1 и 2) переключай их.
|
2024-12-24 10:37:34 +03:00
|
|
|
|
def raport_mode(self) -> None:
|
|
|
|
|
|
self.signal_raport_mode.emit()
|
2024-12-18 19:43:46 +03:00
|
|
|
|
|
|
|
|
|
|
def seeking_mode(self) -> None:
|
|
|
|
|
|
self.signal_seeking_mode.emit()
|
|
|
|
|
|
|
2024-12-24 10:37:34 +03:00
|
|
|
|
def open_file(self, filepath: str) -> None:
|
2025-01-15 18:07:16 +03:00
|
|
|
|
# TODO: Где тут открытие файла?
|
2024-12-24 10:37:34 +03:00
|
|
|
|
self.signal_open_file.emit(filepath)
|
|
|
|
|
|
|
|
|
|
|
|
def update_plots(self) -> None:
|
|
|
|
|
|
self.signal_update_plots.emit()
|
2024-12-18 19:43:46 +03:00
|
|
|
|
|
2024-12-25 11:56:17 +03:00
|
|
|
|
def update_status(self, msg: Union[str, float, int]) -> None:
|
2025-01-15 18:07:16 +03:00
|
|
|
|
# TODO: Довольно странный набор возможных типов входных аргументов.
|
|
|
|
|
|
# TODO: Для чего сюда принимается float, если он все равно приводится к int?
|
|
|
|
|
|
# TODO: Из медиатора сюда приходит статус 0.5, который становится нулем.
|
|
|
|
|
|
# Это точно ожидаемое и корректное поведение? Сомнительно...
|
|
|
|
|
|
# TODO: if isinstance(msg, float): ...
|
2024-12-25 11:56:17 +03:00
|
|
|
|
if type(msg) == float or type(msg) == int:
|
|
|
|
|
|
self.signal_statusBar.emit(int(msg))
|
|
|
|
|
|
else:
|
|
|
|
|
|
self.signal_statusText.emit(msg)
|
2024-12-18 19:43:46 +03:00
|
|
|
|
|
2024-12-17 20:40:04 +03:00
|
|
|
|
|