mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Adapt more code to c++ API
This commit is contained in:
parent
ef59d0c454
commit
189f804714
@ -26,6 +26,8 @@ __copyright__ = '(C) 2016, Médéric Ribreux'
|
||||
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
from qgis.core import QgsProcessingParameterDefinition
|
||||
|
||||
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
|
||||
from processing.core.parameters import ParameterRaster
|
||||
from processing.core.parameters import ParameterString
|
||||
@ -111,7 +113,7 @@ class gdal2tiles(GdalAlgorithm):
|
||||
None, False, True))
|
||||
|
||||
for param in params:
|
||||
param.isAdvanced = True
|
||||
param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(param)
|
||||
|
||||
self.addOutput(OutputDirectory(self.OUTPUTDIR,
|
||||
|
@ -26,6 +26,8 @@ __copyright__ = '(C) 2016, Médéric Ribreux'
|
||||
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
from qgis.core import QgsProcessingParameterDefinition
|
||||
|
||||
from processing.algs.gdal.GdalAlgorithm import GdalAlgorithm
|
||||
from processing.core.parameters import ParameterString
|
||||
from processing.core.parameters import ParameterSelection
|
||||
@ -107,7 +109,7 @@ class retile(GdalAlgorithm):
|
||||
None, False, True))
|
||||
|
||||
for param in params:
|
||||
param.isAdvanced = True
|
||||
param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(param)
|
||||
|
||||
self.addOutput(OutputDirectory(self.TARGETDIR,
|
||||
|
@ -37,7 +37,8 @@ from qgis.core import (QgsRasterLayer,
|
||||
QgsApplication,
|
||||
QgsProcessingUtils,
|
||||
QgsMessageLog,
|
||||
QgsProcessingAlgorithm)
|
||||
QgsProcessingAlgorithm,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.utils import iface
|
||||
|
||||
from processing.core.GeoAlgorithm import GeoAlgorithm
|
||||
@ -183,7 +184,7 @@ class Grass7Algorithm(GeoAlgorithm):
|
||||
vectorOutputs += 1
|
||||
if isinstance(output, OutputHTML):
|
||||
self.addOutput(OutputFile("rawoutput",
|
||||
self.tr("{0} (raw output)").format(output.description),
|
||||
self.tr("{0} (raw output)").format(output.description()),
|
||||
"txt"))
|
||||
line = lines.readline().strip('\n').strip()
|
||||
except Exception as e:
|
||||
@ -203,17 +204,17 @@ class Grass7Algorithm(GeoAlgorithm):
|
||||
param = ParameterNumber(self.GRASS_SNAP_TOLERANCE_PARAMETER,
|
||||
'v.in.ogr snap tolerance (-1 = no snap)',
|
||||
-1, None, -1.0)
|
||||
param.isAdvanced = True
|
||||
param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(param)
|
||||
param = ParameterNumber(self.GRASS_MIN_AREA_PARAMETER,
|
||||
'v.in.ogr min area', 0, None, 0.0001)
|
||||
param.isAdvanced = True
|
||||
param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(param)
|
||||
if vectorOutputs == 1:
|
||||
param = ParameterSelection(self.GRASS_OUTPUT_TYPE_PARAMETER,
|
||||
'v.out.ogr output type',
|
||||
self.OUTPUT_TYPES)
|
||||
param.isAdvanced = True
|
||||
param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(param)
|
||||
|
||||
def getDefaultCellsize(self):
|
||||
@ -395,7 +396,7 @@ class Grass7Algorithm(GeoAlgorithm):
|
||||
command += ' ' + ' '.join(self.hardcodedStrings)
|
||||
|
||||
# Add algorithm command
|
||||
for param in self.parameters:
|
||||
for param in self.parameterDefinitions():
|
||||
if param.value is None or param.value == '':
|
||||
continue
|
||||
if param.name in [self.GRASS_REGION_CELLSIZE_PARAMETER, self.GRASS_REGION_EXTENT_PARAMETER, self.GRASS_MIN_AREA_PARAMETER, self.GRASS_SNAP_TOLERANCE_PARAMETER, self.GRASS_OUTPUT_TYPE_PARAMETER, self.GRASS_REGION_ALIGN_TO_RESOLUTION]:
|
||||
@ -403,28 +404,28 @@ class Grass7Algorithm(GeoAlgorithm):
|
||||
if isinstance(param, (ParameterRaster, ParameterVector)):
|
||||
value = param.value
|
||||
if value in list(self.exportedLayers.keys()):
|
||||
command += ' ' + param.name + '=' \
|
||||
command += ' ' + param.name() + '=' \
|
||||
+ self.exportedLayers[value]
|
||||
else:
|
||||
command += ' ' + param.name + '=' + value
|
||||
command += ' ' + param.name() + '=' + value
|
||||
elif isinstance(param, ParameterMultipleInput):
|
||||
s = param.value
|
||||
for layer in list(self.exportedLayers.keys()):
|
||||
s = s.replace(layer, self.exportedLayers[layer])
|
||||
s = s.replace(';', ',')
|
||||
command += ' ' + param.name + '=' + s
|
||||
command += ' ' + param.name() + '=' + s
|
||||
elif isinstance(param, ParameterBoolean):
|
||||
if param.value:
|
||||
command += ' ' + param.name
|
||||
command += ' ' + param.name()
|
||||
elif isinstance(param, ParameterSelection):
|
||||
idx = int(param.value)
|
||||
command += ' ' + param.name + '=' + str(param.options[idx][1])
|
||||
command += ' ' + param.name() + '=' + str(param.options[idx][1])
|
||||
elif isinstance(param, ParameterString):
|
||||
command += ' ' + param.name + '="' + str(param.value) + '"'
|
||||
command += ' ' + param.name() + '="' + str(param.value) + '"'
|
||||
elif isinstance(param, ParameterPoint):
|
||||
command += ' ' + param.name + '=' + str(param.value)
|
||||
command += ' ' + param.name() + '=' + str(param.value)
|
||||
else:
|
||||
command += ' ' + param.name + '="' + str(param.value) + '"'
|
||||
command += ' ' + param.name() + '="' + str(param.value) + '"'
|
||||
|
||||
for out in self.outputs:
|
||||
if isinstance(out, OutputFile):
|
||||
|
@ -81,7 +81,7 @@ def processCommand(alg, parameters):
|
||||
for param in paramsToDelete:
|
||||
alg.parameters.remove(param)
|
||||
|
||||
alg.processCommand()
|
||||
alg.processCommand(parameters, context)
|
||||
|
||||
# Bring back the parameters:
|
||||
for param in paramsToDelete:
|
||||
|
@ -31,7 +31,8 @@ from qgis.PyQt.QtGui import QIcon
|
||||
|
||||
from qgis.core import (QgsFeatureRequest,
|
||||
QgsMessageLog,
|
||||
QgsProcessingUtils)
|
||||
QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.analysis import QgsKernelDensityEstimation
|
||||
|
||||
from processing.algs.qgis import QgisAlgorithm
|
||||
@ -88,7 +89,7 @@ class Heatmap(QgisAlgorithm):
|
||||
|
||||
radius_field_param = ParameterTableField(self.RADIUS_FIELD,
|
||||
self.tr('Radius from field'), self.INPUT_LAYER, optional=True, datatype=ParameterTableField.DATA_TYPE_NUMBER)
|
||||
radius_field_param.isAdvanced = True
|
||||
radius_field_param.setFlags(radius_field_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(radius_field_param)
|
||||
|
||||
class ParameterHeatmapPixelSize(ParameterNumber):
|
||||
@ -108,20 +109,20 @@ class Heatmap(QgisAlgorithm):
|
||||
|
||||
weight_field_param = ParameterTableField(self.WEIGHT_FIELD,
|
||||
self.tr('Weight from field'), self.INPUT_LAYER, optional=True, datatype=ParameterTableField.DATA_TYPE_NUMBER)
|
||||
weight_field_param.isAdvanced = True
|
||||
weight_field_param.setFlags(weight_field_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(weight_field_param)
|
||||
kernel_shape_param = ParameterSelection(self.KERNEL,
|
||||
self.tr('Kernel shape'), self.KERNELS)
|
||||
kernel_shape_param.isAdvanced = True
|
||||
kernel_shape_param.setFlags(kernel_shape_param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(kernel_shape_param)
|
||||
decay_ratio = ParameterNumber(self.DECAY,
|
||||
self.tr('Decay ratio (Triangular kernels only)'),
|
||||
-100.0, 100.0, 0.0)
|
||||
decay_ratio.isAdvanced = True
|
||||
decay_ratio.setFlags(decay_ratio.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(decay_ratio)
|
||||
output_scaling = ParameterSelection(self.OUTPUT_VALUE,
|
||||
self.tr('Output value scaling'), self.OUTPUT_VALUES)
|
||||
output_scaling.isAdvanced = True
|
||||
output_scaling.setFlags(output_scaling.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(output_scaling)
|
||||
self.addOutput(OutputRaster(self.OUTPUT_LAYER,
|
||||
self.tr('Heatmap')))
|
||||
|
@ -30,7 +30,8 @@ import os
|
||||
from qgis.PyQt.QtGui import QIcon
|
||||
|
||||
from qgis.core import (QgsRectangle,
|
||||
QgsProcessingUtils)
|
||||
QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.analysis import (QgsInterpolator,
|
||||
QgsIDWInterpolator,
|
||||
QgsGridFileWriter
|
||||
@ -78,13 +79,13 @@ class IdwInterpolation(QgisAlgorithm):
|
||||
|
||||
def setValue(self, value):
|
||||
if value is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
|
||||
if value == '':
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
|
||||
if isinstance(value, str):
|
||||
|
@ -26,7 +26,8 @@ __copyright__ = '(C) 2016, Nyall Dawson'
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
from qgis.core import (QgsApplication,
|
||||
QgsProcessingUtils)
|
||||
QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition)
|
||||
from processing.algs.qgis import QgisAlgorithm
|
||||
from processing.core.GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
|
||||
from processing.core.parameters import ParameterVector, ParameterNumber
|
||||
@ -66,7 +67,7 @@ class Orthogonalize(QgisAlgorithm):
|
||||
max_iterations = ParameterNumber(self.MAX_ITERATIONS,
|
||||
self.tr('Maximum algorithm iterations'),
|
||||
1, 10000, 1000)
|
||||
max_iterations.isAdvanced = True
|
||||
max_iterations.setFlags(max_iterations.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(max_iterations)
|
||||
|
||||
self.addOutput(OutputVector(self.OUTPUT_LAYER, self.tr('Orthogonalized')))
|
||||
|
@ -74,7 +74,7 @@ class RasterCalculator(QgisAlgorithm):
|
||||
param = i.param
|
||||
if isinstance(param, ParameterRaster):
|
||||
new = "{}@".format(os.path.basename(param.value))
|
||||
old = "{}@".format(param.name)
|
||||
old = "{}@".format(param.name())
|
||||
value = value.replace(old, new)
|
||||
|
||||
for alg in list(model.algs.values()):
|
||||
@ -164,7 +164,7 @@ class RasterCalculator(QgisAlgorithm):
|
||||
for i in list(model.inputs.values()):
|
||||
param = i.param
|
||||
if isinstance(param, ParameterRaster) and "{}@".format(param.name) in expression:
|
||||
values.append(ValueFromInput(param.name))
|
||||
values.append(ValueFromInput(param.name()))
|
||||
|
||||
if algorithm.name:
|
||||
dependent = model.getDependentAlgorithms(algorithm.name)
|
||||
|
@ -30,7 +30,7 @@ import os
|
||||
from qgis.PyQt.QtGui import QIcon, QColor
|
||||
|
||||
from qgis.analysis import QgsRelief
|
||||
|
||||
from qgis.core import QgsProcessingParameterDefinition
|
||||
from processing.algs.qgis import QgisAlgorithm
|
||||
from processing.core.parameters import (Parameter,
|
||||
ParameterRaster,
|
||||
@ -74,13 +74,13 @@ class Relief(QgisAlgorithm):
|
||||
|
||||
def setValue(self, value):
|
||||
if value is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
|
||||
if value == '':
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
|
||||
if isinstance(value, str):
|
||||
|
@ -31,7 +31,15 @@ from collections import OrderedDict
|
||||
from qgis.PyQt.QtCore import QVariant
|
||||
from qgis.PyQt.QtGui import QIcon
|
||||
|
||||
from qgis.core import QgsWkbTypes, QgsUnitTypes, QgsFeature, QgsGeometry, QgsField, QgsFields, QgsFeatureRequest, QgsProcessingUtils
|
||||
from qgis.core import (QgsWkbTypes,
|
||||
QgsUnitTypes,
|
||||
QgsFeature,
|
||||
QgsGeometry,
|
||||
QgsField,
|
||||
QgsFields,
|
||||
QgsFeatureRequest,
|
||||
QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.analysis import (QgsVectorLayerDirector,
|
||||
QgsNetworkDistanceStrategy,
|
||||
QgsNetworkSpeedStrategy,
|
||||
@ -134,7 +142,7 @@ class ServiceAreaFromLayer(QgisAlgorithm):
|
||||
0.0, 99999999.999999, 0.0))
|
||||
|
||||
for p in params:
|
||||
p.isAdvanced = True
|
||||
p.setFlags(p.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(p)
|
||||
|
||||
self.addOutput(OutputVector(self.OUTPUT_POINTS,
|
||||
|
@ -38,6 +38,7 @@ from qgis.core import (QgsWkbTypes,
|
||||
QgsPointXY,
|
||||
QgsField,
|
||||
QgsFields,
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsProcessingUtils)
|
||||
from qgis.analysis import (QgsVectorLayerDirector,
|
||||
QgsNetworkDistanceStrategy,
|
||||
@ -141,7 +142,7 @@ class ServiceAreaFromPoint(QgisAlgorithm):
|
||||
0.0, 99999999.999999, 0.0))
|
||||
|
||||
for p in params:
|
||||
p.isAdvanced = True
|
||||
p.setFlags(p.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(p)
|
||||
|
||||
self.addOutput(OutputVector(self.OUTPUT_POINTS,
|
||||
|
@ -40,6 +40,7 @@ from qgis.core import (QgsWkbTypes,
|
||||
QgsField,
|
||||
QgsFeatureRequest,
|
||||
QgsMessageLog,
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsProcessingUtils)
|
||||
from qgis.analysis import (QgsVectorLayerDirector,
|
||||
QgsNetworkDistanceStrategy,
|
||||
@ -142,7 +143,7 @@ class ShortestPathLayerToPoint(QgisAlgorithm):
|
||||
0.0, 99999999.999999, 0.0))
|
||||
|
||||
for p in params:
|
||||
p.isAdvanced = True
|
||||
p.setFlags(p.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(p)
|
||||
|
||||
self.addOutput(OutputVector(self.OUTPUT_LAYER,
|
||||
|
@ -33,6 +33,7 @@ from qgis.PyQt.QtGui import QIcon
|
||||
|
||||
from qgis.core import (QgsWkbTypes, QgsUnitTypes, QgsFeature, QgsGeometry, QgsPointXY, QgsFields, QgsField, QgsFeatureRequest,
|
||||
QgsMessageLog,
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsProcessingUtils)
|
||||
from qgis.analysis import (QgsVectorLayerDirector,
|
||||
QgsNetworkDistanceStrategy,
|
||||
@ -135,7 +136,7 @@ class ShortestPathPointToLayer(QgisAlgorithm):
|
||||
0.0, 99999999.999999, 0.0))
|
||||
|
||||
for p in params:
|
||||
p.isAdvanced = True
|
||||
p.setFlags(p.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(p)
|
||||
|
||||
self.addOutput(OutputVector(self.OUTPUT_LAYER,
|
||||
|
@ -38,6 +38,7 @@ from qgis.core import (QgsWkbTypes,
|
||||
QgsPointXY,
|
||||
QgsFields,
|
||||
QgsField,
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsProcessingUtils)
|
||||
from qgis.analysis import (QgsVectorLayerDirector,
|
||||
QgsNetworkDistanceStrategy,
|
||||
@ -143,7 +144,7 @@ class ShortestPathPointToPoint(QgisAlgorithm):
|
||||
0.0, 99999999.999999, 0.0))
|
||||
|
||||
for p in params:
|
||||
p.isAdvanced = True
|
||||
p.setFlags(p.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
self.addParameter(p)
|
||||
|
||||
self.addOutput(OutputNumber(self.TRAVEL_COST,
|
||||
|
@ -30,7 +30,8 @@ import os
|
||||
from qgis.PyQt.QtGui import QIcon
|
||||
|
||||
from qgis.core import (QgsRectangle,
|
||||
QgsProcessingUtils)
|
||||
QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.analysis import (QgsInterpolator,
|
||||
QgsTINInterpolator,
|
||||
QgsGridFileWriter
|
||||
@ -86,13 +87,13 @@ class TinInterpolation(QgisAlgorithm):
|
||||
|
||||
def setValue(self, value):
|
||||
if value is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
|
||||
if value == '':
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
|
||||
if isinstance(value, str):
|
||||
|
@ -1,4 +1,5 @@
|
||||
from qgis.core import (QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsProject)
|
||||
from processing.gui.wrappers import WidgetWrapper, DIALOG_STANDARD, DIALOG_BATCH
|
||||
from processing.tools import dataobjects
|
||||
@ -242,6 +243,6 @@ class LayersListWidgetWrapper(WidgetWrapper):
|
||||
else:
|
||||
options = self._getOptions()
|
||||
values = [options[i] for i in self.widget.selectedoptions]
|
||||
if len(values) == 0 and not self.param.optional:
|
||||
if len(values) == 0 and not self.param.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
raise InvalidParameterValue()
|
||||
return values
|
||||
|
@ -214,20 +214,20 @@ class SagaAlgorithm(GeoAlgorithm):
|
||||
if isinstance(param, (ParameterRaster, ParameterVector, ParameterTable)):
|
||||
value = param.value
|
||||
if value in list(self.exportedLayers.keys()):
|
||||
command += ' -' + param.name + ' "' \
|
||||
command += ' -' + param.name() + ' "' \
|
||||
+ self.exportedLayers[value] + '"'
|
||||
else:
|
||||
command += ' -' + param.name + ' "' + value + '"'
|
||||
command += ' -' + param.name() + ' "' + value + '"'
|
||||
elif isinstance(param, ParameterMultipleInput):
|
||||
s = param.value
|
||||
for layer in list(self.exportedLayers.keys()):
|
||||
s = s.replace(layer, self.exportedLayers[layer])
|
||||
command += ' -' + param.name + ' "' + s + '"'
|
||||
command += ' -' + param.name() + ' "' + s + '"'
|
||||
elif isinstance(param, ParameterBoolean):
|
||||
if param.value:
|
||||
command += ' -' + param.name.strip() + " true"
|
||||
command += ' -' + param.name().strip() + " true"
|
||||
else:
|
||||
command += ' -' + param.name.strip() + " false"
|
||||
command += ' -' + param.name().strip() + " false"
|
||||
elif isinstance(param, ParameterFixedTable):
|
||||
tempTableFile = getTempFilename('txt')
|
||||
with open(tempTableFile, 'w') as f:
|
||||
@ -236,7 +236,7 @@ class SagaAlgorithm(GeoAlgorithm):
|
||||
for i in range(0, len(values), 3):
|
||||
s = values[i] + '\t' + values[i + 1] + '\t' + values[i + 2] + '\n'
|
||||
f.write(s)
|
||||
command += ' -' + param.name + ' "' + tempTableFile + '"'
|
||||
command += ' -' + param.name() + ' "' + tempTableFile + '"'
|
||||
elif isinstance(param, ParameterExtent):
|
||||
# 'We have to substract/add half cell size, since SAGA is
|
||||
# center based, not corner based
|
||||
@ -247,9 +247,9 @@ class SagaAlgorithm(GeoAlgorithm):
|
||||
command += ' -' + self.extentParamNames[i] + ' ' \
|
||||
+ str(float(values[i]) + offset[i])
|
||||
elif isinstance(param, (ParameterNumber, ParameterSelection)):
|
||||
command += ' -' + param.name + ' ' + str(param.value)
|
||||
command += ' -' + param.name() + ' ' + str(param.value)
|
||||
else:
|
||||
command += ' -' + param.name + ' "' + str(param.value) + '"'
|
||||
command += ' -' + param.name() + ' "' + str(param.value) + '"'
|
||||
|
||||
for out in self.outputs:
|
||||
command += ' -' + out.name + ' "' + out.getCompatibleFileName(self) + '"'
|
||||
|
@ -37,6 +37,7 @@ from qgis.core import (QgsProcessingFeedback,
|
||||
QgsProcessingAlgorithm,
|
||||
QgsProject,
|
||||
QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsMessageLog)
|
||||
|
||||
from builtins import str
|
||||
@ -350,7 +351,7 @@ class GeoAlgorithm(QgsProcessingAlgorithm):
|
||||
for param in self.parameters:
|
||||
s += '\t' + str(param) + '\n'
|
||||
for out in self.outputs:
|
||||
if not out.hidden:
|
||||
if not out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
s += '\t' + str(out) + '\n'
|
||||
s += '\n'
|
||||
return s
|
||||
@ -394,7 +395,7 @@ class GeoAlgorithm(QgsProcessingAlgorithm):
|
||||
for param in self.parameters:
|
||||
s += param.getValueAsCommandLineParameter() + ','
|
||||
for out in self.outputs:
|
||||
if not out.hidden:
|
||||
if not out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
s += out.getValueAsCommandLineParameter() + ','
|
||||
s = s[:-1] + ')'
|
||||
return s
|
||||
|
@ -189,7 +189,7 @@ class Processing(object):
|
||||
i = i + 1
|
||||
|
||||
for output in alg.outputs:
|
||||
if not output.hidden:
|
||||
if not output.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
if not output.setValue(args[i]):
|
||||
# fix_print_with_import
|
||||
print('Error: Wrong output value: ' + str(args[i]))
|
||||
|
@ -45,7 +45,8 @@ from qgis.core import (QgsExpressionContext,
|
||||
QgsProject,
|
||||
QgsSettings,
|
||||
QgsVectorFileWriter,
|
||||
QgsProcessingUtils)
|
||||
QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition)
|
||||
|
||||
|
||||
def _expressionContext(alg):
|
||||
@ -63,21 +64,12 @@ class Output(object):
|
||||
|
||||
def __init__(self, name='', description='', hidden=False):
|
||||
self.name = name
|
||||
self.description = description
|
||||
|
||||
# The value of an output is a string representing the location
|
||||
# of the output. For a file based output, it should be the
|
||||
# filepath to it.
|
||||
self.value = None
|
||||
|
||||
# A hidden output will not be shown to the user, who will not
|
||||
# be able to select where to store it. Use this to generate
|
||||
# outputs that are modified version of inputs (like a selection
|
||||
# in a vector layer). In the case of layers, hidden outputs are
|
||||
# not loaded into QGIS after the algorithm is executed. Other
|
||||
# outputs not representing layers or tables should always be hidden.
|
||||
self.hidden = str(hidden).lower() == str(True).lower()
|
||||
|
||||
def __str__(self):
|
||||
return u'{} <{}>'.format(self.name, self.__class__.__name__)
|
||||
|
||||
@ -107,7 +99,7 @@ class Output(object):
|
||||
return []
|
||||
|
||||
def resolveValue(self, alg):
|
||||
if self.hidden:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
return
|
||||
if not bool(self.value):
|
||||
self.value = self._resolveTemporary(alg)
|
||||
@ -135,9 +127,6 @@ class Output(object):
|
||||
def expressionContext(self, alg):
|
||||
return _expressionContext(alg)
|
||||
|
||||
def typeName(self):
|
||||
return self.__class__.__name__.replace('Output', '').lower()
|
||||
|
||||
def tr(self, string, context=''):
|
||||
if context == '':
|
||||
context = 'Output'
|
||||
@ -154,9 +143,8 @@ class OutputExtent(Output):
|
||||
|
||||
def __init__(self, name='', description=''):
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.value = None
|
||||
self.hidden = True
|
||||
self.setFlags(self.flags() | QgsProcessingParameterDefinition.FlagHidden)
|
||||
|
||||
def setValue(self, value):
|
||||
try:
|
||||
|
@ -42,7 +42,8 @@ from qgis.PyQt.QtCore import QCoreApplication
|
||||
from qgis.core import (QgsRasterLayer, QgsVectorLayer, QgsMapLayer, QgsCoordinateReferenceSystem,
|
||||
QgsExpressionContext, QgsExpressionContextUtils, QgsExpression, QgsExpressionContextScope,
|
||||
QgsProject,
|
||||
QgsVectorFileWriter)
|
||||
QgsVectorFileWriter,
|
||||
QgsProcessingParameterDefinition)
|
||||
|
||||
from processing.tools.vector import resolveFieldIndex
|
||||
from processing.tools import dataobjects
|
||||
@ -108,27 +109,10 @@ class Parameter(object):
|
||||
take as input.
|
||||
"""
|
||||
|
||||
default_metadata = {}
|
||||
|
||||
def __init__(self, name='', description='', default=None, optional=False,
|
||||
metadata={}):
|
||||
self.name = name
|
||||
self.description = description
|
||||
self.default = default
|
||||
self.value = default
|
||||
|
||||
self.isAdvanced = False
|
||||
|
||||
# A hidden parameter can be used to set a hard-coded value.
|
||||
# It can be used as any other parameter, but it will not be
|
||||
# shown to the user
|
||||
self.hidden = False
|
||||
|
||||
self.optional = parseBool(optional)
|
||||
|
||||
self.metadata = deepcopy(self.default_metadata)
|
||||
self.metadata.update(deepcopy(metadata))
|
||||
|
||||
def setValue(self, obj):
|
||||
"""
|
||||
Sets the value of the parameter.
|
||||
@ -137,7 +121,7 @@ class Parameter(object):
|
||||
of parameter.
|
||||
"""
|
||||
if obj is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -145,17 +129,8 @@ class Parameter(object):
|
||||
self.value = str(obj)
|
||||
return True
|
||||
|
||||
def setDefaultValue(self):
|
||||
"""
|
||||
Sets the value of the parameter to the default one
|
||||
|
||||
Returns true if the default value is correct for the type
|
||||
of parameter.
|
||||
"""
|
||||
return self.setValue(self.default)
|
||||
|
||||
def __str__(self):
|
||||
return u'{} <{}>'.format(self.name, self.__class__.__name__)
|
||||
return u'{} <{}>'.format(self.name(), self.__class__.__name__)
|
||||
|
||||
def getValueAsCommandLineParameter(self):
|
||||
"""
|
||||
@ -165,9 +140,6 @@ class Parameter(object):
|
||||
"""
|
||||
return str(self.value)
|
||||
|
||||
def typeName(self):
|
||||
return self.__class__.__name__.replace('Parameter', '').lower()
|
||||
|
||||
def todict(self):
|
||||
o = deepcopy(self.__dict__)
|
||||
del o['metadata']
|
||||
@ -178,24 +150,6 @@ class Parameter(object):
|
||||
context = 'Parameter'
|
||||
return QCoreApplication.translate(context, string)
|
||||
|
||||
def wrapper(self, dialog, row=0, col=0):
|
||||
wrapper = self.metadata.get('widget_wrapper', None)
|
||||
params = {}
|
||||
# wrapper metadata should be a dict with class key
|
||||
if isinstance(wrapper, dict):
|
||||
params = deepcopy(wrapper)
|
||||
wrapper = params.pop('class')
|
||||
# wrapper metadata should be a class path
|
||||
if isinstance(wrapper, str):
|
||||
tokens = wrapper.split('.')
|
||||
mod = __import__('.'.join(tokens[:-1]), fromlist=[tokens[-1]])
|
||||
wrapper = getattr(mod, tokens[-1])
|
||||
# or directly a class object
|
||||
if isclass(wrapper):
|
||||
wrapper = wrapper(self, dialog, row, col, **params)
|
||||
# or a wrapper instance
|
||||
return wrapper
|
||||
|
||||
def evaluate(self, alg):
|
||||
pass
|
||||
|
||||
@ -214,7 +168,7 @@ class ParameterBoolean(Parameter):
|
||||
|
||||
def setValue(self, value):
|
||||
if value is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -227,10 +181,10 @@ class ParameterBoolean(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'boolean '
|
||||
return '##' + self.name + '=' + param_type + str(self.default)
|
||||
return '##' + self.name() + '=' + param_type + str(self.defaultValue())
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -245,6 +199,7 @@ class ParameterBoolean(Parameter):
|
||||
else:
|
||||
param = ParameterBoolean(name, descName)
|
||||
param.optional = isOptional
|
||||
param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagOptional)
|
||||
return param
|
||||
|
||||
|
||||
@ -266,7 +221,7 @@ class ParameterCrs(Parameter):
|
||||
def setValue(self, value):
|
||||
context = dataobjects.createContext()
|
||||
if not bool(value):
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -297,10 +252,10 @@ class ParameterCrs(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'crs '
|
||||
return '##' + self.name + '=' + param_type + str(self.default)
|
||||
return '##' + self.name() + '=' + param_type + str(self.defaultValue())
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -346,7 +301,7 @@ class ParameterExtent(Parameter):
|
||||
def setValue(self, value):
|
||||
context = dataobjects.createContext()
|
||||
if not value:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -388,10 +343,10 @@ class ParameterExtent(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'extent'
|
||||
return '##' + self.name + '=' + param_type
|
||||
return '##' + self.name() + '=' + param_type
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -402,7 +357,7 @@ class ParameterExtent(Parameter):
|
||||
return ParameterExtent(name, descName, default, isOptional)
|
||||
|
||||
def evaluate(self, alg):
|
||||
if self.optional and not bool(self.value):
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional and not bool(self.value):
|
||||
self.value = self.getMinCoveringExtent(alg)
|
||||
|
||||
def getMinCoveringExtent(self, alg):
|
||||
@ -460,7 +415,7 @@ class ParameterPoint(Parameter):
|
||||
|
||||
def setValue(self, text):
|
||||
if text is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -481,10 +436,10 @@ class ParameterPoint(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'point'
|
||||
return '##' + self.name + '=' + param_type
|
||||
return '##' + self.name() + '=' + param_type
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -511,7 +466,7 @@ class ParameterFile(Parameter):
|
||||
|
||||
def setValue(self, obj):
|
||||
if obj is None or obj.strip() == '':
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None if obj is None else obj.strip()
|
||||
return True
|
||||
@ -521,21 +476,15 @@ class ParameterFile(Parameter):
|
||||
self.value = str(obj)
|
||||
return True
|
||||
|
||||
def typeName(self):
|
||||
if self.isFolder:
|
||||
return 'directory'
|
||||
else:
|
||||
return 'file'
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
if self.isFolder:
|
||||
param_type += 'folder'
|
||||
else:
|
||||
param_type += 'file'
|
||||
return '##' + self.name + '=' + param_type
|
||||
return '##' + self.name() + '=' + param_type
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -558,7 +507,7 @@ class ParameterFixedTable(Parameter):
|
||||
|
||||
def setValue(self, obj):
|
||||
if obj is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -584,10 +533,10 @@ class ParameterFixedTable(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'fixedtable'
|
||||
return '##' + self.name + '=' + param_type
|
||||
return '##' + self.name() + '=' + param_type
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -632,7 +581,7 @@ class ParameterMultipleInput(ParameterDataObject):
|
||||
self.minNumInputs = 0
|
||||
return True
|
||||
|
||||
if _minNumInputs < 1 and not self.optional:
|
||||
if _minNumInputs < 1 and not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
# don't allow to set negative or null number of inputs if parameter isn't optional
|
||||
return False
|
||||
|
||||
@ -651,14 +600,14 @@ class ParameterMultipleInput(ParameterDataObject):
|
||||
def setValue(self, obj):
|
||||
self.exported = None
|
||||
if obj is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
|
||||
if isinstance(obj, list):
|
||||
if len(obj) == 0:
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
self.value = None
|
||||
return True
|
||||
else:
|
||||
@ -779,7 +728,7 @@ class ParameterMultipleInput(ParameterDataObject):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
if self.datatype == dataobjects.TYPE_RASTER:
|
||||
param_type += 'multiple raster'
|
||||
@ -787,7 +736,7 @@ class ParameterMultipleInput(ParameterDataObject):
|
||||
param_type += 'multiple file'
|
||||
else:
|
||||
param_type += 'multiple vector'
|
||||
return '##' + self.name + '=' + param_type
|
||||
return '##' + self.name() + '=' + param_type
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -836,7 +785,7 @@ class ParameterNumber(Parameter):
|
||||
|
||||
def setValue(self, n):
|
||||
if n is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -870,10 +819,10 @@ class ParameterNumber(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'number'
|
||||
code = '##' + self.name + '=' + param_type
|
||||
code = '##' + self.name() + '=' + param_type
|
||||
if self.default:
|
||||
code += str(self.default)
|
||||
return code
|
||||
@ -929,7 +878,7 @@ class ParameterNumber(Parameter):
|
||||
variables = {}
|
||||
for param in model.parameters:
|
||||
if isinstance(param, ParameterNumber):
|
||||
variables["@" + param.name] = param.value
|
||||
variables["@" + param.name()] = param.value
|
||||
if isinstance(param, (ParameterRaster, ParameterVector)):
|
||||
variables.update(self._layerVariables(param))
|
||||
|
||||
@ -973,7 +922,7 @@ class ParameterRange(Parameter):
|
||||
|
||||
def setValue(self, text):
|
||||
if text is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -1036,7 +985,7 @@ class ParameterRaster(ParameterDataObject):
|
||||
def setValue(self, obj):
|
||||
self.exported = None
|
||||
if obj is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -1056,10 +1005,10 @@ class ParameterRaster(ParameterDataObject):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'raster'
|
||||
return '##' + self.name + '=' + param_type
|
||||
return '##' + self.name() + '=' + param_type
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -1107,11 +1056,11 @@ class ParameterSelection(Parameter):
|
||||
|
||||
self.value = None
|
||||
if default is not None:
|
||||
self.setValue(self.default)
|
||||
self.setValue(self.defaultValue())
|
||||
|
||||
def setValue(self, value):
|
||||
if value is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -1131,7 +1080,7 @@ class ParameterSelection(Parameter):
|
||||
if v not in self.values:
|
||||
return False
|
||||
values.append(v)
|
||||
if not self.optional and len(values) == 0:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional and len(values) == 0:
|
||||
return False
|
||||
self.value = values
|
||||
return True
|
||||
@ -1191,7 +1140,7 @@ class ParameterString(Parameter):
|
||||
|
||||
def setValue(self, obj):
|
||||
if not bool(obj):
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -1209,10 +1158,10 @@ class ParameterString(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'string '
|
||||
return '##' + self.name + '=' + param_type + repr(self.default)
|
||||
return '##' + self.name() + '=' + param_type + repr(self.defaultValue())
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -1264,7 +1213,7 @@ class ParameterExpression(Parameter):
|
||||
|
||||
def setValue(self, obj):
|
||||
if not bool(obj):
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -1282,10 +1231,10 @@ class ParameterExpression(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'expression '
|
||||
return '##' + self.name + '=' + param_type + str(self.default)
|
||||
return '##' + self.name() + '=' + param_type + str(self.defaultValue())
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -1314,7 +1263,7 @@ class ParameterTable(ParameterDataObject):
|
||||
def setValue(self, obj):
|
||||
self.exported = None
|
||||
if obj is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -1371,10 +1320,10 @@ class ParameterTable(ParameterDataObject):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'table'
|
||||
return '##' + self.name + '=' + param_type
|
||||
return '##' + self.name() + '=' + param_type
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -1411,7 +1360,7 @@ class ParameterTableField(Parameter):
|
||||
|
||||
def setValue(self, value):
|
||||
if not bool(value):
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -1426,7 +1375,7 @@ class ParameterTableField(Parameter):
|
||||
return True
|
||||
|
||||
def __str__(self):
|
||||
return self.name + ' <' + self.__module__.split('.')[-1] + ' from ' \
|
||||
return self.name() + ' <' + self.__module__.split('.')[-1] + ' from ' \
|
||||
+ self.parent + '>'
|
||||
|
||||
def dataType(self):
|
||||
@ -1441,10 +1390,10 @@ class ParameterTableField(Parameter):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'field'
|
||||
return '##' + self.name + '=' + param_type + str(self.parent)
|
||||
return '##' + self.name() + '=' + param_type + str(self.parent)
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -1487,7 +1436,7 @@ class ParameterVector(ParameterDataObject):
|
||||
def setValue(self, obj):
|
||||
self.exported = None
|
||||
if obj is None:
|
||||
if not self.optional:
|
||||
if not self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
return False
|
||||
self.value = None
|
||||
return True
|
||||
@ -1543,10 +1492,10 @@ class ParameterVector(ParameterDataObject):
|
||||
|
||||
def getAsScriptCode(self):
|
||||
param_type = ''
|
||||
if self.optional:
|
||||
if self.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
param_type += 'optional '
|
||||
param_type += 'vector'
|
||||
return '##' + self.name + '=' + param_type
|
||||
return '##' + self.name() + '=' + param_type
|
||||
|
||||
@classmethod
|
||||
def fromScriptCode(self, line):
|
||||
@ -1581,7 +1530,8 @@ def getParameterFromString(s):
|
||||
try:
|
||||
clazz = getattr(sys.modules[__name__], tokens[0])
|
||||
param = clazz(*params)
|
||||
param.isAdvanced = isAdvanced
|
||||
if isAdvanced:
|
||||
param.setFlags(param.flags() | QgsProcessingParameterDefinition.FlagAdvanced)
|
||||
return param
|
||||
except:
|
||||
return None
|
||||
|
@ -130,7 +130,7 @@ class AlgorithmDialog(AlgorithmDialogBase):
|
||||
context = dataobjects.createContext()
|
||||
projectCRS = iface.mapCanvas().mapSettings().destinationCrs()
|
||||
layers = QgsProcessingUtils.compatibleLayers(QgsProject.instance())
|
||||
for param in self.alg.parameters:
|
||||
for param in self.alg.parameterDefinitions():
|
||||
if isinstance(param, (ParameterRaster, ParameterVector, ParameterMultipleInput)):
|
||||
if param.value:
|
||||
if isinstance(param, ParameterMultipleInput):
|
||||
@ -151,7 +151,7 @@ class AlgorithmDialog(AlgorithmDialogBase):
|
||||
if param.skip_crs_check:
|
||||
continue
|
||||
|
||||
value = self.mainWidget.wrappers[param.name].widget.leText.text().strip()
|
||||
value = self.mainWidget.wrappers[param.name()].widget.leText.text().strip()
|
||||
if value:
|
||||
hasExtent = True
|
||||
|
||||
|
@ -47,8 +47,8 @@ class AutofillDialog(BASE, WIDGET):
|
||||
|
||||
self.cmbFillType.currentIndexChanged.connect(self.toggleParameters)
|
||||
|
||||
for param in alg.parameters:
|
||||
self.cmbParameters.addItem(param.description)
|
||||
for param in alg.parameterDefinitions():
|
||||
self.cmbParameters.addItem(param.description())
|
||||
|
||||
def toggleParameters(self, index):
|
||||
if index == self.FILL_WITH_PARAMETER:
|
||||
|
@ -91,7 +91,7 @@ class BatchAlgorithmDialog(AlgorithmDialogBase):
|
||||
return
|
||||
col += 1
|
||||
for out in alg.destinationParameterDefinitions():
|
||||
if out.hidden:
|
||||
if out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
|
||||
widget = self.mainWidget.tblParameters.cellWidget(row, col)
|
||||
@ -101,7 +101,7 @@ class BatchAlgorithmDialog(AlgorithmDialogBase):
|
||||
col += 1
|
||||
else:
|
||||
self.bar.pushMessage("", self.tr('Wrong or missing output value: {0} (row {1})').format(
|
||||
out.description, row + 1),
|
||||
out.description(), row + 1),
|
||||
level=QgsMessageBar.WARNING, duration=5)
|
||||
self.algs = None
|
||||
return
|
||||
@ -150,12 +150,12 @@ class BatchAlgorithmDialog(AlgorithmDialogBase):
|
||||
|
||||
def loadHTMLResults(self, alg, num):
|
||||
for out in alg.outputs:
|
||||
if out.hidden or not out.open:
|
||||
if out.flags() & QgsProcessingParameterDefinition.FlagHidden or not out.open:
|
||||
continue
|
||||
|
||||
if isinstance(out, OutputHTML):
|
||||
ProcessingResults.addResult(
|
||||
'{} [{}]'.format(out.description, num), out.value)
|
||||
'{} [{}]'.format(out.description(), num), out.value)
|
||||
|
||||
def createSummaryTable(self):
|
||||
createTable = False
|
||||
@ -174,7 +174,7 @@ class BatchAlgorithmDialog(AlgorithmDialogBase):
|
||||
f.write('<hr>\n')
|
||||
for out in alg.outputs:
|
||||
if isinstance(out, (OutputNumber, OutputString)):
|
||||
f.write('<p>{}: {}</p>\n'.format(out.description, out.value))
|
||||
f.write('<p>{}: {}</p>\n'.format(out.description(), out.value))
|
||||
f.write('<hr>\n')
|
||||
|
||||
ProcessingResults.addResult(
|
||||
|
@ -35,6 +35,7 @@ from qgis.PyQt.QtWidgets import QTableWidgetItem, QComboBox, QHeaderView, QFileD
|
||||
from qgis.core import (QgsApplication,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.gui import QgsMessageBar
|
||||
from processing.gui.wrappers import WidgetWrapperFactory
|
||||
|
||||
from processing.gui.BatchOutputSelectionPanel import BatchOutputSelectionPanel
|
||||
|
||||
@ -94,7 +95,7 @@ class BatchPanel(BASE, WIDGET):
|
||||
def initWidgets(self):
|
||||
# If there are advanced parameters — show corresponding button
|
||||
for param in self.alg.parameters:
|
||||
if param.isAdvanced:
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagAdvanced:
|
||||
self.btnAdvanced.show()
|
||||
break
|
||||
|
||||
@ -112,15 +113,15 @@ class BatchPanel(BASE, WIDGET):
|
||||
if param.isDestination():
|
||||
continue
|
||||
self.tblParameters.setHorizontalHeaderItem(
|
||||
column, QTableWidgetItem(param.description))
|
||||
if param.isAdvanced:
|
||||
column, QTableWidgetItem(param.description()))
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagAdvanced:
|
||||
self.tblParameters.setColumnHidden(column, True)
|
||||
column += 1
|
||||
|
||||
for out in self.alg.destinationParameterDefinitions():
|
||||
if not out.hidden:
|
||||
if not out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
self.tblParameters.setHorizontalHeaderItem(
|
||||
column, QTableWidgetItem(out.description))
|
||||
column, QTableWidgetItem(out.description()))
|
||||
column += 1
|
||||
|
||||
# Last column for indicating if output will be added to canvas
|
||||
@ -157,20 +158,20 @@ class BatchPanel(BASE, WIDGET):
|
||||
params = alg[self.PARAMETERS]
|
||||
outputs = alg[self.OUTPUTS]
|
||||
column = 0
|
||||
for param in self.alg.parameters:
|
||||
if param.hidden:
|
||||
for param in self.alg.parameterDefinitions():
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
if param.name in params:
|
||||
value = params[param.name].strip('"')
|
||||
if param.name() in params:
|
||||
value = params[param.name()].strip('"')
|
||||
wrapper = self.wrappers[row][column]
|
||||
wrapper.setValue(value)
|
||||
column += 1
|
||||
|
||||
for out in self.alg.outputs:
|
||||
if out.hidden:
|
||||
if out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
if out.name in outputs:
|
||||
value = outputs[out.name].strip('"')
|
||||
if out.name() in outputs:
|
||||
value = outputs[out.name()].strip('"')
|
||||
widget = self.tblParameters.cellWidget(row, column)
|
||||
widget.setValue(value)
|
||||
column += 1
|
||||
@ -200,7 +201,7 @@ class BatchPanel(BASE, WIDGET):
|
||||
algParams[param.name()] = param.getValueAsCommandLineParameter()
|
||||
col += 1
|
||||
for out in alg.outputs:
|
||||
if out.hidden:
|
||||
if out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
widget = self.tblParameters.cellWidget(row, col)
|
||||
text = widget.getValue()
|
||||
@ -209,7 +210,7 @@ class BatchPanel(BASE, WIDGET):
|
||||
col += 1
|
||||
else:
|
||||
self.parent.bar.pushMessage("", self.tr('Wrong or missing output value: {0} (row {1})').format(
|
||||
out.description, row + 1),
|
||||
out.description(), row + 1),
|
||||
level=QgsMessageBar.WARNING, duration=5)
|
||||
return
|
||||
toSave.append({self.PARAMETERS: algParams, self.OUTPUTS: algOutputs})
|
||||
@ -236,16 +237,16 @@ class BatchPanel(BASE, WIDGET):
|
||||
row = self.tblParameters.rowCount() - 1
|
||||
column = 0
|
||||
for param in self.alg.parameterDefinitions():
|
||||
if param.hidden or param.isDestination():
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagHidden or param.isDestination():
|
||||
continue
|
||||
|
||||
wrapper = param.wrapper(self.parent, row, column)
|
||||
wrappers[param.name] = wrapper
|
||||
wrapper = WidgetWrapperFactory.create_wrapper(param, self.parent, row, column)
|
||||
wrappers[param.name()] = wrapper
|
||||
self.setCellWrapper(row, column, wrapper)
|
||||
column += 1
|
||||
|
||||
for out in self.alg.destinationParameterDefinitions():
|
||||
if out.hidden:
|
||||
if out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
|
||||
self.tblParameters.setCellWidget(
|
||||
@ -275,5 +276,5 @@ class BatchPanel(BASE, WIDGET):
|
||||
|
||||
def toggleAdvancedMode(self, checked):
|
||||
for column, param in enumerate(self.alg.parameters):
|
||||
if param.isAdvanced:
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagAdvanced:
|
||||
self.tblParameters.setColumnHidden(column, not checked)
|
||||
|
@ -32,6 +32,8 @@ from qgis.PyQt import uic
|
||||
from qgis.PyQt.QtCore import Qt
|
||||
from qgis.PyQt.QtWidgets import QDialog, QHeaderView, QTableWidgetItem
|
||||
|
||||
from qgis.core import QgsProcessingParameterDefinition
|
||||
|
||||
from processing.gui.RenderingStyles import RenderingStyles
|
||||
from processing.gui.RenderingStyleFilePanel import RenderingStyleFilePanel
|
||||
from processing.core.outputs import OutputRaster
|
||||
@ -61,25 +63,25 @@ class EditRenderingStylesDialog(BASE, WIDGET):
|
||||
numOutputs = 0
|
||||
for output in self.alg.outputs:
|
||||
if isinstance(output, (OutputVector, OutputRaster)):
|
||||
if not output.hidden:
|
||||
if not output.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
numOutputs += 1
|
||||
self.tblStyles.setRowCount(numOutputs)
|
||||
|
||||
i = 0
|
||||
for output in self.alg.outputs:
|
||||
if isinstance(output, (OutputVector, OutputRaster)):
|
||||
if not output.hidden:
|
||||
item = QTableWidgetItem(output.description + '<' +
|
||||
if not output.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
item = QTableWidgetItem(output.description() + '<' +
|
||||
output.__class__.__name__ + '>')
|
||||
item.setFlags(Qt.ItemIsEnabled)
|
||||
self.tblStyles.setItem(i, 0, item)
|
||||
item = RenderingStyleFilePanel()
|
||||
style = \
|
||||
RenderingStyles.getStyle(self.alg.id(),
|
||||
output.name)
|
||||
output.name())
|
||||
if style:
|
||||
item.setText(str(style))
|
||||
self.valueItems[output.name] = item
|
||||
self.valueItems[output.name()] = item
|
||||
self.tblStyles.setCellWidget(i, 1, item)
|
||||
self.tblStyles.setRowHeight(i, 22)
|
||||
i += 1
|
||||
|
@ -35,6 +35,7 @@ from qgis.PyQt.QtGui import QCursor
|
||||
from qgis.gui import QgsMessageBar
|
||||
from qgis.utils import iface
|
||||
from qgis.core import (QgsProcessingUtils,
|
||||
QgsProcessingParameterDefinition,
|
||||
QgsProject)
|
||||
from processing.gui.RectangleMapTool import RectangleMapTool
|
||||
from processing.core.ProcessingConfig import ProcessingConfig
|
||||
@ -52,7 +53,7 @@ class ExtentSelectionPanel(BASE, WIDGET):
|
||||
|
||||
self.dialog = dialog
|
||||
self.param = param
|
||||
if self.param.optional:
|
||||
if self.param.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
if hasattr(self.leText, 'setPlaceholderText'):
|
||||
self.leText.setPlaceholderText(
|
||||
self.tr('[Leave blank to use min covering extent]'))
|
||||
@ -89,7 +90,7 @@ class ExtentSelectionPanel(BASE, WIDGET):
|
||||
selectOnCanvasAction.triggered.connect(self.selectOnCanvas)
|
||||
useLayerExtentAction.triggered.connect(self.useLayerExtent)
|
||||
|
||||
if self.param.optional:
|
||||
if self.param.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
useMincoveringExtentAction = QAction(
|
||||
self.tr('Use min covering extent from input layers'),
|
||||
self.btnSelect)
|
||||
|
@ -72,13 +72,13 @@ def getHtmlFromDescriptionsDict(alg, descriptions):
|
||||
s = tr('<html><body><h2>Algorithm description</h2>\n')
|
||||
s += '<p>' + getDescription(ALG_DESC, descriptions) + '</p>\n'
|
||||
s += tr('<h2>Input parameters</h2>\n')
|
||||
for param in alg.parameters:
|
||||
s += '<h3>' + param.description + '</h3>\n'
|
||||
s += '<p>' + getDescription(param.name, descriptions) + '</p>\n'
|
||||
for param in alg.parameterDefinitions():
|
||||
s += '<h3>' + param.description() + '</h3>\n'
|
||||
s += '<p>' + getDescription(param.name(), descriptions) + '</p>\n'
|
||||
s += tr('<h2>Outputs</h2>\n')
|
||||
for out in alg.outputs:
|
||||
s += '<h3>' + out.description + '</h3>\n'
|
||||
s += '<p>' + getDescription(out.name, descriptions) + '</p>\n'
|
||||
s += '<h3>' + out.description() + '</h3>\n'
|
||||
s += '<p>' + getDescription(out.name(), descriptions) + '</p>\n'
|
||||
s += '<br>'
|
||||
s += tr('<p align="right">Algorithm author: {0}</p>').format(getDescription(ALG_CREATOR, descriptions))
|
||||
s += tr('<p align="right">Help author: {0}</p>').format(getDescription(ALG_HELP_CREATOR, descriptions))
|
||||
|
@ -86,13 +86,13 @@ class HelpEditionDialog(BASE, WIDGET):
|
||||
s = self.tr('<h2>Algorithm description</h2>\n')
|
||||
s += '<p>' + self.getDescription(self.ALG_DESC) + '</p>\n'
|
||||
s += self.tr('<h2>Input parameters</h2>\n')
|
||||
for param in self.alg.parameters:
|
||||
s += '<h3>' + param.description + '</h3>\n'
|
||||
s += '<p>' + self.getDescription(param.name) + '</p>\n'
|
||||
for param in self.alg.parameterDefinitions():
|
||||
s += '<h3>' + param.description() + '</h3>\n'
|
||||
s += '<p>' + self.getDescription(param.name()) + '</p>\n'
|
||||
s += self.tr('<h2>Outputs</h2>\n')
|
||||
for out in self.alg.outputs:
|
||||
s += '<h3>' + out.description + '</h3>\n'
|
||||
s += '<p>' + self.getDescription(out.name) + '</p>\n'
|
||||
s += '<h3>' + out.description() + '</h3>\n'
|
||||
s += '<p>' + self.getDescription(out.name()) + '</p>\n'
|
||||
return s
|
||||
|
||||
def fillTree(self):
|
||||
@ -100,13 +100,13 @@ class HelpEditionDialog(BASE, WIDGET):
|
||||
self.tree.addTopLevelItem(item)
|
||||
parametersItem = TreeDescriptionItem(self.tr('Input parameters'), None)
|
||||
self.tree.addTopLevelItem(parametersItem)
|
||||
for param in self.alg.parameters:
|
||||
item = TreeDescriptionItem(param.description, param.name)
|
||||
for param in self.alg.parameterDefinitions():
|
||||
item = TreeDescriptionItem(param.description(), param.name())
|
||||
parametersItem.addChild(item)
|
||||
outputsItem = TreeDescriptionItem(self.tr('Outputs'), None)
|
||||
self.tree.addTopLevelItem(outputsItem)
|
||||
for out in self.alg.outputs:
|
||||
item = TreeDescriptionItem(out.description, out.name)
|
||||
item = TreeDescriptionItem(out.description(), out.name())
|
||||
outputsItem.addChild(item)
|
||||
item = TreeDescriptionItem(self.tr('Algorithm created by'), self.ALG_CREATOR)
|
||||
self.tree.addTopLevelItem(item)
|
||||
|
@ -85,7 +85,7 @@ class ModellerNumberInputPanel(BASE, WIDGET):
|
||||
name = "%s_%s" % (value.alg, value.output)
|
||||
alg = self.modelParametersDialog.model.algs[value.alg]
|
||||
out = alg.algorithm.getOutputFromName(value.output)
|
||||
desc = self.tr("Output '{0}' from algorithm '{1}'").format(out.description, alg.description)
|
||||
desc = self.tr("Output '{0}' from algorithm '{1}'").format(out.description(), alg.description)
|
||||
variables[name] = desc
|
||||
values = self.modelParametersDialog.getAvailableValuesOfType(ParameterVector, OutputVector)
|
||||
values.extend(self.modelParametersDialog.getAvailableValuesOfType(ParameterRaster, OutputRaster))
|
||||
@ -98,7 +98,7 @@ class ModellerNumberInputPanel(BASE, WIDGET):
|
||||
name = "%s_%s" % (value.alg, value.output)
|
||||
alg = self.modelParametersDialog.model.algs[value.alg]
|
||||
element = alg.algorithm.getOutputFromName(value.output)
|
||||
desc = self.tr("Output '{0}' from algorithm '{1}'").format(element.description, alg.description)
|
||||
desc = self.tr("Output '{0}' from algorithm '{1}'").format(element.description(), alg.description)
|
||||
variables['%s_minx' % name] = self.tr("Minimum X of {0}").format(desc)
|
||||
variables['%s_miny' % name] = self.tr("Minimum Y of {0}").format(desc)
|
||||
variables['%s_maxx' % name] = self.tr("Maximum X of {0}").format(desc)
|
||||
@ -122,8 +122,8 @@ class ModellerNumberInputPanel(BASE, WIDGET):
|
||||
values = []
|
||||
for param in self.modelParametersDialog.model.parameters:
|
||||
if isinstance(param, ParameterNumber):
|
||||
if "@" + param.name in value:
|
||||
values.append(ValueFromInput(param.name))
|
||||
if "@" + param.name() in value:
|
||||
values.append(ValueFromInput(param.name()))
|
||||
for alg in list(self.modelParametersDialog.model.algs.values()):
|
||||
for out in alg.algorithm.outputs:
|
||||
if isinstance(out, OutputNumber) and "@%s_%s" % (alg.name(), out.name) in value:
|
||||
|
@ -57,28 +57,28 @@ def handleAlgorithmResults(alg, context, feedback=None, showResults=True):
|
||||
i = 0
|
||||
#for out in alg.outputs:
|
||||
# feedback.setProgress(100 * i / float(len(alg.outputs)))
|
||||
# if out.hidden or not out.open:
|
||||
# if out.flags() & QgsProcessingParameterDefinition.FlagHidden or not out.open:
|
||||
# continue
|
||||
# if isinstance(out, (OutputRaster, OutputVector, OutputTable)):
|
||||
# try:
|
||||
# layer = QgsProcessingUtils.mapLayerFromString(out.value, context)
|
||||
# if layer:
|
||||
# layer.setName(out.description)
|
||||
# layer.setName(out.description())
|
||||
# QgsProject.instance().addMapLayer(context.temporaryLayerStore().takeMapLayer(layer))
|
||||
# else:
|
||||
# if ProcessingConfig.getSetting(
|
||||
# ProcessingConfig.USE_FILENAME_AS_LAYER_NAME):
|
||||
# name = os.path.basename(out.value)
|
||||
# else:
|
||||
# name = out.description
|
||||
# name = out.description()
|
||||
# dataobjects.load(out.value, name, alg.crs,
|
||||
# RenderingStyles.getStyle(alg.id(),
|
||||
# out.name))
|
||||
# except Exception:
|
||||
# QgsMessageLog.logMessage("Error loading result layer:\n" + traceback.format_exc(), 'Processing', QgsMessageLog.CRITICAL)
|
||||
# wrongLayers.append(out.description)
|
||||
# wrongLayers.append(out.description())
|
||||
# elif isinstance(out, OutputHTML):
|
||||
# resultsList.addResult(alg.icon(), out.description, out.value)
|
||||
# resultsList.addResult(alg.icon(), out.description(), out.value)
|
||||
# i += 1
|
||||
i = 0
|
||||
for l in context.layersToLoadOnCompletion():
|
||||
@ -87,7 +87,7 @@ def handleAlgorithmResults(alg, context, feedback=None, showResults=True):
|
||||
layer = QgsProcessingUtils.mapLayerFromString(l, context)
|
||||
if layer:
|
||||
#TODO
|
||||
#layer.setName(out.description)
|
||||
#layer.setName(out.description())
|
||||
QgsProject.instance().addMapLayer(context.temporaryLayerStore().takeMapLayer(layer))
|
||||
else:
|
||||
if ProcessingConfig.getSetting(
|
||||
@ -101,7 +101,7 @@ def handleAlgorithmResults(alg, context, feedback=None, showResults=True):
|
||||
#out.name))
|
||||
except Exception:
|
||||
QgsMessageLog.logMessage("Error loading result layer:\n" + traceback.format_exc(), 'Processing', QgsMessageLog.CRITICAL)
|
||||
#wrongLayers.append(out.description)
|
||||
#wrongLayers.append(out.description())
|
||||
wrongLayers.append(l)
|
||||
for out in alg.outputs:
|
||||
feedback.setProgress(100 * i / float(len(alg.outputs)))
|
||||
|
@ -36,7 +36,8 @@ from osgeo.gdalconst import GA_ReadOnly
|
||||
|
||||
from numpy import nan_to_num
|
||||
|
||||
from qgis.core import QgsApplication
|
||||
from qgis.core import (QgsApplication,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.PyQt.QtCore import QCoreApplication, QMetaObject
|
||||
from qgis.PyQt.QtWidgets import QDialog, QVBoxLayout, QTextEdit, QMessageBox
|
||||
|
||||
@ -146,13 +147,13 @@ def createTest(text):
|
||||
|
||||
i = 0
|
||||
for param in alg.parameterDefinitions():
|
||||
if param.hidden or param.isDestination():
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagHidden or param.isDestination():
|
||||
continue
|
||||
|
||||
i += 1
|
||||
token = tokens[i]
|
||||
# Handle empty parameters that are optionals
|
||||
if param.optional and token is None:
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagOptional and token is None:
|
||||
continue
|
||||
|
||||
if isinstance(param, ParameterVector):
|
||||
@ -164,7 +165,7 @@ def createTest(text):
|
||||
if not schema:
|
||||
p['location'] = '[The source data is not in the testdata directory. Please use data in the processing/tests/testdata folder.]'
|
||||
|
||||
params[param.name] = p
|
||||
params[param.name()] = p
|
||||
elif isinstance(param, ParameterRaster):
|
||||
schema, filepath = extractSchemaPath(token)
|
||||
p = {
|
||||
@ -174,7 +175,7 @@ def createTest(text):
|
||||
if not schema:
|
||||
p['location'] = '[The source data is not in the testdata directory. Please use data in the processing/tests/testdata folder.]'
|
||||
|
||||
params[param.name] = p
|
||||
params[param.name()] = p
|
||||
elif isinstance(param, ParameterTable):
|
||||
schema, filepath = extractSchemaPath(token)
|
||||
p = {
|
||||
@ -184,7 +185,7 @@ def createTest(text):
|
||||
if not schema:
|
||||
p['location'] = '[The source data is not in the testdata directory. Please use data in the processing/tests/testdata folder.]'
|
||||
|
||||
params[param.name] = p
|
||||
params[param.name()] = p
|
||||
elif isinstance(param, ParameterMultipleInput):
|
||||
multiparams = token.split(';')
|
||||
newparam = []
|
||||
@ -209,7 +210,7 @@ def createTest(text):
|
||||
if not schema:
|
||||
p['location'] = '[The source data is not in the testdata directory. Please use data in the processing/tests/testdata folder.]'
|
||||
|
||||
params[param.name] = p
|
||||
params[param.name()] = p
|
||||
elif isinstance(param, ParameterFile):
|
||||
schema, filepath = extractSchemaPath(token)
|
||||
p = {
|
||||
@ -219,16 +220,16 @@ def createTest(text):
|
||||
if not schema:
|
||||
p['location'] = '[The source data is not in the testdata directory. Please use data in the processing/tests/testdata folder.]'
|
||||
|
||||
params[param.name] = p
|
||||
params[param.name()] = p
|
||||
elif isinstance(param, ParameterString):
|
||||
params[param.name] = token
|
||||
params[param.name()] = token
|
||||
elif isinstance(param, ParameterBoolean):
|
||||
params[param.name] = token
|
||||
params[param.name()] = token
|
||||
elif isinstance(param, ParameterNumber):
|
||||
if param.isInteger:
|
||||
params[param.name] = int(token)
|
||||
params[param.name()] = int(token)
|
||||
else:
|
||||
params[param.name] = float(token)
|
||||
params[param.name()] = float(token)
|
||||
else:
|
||||
if token[0] == '"':
|
||||
token = token[1:]
|
||||
@ -238,7 +239,7 @@ def createTest(text):
|
||||
|
||||
definition['params'] = params
|
||||
|
||||
for i, out in enumerate([out for out in alg.destinationParameterDefinitions() if not out.hidden]):
|
||||
for i, out in enumerate([out for out in alg.destinationParameterDefinitions() if not out.flags() & QgsProcessingParameterDefinition.FlagHiddenn]):
|
||||
token = tokens[i - len(alg.destinationParameterDefinitions())]
|
||||
|
||||
if isinstance(out, (OutputNumber, OutputString)):
|
||||
|
@ -35,7 +35,8 @@ import json
|
||||
from qgis.PyQt.QtCore import QPointF
|
||||
from operator import attrgetter
|
||||
|
||||
from qgis.core import QgsApplication
|
||||
from qgis.core import (QgsApplication,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.gui import QgsMessageBar
|
||||
from qgis.utils import iface
|
||||
from processing.core.GeoAlgorithm import GeoAlgorithm
|
||||
@ -147,9 +148,9 @@ class Algorithm(object):
|
||||
return str(value)
|
||||
params.append(_toString(value))
|
||||
for out in self.algorithm.outputs:
|
||||
if not out.hidden:
|
||||
if out.name in self.outputs:
|
||||
params.append(safeName(self.outputs[out.name].description).lower())
|
||||
if not out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
if out.name() in self.outputs:
|
||||
params.append(safeName(self.outputs[out.name()].description()).lower())
|
||||
else:
|
||||
params.append(str(None))
|
||||
s.append("outputs_%s=processing.run('%s', %s)" % (self.name, self.consoleName, ",".join(params)))
|
||||
@ -258,7 +259,7 @@ class ModelerAlgorithm(GeoAlgorithm):
|
||||
for out in alg.outputs:
|
||||
modelOutput = copy.deepcopy(alg.algorithm.getOutputFromName(out))
|
||||
modelOutput.name = self.getSafeNameForOutput(alg.modeler_name, out)
|
||||
modelOutput.description = alg.outputs[out].description
|
||||
modelOutput.description = alg.outputs[out].description()
|
||||
self.outputs.append(modelOutput)
|
||||
self.outputs.sort(key=attrgetter("description"))
|
||||
|
||||
@ -411,30 +412,30 @@ class ModelerAlgorithm(GeoAlgorithm):
|
||||
|
||||
def prepareAlgorithm(self, alg):
|
||||
algInstance = alg.algorithm
|
||||
for param in algInstance.parameters:
|
||||
if not param.hidden:
|
||||
if param.name in alg.params:
|
||||
value = self.resolveValue(alg.params[param.name], param)
|
||||
for param in algInstance.parameterDefinitions():
|
||||
if not param.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
if param.name() in alg.params:
|
||||
value = self.resolveValue(alg.params[param.name()], param)
|
||||
else:
|
||||
if iface is not None:
|
||||
iface.messageBar().pushMessage(self.tr("Warning"),
|
||||
self.tr("Parameter {0} in algorithm {1} in the model is run with default value! Edit the model to make sure that this is correct.").format(param.name, alg.displayName()),
|
||||
self.tr("Parameter {0} in algorithm {1} in the model is run with default value! Edit the model to make sure that this is correct.").format(param.name(), alg.displayName()),
|
||||
QgsMessageBar.WARNING, 4)
|
||||
value = param.default
|
||||
value = param.defaultValue()
|
||||
# We allow unexistent filepaths, since that allows
|
||||
# algorithms to skip some conversion routines
|
||||
if not param.setValue(value) and not isinstance(param,
|
||||
ParameterDataObject):
|
||||
raise GeoAlgorithmExecutionException(
|
||||
self.tr('Wrong value {0} for {1} {2}', 'ModelerAlgorithm').format(
|
||||
value, param.__class__.__name__, param.name
|
||||
value, param.__class__.__name__, param.name()
|
||||
)
|
||||
)
|
||||
|
||||
for out in algInstance.outputs:
|
||||
if not out.hidden:
|
||||
if out.name in alg.outputs:
|
||||
name = self.getSafeNameForOutput(alg.modeler_name, out.name)
|
||||
if not out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
if out.name() in alg.outputs:
|
||||
name = self.getSafeNameForOutput(alg.modeler_name, out.name())
|
||||
modelOut = self.getOutputFromName(name)
|
||||
if modelOut:
|
||||
out.value = modelOut.value
|
||||
@ -501,9 +502,9 @@ class ModelerAlgorithm(GeoAlgorithm):
|
||||
|
||||
# copy algorithm output value(s) back to model in case the algorithm modified those
|
||||
for out in alg.algorithm.outputs:
|
||||
if not out.hidden:
|
||||
if out.name in alg.outputs:
|
||||
modelOut = self.getOutputFromName(self.getSafeNameForOutput(alg.modeler_name, out.name))
|
||||
if not out.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
if out.name() in alg.outputs:
|
||||
modelOut = self.getOutputFromName(self.getSafeNameForOutput(alg.modeler_name, out.name()))
|
||||
if modelOut:
|
||||
modelOut.value = out.value
|
||||
|
||||
@ -636,7 +637,7 @@ class ModelerAlgorithm(GeoAlgorithm):
|
||||
s.append(param.param.getAsScriptCode())
|
||||
for alg in list(self.algs.values()):
|
||||
for name, out in list(alg.outputs.items()):
|
||||
s.append('##%s=%s' % (safeName(out.description).lower(), alg.getOutputType(name)))
|
||||
s.append('##%s=%s' % (safeName(out.description()).lower(), alg.getOutputType(name)))
|
||||
|
||||
executed = []
|
||||
toExecute = [alg for alg in list(self.algs.values()) if alg.active]
|
||||
|
@ -33,6 +33,7 @@ from qgis.PyQt.QtCore import Qt, QPointF, QRectF
|
||||
from qgis.PyQt.QtGui import QFont, QFontMetricsF, QPen, QBrush, QColor, QPolygonF, QPicture, QPainter
|
||||
from qgis.PyQt.QtWidgets import QGraphicsItem, QMessageBox, QMenu
|
||||
from qgis.PyQt.QtSvg import QSvgRenderer
|
||||
from qgis.core import QgsProcessingParameterDefinition
|
||||
from processing.modeler.ModelerAlgorithm import ModelerParameter, Algorithm, ModelerOutput
|
||||
from processing.modeler.ModelerParameterDefinitionDialog import ModelerParameterDefinitionDialog
|
||||
from processing.modeler.ModelerParametersDialog import ModelerParametersDialog
|
||||
@ -278,9 +279,9 @@ class ModelerGraphicItem(QGraphicsItem):
|
||||
painter.drawText(pt, 'In')
|
||||
i = 1
|
||||
if not self.element.paramsFolded:
|
||||
for param in self.element.algorithm.parameters:
|
||||
if not param.hidden:
|
||||
text = self.getAdjustedText(param.description)
|
||||
for param in self.element.algorithm.parameterDefinitions():
|
||||
if not param.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
text = self.getAdjustedText(param.description())
|
||||
h = -(fm.height() * 1.2) * (i + 1)
|
||||
h = h - ModelerGraphicItem.BOX_HEIGHT / 2.0 + 5
|
||||
pt = QPointF(-ModelerGraphicItem.BOX_WIDTH / 2 + 33, h)
|
||||
@ -292,7 +293,7 @@ class ModelerGraphicItem(QGraphicsItem):
|
||||
painter.drawText(pt, 'Out')
|
||||
if not self.element.outputsFolded:
|
||||
for i, out in enumerate(self.element.algorithm.outputs):
|
||||
text = self.getAdjustedText(out.description)
|
||||
text = self.getAdjustedText(out.description())
|
||||
h = fm.height() * 1.2 * (i + 2)
|
||||
h = h + ModelerGraphicItem.BOX_HEIGHT / 2.0
|
||||
pt = QPointF(-ModelerGraphicItem.BOX_WIDTH / 2 + 33, h)
|
||||
@ -322,7 +323,7 @@ class ModelerGraphicItem(QGraphicsItem):
|
||||
def getLinkPointForOutput(self, outputIndex):
|
||||
if isinstance(self.element, Algorithm) and self.element.algorithm.outputs:
|
||||
outputIndex = (outputIndex if not self.element.outputsFolded else -1)
|
||||
text = self.getAdjustedText(self.element.algorithm.outputs[outputIndex].description)
|
||||
text = self.getAdjustedText(self.element.algorithm.outputs[outputIndex].description())
|
||||
font = QFont('Verdana', 8)
|
||||
font.setPixelSize(12)
|
||||
fm = QFontMetricsF(font)
|
||||
|
@ -29,7 +29,8 @@ __revision__ = '$Format:%H$'
|
||||
import math
|
||||
|
||||
from qgis.gui import QgsExpressionLineEdit, QgsProjectionSelectionWidget
|
||||
from qgis.core import QgsCoordinateReferenceSystem
|
||||
from qgis.core import (QgsCoordinateReferenceSystem,
|
||||
QgsProcessingParameterDefinition)
|
||||
from qgis.PyQt.QtCore import Qt
|
||||
from qgis.PyQt.QtWidgets import (QDialog,
|
||||
QVBoxLayout,
|
||||
@ -108,8 +109,8 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
self.nameTextBox = QLineEdit()
|
||||
self.verticalLayout.addWidget(self.nameTextBox)
|
||||
|
||||
if isinstance(self.param, Parameter):
|
||||
self.nameTextBox.setText(self.param.description)
|
||||
if isinstance(self.param, QgsProcessingParameterDefinition):
|
||||
self.nameTextBox.setText(self.param.description())
|
||||
|
||||
if self.paramType == ModelerParameterDefinitionDialog.PARAMETER_BOOLEAN or \
|
||||
isinstance(self.param, ParameterBoolean):
|
||||
@ -126,9 +127,9 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
idx = 0
|
||||
for param in list(self.alg.inputs.values()):
|
||||
if isinstance(param.param, (ParameterVector, ParameterTable)):
|
||||
self.parentCombo.addItem(param.param.description, param.param.name)
|
||||
self.parentCombo.addItem(param.param.description(), param.param.name())
|
||||
if self.param is not None:
|
||||
if self.param.parent == param.param.name:
|
||||
if self.param.parent == param.param.name():
|
||||
self.parentCombo.setCurrentIndex(idx)
|
||||
idx += 1
|
||||
self.verticalLayout.addWidget(self.parentCombo)
|
||||
@ -205,7 +206,7 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
self.verticalLayout.addWidget(QLabel(self.tr('Default value')))
|
||||
self.defaultEdit = QgsExpressionLineEdit()
|
||||
if self.param is not None:
|
||||
self.defaultEdit.setExpression(self.param.default)
|
||||
self.defaultEdit.setExpression(self.param.defaultValue())
|
||||
self.verticalLayout.addWidget(self.defaultEdit)
|
||||
|
||||
self.verticalLayout.addWidget(QLabel(self.tr('Parent layer')))
|
||||
@ -214,9 +215,9 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
idx = 1
|
||||
for param in list(self.alg.inputs.values()):
|
||||
if isinstance(param.param, (ParameterVector, ParameterTable)):
|
||||
self.parentCombo.addItem(param.param.description, param.param.name)
|
||||
self.parentCombo.addItem(param.param.description(), param.param.name())
|
||||
if self.param is not None:
|
||||
if self.param.parent_layer == param.param.name:
|
||||
if self.param.parent_layer == param.param.name():
|
||||
self.parentCombo.setCurrentIndex(idx)
|
||||
idx += 1
|
||||
self.verticalLayout.addWidget(self.parentCombo)
|
||||
@ -225,7 +226,7 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
self.verticalLayout.addWidget(QLabel(self.tr('Default value')))
|
||||
self.defaultTextBox = QLineEdit()
|
||||
if self.param is not None:
|
||||
self.defaultTextBox.setText(self.param.default)
|
||||
self.defaultTextBox.setText(self.param.defaultValue())
|
||||
self.verticalLayout.addWidget(self.defaultTextBox)
|
||||
elif (self.paramType == ModelerParameterDefinitionDialog.PARAMETER_FILE or
|
||||
isinstance(self.param, ParameterFile)):
|
||||
@ -242,14 +243,14 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
self.verticalLayout.addWidget(QLabel(self.tr('Default value')))
|
||||
self.defaultTextBox = QLineEdit()
|
||||
if self.param is not None:
|
||||
self.defaultTextBox.setText(self.param.default)
|
||||
self.defaultTextBox.setText(self.param.defaultValue())
|
||||
self.verticalLayout.addWidget(self.defaultTextBox)
|
||||
elif (self.paramType == ModelerParameterDefinitionDialog.PARAMETER_CRS or
|
||||
isinstance(self.param, ParameterCrs)):
|
||||
self.verticalLayout.addWidget(QLabel(self.tr('Default value')))
|
||||
self.selector = QgsProjectionSelectionWidget()
|
||||
if self.param is not None:
|
||||
self.selector.setCrs(QgsCoordinateReferenceSystem(self.param.default))
|
||||
self.selector.setCrs(QgsCoordinateReferenceSystem(self.param.defaultValue()))
|
||||
else:
|
||||
self.selector.setCrs(QgsCoordinateReferenceSystem('EPSG:4326'))
|
||||
self.verticalLayout.addWidget(self.selector)
|
||||
@ -259,7 +260,7 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
self.requiredCheck.setText(self.tr('Mandatory'))
|
||||
self.requiredCheck.setChecked(True)
|
||||
if self.param is not None:
|
||||
self.requiredCheck.setChecked(not self.param.optional)
|
||||
self.requiredCheck.setChecked(not self.param.flags() & QgsProcessingParameterDefinition.FlagOptional)
|
||||
self.verticalLayout.addWidget(self.requiredCheck)
|
||||
|
||||
self.buttonBox = QDialogButtonBox(self)
|
||||
@ -290,7 +291,7 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
while name in self.alg.inputs:
|
||||
name = safeName.lower() + str(i)
|
||||
else:
|
||||
name = self.param.name
|
||||
name = self.param.name()
|
||||
if (self.paramType == ModelerParameterDefinitionDialog.PARAMETER_BOOLEAN or
|
||||
isinstance(self.param, ParameterBoolean)):
|
||||
self.param = ParameterBoolean(name, description, self.state.isChecked())
|
||||
@ -364,7 +365,8 @@ class ModelerParameterDefinitionDialog(QDialog):
|
||||
elif (self.paramType == ModelerParameterDefinitionDialog.PARAMETER_CRS or
|
||||
isinstance(self.param, ParameterCrs)):
|
||||
self.param = ParameterCrs(name, description, default=self.selector.crs().authid())
|
||||
self.param.optional = not self.requiredCheck.isChecked()
|
||||
if not self.requiredCheck.isChecked():
|
||||
self.param.setFlags(self.param.flags() | QgsProcessingParameterDefinition.FlagOptional)
|
||||
self.close()
|
||||
|
||||
def cancelPressed(self):
|
||||
|
@ -40,6 +40,7 @@ from qgis.core import (QgsNetworkAccessManager,
|
||||
from qgis.gui import (QgsMessageBar,
|
||||
QgsScrollArea)
|
||||
|
||||
from processing.gui.wrappers import WidgetWrapperFactory
|
||||
from processing.gui.wrappers import InvalidParameterValue
|
||||
from processing.gui.MultipleInputPanel import MultipleInputPanel
|
||||
from processing.core.outputs import (OutputRaster,
|
||||
@ -114,7 +115,7 @@ class ModelerParametersDialog(QDialog):
|
||||
self.verticalLayout.addWidget(line)
|
||||
|
||||
for param in self._alg.parameters:
|
||||
if param.isAdvanced:
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagAdvanced:
|
||||
self.advancedButton = QPushButton()
|
||||
self.advancedButton.setText(self.tr('Show advanced parameters'))
|
||||
self.advancedButton.clicked.connect(
|
||||
@ -124,42 +125,42 @@ class ModelerParametersDialog(QDialog):
|
||||
advancedButtonHLayout.addStretch()
|
||||
self.verticalLayout.addLayout(advancedButtonHLayout)
|
||||
break
|
||||
for param in self._alg.parameters:
|
||||
if param.hidden:
|
||||
for param in self._alg.parameterDefinitions():
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
desc = param.description
|
||||
desc = param.description()
|
||||
if isinstance(param, ParameterExtent):
|
||||
desc += self.tr('(xmin, xmax, ymin, ymax)')
|
||||
if isinstance(param, ParameterPoint):
|
||||
desc += self.tr('(x, y)')
|
||||
if param.optional:
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
desc += self.tr(' [optional]')
|
||||
label = QLabel(desc)
|
||||
self.labels[param.name] = label
|
||||
self.labels[param.name()] = label
|
||||
|
||||
wrapper = param.wrapper(self)
|
||||
self.wrappers[param.name] = wrapper
|
||||
wrapper = WidgetWrapperFactory.create_wrapper(param, self)
|
||||
self.wrappers[param.name()] = wrapper
|
||||
|
||||
widget = wrapper.widget
|
||||
if widget is not None:
|
||||
self.valueItems[param.name] = widget
|
||||
self.valueItems[param.name()] = widget
|
||||
tooltip = param.description()
|
||||
label.setToolTip(tooltip)
|
||||
widget.setToolTip(tooltip)
|
||||
if param.isAdvanced:
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagAdvanced:
|
||||
label.setVisible(self.showAdvanced)
|
||||
widget.setVisible(self.showAdvanced)
|
||||
self.widgets[param.name] = widget
|
||||
self.widgets[param.name()] = widget
|
||||
|
||||
self.verticalLayout.addWidget(label)
|
||||
self.verticalLayout.addWidget(widget)
|
||||
|
||||
for output in self._alg.outputs:
|
||||
if output.hidden:
|
||||
if output.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
if isinstance(output, (OutputRaster, OutputVector, OutputTable,
|
||||
OutputHTML, OutputFile, OutputDirectory)):
|
||||
label = QLabel(output.description + '<' +
|
||||
label = QLabel(output.description() + '<' +
|
||||
output.__class__.__name__ + '>')
|
||||
item = QLineEdit()
|
||||
if hasattr(item, 'setPlaceholderText'):
|
||||
@ -249,7 +250,7 @@ class ModelerParametersDialog(QDialog):
|
||||
else:
|
||||
self.advancedButton.setText(self.tr('Show advanced parameters'))
|
||||
for param in self._alg.parameters:
|
||||
if param.isAdvanced:
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagAdvanced:
|
||||
self.labels[param.name].setVisible(self.showAdvanced)
|
||||
self.widgets[param.name].setVisible(self.showAdvanced)
|
||||
|
||||
@ -289,25 +290,25 @@ class ModelerParametersDialog(QDialog):
|
||||
|
||||
def resolveValueDescription(self, value):
|
||||
if isinstance(value, ValueFromInput):
|
||||
return self.model.inputs[value.name].param.description
|
||||
return self.model.inputs[value.name].param.description()
|
||||
else:
|
||||
alg = self.model.algs[value.alg]
|
||||
return self.tr("'{0}' from algorithm '{1}'").format(alg.algorithm.getOutputFromName(value.output).description, alg.description)
|
||||
return self.tr("'{0}' from algorithm '{1}'").format(alg.algorithm.getOutputFromName(value.output).description(), alg.description)
|
||||
|
||||
def setPreviousValues(self):
|
||||
if self._algName is not None:
|
||||
alg = self.model.algs[self._algName]
|
||||
self.descriptionBox.setText(alg.description)
|
||||
for param in alg.algorithm.parameters:
|
||||
if param.hidden:
|
||||
for param in alg.algorithm.parameterDefinitions():
|
||||
if param.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
continue
|
||||
if param.name in alg.params:
|
||||
value = alg.params[param.name]
|
||||
if param.name() in alg.params:
|
||||
value = alg.params[param.name()]
|
||||
else:
|
||||
value = param.default
|
||||
self.wrappers[param.name].setValue(value)
|
||||
value = param.defaultValue()
|
||||
self.wrappers[param.name()].setValue(value)
|
||||
for name, out in list(alg.outputs.items()):
|
||||
self.valueItems[name].setText(out.description)
|
||||
self.valueItems[name].setText(out.description())
|
||||
|
||||
selected = []
|
||||
dependencies = self.getAvailableDependencies() # spellok
|
||||
@ -331,10 +332,10 @@ class ModelerParametersDialog(QDialog):
|
||||
level=QgsMessageBar.WARNING)
|
||||
return None
|
||||
for output in outputs:
|
||||
if not output.hidden:
|
||||
name = str(self.valueItems[output.name].text())
|
||||
if not output.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
name = str(self.valueItems[output.name()].text())
|
||||
if name.strip() != '' and name != ModelerParametersDialog.ENTER_NAME:
|
||||
alg.outputs[output.name] = ModelerOutput(name)
|
||||
alg.outputs[output.name()] = ModelerOutput(name)
|
||||
|
||||
selectedOptions = self.dependenciesPanel.selectedoptions
|
||||
availableDependencies = self.getAvailableDependencies() # spellok
|
||||
|
@ -28,6 +28,7 @@ __revision__ = '$Format:%H$'
|
||||
|
||||
from qgis.PyQt.QtCore import QPointF, Qt
|
||||
from qgis.PyQt.QtWidgets import QGraphicsItem, QGraphicsScene
|
||||
from qgis.core import QgsProcessingParameterDefinition
|
||||
from processing.modeler.ModelerGraphicItem import ModelerGraphicItem
|
||||
from processing.modeler.ModelerArrowItem import ModelerArrowItem
|
||||
from processing.modeler.ModelerAlgorithm import ValueFromInput, ValueFromOutput, CompoundValue
|
||||
@ -102,8 +103,8 @@ class ModelerScene(QGraphicsScene):
|
||||
# And then the arrows
|
||||
for alg in list(model.algs.values()):
|
||||
idx = 0
|
||||
for parameter in alg.algorithm.parameters:
|
||||
if not parameter.hidden:
|
||||
for parameter in alg.algorithm.parameterDefinitions():
|
||||
if not parameter.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
if parameter.name in alg.params:
|
||||
value = alg.params[parameter.name]
|
||||
else:
|
||||
|
@ -75,7 +75,7 @@ def createContext():
|
||||
context.setFlags(QgsProcessingContext.UseSelectionIfPresent)
|
||||
|
||||
invalid_features_method = ProcessingConfig.getSetting(ProcessingConfig.FILTER_INVALID_GEOMETRIES)
|
||||
if not invalid_features_method:
|
||||
if invalid_features_method is None:
|
||||
invalid_features_method = QgsFeatureRequest.GeometryAbortOnInvalid
|
||||
context.setInvalidGeometryCheck(invalid_features_method)
|
||||
|
||||
|
@ -47,9 +47,9 @@ def algorithmOptions(id):
|
||||
alg = QgsApplication.processingRegistry().algorithmById(id)
|
||||
if alg is not None:
|
||||
opts = ''
|
||||
for param in alg.parameters:
|
||||
for param in alg.parameterDefinitions():
|
||||
if isinstance(param, ParameterSelection):
|
||||
opts += '{} ({})\n'.format(param.name, param.description)
|
||||
opts += '{} ({})\n'.format(param.name(), param.description())
|
||||
for option in enumerate(param.options):
|
||||
opts += '\t{} - {}\n'.format(option[0], option[1])
|
||||
print(opts)
|
||||
|
@ -26,7 +26,8 @@ __revision__ = '$Format:%H$'
|
||||
import os
|
||||
import codecs
|
||||
|
||||
from qgis.core import QgsApplication
|
||||
from qgis.core import (QgsApplication,
|
||||
QgsProcessingParameterDefinition)
|
||||
from processing.core.Processing import Processing
|
||||
from processing.core.parameters import ParameterMultipleInput, ParameterTableField, ParameterVector, ParameterSelection
|
||||
from processing.tools.system import mkdir
|
||||
@ -58,14 +59,14 @@ def baseHelpForAlgorithm(alg, folder):
|
||||
# Algorithm parameters
|
||||
f.write('Parameters\n')
|
||||
f.write('----------\n\n')
|
||||
for p in alg.parameters:
|
||||
for p in alg.parameterDefinitions():
|
||||
if isinstance(p, (ParameterMultipleInput, ParameterTableField, ParameterVector)):
|
||||
f.write('``{}`` [{}: {}]\n'.format(p.description, p.typeName(), p.dataType()))
|
||||
f.write('``{}`` [{}: {}]\n'.format(p.description(), p.type(), p.dataType()))
|
||||
else:
|
||||
f.write('``{}`` [{}]\n'.format(p.description, p.typeName()))
|
||||
f.write('``{}`` [{}]\n'.format(p.description(), p.type()))
|
||||
|
||||
if hasattr(p, 'optional'):
|
||||
if p.optional:
|
||||
if p.flags() & QgsProcessingParameterDefinition.FlagOptional:
|
||||
f.write(' Optional.\n\n')
|
||||
|
||||
f.write(' <put parameter description here>\n\n')
|
||||
@ -76,14 +77,14 @@ def baseHelpForAlgorithm(alg, folder):
|
||||
f.write(' * {} --- {}\n'.format(count, opt))
|
||||
f.write('\n')
|
||||
|
||||
if hasattr(p, 'default'):
|
||||
f.write(' Default: *{}*\n\n'.format(p.default if p.default != '' else '(not set)'))
|
||||
if hasattr(p, 'defaultValue'):
|
||||
f.write(' Default: *{}*\n\n'.format(p.defaultValue() if p.defaultValue() else '(not set)'))
|
||||
|
||||
# Algorithm outputs
|
||||
f.write('Outputs\n')
|
||||
f.write('-------\n\n')
|
||||
for o in alg.outputs:
|
||||
f.write('``{}`` [{}]\n'.format(o.description, o.typeName()))
|
||||
f.write('``{}`` [{}]\n'.format(o.description(), o.type()))
|
||||
f.write(' <put output description here>\n\n')
|
||||
|
||||
# Console usage
|
||||
@ -91,12 +92,12 @@ def baseHelpForAlgorithm(alg, folder):
|
||||
f.write('-------------\n')
|
||||
f.write('\n::\n\n')
|
||||
cmd = " processing.run('{}', ".format(alg.id())
|
||||
for p in alg.parameters:
|
||||
cmd += '{}, '.format(p.name.lower().strip())
|
||||
for p in alg.parameterDefinitions():
|
||||
cmd += '{}, '.format(p.name().lower().strip())
|
||||
|
||||
for o in alg.outputs:
|
||||
if not o.hidden:
|
||||
cmd += '{}, '.format(o.name.lower().strip())
|
||||
if not o.flags() & QgsProcessingParameterDefinition.FlagHidden:
|
||||
cmd += '{}, '.format(o.name().lower().strip())
|
||||
cmd = cmd[:-2] + ')\n\n'
|
||||
f.write(cmd)
|
||||
|
||||
|
@ -23,7 +23,8 @@
|
||||
#include "qgsvectorlayer.h"
|
||||
|
||||
QgsProcessingAlgRunnerTask::QgsProcessingAlgRunnerTask( const QgsProcessingAlgorithm *algorithm, const QVariantMap ¶meters, QgsProcessingContext &context )
|
||||
: mAlgorithm( algorithm )
|
||||
: QgsTask( tr( "Running %1" ).arg( algorithm->name() ), QgsTask::CanCancel )
|
||||
, mAlgorithm( algorithm )
|
||||
, mParameters( parameters )
|
||||
, mContext( context )
|
||||
{
|
||||
|
Loading…
x
Reference in New Issue
Block a user