WeldingSpotPerformance/src/controller/controller.py

52 lines
2.3 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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)