Beispiel #1
0
    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())
Beispiel #2
0
    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)