def createPropertiesWidget(self, propertiesWidget): baseCategory = CollapsibleFormWidget(headName="Base", modify=True) # name le_name = QLineEdit(self._rawVariable.name) le_name.returnPressed.connect(lambda: self.setName(le_name.text())) baseCategory.addWidget("Name", le_name) # data type cbTypes = EnumComboBox([ pin.__name__ for pin in getAllPinClasses() if pin.IsValuePin() if pin.__name__ != "AnyPin" ]) cbTypes.setCurrentIndex(cbTypes.findText(self.dataType)) cbTypes.setEditable(False) cbTypes.changeCallback.connect(self.setDataType) propertiesWidget.addWidget(baseCategory) # structure type cbStructure = EnumComboBox( [i.name for i in (PinStructure.Single, PinStructure.Array)]) cbStructure.setEditable(False) cbStructure.setCurrentIndex( cbStructure.findText(self._rawVariable.structure.name)) cbStructure.changeCallback.connect(self.onStructureChanged) propertiesWidget.addWidget(baseCategory) baseCategory.addWidget("Type", cbTypes) baseCategory.addWidget("Structure", cbStructure) valueCategory = CollapsibleFormWidget(headName="Value") # current value if self._rawVariable.structure == PinStructure.Single: if not type(self._rawVariable.value) in {list, set, dict, tuple}: def valSetter(x): self._rawVariable.value = x w = createInputWidget( self._rawVariable.dataType, valSetter, getPinDefaultValueByType(self._rawVariable.dataType)) if w: w.setWidgetValue(self._rawVariable.value) w.setObjectName(self._rawVariable.name) valueCategory.addWidget(self._rawVariable.name, w) # access level cb = QComboBox() cb.addItem('public', 0) cb.addItem('private', 1) cb.addItem('protected', 2) def accessLevelChanged(x): self._rawVariable.accessLevel = AccessLevel[x] EditorHistory().saveState("Change variable access level", modify=True) cb.currentTextChanged.connect(accessLevelChanged) cb.setCurrentIndex(self._rawVariable.accessLevel) valueCategory.addWidget('Access level', cb) propertiesWidget.addWidget(valueCategory)
class EnumInputWIdget(InputWidgetSingle): """docstring for EnumInputWIdget.""" def __init__(self, parent=None, **kwds): super(EnumInputWIdget, self).__init__(parent=parent, **kwds) self.enumBox = EnumComboBox(kwds["pinAnnotations"]["ValueList"]) self.enumBox.setEditable(False) self.setWidget(self.enumBox) self.enumBox.changeCallback.connect(self.dataSetCallback) def blockWidgetSignals(self, bLock=False): self.enumBox.blockSignals(bLock) def setWidgetValue(self, value): index = self.enumBox.findText(value) if index > 0: self.enumBox.setCurrentIndex(index)
class EnumInputWidget(InputWidgetSingle): """docstring for EnumInputWidget.""" def __init__(self, parent=None, **kwds): super(EnumInputWidget, self).__init__(parent=parent, **kwds) values = [] if PinSpecifires.VALUE_LIST in kwds["pinAnnotations"]: values = kwds["pinAnnotations"][PinSpecifires.VALUE_LIST] self.enumBox = EnumComboBox(values) self.enumBox.setEditable(False) if "editable" in kwds["pinAnnotations"]: self.enumBox.setEditable(kwds["pinAnnotations"]["editable"]) self.setWidget(self.enumBox) self.enumBox.changeCallback.connect(self.dataSetCallback) def blockWidgetSignals(self, bLock=False): self.enumBox.blockSignals(bLock) def setWidgetValue(self, value): index = self.enumBox.findText(value) if index > 0: self.enumBox.setCurrentIndex(index)