""" The Saline Bolus ui loader class """ import os from simulator.dynamicloader import DynamicLoader from PySide2 import QtWidgets from PySide2.QtCore import Slot from dialin.squish import denaliMessages from dialin.squish.denaliMessages import txStates class Loader(DynamicLoader): """ The Saline Bolus ui loader class """ btnSalineAccept: QtWidgets.QPushButton btnSalineReject: QtWidgets.QPushButton lblSalineAction: QtWidgets.QLabel spnSalineRejectReason: QtWidgets.QSpinBox cmbSalineAcceptTarget: QtWidgets.QComboBox sldSalineTarget: QtWidgets.QSlider sldSalineCumulative: QtWidgets.QSlider sldSalineVolume: QtWidgets.QSlider saline_requested_state: txStates def __init__(self): super().__init__(os.path.dirname(__file__)) self.saline_requested_state = txStates.SALINE_BOLUS_STATE_IDLE # self.initialize() # self.init_widgets() # self.init_connections() def _init_loader(self): """ finds and creates widgets :return: none """ # saline adjustment self.btnSalineAccept = self.find_button('btnSalineAccept') self.btnSalineReject = self.find_button('btnSalineReject') self.lblSalineAction = self.find_label('lblSalineAction') self.spnSalineRejectReason = self.find_spinbox('spnSalineRejectReason') self.cmbSalineAcceptTarget = self.find_combobox('cmbSalineAcceptTarget') # saline data self.sldSalineTarget = self.find_slider('sldSalineTarget') self.sldSalineCumulative = self.find_slider('sldSalineCumulative') self.sldSalineVolume = self.find_slider('sldSalineVolume') def _init_widgets(self): """ initializes the widgets' properties :return: none """ pass def _init_connections(self): """ initializes the widgets connections :return: """ # saline adjustment self.btnSalineAccept.clicked.connect(self.do_sb_accept) self.btnSalineReject.clicked.connect(self.do_sb_reject) # saline data self.sldSalineTarget.valueChanged.connect(self.do_saline_data) self.sldSalineCumulative.valueChanged.connect(self.do_saline_data) self.sldSalineVolume.valueChanged.connect(self.do_saline_data) @Slot() def do_sb_accept(self): """ the slot for accept saline bolus button :return: none """ # toggle the saline requested state if self.saline_requested_state == txStates.SALINE_BOLUS_STATE_IN_PROGRESS: self.saline_requested_state = txStates.SALINE_BOLUS_STATE_IDLE else: self.saline_requested_state = txStates.SALINE_BOLUS_STATE_IN_PROGRESS target = self.cmbSalineAcceptTarget.currentText() denaliMessages.setSalineBolusResponse(True, 0, target, self.saline_requested_state) self.lblSalineAction.setText('Accepted ' + target) @Slot() def do_sb_reject(self): """ the slot for accept saline bolus button :return: none """ reason = self.spnSalineRejectReason.value() denaliMessages.setSalineBolusResponse(False, reason, 0, self.saline_requested_state) self.lblSalineAction.setText('Rejected ' + "{}".format(reason)) @Slot() def do_saline_data(self): """ the slot which is called to send the saline bolus data by calling the denaliMessage API setTreatmentSalineBolusData :return: none """ denaliMessages.setTreatmentSalineBolusData(self.sldSalineTarget.value(), self.sldSalineCumulative.value(), self.sldSalineVolume.value())