def __init__(self, param, size, parent=None): """ QParameterWidget(param: ParameterInfo, size: int, parent: QWidget) -> QParameterWidget """ QtGui.QWidget.__init__(self, parent) self.param = param self.prevWidget = 0 hLayout = QtGui.QHBoxLayout(self) hLayout.setMargin(0) hLayout.setSpacing(0) self.setLayout(hLayout) hLayout.addSpacing(5+16+5) self.label = QtGui.QLabel(param.type) self.label.setFixedWidth(50) hLayout.addWidget(self.label) registry = get_module_registry() module = registry.get_module_by_name(param.identifier, param.type, param.namespace) assert issubclass(module, Constant) self.editor = QParameterEditor(param, size) hLayout.addWidget(self.editor) self.selector = QDimensionSelector() self.connect(self.selector.radioButtons[4], QtCore.SIGNAL('toggled(bool)'), self.disableParameter) hLayout.addWidget(self.selector)
class QParameterWidget(QtGui.QWidget): """ QParameterWidget is a row widget containing a label, a parameter editor and a radio group. """ def __init__(self, param, size, parent=None): """ QParameterWidget(param: ParameterInfo, size: int, parent: QWidget) -> QParameterWidget """ QtGui.QWidget.__init__(self, parent) self.param = param self.prevWidget = 0 hLayout = QtGui.QHBoxLayout(self) hLayout.setMargin(0) hLayout.setSpacing(0) self.setLayout(hLayout) hLayout.addSpacing(5+16+5) self.label = QtGui.QLabel(param.type) self.label.setFixedWidth(50) hLayout.addWidget(self.label) registry = get_module_registry() module = registry.get_module_by_name(param.identifier, param.type, param.namespace) assert issubclass(module, Constant) self.editor = QParameterEditor(param, size) hLayout.addWidget(self.editor) self.selector = QDimensionSelector() self.connect(self.selector.radioButtons[4], QtCore.SIGNAL('toggled(bool)'), self.disableParameter) hLayout.addWidget(self.selector) def getDimension(self): """ getDimension() -> int Return a number 0-4 indicating which radio button is selected. If none is selected (should not be in this case), return -1 """ for i in xrange(5): if self.selector.radioButtons[i].isChecked(): return i return -1 def disableParameter(self, disabled=True): """ disableParameter(disabled: bool) -> None Disable/Enable this parameter when disabled is True/False """ self.label.setEnabled(not disabled) self.editor.setEnabled(not disabled) def setDimension(self, dim): """ setDimension(dim: int) -> None Select a dimension for this parameter """ if dim in xrange(5): self.selector.radioButtons[dim].setChecked(True) def setDuplicate(self, duplicate): """ setDuplicate(duplicate: True) -> None Set if this parameter is a duplicate parameter """ if duplicate: self.prevWidget = self.editor.stackedEditors.currentIndex() self.editor.stackedEditors.setCurrentIndex(3) else: self.editor.stackedEditors.setCurrentIndex(self.prevWidget)