""" The Heparin ui loader class """ import os from simulator.runtimewidget import RunTimeWidget from PySide2 import QtWidgets from PySide2.QtCore import Slot from dialin.squish import denaliMessages from dialin.squish.denaliMessages import txStates class Loader(RunTimeWidget): """ The Saline Bolus ui loader class """ btnAccept: QtWidgets.QPushButton btnReject: QtWidgets.QPushButton lblAction: QtWidgets.QLabel lblCumulative: QtWidgets.QLabel spnRejectReason: QtWidgets.QSpinBox sldCumulative: QtWidgets.QSlider requested_state: txStates def __init__(self): super().__init__(os.path.dirname(__file__)) self.requested_state = txStates.HEPARIN_STATE_PAUSED self.initialize() self.init_widgets() self.init_connections() def initialize(self): """ finds and creates widgets :return: none """ # saline adjustment self.btnAccept = self.find_button('btnAccept') self.btnReject = self.find_button('btnReject') self.lblAction = self.find_label('lblAction') self.lblCumulative = self.find_label('lblCumulative') self.spnRejectReason = self.find_spinbox('spnRejectReason') # saline data self.sldCumulative = self.find_slider('sldCumulative') def init_widgets(self): """ initializes the widgets' properties :return: none """ pass def init_connections(self): """ initializes the widgets connections :return: """ # saline adjustment self.btnAccept.clicked.connect(self.do_accept) self.btnReject.clicked.connect(self.do_reject) # saline data self.sldCumulative.valueChanged.connect(self.do_data) @Slot() def do_accept(self): """ the slot for accept button :return: none """ # toggle the requested state if self.requested_state == txStates.HEPARIN_STATE_DISPENSING: self.requested_state = txStates.HEPARIN_STATE_PAUSED else: self.requested_state = txStates.HEPARIN_STATE_DISPENSING denaliMessages.setHeparinResponse(True, 0, self.requested_state) self.lblAction.setText('Accepted ') @Slot() def do_reject(self): """ the slot for accept saline bolus button :return: none """ reason = self.spnRejectReason.value() denaliMessages.setHeparinResponse(False, reason, self.requested_state) self.lblAction.setText('Rejected ' + "{}".format(reason)) @Slot() def do_data(self, value): """ the slot which is called to send the data by calling the denaliMessage API setTreatmentHeparinData :return: none """ volume = value * 0.1 denaliMessages.setTreatmentHeparinData(volume) self.lblCumulative.setNum(volume)