Voxel Calibration Wizard

Source code for wizard.CalibrationSelectPage

from PySide import QtCore, QtGui
from functools import partial
from Calibrations import CALIB_DICT, CALIB_SHOW
from wizard.Calibrations import CALIB_NAME


[docs]class CalibrationSelectPage(QtGui.QWizardPage): def __init__(self, calibrationWizard): super (CalibrationSelectPage, self).__init__() self.calibrationWizard = calibrationWizard self.setTitle('Choose the type of calibration') self.setSubTitle('Select one calibration method for each calibration') self.mainLayout = QtGui.QVBoxLayout(self)
[docs] def initializePage(self): self.calibrationWizard.calibs.clear() self.layout = QtGui.QVBoxLayout() self.calibs = {} for key in CALIB_SHOW: if CALIB_SHOW[key] == True: self.radioGroupBox = QtGui.QGroupBox(CALIB_NAME[key] + ' Calibration') self.radioButtons = QtGui.QButtonGroup(self) self.radioButtonList = [] for calibrations in CALIB_DICT[key]: self.radioButtonList.append(QtGui.QRadioButton(calibrations)) self.radioButtonList[0].setChecked(True) self.calibrationWizard.calibs[key] = self.radioButtonList[0].text() layout = QtGui.QVBoxLayout() counter = 0 for each in self.radioButtonList: layout.addWidget(each) self.radioButtons.addButton(each) self.radioButtons.setId(each, counter) counter += 1 if not self.radioGroupBox.layout(): self.radioGroupBox.setLayout(layout) self.layout.addWidget(self.radioGroupBox) self.calibs[key] = self.radioButtons self.calibs[key].buttonClicked[int].connect(partial(self.buttonClicked, key)) self.dataGroupBox = QtGui.QGroupBox("Data Required:") self.dataLabel = QtGui.QLabel() vlayout = QtGui.QVBoxLayout() self.dataGroupBox.setLayout(vlayout) vlayout.addWidget(self.dataLabel) self.setDataLabelText() self.layout.addWidget(self.dataGroupBox) self.mainLayout.addLayout(self.layout)
[docs] def cleanupPage(self, *args, **kwargs): self.clearLayout(self.layout)
[docs] def buttonClicked(self, key, id): text = self.calibs[key].checkedButton().text() self.calibrationWizard.calibs[key] = text self.setDataLabelText()
[docs] def setDataLabelText(self): dataRequired = [] dataLabelText = '' for key, value in self.calibrationWizard.calibs.iteritems(): if value not in dataRequired: dataRequired.append(value) dataLabelText += '\n'+value self.dataLabel.setText(dataLabelText) if 'FlatWall' in dataRequired and self.calibrationWizard.depthCamera: self.calibrationWizard.pages['capture'].doShow = True for calib in self.calibrationWizard.calibs: if self.calibrationWizard.calibs[calib] == 'FlatWall': self.calibrationWizard.pages[calib].doShow = False else: self.calibrationWizard.pages[calib].doShow = True else: for calib in self.calibrationWizard.calibs: self.calibrationWizard.pages[calib].doShow = True self.calibrationWizard.pages['capture'].doShow = False
[docs] def clearLayout(self, layout): for i in reversed(range(layout.count())): item = layout.itemAt(i) if isinstance(item, QtGui.QWidgetItem): item.widget().deleteLater() # or # item.widget().setParent(None) elif isinstance(item, QtGui.QSpacerItem): pass # no need to do extra stuff else: self.clearLayout(item.layout()) # remove the item from layout layout.deleteLater()