- First attempt at saving calibration standard sets. Delete doesn't work

pull/27/head
Rune B. Broberg 2019-09-30 22:20:35 +02:00
rodzic d733a384b1
commit 0681826004
1 zmienionych plików z 149 dodań i 0 usunięć

Wyświetl plik

@ -179,6 +179,28 @@ class CalibrationWindow(QtWidgets.QWidget):
cal_standard_layout.addWidget(self.cal_open_box)
cal_standard_layout.addWidget(self.cal_load_box)
cal_standard_layout.addWidget(self.cal_through_box)
self.cal_standard_save_box = QtWidgets.QGroupBox("Saved settings")
cal_standard_save_layout = QtWidgets.QVBoxLayout(self.cal_standard_save_box)
self.cal_standard_save_box.setDisabled(True)
self.cal_standard_save_selector = QtWidgets.QComboBox()
self.listCalibrationStandards()
cal_standard_save_layout.addWidget(self.cal_standard_save_selector)
cal_standard_save_button_layout = QtWidgets.QHBoxLayout()
btn_save_standard = QtWidgets.QPushButton("Save")
btn_save_standard.clicked.connect(self.saveCalibrationStandard)
btn_load_standard = QtWidgets.QPushButton("Load")
btn_load_standard.clicked.connect(self.loadCalibrationStandard)
btn_delete_standard = QtWidgets.QPushButton("Delete")
btn_delete_standard.clicked.connect(self.deleteCalibrationStandard)
btn_delete_standard.setDisabled(True)
cal_standard_save_button_layout.addWidget(btn_load_standard)
cal_standard_save_button_layout.addWidget(btn_save_standard)
cal_standard_save_button_layout.addWidget(btn_delete_standard)
cal_standard_save_layout.addLayout(cal_standard_save_button_layout)
cal_standard_layout.addWidget(self.cal_standard_save_box)
right_layout.addWidget(cal_standard_box)
def saveShort(self):
@ -201,6 +223,132 @@ class CalibrationWindow(QtWidgets.QWidget):
self.app.calibration.s21through = self.app.data21
self.cal_through_label.setText("Calibrated (" + str(len(self.app.calibration.s21through)) + " points)")
def listCalibrationStandards(self):
self.cal_standard_save_selector.clear()
num_standards = self.app.settings.beginReadArray("CalibrationStandards")
for i in range(num_standards):
self.app.settings.setArrayIndex(i)
name = self.app.settings.value("Name", defaultValue="INVALID NAME")
self.cal_standard_save_selector.addItem(name, userData=i)
self.app.settings.endArray()
self.cal_standard_save_selector.addItem("New", userData=-1)
self.cal_standard_save_selector.setCurrentText("New")
def saveCalibrationStandard(self):
if self.cal_standard_save_selector.currentData() == -1:
# New cal standard
# Get a name
name, selected = QtWidgets.QInputDialog.getText(self, "Calibration standard name", "Enter name to save as")
if not selected or not name:
return
num_standards = self.app.settings.beginReadArray("CalibrationStandards")
logger.debug("Number of standards known: %d", num_standards)
self.app.settings.endArray()
if self.cal_standard_save_selector.currentData() == -1:
write_num = num_standards
num_standards += 1
else:
write_num = self.cal_standard_save_selector.currentData()
name = self.cal_standard_save_selector.currentText()
self.app.settings.beginWriteArray("CalibrationStandards", num_standards)
self.app.settings.setArrayIndex(write_num)
self.app.settings.setValue("Name", name)
self.app.settings.setValue("ShortL0", self.short_l0_input.text())
self.app.settings.setValue("ShortL1", self.short_l1_input.text())
self.app.settings.setValue("ShortL2", self.short_l2_input.text())
self.app.settings.setValue("ShortL3", self.short_l3_input.text())
self.app.settings.setValue("ShortDelay", self.short_length.text())
self.app.settings.setValue("OpenC0", self.open_c0_input.text())
self.app.settings.setValue("OpenC1", self.open_c1_input.text())
self.app.settings.setValue("OpenC2", self.open_c2_input.text())
self.app.settings.setValue("OpenC3", self.open_c3_input.text())
self.app.settings.setValue("OpenDelay", self.open_length.text())
self.app.settings.setValue("LoadR", self.load_resistance.text())
self.app.settings.setValue("LoadL", self.load_inductance.text())
self.app.settings.setValue("LoadC", self.load_capacitance.text())
self.app.settings.setValue("LoadDelay", self.load_length.text())
self.app.settings.setValue("ThroughDelay", self.through_length.text())
self.app.settings.endArray()
self.app.settings.sync()
self.listCalibrationStandards()
self.cal_standard_save_selector.setCurrentText(name)
def loadCalibrationStandard(self):
if self.cal_standard_save_selector.currentData() == -1:
return
read_num = self.cal_standard_save_selector.currentData()
logger.debug("Loading calibration no %d", read_num)
self.app.settings.beginReadArray("CalibrationStandards")
self.app.settings.setArrayIndex(read_num)
name = self.app.settings.value("Name")
logger.info("Loading: %s", name)
self.short_l0_input.setText(str(self.app.settings.value("ShortL0", 0)))
self.short_l1_input.setText(str(self.app.settings.value("ShortL1", 0)))
self.short_l2_input.setText(str(self.app.settings.value("ShortL2", 0)))
self.short_l3_input.setText(str(self.app.settings.value("ShortL3", 0)))
self.short_length.setText(str(self.app.settings.value("ShortDelay", 0)))
self.open_c0_input.setText(str(self.app.settings.value("OpenC0", 50)))
self.open_c1_input.setText(str(self.app.settings.value("OpenC1", 0)))
self.open_c2_input.setText(str(self.app.settings.value("OpenC2", 0)))
self.open_c3_input.setText(str(self.app.settings.value("OpenC3", 0)))
self.open_length.setText(str(self.app.settings.value("OpenDelay", 0)))
self.load_resistance.setText(str(self.app.settings.value("LoadR", 50)))
self.load_inductance.setText(str(self.app.settings.value("LoadL", 0)))
self.load_capacitance.setText(str(self.app.settings.value("LoadC", 0)))
self.load_length.setText(str(self.app.settings.value("LoadDelay", 0)))
self.through_length.setText(str(self.app.settings.value("ThroughDelay", 0)))
self.app.settings.endArray()
def deleteCalibrationStandard(self):
# TODO: This does not currently work. We need to re-write all the settings in the array so they get renumbered.
if self.cal_standard_save_selector.currentData() == -1:
return
write_num = self.cal_standard_save_selector.currentData()
logger.debug("Deleting calibration no %d", write_num)
num_standards = self.app.settings.beginReadArray("CalibrationStandards")
logger.debug("Number of standards known: %d", num_standards)
self.app.settings.endArray()
self.app.settings.beginWriteArray("CalibrationStandards", num_standards-1)
self.app.settings.setArrayIndex(write_num)
self.app.settings.remove("Name")
self.app.settings.remove("ShortL0")
self.app.settings.remove("ShortL1")
self.app.settings.remove("ShortL2")
self.app.settings.remove("ShortL3")
self.app.settings.remove("ShortDelay")
self.app.settings.remove("OpenC0")
self.app.settings.remove("OpenC1")
self.app.settings.remove("OpenC2")
self.app.settings.remove("OpenC3")
self.app.settings.remove("OpenDelay")
self.app.settings.remove("LoadR")
self.app.settings.remove("LoadL")
self.app.settings.remove("LoadC")
self.app.settings.remove("LoadDelay")
self.app.settings.remove("ThroughDelay")
self.app.settings.endArray()
self.app.settings.sync()
self.listCalibrationStandards()
def reset(self):
self.app.calibration = Calibration()
self.cal_short_label.setText("Uncalibrated")
@ -280,6 +428,7 @@ class CalibrationWindow(QtWidgets.QWidget):
self.cal_open_box.setDisabled(self.use_ideal_values.isChecked())
self.cal_load_box.setDisabled(self.use_ideal_values.isChecked())
self.cal_through_box.setDisabled(self.use_ideal_values.isChecked())
self.cal_standard_save_box.setDisabled(self.use_ideal_values.isChecked())
def automaticCalibration(self):
self.btn_automatic.setDisabled(True)