class SimpleSpinOption(SimpleOption): def __init__(self, settingsName, labelText, defaultValue, integer=False, checkable=False): self.integer = integer super(SimpleSpinOption,self).__init__(settingsName, labelText, defaultValue, checkable) def editor(self, defaultValue): if self.integer: self.spinBox = QSpinBox() else: self.spinBox = QDoubleSpinBox() self.spinBox.setRange(0,10**5) self.spinBox.setValue(float(QSettings().value(self.settingsName, defaultValue))) self.spinBox.setToolTip('Default value: %s' % defaultValue) self.spinBox.setAlignment(Qt.AlignLeft|Qt.AlignTop) self.layout().addWidget(self.spinBox) def setEnabled(self, e): self.spinBox.setEnabled(e) def getValue(self): return self.spinBox.value() def setValue(self, newValue): self.spinBox.setValue(newValue) def setRange(self, min, max): self.spinBox.setRange(min, max)
def initUI(self): grp = QGroupBox('Collision Primitive') grplay = QGridLayout() grp.setLayout(grplay) enabled = QCheckBox() benable = False if self.mdl.collprim: enabled.toggle() benable = True enabled.stateChanged.connect(self.enabled_changed) self.controls['collprim'] = enabled grplay.addWidget(QLabel('Enabled'), 0, 0) grplay.addWidget(enabled, 0, 1) widthl = QLabel('Dflt') grplay.addWidget(widthl, 1, 0) width = QDoubleSpinBox() width.setEnabled(benable) width.setValue(self.mdl.primitive[1]) grplay.addWidget(width, 1, 1) self.controls['width'] = width self.controls['widthl'] = widthl heightl = QLabel('Dflt') grplay.addWidget(heightl, 1, 2) height = QDoubleSpinBox() height.setEnabled(benable) height.setValue(self.mdl.primitive[2]) grplay.addWidget(height, 1, 3) self.controls['height'] = height self.controls['heightl'] = heightl depthl = QLabel('Dflt') grplay.addWidget(depthl, 1, 4) depth = QDoubleSpinBox() depth.setEnabled(benable) depth.setValue(self.mdl.primitive[3]) grplay.addWidget(depth, 1, 5) self.controls['depth'] = depth self.controls['depthl'] = depthl numbox = QComboBox() numbox.addItems(self.mdl.collprim_by_name.keys()) numbox.currentIndexChanged.connect(self.type_changed) numbox.setEnabled(benable) grplay.addWidget(QLabel('Type'), 0, 2) grplay.addWidget(numbox, 0, 3) self.controls['collprimtype'] = numbox if self.mdl.primitive[0] == 0: numbox.setCurrentIndex(0) elif self.mdl.primitive[0] == 1: numbox.setCurrentIndex(0) elif self.mdl.primitive[0] == 2: numbox.setCurrentIndex(1) elif self.mdl.primitive[0] == 4: numbox.setCurrentIndex(2) mainlay = QVBoxLayout() mainlay.addWidget(grp) btns = QHBoxLayout() btns.addStretch() save = QPushButton('Save') save.clicked.connect(self.save) close = QPushButton('Close') close.clicked.connect(self.close) btns.addWidget(save) btns.addWidget(close) mainlay.addLayout(btns) self.setLayout(mainlay) self.setGeometry(340, 340, 200, 120) self.setWindowTitle('MSH Suite - {0} Collision Primitive'.format(self.mdl.name)) self.update_labels() self.show()