Esempio n. 1
0
    def createEditor(self, parent, option, index):
        mod, attr, atype = self._tr(index)

        if atype is int:
            editor = QSpinBox(parent)
            editor.setMinimum(0)
            editor.setMaximum(self.INT_MAX)
            editor.setSingleStep(1)

            # Icons
            if attr.lower().endswith('iconsize'):
                editor.setSingleStep(8)
        elif atype is float:
            editor = QDoubleSpinBox(parent)
            editor.setMinimum(0)
            editor.setMaximum(float(self.INT_MAX))
            editor.setSingleStep(0.1)
        elif atype is bool:
            editor = QComboBox(parent)
            editor.addItem(str(True))
            editor.addItem(str(False))
        else:
            return None

        return editor
Esempio n. 2
0
    def createEditor(self, parent: QWidget, QStyleOptionViewItem,
                     proxy_index: QModelIndex):

        # Get the actual source.
        src_index = self._proxy.mapToSource(proxy_index)

        # If it's the column #0, then immediately return.
        if src_index.column() == 0:
            return None

        tree_item = src_index.internalPointer()
        feature = tree_item.own_data[0]
        interface_type = feature.node.principal_interface_type

        if interface_type == EInterfaceType.intfIInteger:
            w = QSpinBox(parent)
            w.setRange(feature.min, feature.max)
            w.setSingleStep(feature.inc)
            w.setValue(feature.value)
        elif interface_type == EInterfaceType.intfICommand:
            w = QPushButton(parent)
            w.setText('Execute')
            w.clicked.connect(lambda: self.on_button_clicked(proxy_index))
        elif interface_type == EInterfaceType.intfIBoolean:
            w = QComboBox(parent)
            boolean_ints = {'False': 0, 'True': 1}
            w.addItem('False')
            w.addItem('True')
            proxy_index = boolean_ints[
                'True'] if feature.value else boolean_ints['False']
            w.setCurrentIndex(proxy_index)
        elif interface_type == EInterfaceType.intfIEnumeration:
            w = QComboBox(parent)
            for item in feature.entries:
                w.addItem(item.symbolic)
            w.setCurrentText(feature.value)
        elif interface_type == EInterfaceType.intfIString:
            w = QLineEdit(parent)
            w.setText(feature.value)
        elif interface_type == EInterfaceType.intfIFloat:
            w = QLineEdit(parent)
            w.setText(str(feature.value))
        else:
            return None

        #
        w.setFont(get_system_font())

        return w
