Skip to content

Commit 29d108f

Browse files
committed
[processing] allow raster options widget accept string parameters and outputs in modeler
1 parent 85d4093 commit 29d108f

File tree

2 files changed

+32
-5
lines changed

2 files changed

+32
-5
lines changed

python/plugins/processing/algs/gdal/ui/RasterOptionsWidget.py

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,48 @@
2525

2626
__revision__ = '$Format:%H$'
2727

28+
from qgis.PyQt.QtWidgets import QLineEdit, QComboBox
2829
from qgis.gui import QgsRasterFormatSaveOptionsWidget
2930

30-
from processing.gui.wrappers import WidgetWrapper
31+
from processing.core.parameters import ParameterString
32+
from processing.core.outputs import OutputString
33+
from processing.gui.wrappers import WidgetWrapper, DIALOG_MODELER, DIALOG_BATCH
3134

3235

3336
class RasterOptionsWidgetWrapper(WidgetWrapper):
3437

3538
def createWidget(self):
36-
return QgsRasterFormatSaveOptionsWidget()
39+
if self.dialogType == DIALOG_MODELER:
40+
widget = QComboBox()
41+
widget.setEditable(True)
42+
strings = self.dialog.getAvailableValuesOfType(ParameterString, OutputString)
43+
options = [(self.dialog.resolveValueDescription(s), s) for s in strings]
44+
for desc, val in options:
45+
widget.addItem(desc, val)
46+
widget.setEditText(self.param.default or '')
47+
return widget
48+
elif self.dialogType == DIALOG_BATCH:
49+
widget = QLineEdit()
50+
if self.param.default:
51+
widget.setText(self.param.default)
52+
else:
53+
return QgsRasterFormatSaveOptionsWidget()
3754

3855
def setValue(self, value):
3956
if value is None:
4057
value = ''
41-
self.widget.setValue(value)
58+
59+
if self.dialogType == DIALOG_MODELER:
60+
self.setComboValue(value)
61+
elif self.dialogType == DIALOG_BATCH:
62+
self.widget.setText(value)
63+
else:
64+
self.widget.setValue(value)
4265

4366
def value(self):
44-
return ' '.join(self.widget.options())
67+
if self.dialogType == DIALOG_MODELER:
68+
return self.comboValue()
69+
elif self.dialogType == DIALOG_BATCH:
70+
return self.widget.text()
71+
else:
72+
return ' '.join(self.widget.options())

python/plugins/processing/tests/testdata/gdal_algorithm_tests.yaml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
# See ../README.md for a description of the file format
22

33
tests:
4-
54
- algorithm: gdal:gdalinfo
65
name: gdalinfo
76
params:

0 commit comments

Comments
 (0)