Index: TreatmentLog/interface.ui =================================================================== diff -u --- TreatmentLog/interface.ui (revision 0) +++ TreatmentLog/interface.ui (revision 76d519616b7d61403ff04c5cc30648fe97d07827) @@ -0,0 +1,400 @@ + + + ui_interface + + + + 0 + 0 + 438 + 307 + + + + + 100000 + 100000 + + + + Treatment &Log/&1 Treatment Log + + + + + + + + + 10 + + + + color: rgb(238, 238, 236); +background-color: rgb(92, 53, 102); + + + + Treatment Log + + + Qt::AlignCenter + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 2 + + + 2 + + + 2 + + + 2 + + + 2 + + + + + + + + 0 + 0 + + + + + 300 + 0 + + + + + 16777215 + 16777215 + + + + + 10 + + + + color: rgb(238, 238, 236); +background-color: rgb(92, 53, 102); + + + + 59 : [0x3B00] : Treament Log Alarm + + + Qt::AlignCenter + + + + + + + + 50 + 0 + + + + Send + + + + + + + + 50 + 0 + + + + Reset + + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 0 + + + 0 + + + 0 + + + 0 + + + + + ID + + + + + + + alarmData1 (F32) + + + + + + + 0.00 + + + Qt::AlignCenter + + + + + + + alarmData2 (F32) + + + + + + + 0.00 + + + Qt::AlignCenter + + + + + + + Qt::AlignCenter + + + 160 + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 2 + + + 2 + + + 2 + + + 2 + + + + + + + + 0 + 0 + + + + + 300 + 0 + + + + + 10 + + + + false + + + color: rgb(238, 238, 236); +background-color: rgb(92, 53, 102); + + + 61 : [0x3D00] : Treatment Log Event + + + Qt::AlignCenter + + + + + + + + 50 + 0 + + + + Send + + + + + + + + 50 + 0 + + + + Reset + + + + + + + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + 0 + + + 0 + + + 0 + + + 0 + + + + + eventID + + + + + + + oldValue (F32) + + + + + + + 0.00 + + + Qt::AlignCenter + + + + + + + newValue (F32) + + + + + + + 0.00 + + + Qt::AlignCenter + + + + + + + Qt::AlignCenter + + + 21 + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + + + + Index: TreatmentLog/loader.py =================================================================== diff -u --- TreatmentLog/loader.py (revision 0) +++ TreatmentLog/loader.py (revision 76d519616b7d61403ff04c5cc30648fe97d07827) @@ -0,0 +1,143 @@ +""" + 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}")