""" The TD Main Treatment Data ui loader """ # Python import os import can import struct # Qt from PySide2 import QtCore, QtGui, QtWidgets from PySide2.QtCore import Slot # parent from engine.dynamicloader import DynamicLoader # plugin specific from leahi_dialin.common.msg_defs import MsgIds, MsgFieldPositions from leahi_dialin.protocols import CAN from leahi_dialin.utils import conversions from leahi_dialin.common.td_defs import TDOpModes from leahi_dialin.common.td_defs import TDStandbyStates # hd Simulator from leahi_dialin.ui.td_messaging import TD_Messaging class Loader(DynamicLoader): """ The Treatment Log ui loader """ def __init__(self): self.td_interface = TD_Messaging() self.can_interface = self.td_interface.can_interface super().__init__(os.path.dirname(__file__)) def _init_loader(self): """ finds and creates widgets :return: none """ floatValidator = QtGui.QRegExpValidator(r"\d*\.?\d{0,3}") self.alarmReset = self.find_widget(QtWidgets.QToolButton , 'tbAlarmReset' ) self.alarmSend = self.find_widget(QtWidgets.QToolButton , 'tbAlarmSend' ) self.alarmID = self.find_widget(QtWidgets.QSpinBox , 'sbAlarmID' ) self.alarmData1 = self.find_widget(QtWidgets.QLineEdit , 'leAlarmData1' ) self.alarmData2 = self.find_widget(QtWidgets.QLineEdit , 'leAlarmData2' ) self.alarmData1.setValidator(floatValidator) self.alarmData2.setValidator(floatValidator) self.eventReset = self.find_widget(QtWidgets.QToolButton , 'tbEventReset' ) self.eventSend = self.find_widget(QtWidgets.QToolButton , 'tbEventSend' ) self.eventID = self.find_widget(QtWidgets.QSpinBox , 'sbEventID' ) self.eventOldValue = self.find_widget(QtWidgets.QLineEdit , 'leEventOldValue' ) self.eventNewValue = self.find_widget(QtWidgets.QLineEdit , 'leEventNewValue' ) self.eventOldValue.setValidator(floatValidator) self.eventNewValue.setValidator(floatValidator) def _init_connections(self): """ initializes the widgets connections :return: none """ self.alarmReset .clicked.connect(self.init_alarm) self.alarmSend .clicked.connect(self.do_alarm ) self.alarmData1 .editingFinished.connect(self.do_lineedit_editing_finished) self.alarmData2 .editingFinished.connect(self.do_lineedit_editing_finished) self.eventReset .clicked.connect(self.init_event) self.eventSend .clicked.connect(self.do_event ) self.eventOldValue .editingFinished.connect(self.do_lineedit_editing_finished) self.eventNewValue .editingFinished.connect(self.do_lineedit_editing_finished) @Slot() def _init_widgets(self): """ initializes the widgets' properties :return: none """ self.init_alarm() self.init_event() @Slot() def init_alarm(self): """ the slot for initializing alarm data :return: none """ self.alarmID .setValue(0) self.alarmData1 .setText("{:.3f}".format(0)) self.alarmData2 .setText("{:.3f}".format(0)) @Slot() def do_alarm(self): """ the slot sending alarm data :return: none """ self.td_interface.td_treatment_log_alarm( self.alarmID.value() , float(self.alarmData1.text()) , float(self.alarmData2.text()) ) @Slot() def init_event(self): """ the slot for initializing event data :return: none """ self.eventID .setValue(0) self.eventOldValue .setText("{:.3f}".format(0)) self.eventNewValue .setText("{:.3f}".format(0)) @Slot() def do_event(self): """ the slot sending event data :return: none """ self.td_interface.td_treatment_log_event( self.eventID.value() , float(self.eventOldValue.text()), float(self.eventNewValue.text()) ) @Slot() def do_lineedit_editing_finished(self): if isinstance(self.sender(), QtWidgets.QLineEdit): value = float("0" if (len(self.sender().text()) == 0 or self.sender().text() == ".") else self.sender().text()) self.sender().setText(f"{value:.3f}")