import sys # import project classes # import names from dialin.squish import utils, denaliMessages # Import PySide2 classes from PySide2.QtUiTools import QUiLoader from PySide2 import QtCore, QtWidgets from PySide2.QtCore import QFile, SIGNAL, Slot import PySide2.QtWidgets # global variables declarations ui_file_name = "SalineBolusSimulator.ui" # application app: QtWidgets.QApplication # main widget window: QtWidgets.QWidget # pushbutton btnSalineAccept: QtWidgets.QPushButton btnSalineReject: QtWidgets.QPushButton # label lblSalineAction: QtWidgets.QLabel # spinbox spnSalineRejectReason: QtWidgets.QSpinBox # combobox cmbSalineAcceptTarget: QtWidgets.QComboBox # sliders sldSalineTarget: QtWidgets.QSlider sldSalineCumulative: QtWidgets.QSlider sldSalineVolume: QtWidgets.QSlider # tables tblSalineSubMode: QtWidgets.QTableWidget tblSalineUFStates: QtWidgets.QTableWidget tblSalineSalineStates: QtWidgets.QTableWidget def init_app(): global app, window app = QtWidgets.QApplication(sys.argv) window = QtWidgets.QWidget() window.resize(320, 240) def start_app(): global app, window window.show() sys.exit(app.exec_()) def load_ui(): global app, window ui_file = QFile(ui_file_name) ui_file.open(QFile.ReadOnly) loader = QUiLoader() window = loader.load(ui_file) ui_file.close() window.setWindowTitle('Saline Bolus Simulator ' + QtCore.__version__) def setup_saline_adjustment(): global app, window global btnSalineAccept, btnSalineReject global lblSalineAction, spnSalineRejectReason, cmbSalineAcceptTarget btnSalineAccept = window.findChild(QtWidgets.QPushButton, 'btnSalineAccept') btnSalineReject = window.findChild(QtWidgets.QPushButton, 'btnSalineReject') lblSalineAction = window.findChild(QtWidgets.QLabel, 'lblSalineAction') spnSalineRejectReason = window.findChild(QtWidgets.QSpinBox, 'spnSalineRejectReason') cmbSalineAcceptTarget = window.findChild(QtWidgets.QComboBox, 'cmbSalineAcceptTarget') btnSalineAccept.clicked.connect(do_accept) btnSalineReject.clicked.connect(do_reject) def setup_saline_data(): global app, window global sldSalineTarget, sldSalineCumulative, sldSalineVolume sldSalineTarget = window.findChild(QtWidgets.QSlider, 'sldSalineTarget') sldSalineCumulative = window.findChild(QtWidgets.QSlider, 'sldSalineCumulative') sldSalineVolume = window.findChild(QtWidgets.QSlider, 'sldSalineVolume') sldSalineTarget.valueChanged.connect(do_saline_data) sldSalineCumulative.valueChanged.connect(do_saline_data) sldSalineVolume.valueChanged.connect(do_saline_data) def setup_treatment_states(): global app, window global tblSalineSubMode, tblSalineUFStates, tblSalineSalineStates tblSalineSubMode = window.findChild(QtWidgets.QTableWidget, 'tblSalineSubMode') tblSalineUFStates = window.findChild(QtWidgets.QTableWidget, 'tblSalineUFStates') tblSalineSalineStates = window.findChild(QtWidgets.QTableWidget, 'tblSalineSalineStates') tblSalineSubMode.setCurrentCell(0, 0) tblSalineUFStates.setCurrentCell(0, 0) tblSalineSalineStates.setCurrentCell(0, 0) tblSalineSubMode.cellClicked.connect(do_saline_saline_state) tblSalineUFStates.cellClicked.connect(do_saline_saline_state) tblSalineSalineStates.cellClicked.connect(do_saline_saline_state) @Slot() def do_accept(): target = cmbSalineAcceptTarget.currentText() denaliMessages.setSalineBolusResponse(True, 0, target) lblSalineAction.setText('Accepted ' + target) @Slot() def do_reject(): reason = spnSalineRejectReason.value() denaliMessages.setSalineBolusResponse(False, reason, 0) lblSalineAction.setText('Rejected ' + reason) @Slot() def do_saline_saline_state(row, column): sub_mode = tblSalineSubMode.verticalHeaderItem(tblSalineSubMode.currentRow()).text() uf_state = tblSalineUFStates.verticalHeaderItem(tblSalineUFStates.currentRow()).text() saline = tblSalineSalineStates.verticalHeaderItem(tblSalineSalineStates.currentRow()).text() denaliMessages.setTreatmentStatesData(sub_mode, uf_state, saline) @Slot() def do_saline_data(): denaliMessages.setTreatmentSalineBolusData(sldSalineTarget.value(), sldSalineCumulative.value(), sldSalineVolume.value()) def main(): print("A") utils.tstStart(__file__) init_app() load_ui() setup_saline_adjustment() setup_saline_data() setup_treatment_states() start_app() utils.tstDone() if __name__ == "__main__": main()