Esempio n. 3
0
    def createandmove(self, label, value, text, value_type, box):
        lbl = label.replace('_', ' ')
        lbl = lbl.title()
        w = QWidget(self)
        h = QHBoxLayout()
        vbtn = None
        qbtn = QLabel(lbl, self)

        if value_type == int:
            if label == 'button_border_radius' or label == 'button_border_size' \
             or label == 'deadzone_border_size' or label == 'sticks_border_size' \
             or label == 'dpad_border_radius' or label == 'dpad_border_size' \
             or label == 'dpad_background_border_radius' or label == 'dpad_background_border_size':
                vbtn = QSpinBox()
                vbtn.setMinimum(0)
                vbtn.setMaximum(1000)
                vbtn.setSingleStep(1)
                vbtn.setValue(value)
                vbtn.valueChanged.connect(
                    lambda: self.write_widget_value(label, vbtn.value()))
            if label == 'autorepeat_count':
                vbtn = QSpinBox()
                vbtn.setMinimum(1)
                vbtn.setMaximum(10)
                vbtn.setSingleStep(1)
                vbtn.setValue(value)
                vbtn.valueChanged.connect(
                    lambda: self.write_widget_value(label, vbtn.value()))
            if label == 'button_width' or label == 'button_height':
                vbtn = QSpinBox()
                vbtn.setMinimum(1)
                vbtn.setMaximum(1000)
                vbtn.setSingleStep(10)
                vbtn.setValue(value)
                vbtn.valueChanged.connect(
                    lambda: self.write_widget_value(label, vbtn.value()))
            if label == 'overlay_x_position' or label == 'overlay_y_position' \
             or label == 'overlay_width' or label == 'overlay_height' \
             or label == 'dpad_background_opacity' or label == 'deadzone' \
             or label == 'button_opacity':
                vbtn = QSpinBox()
                vbtn.setMinimum(0)
                vbtn.setMaximum(100)
                vbtn.setSingleStep(1)
                vbtn.setValue(value)
                vbtn.valueChanged.connect(
                    lambda: self.write_widget_value(label, vbtn.value()))

        if value_type == float:
            if label == 'autorepeat_interval' or label == 'combo_interval':
                vbtn = QDoubleSpinBox()
                vbtn.setDecimals(3)
                vbtn.setMinimum(0.001)
                vbtn.setMaximum(10.0)
                vbtn.setSingleStep(0.01)
                vbtn.setValue(value)
                vbtn.valueChanged.connect(
                    lambda: self.write_widget_value(label, vbtn.value()))

        if label == 'current_layout_file':
            vbtn = QComboBox()
            items = list(profiles_filelist)
            item1 = read_settings('User_Settings', 'current_layout_file')
            if items:
                if item1 in items:
                    vbtn.addItem(item1)
                    items.remove(item1)
            for p in items:
                vbtn.addItem(p)
            vbtn.currentIndexChanged.connect(
                lambda: self.write_widget_value(label, vbtn.currentText()))

        if value_type == str and value.startswith('#'):
            if len(value) == 7:
                vbtn = QPushButton()
                color_name = read_settings('User_Settings', label)
                stl = "background-color:%s;" % color_name
                vbtn.setStyleSheet(stl)
                vbtn.clicked.connect(lambda: self.get_color(label, vbtn))

        if value_type == bool:
            vbtn = QCheckBox()
            status = read_settings('User_Settings', label)
            vbtn.setChecked(status)
            vbtn.minimumSizeHint()
            vbtn.stateChanged.connect(
                lambda: self.write_widget_value(label, vbtn.isChecked()))

        if label == 'input_method':
            vbtn = QComboBox()
            item1 = read_settings('User_Settings', 'input_method')
            vbtn.addItem(item1)
            if item1 == 'xdotool':
                item2 = 'pyuserinput'
            else:
                item2 = 'xdotool'
            vbtn.addItem(item2)
            vbtn.currentIndexChanged.connect(
                lambda: self.write_widget_value(label, vbtn.currentText()))

        if label == 'New Layout File':
            vbtn = QPushButton()
            vbtn.setText(value)
            vbtn.clicked.connect(self.create_new_layout_file)

        ibtn = QPushButton()
        ibtn.setIcon(QIcon.fromTheme("dialog-information"))
        ibtn.setMinimumSize(QtCore.QSize(50, 50))
        ibtn.clicked.connect(lambda: self.show_dialog(text))
        h.addWidget(qbtn)

        if vbtn != None:
            vbtn.setMinimumSize(QtCore.QSize(200, 50))
            if value_type == bool:
                vbtn.setMinimumSize(QtCore.QSize(125, 50))
                vbtn.setStyleSheet(
                    'QCheckBox::indicator {min-width:50;min-height:50;border-radius:25px;border:4px solid #555555;}'
                    'QCheckBox::indicator:checked {background-color:green;}'
                    'QCheckBox::indicator:unchecked {background-color:grey;}')
            h.addStretch(1)
            h.addWidget(vbtn)

        h.addWidget(ibtn)
        w.setLayout(h)
        w.setMinimumHeight(70)
        w.setObjectName('SettingsRow')
        w.setStyleSheet('#SettingsRow { \
			background-color:#eeeeee;border: 1px solid #bbbbbb; \
			border-radius:5px; \
		}')
        box.addWidget(w)