Index: simulator/run.py =================================================================== diff -u -rbefca1db0402e031a5b692aa93dc74bfb314eb9e -rc678a6653939736267d5301b524f32ff5d9cf4c5 --- simulator/run.py (.../run.py) (revision befca1db0402e031a5b692aa93dc74bfb314eb9e) +++ simulator/run.py (.../run.py) (revision c678a6653939736267d5301b524f32ff5d9cf4c5) @@ -118,6 +118,7 @@ """ The simulator class which loads the ui file dynamically and initializes the objects and can be eventually shown. + Note: this class is growing fast and seems like needs to be multiple classes """ # global variables declarations ui_file_name = "Simulator.ui" @@ -137,6 +138,10 @@ lblUfPauseAction: QtWidgets.QLabel lblUfResumeAction: QtWidgets.QLabel lblUfEditAction: QtWidgets.QLabel + lblArterialMin: QtWidgets.QLabel + lblArterialMax: QtWidgets.QLabel + lblVenousMin: QtWidgets.QLabel + lblVenousMax: QtWidgets.QLabel # spinbox spnSalineRejectReason: QtWidgets.QSpinBox spnUfPauseRejectReason: QtWidgets.QSpinBox @@ -148,13 +153,19 @@ spnUFVolumeMax: QtWidgets.QSpinBox spnDialysateMin: QtWidgets.QSpinBox spnDialysateMax: QtWidgets.QSpinBox + spnArterialMin: QtWidgets.QSpinBox + spnArterialMax: QtWidgets.QSpinBox + spnVenousMin: QtWidgets.QSpinBox + spnVenousMax: QtWidgets.QSpinBox # combobox cmbSalineAcceptTarget: QtWidgets.QComboBox # sliders sldSalineTarget: QtWidgets.QSlider sldSalineCumulative: QtWidgets.QSlider sldSalineVolume: QtWidgets.QSlider sldUfVolume: QtWidgets.QSlider + sldArterialPressureValue: QtWidgets.QSlider + sldVenousPressureValue: QtWidgets.QSlider # tables tblSalineSubMode: QtWidgets.QTableWidget tblSalineUFStates: QtWidgets.QTableWidget @@ -249,6 +260,104 @@ self.tblSalineUFStates.cellClicked.connect(self.do_saline_saline_state) self.tblSalineSalineStates.cellClicked.connect(self.do_saline_saline_state) + def setup_pressures_limits(self): + """ + sets up the treatment pressures + :return: none + """ + arterial_pressure_minimum = -300 + arterial_pressure_lower_bound = -300 + arterial_pressure_upper_bound = +100 + arterial_pressure_maximum = +200 + + venous_pressure_minimum = -100 + venous_pressure_lower_bound = -100 + venous_pressure_upper_bound = +400 + venous_pressure_maximum = +600 + + self.lblArterialMin = self.find_label('lblArterialMin') + self.lblArterialMax = self.find_label('lblArterialMax') + self.lblVenousMin = self.find_label('lblVenousMin') + self.lblVenousMax = self.find_label('lblVenousMax') + self.spnArterialMin = self.find_spinbox('spnArterialMin') + self.spnArterialMax = self.find_spinbox('spnArterialMax') + self.spnVenousMin = self.find_spinbox('spnVenousMin') + self.spnVenousMax = self.find_spinbox('spnVenousMax') + self.sldArterialPressureValue = self.find_slider('sldArterialPressureValue') + self.sldVenousPressureValue = self.find_slider('sldVenousPressureValue') + + self.lblArterialMin.setNum(arterial_pressure_minimum) + self.lblArterialMax.setNum(arterial_pressure_maximum) + self.lblVenousMin.setNum(venous_pressure_minimum) + self.lblVenousMax.setNum(venous_pressure_maximum) + + @Slot() + def do_set_arterial_min(arterial_min): + """ + set the acceptable arterial min value change + :param arterial_min: arterial pressure min + :return: none + """ + self.sldArterialPressureValue.setMinimum(arterial_min) + if self.sldArterialPressureValue.value() < arterial_min: + self.sldArterialPressureValue.setValue(arterial_min) + + @Slot() + def do_set_arterial_max(arterial_max): + """ + set the acceptable arterial max value change + :param arterial_max: arterial pressure max + :return: none + """ + self.sldArterialPressureValue.setMaximum(arterial_max) + if self.sldArterialPressureValue.value() > arterial_max: + self.sldArterialPressureValue.setValue(arterial_max) + + @Slot() + def do_set_venous_min(venous_min): + """ + set the acceptable venous min value change + :param venous_min: venous pressure min + :return: none + """ + self.sldVenousPressureValue.setMinimum(venous_min) + if self.sldVenousPressureValue.value() < venous_min: + self.sldVenousPressureValue.setValue(venous_min) + + @Slot() + def do_set_venous_max(venous_max): + """ + set the acceptable venous max value change + :param venous_max: venous pressure max + :return: none + """ + self.sldVenousPressureValue.setMaximum(venous_max) + if self.sldVenousPressureValue.value() > venous_max: + self.sldVenousPressureValue.setValue(venous_max) + + self.sldArterialPressureValue.valueChanged.connect(self.do_pressures_data) + self.sldVenousPressureValue.valueChanged.connect(self.do_pressures_data) + + self.spnArterialMin.valueChanged.connect(do_set_arterial_min) + self.spnArterialMax.valueChanged.connect(do_set_arterial_max) + + self.spnVenousMin.valueChanged.connect(do_set_venous_min) + self.spnVenousMax.valueChanged.connect(do_set_venous_max) + + self.spnArterialMin.setMinimum(arterial_pressure_minimum) + self.spnArterialMin.setMaximum(arterial_pressure_maximum) + self.spnArterialMin.setValue(arterial_pressure_lower_bound) + self.spnArterialMax.setMinimum(arterial_pressure_minimum) + self.spnArterialMax.setMaximum(arterial_pressure_maximum) + self.spnArterialMax.setValue(arterial_pressure_upper_bound) + + self.spnVenousMin.setMinimum(venous_pressure_minimum) + self.spnVenousMin.setMaximum(venous_pressure_maximum) + self.spnVenousMin.setValue(venous_pressure_lower_bound) + self.spnVenousMax.setMinimum(venous_pressure_minimum) + self.spnVenousMax.setMaximum(venous_pressure_maximum) + self.spnVenousMax.setValue(venous_pressure_upper_bound) + @Slot() def do_sb_accept(self): """ @@ -383,6 +492,18 @@ self.spnDialysateMax.value() ) + @Slot() + def do_pressures_data(self): + """ + sends the pressures values message with given value on the screen + :return: none + """ + denaliMessages.setPressureOcclusionData( + self.sldArterialPressureValue.value(), + self.sldVenousPressureValue.value(), + 0, 0, 0 + ) + def initialize(self): """ initializes the class by calling it's initializer methods to make objects ready @@ -393,6 +514,7 @@ self.setup_saline_data() self.setup_uf_adjustment() self.setup_treatment_states() + self.setup_pressures_limits() def main():