summaryrefslogtreecommitdiff
path: root/Fields/Enum.qml
diff options
context:
space:
mode:
Diffstat (limited to 'Fields/Enum.qml')
-rw-r--r--Fields/Enum.qml59
1 files changed, 59 insertions, 0 deletions
diff --git a/Fields/Enum.qml b/Fields/Enum.qml
new file mode 100644
index 0000000..30712b6
--- /dev/null
+++ b/Fields/Enum.qml
@@ -0,0 +1,59 @@
+// SPDX-License-Identifier: Unlicense
+
+import QtQuick 2.12
+import QtQuick.Controls 2.13
+
+import '../util.js' as Util
+
+Column {
+ id: control
+
+ property var definition
+ property int index: -1
+ readonly property string value: index >= 0 ? definition.values.get(index).name : ''
+
+ function set(val) {
+ for (var i = 0; i < definition.values.count; i++) {
+ if (definition.values.get(i).name === val) {
+ index = i
+ return true
+ }
+ }
+ index = -1
+ }
+
+ Keys.onPressed: {
+ for (var i = 0; i < definition.values.count; i++) {
+ if (definition.values.get(i).key === event.text) {
+ index = (index === i ? -1 : i)
+ event.accepted = true
+ break
+ }
+ }
+ }
+
+ Flow {
+ spacing: 5
+ width: parent.width
+
+ ButtonGroup { id: buttons }
+
+ Repeater {
+ model: definition.values
+ delegate: Button {
+ ButtonGroup.group: buttons
+ checkable: true
+ checked: control.index === index
+ focusPolicy: Qt.NoFocus
+
+ implicitWidth: implicitContentWidth + leftPadding + rightPadding
+ padding: 0
+ leftPadding: 5
+ rightPadding: leftPadding
+
+ onClicked: control.index = (control.index === index ? -1 : index)
+ text: Util.addShortcut(name, key)
+ }
+ }
+ }
+}