mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-18 00:03:05 -04:00
Use boolean wrapper in modeler algorithm dialog
This commit is contained in:
parent
fbab369c0d
commit
bb0938a5fe
@ -40,6 +40,12 @@ from qgis.core import QgsNetworkAccessManager
|
|||||||
|
|
||||||
from qgis.gui import QgsMessageBar
|
from qgis.gui import QgsMessageBar
|
||||||
|
|
||||||
|
from processing.gui.wrappers import (
|
||||||
|
DIALOG_MODELER,
|
||||||
|
wrapper_from_param,
|
||||||
|
NotYetImplementedWidgetWrapper,
|
||||||
|
)
|
||||||
|
|
||||||
from processing.gui.CrsSelectionPanel import CrsSelectionPanel
|
from processing.gui.CrsSelectionPanel import CrsSelectionPanel
|
||||||
from processing.gui.MultipleInputPanel import MultipleInputPanel
|
from processing.gui.MultipleInputPanel import MultipleInputPanel
|
||||||
from processing.gui.FixedTablePanel import FixedTablePanel
|
from processing.gui.FixedTablePanel import FixedTablePanel
|
||||||
@ -49,7 +55,6 @@ from processing.gui.GeometryPredicateSelectionPanel import \
|
|||||||
from processing.core.parameters import (ParameterExtent,
|
from processing.core.parameters import (ParameterExtent,
|
||||||
ParameterRaster,
|
ParameterRaster,
|
||||||
ParameterVector,
|
ParameterVector,
|
||||||
ParameterBoolean,
|
|
||||||
ParameterTable,
|
ParameterTable,
|
||||||
ParameterFixedTable,
|
ParameterFixedTable,
|
||||||
ParameterMultipleInput,
|
ParameterMultipleInput,
|
||||||
@ -107,6 +112,7 @@ class ModelerParametersDialog(QDialog):
|
|||||||
self.widgets = {}
|
self.widgets = {}
|
||||||
self.checkBoxes = {}
|
self.checkBoxes = {}
|
||||||
self.showAdvanced = False
|
self.showAdvanced = False
|
||||||
|
self.widget_wrappers = {}
|
||||||
self.valueItems = {}
|
self.valueItems = {}
|
||||||
self.dependentItems = {}
|
self.dependentItems = {}
|
||||||
self.resize(650, 450)
|
self.resize(650, 450)
|
||||||
@ -160,7 +166,9 @@ class ModelerParametersDialog(QDialog):
|
|||||||
desc += self.tr('(x, y)')
|
desc += self.tr('(x, y)')
|
||||||
label = QLabel(desc)
|
label = QLabel(desc)
|
||||||
self.labels[param.name] = label
|
self.labels[param.name] = label
|
||||||
widget = self.getWidgetFromParameter(param)
|
wrapper = self.getWidgetWrapperFromParameter(param)
|
||||||
|
self.widget_wrappers[param.name] = wrapper
|
||||||
|
widget = wrapper.widget
|
||||||
self.valueItems[param.name] = widget
|
self.valueItems[param.name] = widget
|
||||||
if param.name in list(tooltips.keys()):
|
if param.name in list(tooltips.keys()):
|
||||||
tooltip = tooltips[param.name]
|
tooltip = tooltips[param.name]
|
||||||
@ -308,6 +316,20 @@ class ModelerParametersDialog(QDialog):
|
|||||||
alg = self.model.algs[value.alg]
|
alg = self.model.algs[value.alg]
|
||||||
return self.tr("'%s' from algorithm '%s'") % (alg.algorithm.getOutputFromName(value.output).description, alg.description)
|
return self.tr("'%s' from algorithm '%s'") % (alg.algorithm.getOutputFromName(value.output).description, alg.description)
|
||||||
|
|
||||||
|
def getWidgetWrapperFromParameter(self, param):
|
||||||
|
extra_values = []
|
||||||
|
values = self.getAvailableValuesOfType(param.__class__, None)
|
||||||
|
for value in values:
|
||||||
|
extra_values.append((self.resolveValueDescription(value), value))
|
||||||
|
|
||||||
|
wrapper = wrapper_from_param(param, DIALOG_MODELER, extra_values)
|
||||||
|
if wrapper is not None:
|
||||||
|
return wrapper
|
||||||
|
|
||||||
|
widget = self.getWidgetFromParameter(param)
|
||||||
|
wrapper = NotYetImplementedWidgetWrapper(param, widget)
|
||||||
|
return wrapper
|
||||||
|
|
||||||
def getWidgetFromParameter(self, param):
|
def getWidgetFromParameter(self, param):
|
||||||
if isinstance(param, ParameterRaster):
|
if isinstance(param, ParameterRaster):
|
||||||
item = QComboBox()
|
item = QComboBox()
|
||||||
@ -333,17 +355,6 @@ class ModelerParametersDialog(QDialog):
|
|||||||
item.addItem(self.resolveValueDescription(table), table)
|
item.addItem(self.resolveValueDescription(table), table)
|
||||||
for layer in layers:
|
for layer in layers:
|
||||||
item.addItem(self.resolveValueDescription(layer), layer)
|
item.addItem(self.resolveValueDescription(layer), layer)
|
||||||
elif isinstance(param, ParameterBoolean):
|
|
||||||
item = QComboBox()
|
|
||||||
item.addItem('Yes')
|
|
||||||
item.addItem('No')
|
|
||||||
bools = self.getAvailableValuesOfType(ParameterBoolean, None)
|
|
||||||
for b in bools:
|
|
||||||
item.addItem(self.resolveValueDescription(b), b)
|
|
||||||
if param.default:
|
|
||||||
item.setCurrentIndex(0)
|
|
||||||
else:
|
|
||||||
item.setCurrentIndex(1)
|
|
||||||
elif isinstance(param, ParameterSelection):
|
elif isinstance(param, ParameterSelection):
|
||||||
item = QComboBox()
|
item = QComboBox()
|
||||||
item.addItems(param.options)
|
item.addItems(param.options)
|
||||||
@ -487,11 +498,6 @@ class ModelerParametersDialog(QDialog):
|
|||||||
combo.setEditText(str(value))
|
combo.setEditText(str(value))
|
||||||
elif isinstance(param, ParameterSelection):
|
elif isinstance(param, ParameterSelection):
|
||||||
combo.setCurrentIndex(int(value))
|
combo.setCurrentIndex(int(value))
|
||||||
elif isinstance(param, ParameterBoolean):
|
|
||||||
if value:
|
|
||||||
combo.setCurrentIndex(0)
|
|
||||||
else:
|
|
||||||
combo.setCurrentIndex(1)
|
|
||||||
|
|
||||||
def setPreviousValues(self):
|
def setPreviousValues(self):
|
||||||
if self._algName is not None:
|
if self._algName is not None:
|
||||||
@ -500,11 +506,16 @@ class ModelerParametersDialog(QDialog):
|
|||||||
for param in alg.algorithm.parameters:
|
for param in alg.algorithm.parameters:
|
||||||
if param.hidden:
|
if param.hidden:
|
||||||
continue
|
continue
|
||||||
widget = self.valueItems[param.name]
|
|
||||||
if param.name in alg.params:
|
if param.name in alg.params:
|
||||||
value = alg.params[param.name]
|
value = alg.params[param.name]
|
||||||
else:
|
else:
|
||||||
value = param.default
|
value = param.default
|
||||||
|
|
||||||
|
wrapper = self.widget_wrappers[param.name]
|
||||||
|
if wrapper.implemented:
|
||||||
|
wrapper.setValue(value)
|
||||||
|
|
||||||
|
widget = wrapper.widget
|
||||||
if isinstance(param, (
|
if isinstance(param, (
|
||||||
ParameterRaster,
|
ParameterRaster,
|
||||||
ParameterVector,
|
ParameterVector,
|
||||||
@ -512,7 +523,6 @@ class ModelerParametersDialog(QDialog):
|
|||||||
ParameterTableField,
|
ParameterTableField,
|
||||||
ParameterSelection,
|
ParameterSelection,
|
||||||
ParameterNumber,
|
ParameterNumber,
|
||||||
ParameterBoolean,
|
|
||||||
ParameterExtent,
|
ParameterExtent,
|
||||||
ParameterFile,
|
ParameterFile,
|
||||||
ParameterPoint,
|
ParameterPoint,
|
||||||
@ -567,7 +577,7 @@ class ModelerParametersDialog(QDialog):
|
|||||||
for param in params:
|
for param in params:
|
||||||
if param.hidden:
|
if param.hidden:
|
||||||
continue
|
continue
|
||||||
if not self.setParamValue(alg, param, self.valueItems[param.name]):
|
if not self.setParamValue(alg, param, self.widget_wrappers[param.name]):
|
||||||
self.bar.pushMessage("Error", "Wrong or missing value for parameter '%s'" % param.description,
|
self.bar.pushMessage("Error", "Wrong or missing value for parameter '%s'" % param.description,
|
||||||
level=QgsMessageBar.WARNING)
|
level=QgsMessageBar.WARNING)
|
||||||
return None
|
return None
|
||||||
@ -723,17 +733,15 @@ class ModelerParametersDialog(QDialog):
|
|||||||
alg.params[param.name] = value
|
alg.params[param.name] = value
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def setParamValue(self, alg, param, widget):
|
def setParamValue(self, alg, param, wrapper):
|
||||||
|
if wrapper.implemented:
|
||||||
|
alg.params[param.name] = wrapper.value()
|
||||||
|
return True
|
||||||
|
|
||||||
|
widget = wrapper.widget
|
||||||
if isinstance(param, (ParameterRaster, ParameterVector,
|
if isinstance(param, (ParameterRaster, ParameterVector,
|
||||||
ParameterTable)):
|
ParameterTable)):
|
||||||
return self.setParamValueLayerOrTable(alg, param, widget)
|
return self.setParamValueLayerOrTable(alg, param, widget)
|
||||||
elif isinstance(param, ParameterBoolean):
|
|
||||||
if widget.currentIndex() < 2:
|
|
||||||
value = widget.currentIndex() == 0
|
|
||||||
else:
|
|
||||||
value = widget.itemData(widget.currentIndex())
|
|
||||||
alg.params[param.name] = value
|
|
||||||
return True
|
|
||||||
elif isinstance(param, ParameterString):
|
elif isinstance(param, ParameterString):
|
||||||
return self.setParamStringValue(alg, param, widget)
|
return self.setParamStringValue(alg, param, widget)
|
||||||
elif isinstance(param, ParameterNumber):
|
elif isinstance(param, ParameterNumber):
|
||||||
|
Loading…
x
Reference in New Issue
Block a user