Skip to content

Commit 26a97a7

Browse files
alexbruynyalldawson
authored andcommitted
[processing] improve default values handling in the enum modeler GUI
1 parent e97212e commit 26a97a7

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

python/plugins/processing/gui/enummodelerwidget.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,37 @@ def __init__(self, parent=None):
5555

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

58+
self.lstItems.model().itemChanged.connect(self.onItemChanged)
59+
60+
def onItemChanged(self, item):
61+
model = self.lstItems.model()
62+
checkedItem = None
63+
for i in range(model.rowCount()):
64+
itm = model.item(i)
65+
if itm.checkState() == Qt.Checked and itm.data() == Qt.Checked:
66+
checkedItem = i
67+
break
68+
69+
model.blockSignals(True)
70+
if checkedItem is None:
71+
item.setData(item.checkState())
72+
else:
73+
if self.chkAllowMultiple.isChecked():
74+
item.setData(item.checkState())
75+
else:
76+
model.item(checkedItem).setCheckState(Qt.Unchecked)
77+
model.item(checkedItem).setData(Qt.Unchecked)
78+
79+
item.setData(item.checkState())
80+
model.blockSignals(False)
81+
5882
def addItem(self):
5983
model = self.lstItems.model()
6084

6185
item = QStandardItem('new item')
6286
item.setCheckable(True)
6387
item.setDropEnabled(False)
88+
item.setData(Qt.Unchecked)
6489

6590
model.appendRow(item)
6691

@@ -103,6 +128,7 @@ def setOptions(self, options):
103128
item = QStandardItem(i)
104129
item.setCheckable(True)
105130
item.setDropEnabled(False)
131+
item.setData(Qt.Unchecked)
106132

107133
model.appendRow(item)
108134

@@ -113,6 +139,7 @@ def setDefault(self, indexes):
113139
item = model.item(i)
114140
if item:
115141
item.setCheckState(Qt.Checked)
142+
item.setData(Qt.Checked)
116143

117144
def setAllowMultiple(self, allowMultiple):
118145
self.chkAllowMultiple.setChecked(allowMultiple)

python/plugins/processing/modeler/ModelerParameterDefinitionDialog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -280,9 +280,9 @@ def setupUi(self):
280280
isinstance(self.param, QgsProcessingParameterEnum):
281281
self.widget = EnumModelerWidget(self)
282282
if self.param is not None:
283+
self.widget.setAllowMultiple(bool(self.param.allowMultiple()))
283284
self.widget.setOptions(self.param.options())
284285
self.widget.setDefault(self.param.defaultValue())
285-
self.widget.setAllowMultiple(bool(self.param.allowMultiple()))
286286
self.verticalLayout.addWidget(self.widget)
287287
elif self.paramType == parameters.PARAMETER_MATRIX or \
288288
isinstance(self.param, QgsProcessingParameterMatrix):

0 commit comments

Comments
 (0)