Source code for myogestic.gui.protocols.protocol

from __future__ import annotations

from typing import Optional, TYPE_CHECKING, Union

from PySide6.QtCore import QObject

from myogestic.gui.protocols.online import OnlineProtocol
from myogestic.gui.protocols.record import RecordProtocol
from myogestic.gui.protocols.training import TrainingProtocol

if TYPE_CHECKING:
    from myogestic.gui.myogestic import MyoGestic


[docs] class Protocol(QObject): """ Class for handling the different protocols of the MyoGestic application. Parameters ---------- main_window : MyoGestic The main window of the MyoGestic application. Attributes ---------- main_window : MyoGestic The main window of the MyoGestic application. available_protocols : list[RecordProtocol | TrainingProtocol | OnlineProtocol] The available protocols of the MyoGestic application. The protocols are: - RecordProtocol - TrainingProtocol - OnlineProtocol _current_protocol : RecordProtocol | TrainingProtocol | OnlineProtocol | None The current protocol that is selected by the user. """
[docs] def __init__(self, main_window: MyoGestic) -> None: super().__init__(main_window) self.main_window = main_window # Initialize Protocol UI self._setup_protocol_ui() # Initialize Protocol self._current_protocol: Optional[ Union[RecordProtocol, TrainingProtocol, OnlineProtocol] ] = None self.available_protocols: list[ Union[RecordProtocol, TrainingProtocol, OnlineProtocol] ] = [ RecordProtocol(self.main_window), TrainingProtocol(self.main_window), OnlineProtocol(self.main_window), ]
[docs] def _protocol_toggled(self, index: int, checked: bool) -> None: if checked: self._protocol_mode__stacked_widget.setCurrentIndex(index) self._current_protocol = self.available_protocols[index]
[docs] def _pass_on_selected_visual_interface(self) -> None: for protocol in self.available_protocols: protocol._selected_visual_interface = ( self.main_window.selected_visual_interface )
[docs] def _setup_protocol_ui(self): self._protocol_mode__stacked_widget = ( self.main_window.ui.protocolModeStackedWidget ) self._protocol_mode__stacked_widget.setCurrentIndex(0) self._protocol_record__radio_button = ( self.main_window.ui.protocolRecordRadioButton ) self._protocol_record__radio_button.setChecked(True) self._protocol_record__radio_button.toggled.connect( lambda checked: self._protocol_toggled(0, checked) ) self._protocol_training__radio_button = ( self.main_window.ui.protocolTrainingRadioButton ) self._protocol_training__radio_button.toggled.connect( lambda checked: self._protocol_toggled(1, checked) ) self._protocol_online__radio_button = ( self.main_window.ui.protocolOnlineRadioButton ) self._protocol_online__radio_button.toggled.connect( lambda checked: self._protocol_toggled(2, checked) )