Skip to content

Commit 3ec2dfa

Browse files
alexbruynyalldawson
authored andcommitted
[processing] don't allow multiple enum items to be selected if
allowMultiple is not set
1 parent 39456ba commit 3ec2dfa

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

python/plugins/processing/gui/enummodelerwidget.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,27 @@ def __init__(self, parent=None):
5454

5555
self.lstItems.setModel(QStandardItemModel())
5656

57+
self.lstItems.clicked.connect(self.handleCheckbox)
58+
59+
def handleCheckbox(self, index):
60+
model = self.lstItems.model()
61+
clickedItem = model.itemFromIndex(index)
62+
63+
prevIndex = None
64+
for i in range(model.rowCount()):
65+
if model.item(i).checkState() == Qt.Checked:
66+
prevIndex = i
67+
break
68+
69+
if prevIndex is None:
70+
clickedItem.setCheckState(Qt.Checked)
71+
else:
72+
if self.chkAllowMultiple.isChecked():
73+
clickedItem.setCheckState(Qt.Checked)
74+
else:
75+
model.item(prevIndex).setCheckState(Qt.Unchecked)
76+
clickedItem.setCheckState(Qt.Checked)
77+
5778
def addItem(self):
5879
model = self.lstItems.model()
5980

@@ -113,3 +134,9 @@ def setDefault(self, index):
113134

114135
def setAllowMultiple(self, allowMultiple):
115136
self.chkAllowMultiple.setChecked(allowMultiple)
137+
138+
model = self.lstItems.model()
139+
for i in range(model.rowCount()):
140+
if model.item(i).checkState() == Qt.Checked:
141+
model.item(i).setCheckState(Qt.Unchecked)
142+
break

0 commit comments

Comments
 (0)