Skip to content

Commit c36169a

Browse files
committed
Fix some errors in graphical modeler
1 parent b01cae0 commit c36169a

File tree

3 files changed

+33
-30
lines changed

3 files changed

+33
-30
lines changed

python/plugins/processing/modeler/ModelerGraphicItem.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ def itemChange(self, change, value):
374374
elif isinstance(self.element, QgsProcessingModelAlgorithm.ModelParameter):
375375
self.model.parameterComponent(self.element.parameterName()).setPosition(self.pos())
376376
elif isinstance(self.element, QgsProcessingModelAlgorithm.ModelOutput):
377-
self.model.childAlgorithm(self.element.childId()).modelOutput(self.element.name()).setPosition(self.pos())
377+
self.model.childAlgorithm(self.element.childId()).modelOutput(self.element.outputName()).setPosition(self.pos())
378378

379379
return value
380380

python/plugins/processing/modeler/ModelerParametersDialog.py

+31-28
Original file line numberDiff line numberDiff line change
@@ -36,21 +36,18 @@
3636
from qgis.core import (QgsProcessingParameterDefinition,
3737
QgsProcessingParameterPoint,
3838
QgsProcessingParameterExtent,
39-
QgsProcessingModelAlgorithm)
39+
QgsProcessingModelAlgorithm,
40+
QgsProcessingParameterFeatureSink,
41+
QgsProcessingParameterRasterOutput,
42+
QgsProcessingParameterFileOutput,
43+
QgsProcessingParameterFolderOutput)
4044

4145
from qgis.gui import (QgsMessageBar,
4246
QgsScrollArea)
4347

4448
from processing.gui.wrappers import WidgetWrapperFactory
4549
from processing.gui.wrappers import InvalidParameterValue
4650
from processing.gui.MultipleInputPanel import MultipleInputPanel
47-
from processing.core.outputs import (OutputRaster,
48-
OutputVector,
49-
OutputTable,
50-
OutputHTML,
51-
OutputFile,
52-
OutputDirectory)
53-
from processing.core.parameters import ParameterPoint, ParameterExtent
5451

5552

5653
class ModelerParametersDialog(QDialog):
@@ -149,19 +146,18 @@ def setupUi(self):
149146
self.verticalLayout.addWidget(label)
150147
self.verticalLayout.addWidget(widget)
151148

152-
# for output in self._alg.outputs:
153-
# if output.flags() & QgsProcessingParameterDefinition.FlagHidden:
154-
# continue
155-
# if isinstance(output, (OutputRaster, OutputVector, OutputTable,
156-
# OutputHTML, OutputFile, OutputDirectory)):
157-
# label = QLabel(output.description() + '<' +
158-
# output.__class__.__name__ + '>')
159-
# item = QLineEdit()
160-
# if hasattr(item, 'setPlaceholderText'):
161-
# item.setPlaceholderText(ModelerParametersDialog.ENTER_NAME)
162-
# self.verticalLayout.addWidget(label)
163-
# self.verticalLayout.addWidget(item)
164-
# self.valueItems[output.name] = item
149+
for dest in self._alg.destinationParameterDefinitions():
150+
if dest.flags() & QgsProcessingParameterDefinition.FlagHidden:
151+
continue
152+
if isinstance(dest, (QgsProcessingParameterRasterOutput, QgsProcessingParameterFeatureSink,
153+
QgsProcessingParameterFileOutput, QgsProcessingParameterFolderOutput)):
154+
label = QLabel(dest.description())
155+
item = QLineEdit()
156+
if hasattr(item, 'setPlaceholderText'):
157+
item.setPlaceholderText(ModelerParametersDialog.ENTER_NAME)
158+
self.verticalLayout.addWidget(label)
159+
self.verticalLayout.addWidget(item)
160+
self.valueItems[dest.name()] = item
165161

166162
label = QLabel(' ')
167163
self.verticalLayout.addWidget(label)
@@ -309,7 +305,10 @@ def setPreviousValues(self):
309305

310306
def createAlgorithm(self):
311307
alg = QgsProcessingModelAlgorithm.ChildAlgorithm(self._alg.id())
312-
alg.generateChildId(self.model)
308+
if not self._algName:
309+
alg.generateChildId(self.model)
310+
else:
311+
alg.setChildId(self._algName)
313312
alg.setDescription(self.descriptionBox.text())
314313
for param in self._alg.parameterDefinitions():
315314
if param.isDestination() or param.flags() & QgsProcessingParameterDefinition.FlagHidden:
@@ -332,12 +331,16 @@ def createAlgorithm(self):
332331
else:
333332
alg.addParameterSource(param.name(), QgsProcessingModelAlgorithm.ChildParameterSource.fromStaticValue(val))
334333

335-
# outputs = self._alg.outputDefinitions()
336-
# for output in outputs:
337-
# if not output.flags() & QgsProcessingParameterDefinition.FlagHidden:
338-
# name = str(self.valueItems[output.name()].text())
339-
# if name.strip() != '' and name != ModelerParametersDialog.ENTER_NAME:
340-
# alg.outputs[output.name()] = QgsProcessingModelAlgorithm.ModelOutput(name)
334+
outputs = {}
335+
for dest in self._alg.destinationParameterDefinitions():
336+
if not dest.flags() & QgsProcessingParameterDefinition.FlagHidden:
337+
name = str(self.valueItems[dest.name()].text())
338+
if name.strip() != '' and name != ModelerParametersDialog.ENTER_NAME:
339+
output = QgsProcessingModelAlgorithm.ModelOutput(name)
340+
output.setChildId(alg.childId())
341+
output.setOutputName(dest.name())
342+
outputs[dest.name()] = output
343+
alg.setModelOutputs(outputs)
341344

342345
selectedOptions = self.dependenciesPanel.selectedoptions
343346
availableDependencies = self.getAvailableDependencies() # spellok

python/plugins/processing/modeler/ModelerScene.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ def paintModel(self, model, controls=True):
143143
if pos is None:
144144
pos = (alg.position() + QPointF(ModelerGraphicItem.BOX_WIDTH, 0) +
145145
self.algItems[alg.childId()].getLinkPointForOutput(idx))
146-
item.setPosition(pos)
146+
item.setPos(pos)
147147
outputItems[key] = item
148148
arrow = ModelerArrowItem(self.algItems[alg.childId()], idx, item,
149149
-1)

0 commit comments

Comments
 (0)