def __init__(self, valueController, parent=None): super(BooleanEditor, self).__init__(valueController, parent=parent) hbox = QtWidgets.QHBoxLayout() self._editor = QtWidgets.QCheckBox(self) hbox.addWidget(self._editor, 1) hbox.addStretch(0) hbox.setContentsMargins(0, 0, 0, 0) self.setLayout(hbox) self.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Fixed) self.updateEditorValue() def __stateChanged(value): self._setValueToController() self._editor.stateChanged.connect(__stateChanged) self.setEditable(self.isEditable())
def createLayout(self): # Parent Layout self._topLayout = QtWidgets.QVBoxLayout() self._topLayout.setContentsMargins(0, 0, 0, 0) self._topLayout.setSpacing(0) self._mainWidget = QtWidgets.QWidget() self._mainWidget.setObjectName('mainPrefWidget') # Main Layout self._mainLayout = QtWidgets.QVBoxLayout(self._mainWidget) self._mainLayout.setContentsMargins(0, 0, 0, 0) self._mainLayout.setSpacing(0) self._preferenceLayout = QtWidgets.QGridLayout() self._preferenceLayout.setContentsMargins(10, 10, 10, 10) self._preferenceLayout.setSpacing(3) self._preferenceLayout.setColumnMinimumWidth(0, 200) self._preferenceLayout.setColumnStretch(0, 1) self._preferenceLayout.setColumnStretch(1, 2) # Add widgets based on type here preferences = self.parentWidget().window().preferences.getPreferences() i = 0 for k, v in preferences.iteritems(): labelFrameWidget = QtWidgets.QFrame() labelFrameWidget.setObjectName('prefLabelWidgetFrame') labelFrameWidget.setFrameStyle(QtWidgets.QFrame.NoFrame | QtWidgets.QFrame.Plain) labelFrameWidget.setToolTip(v['description']) labelFrameLayout = QtWidgets.QHBoxLayout() prefLabel = QtWidgets.QLabel(v['nice_name'], self) prefLabel.setProperty('labelClass', 'preferenceLabel') prefLabel.setObjectName(k + "_label") prefLabel.setSizePolicy(QtWidgets.QSizePolicy.MinimumExpanding, QtWidgets.QSizePolicy.Fixed) prefLabel.setMinimumWidth(200) labelFrameLayout.addWidget(prefLabel) labelFrameWidget.setLayout(labelFrameLayout) self._preferenceLayout.addWidget(labelFrameWidget, i, 0) if v['type'] == 'bool': valueFrameWidget = QtWidgets.QFrame() valueFrameWidget.setObjectName('prefValueWidgetFrame') valueFrameWidget.setFrameStyle(QtWidgets.QFrame.NoFrame | QtWidgets.QFrame.Plain) valueFrameLayout = QtWidgets.QHBoxLayout() valueWidget = QtWidgets.QCheckBox(self) valueWidget.setObjectName(k + "_valueWidget") valueWidget.setChecked(v['value']) valueFrameLayout.addWidget(valueWidget) valueFrameWidget.setLayout(valueFrameLayout) self._preferenceLayout.addWidget(valueFrameWidget, i, 1, 1, 1) self.prefValueWidgets.append(valueWidget) i += 1 # OK and Cancel buttons buttonLayout = QtWidgets.QHBoxLayout() buttonLayout.setContentsMargins(10, 10, 10, 10) buttons = QtWidgets.QDialogButtonBox( QtWidgets.QDialogButtonBox.Ok | QtWidgets.QDialogButtonBox.Cancel, QtCore.Qt.Horizontal, self) buttons.accepted.connect(self.accept) buttons.rejected.connect(self.reject) buttonLayout.addWidget(buttons) # Menu Bar self.menu_bar = QtWidgets.QMenuBar() self.file_menu = self.menu_bar.addMenu('&File') self.importPrefAction = self.file_menu.addAction('&Import...') self.exportPrefAction = self.file_menu.addAction('&Export...') self._mainLayout.addWidget(self.menu_bar) self._mainLayout.addLayout(self._preferenceLayout) self._mainLayout.addStretch(1) self._mainLayout.addLayout(buttonLayout) self._topLayout.addWidget(self._mainWidget) self.setLayout(self._topLayout)