Skip to content

Commit 0c6a59e

Browse files
committed
[processing] Correctly set default value for matrix parameters
Fixes #18871 (cherry-picked from c68262d)
1 parent 3a77ba7 commit 0c6a59e

File tree

4 files changed

+40
-10
lines changed

4 files changed

+40
-10
lines changed

python/plugins/processing/gui/FixedTableDialog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ def populateTable(self, table):
8181
# Populate table
8282
for i in range(rows):
8383
for j in range(cols):
84-
item = QStandardItem(table[i][j])
84+
item = QStandardItem(str(table[i][j]))
8585
model.setItem(i, j, item)
8686
self.tblView.setModel(model)
8787

python/plugins/processing/gui/FixedTablePanel.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -56,11 +56,16 @@ def __init__(self, param, parent=None):
5656

5757
self.btnSelect.clicked.connect(self.showFixedTableDialog)
5858

59+
def updateSummaryText(self):
60+
self.leText.setText(self.tr('Fixed table {0}x{1}').format(
61+
len(self.table), len(self.param.headers())))
62+
63+
def setValue(self, value):
64+
self.table = value
65+
self.updateSummaryText()
66+
5967
def showFixedTableDialog(self):
6068
dlg = FixedTableDialog(self.param, self.table)
6169
dlg.exec_()
6270
if dlg.rettable is not None:
63-
self.table = dlg.rettable
64-
65-
self.leText.setText(self.tr('Fixed table {0}x{1}').format(
66-
len(self.table), len(self.param.headers())))
71+
self.setValue(dlg.rettable)

python/plugins/processing/gui/wrappers.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ def createWidget(self):
532532
return FixedTablePanel(self.param)
533533

534534
def setValue(self, value):
535-
pass
535+
self.widget.setValue(value)
536536

537537
def value(self):
538538
if self.dialogType == DIALOG_MODELER:

python/plugins/processing/tests/GuiTest.py

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@
2626
__revision__ = '$Format:%H$'
2727

2828
from qgis.testing import start_app, unittest
29-
from qgis.core import QgsApplication
29+
from qgis.core import (QgsApplication,
30+
QgsCoordinateReferenceSystem,
31+
QgsProcessingParameterMatrix,
32+
QgsVectorLayer)
3033
from qgis.analysis import QgsNativeAlgorithms
3134

3235
from processing.gui.AlgorithmDialog import AlgorithmDialog
@@ -115,12 +118,34 @@ def testField(self):
115118
def testSource(self):
116119
self.checkConstructWrapper(QgsProcessingParameterFeatureSource('test'), FeatureSourceWidgetWrapper)
117120

118-
def testSource(self):
119-
self.checkConstructWrapper(QgsProcessingParameterBand('test'), BandWidgetWrapper)
120-
121121
def testMapLayer(self):
122122
self.checkConstructWrapper(QgsProcessingParameterMapLayer('test'), MapLayerWidgetWrapper)
123123

124+
def testMatrix(self):
125+
self.checkConstructWrapper(QgsProcessingParameterMatrix('test'), FixedTableWidgetWrapper)
126+
127+
alg = QgsApplication.processingRegistry().algorithmById('native:centroids')
128+
dlg = AlgorithmDialog(alg)
129+
param = QgsProcessingParameterMatrix('test', 'test', 2, True, ['x', 'y'], [['a', 'b'], ['c', 'd']])
130+
wrapper = FixedTableWidgetWrapper(param, dlg)
131+
widget = wrapper.createWidget()
132+
133+
# check that default value is initially set
134+
self.assertEqual(wrapper.value(), [['a', 'b'], ['c', 'd']])
135+
136+
# test widget
137+
widget.show()
138+
wrapper.setValue([[1, 2], [3, 4]])
139+
self.assertEqual(wrapper.value(), [[1, 2], [3, 4]])
140+
141+
widget.deleteLater()
142+
143+
def testNumber(self):
144+
self.checkConstructWrapper(QgsProcessingParameterNumber('test'), NumberWidgetWrapper)
145+
146+
def testBand(self):
147+
self.checkConstructWrapper(QgsProcessingParameterBand('test'), BandWidgetWrapper)
148+
124149

125150
if __name__ == '__main__':
126151
unittest.main()

0 commit comments

Comments
 (0)