Skip to content

Commit 4820d6f

Browse files
committed
Add option for multiple selection datatype
1 parent 70bdeff commit 4820d6f

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

ulc_mm_package/QtGUI/study_metadata_form.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,13 @@
66
from PyQt5.QtGui import QDoubleValidator
77

88
from PyQt5.QtWidgets import (
9+
QAbstractItemView,
910
QComboBox,
1011
QDialog,
1112
QDateEdit,
1213
QFormLayout,
1314
QLineEdit,
15+
QListWidget,
1416
QPushButton,
1517
QScrollArea,
1618
QTextEdit,
@@ -25,7 +27,8 @@
2527
"float": "doublespinbox",
2628
"date": "dateedit",
2729
"enum": "combobox",
28-
"bool": "checkbox",
30+
"bool": "combobox",
31+
"multiselect": "listwidget",
2932
}
3033

3134

@@ -91,6 +94,11 @@ def create_widget_for_field(field_def):
9194
w.addItem("False", False)
9295
w.addItem("None", None)
9396
w.setCurrentIndex(-1)
97+
elif t == "multiselect":
98+
w = QListWidget()
99+
for choice in field_def.get("choices", []):
100+
w.addItem(choice)
101+
w.setSelectionMode(QAbstractItemView.MultiSelection)
94102
else:
95103
raise ValueError(f"Unsupported field type: {t}")
96104

ulc_mm_package/study_configurations/_example-config.toml

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,33 @@ required = true
1818
[[metadata]]
1919
key = "key3"
2020
label = "choices"
21-
datatype="enum"
21+
datatype = "enum"
2222
choices = ["control", "low_dose", "high_dose"]
2323
default = "control"
2424

2525
[[metadata]]
2626
key = "key4"
27+
label = "Multiselect"
28+
datatype = "multiselect"
29+
choices = ["pickme", "orme", "orwho", "or", "allofus"]
30+
31+
32+
[[metadata]]
33+
key = "key5"
2734
label = "Long string"
2835
datatype = "string"
2936
placeholder = "[your sonata here]"
3037
required = false
3138
multiline = true
3239

3340
[[metadata]]
34-
key = "key5"
41+
key = "key6"
3542
label = "what time is it"
3643
datatype = "date"
3744
required = false
3845

3946
[[metadata]]
40-
key = "key6"
47+
key = "key7"
4148
label = "floating"
4249
datatype = "float"
4350
required = true

0 commit comments

Comments
 (0)