def paintModel(self, model, controls=True): self.model = model context = createContext() # Inputs for inp in list(model.parameterComponents().values()): item = ModelerGraphicItem(inp, model, controls, scene=self) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(inp.position().x(), inp.position().y()) self.paramItems[inp.parameterName()] = item # Input dependency arrows for input_name in list(model.parameterComponents().keys()): idx = 0 parameter_def = model.parameterDefinition(input_name) if hasattr(parameter_def, 'parentLayerParameterName' ) and parameter_def.parentLayerParameterName(): parent_name = parameter_def.parentLayerParameterName() if input_name in self.paramItems and parent_name in self.paramItems: input_item = self.paramItems[input_name] parent_item = self.paramItems[parent_name] arrow = ModelerArrowItem(parent_item, -1, input_item, -1) input_item.addArrow(arrow) parent_item.addArrow(arrow) arrow.setPenStyle(Qt.DotLine) arrow.updatePath() self.addItem(arrow) # We add the algs for alg in list(model.childAlgorithms().values()): item = ModelerGraphicItem(alg, model, controls, scene=self) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(alg.position().x(), alg.position().y()) self.algItems[alg.childId()] = item # And then the arrows for alg in list(model.childAlgorithms().values()): idx = 0 for parameter in alg.algorithm().parameterDefinitions(): if not parameter.isDestination() and not parameter.flags( ) & QgsProcessingParameterDefinition.FlagHidden: if parameter.name() in alg.parameterSources(): sources = alg.parameterSources()[parameter.name()] else: sources = [] for source in sources: sourceItems = self.getItemsFromParamValue( source, alg.childId(), context) for sourceItem, sourceIdx in sourceItems: arrow = ModelerArrowItem( sourceItem, sourceIdx, self.algItems[alg.childId()], idx) sourceItem.addArrow(arrow) self.algItems[alg.childId()].addArrow(arrow) arrow.updatePath() self.addItem(arrow) idx += 1 for depend in alg.dependencies(): arrow = ModelerArrowItem(self.algItems[depend], -1, self.algItems[alg.childId()], -1) self.algItems[depend].addArrow(arrow) self.algItems[alg.childId()].addArrow(arrow) arrow.updatePath() self.addItem(arrow) # And finally the outputs for alg in list(model.childAlgorithms().values()): outputs = alg.modelOutputs() outputItems = {} idx = 0 for key, out in outputs.items(): if out is not None: item = ModelerGraphicItem(out, model, controls, scene=self) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) pos = out.position() if pos is None: pos = (alg.position() + QPointF(ModelerGraphicItem.BOX_WIDTH, 0) + self.algItems[ alg.childId()].getLinkPointForOutput(idx)) item.setPos(pos) outputItems[key] = item arrow = ModelerArrowItem(self.algItems[alg.childId()], idx, item, -1) self.algItems[alg.childId()].addArrow(arrow) item.addArrow(arrow) arrow.updatePath() self.addItem(arrow) idx += 1 else: outputItems[key] = None self.outputItems[alg.childId()] = outputItems
def paintModel(self, model, controls=True): self.model = model # Inputs for inp in list(model.inputs.values()): item = ModelerGraphicItem(inp, model, controls) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(inp.pos.x(), inp.pos.y()) self.paramItems[inp.param.name] = item # We add the algs for alg in list(model.algs.values()): item = ModelerGraphicItem(alg, model, controls) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(alg.pos.x(), alg.pos.y()) self.algItems[alg.modeler_name] = item # And then the arrows for alg in list(model.algs.values()): idx = 0 for parameter in alg.algorithm.parameters: if not parameter.hidden: if parameter.name in alg.params: value = alg.params[parameter.name] else: value = None sourceItems = self.getItemsFromParamValue(value) for sourceItem, sourceIdx in sourceItems: arrow = ModelerArrowItem( sourceItem, sourceIdx, self.algItems[alg.modeler_name], idx) sourceItem.addArrow(arrow) self.algItems[alg.modeler_name].addArrow(arrow) arrow.updatePath() self.addItem(arrow) idx += 1 for depend in alg.dependencies: arrow = ModelerArrowItem(self.algItems[depend], -1, self.algItems[alg.modeler_name], -1) self.algItems[depend].addArrow(arrow) self.algItems[alg.modeler_name].addArrow(arrow) arrow.updatePath() self.addItem(arrow) # And finally the outputs for alg in list(model.algs.values()): outputs = alg.outputs outputItems = {} idx = 0 for key in outputs: out = outputs[key] if out is not None: item = ModelerGraphicItem(out, model, controls) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) pos = alg.outputs[key].pos if pos is None: pos = (alg.pos + QPointF(ModelerGraphicItem.BOX_WIDTH, 0) + self.algItems[alg.modeler_name]. getLinkPointForOutput(idx)) item.setPos(pos) outputItems[key] = item arrow = ModelerArrowItem(self.algItems[alg.modeler_name], idx, item, -1) self.algItems[alg.modeler_name].addArrow(arrow) item.addArrow(arrow) arrow.updatePath() self.addItem(arrow) idx += 1 else: outputItems[key] = None self.outputItems[alg.modeler_name] = outputItems
def paintModel(self, model, controls=True): self.model = model context = createContext() # Inputs for inp in list(model.parameterComponents().values()): item = ModelerGraphicItem(inp, model, controls, scene=self) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(inp.position().x(), inp.position().y()) self.paramItems[inp.parameterName()] = item # Input dependency arrows for input_name in list(model.parameterComponents().keys()): idx = 0 parameter_def = model.parameterDefinition(input_name) if hasattr(parameter_def, 'parentLayerParameterName') and parameter_def.parentLayerParameterName(): parent_name = parameter_def.parentLayerParameterName() if input_name in self.paramItems and parent_name in self.paramItems: input_item = self.paramItems[input_name] parent_item = self.paramItems[parent_name] arrow = ModelerArrowItem(parent_item, -1, input_item, -1) input_item.addArrow(arrow) parent_item.addArrow(arrow) arrow.setPenStyle(Qt.DotLine) arrow.updatePath() self.addItem(arrow) # We add the algs for alg in list(model.childAlgorithms().values()): item = ModelerGraphicItem(alg, model, controls, scene=self) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(alg.position().x(), alg.position().y()) self.algItems[alg.childId()] = item # And then the arrows for alg in list(model.childAlgorithms().values()): idx = 0 for parameter in alg.algorithm().parameterDefinitions(): if not parameter.isDestination() and not parameter.flags() & QgsProcessingParameterDefinition.FlagHidden: if parameter.name() in alg.parameterSources(): sources = alg.parameterSources()[parameter.name()] else: sources = [] for source in sources: sourceItems = self.getItemsFromParamValue(source, alg.childId(), context) for sourceItem, sourceIdx in sourceItems: arrow = ModelerArrowItem(sourceItem, sourceIdx, self.algItems[alg.childId()], idx) sourceItem.addArrow(arrow) self.algItems[alg.childId()].addArrow(arrow) arrow.updatePath() self.addItem(arrow) idx += 1 for depend in alg.dependencies(): arrow = ModelerArrowItem(self.algItems[depend], -1, self.algItems[alg.childId()], -1) self.algItems[depend].addArrow(arrow) self.algItems[alg.childId()].addArrow(arrow) arrow.updatePath() self.addItem(arrow) # And finally the outputs for alg in list(model.childAlgorithms().values()): outputs = alg.modelOutputs() outputItems = {} idx = 0 for key, out in outputs.items(): if out is not None: item = ModelerGraphicItem(out, model, controls, scene=self) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) pos = out.position() if pos is None: pos = (alg.position() + QPointF(ModelerGraphicItem.BOX_WIDTH, 0) + self.algItems[alg.childId()].getLinkPointForOutput(idx)) item.setPos(pos) outputItems[key] = item arrow = ModelerArrowItem(self.algItems[alg.childId()], idx, item, -1) self.algItems[alg.childId()].addArrow(arrow) item.addArrow(arrow) arrow.updatePath() self.addItem(arrow) idx += 1 else: outputItems[key] = None self.outputItems[alg.childId()] = outputItems
def paintModel(self, model, controls=True): self.model = model # Inputs for inp in list(model.inputs.values()): item = ModelerGraphicItem(inp, model, controls) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(inp.pos.x(), inp.pos.y()) self.paramItems[inp.param.name] = item # We add the algs for alg in list(model.algs.values()): item = ModelerGraphicItem(alg, model, controls) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(alg.pos.x(), alg.pos.y()) self.algItems[alg.modeler_name] = item # And then the arrows for alg in list(model.algs.values()): idx = 0 for parameter in alg.algorithm.parameters: if not parameter.hidden: if parameter.name in alg.params: value = alg.params[parameter.name] else: value = None sourceItems = self.getItemsFromParamValue(value) for sourceItem, sourceIdx in sourceItems: arrow = ModelerArrowItem(sourceItem, sourceIdx, self.algItems[alg.modeler_name], idx) sourceItem.addArrow(arrow) self.algItems[alg.modeler_name].addArrow(arrow) arrow.updatePath() self.addItem(arrow) idx += 1 for depend in alg.dependencies: arrow = ModelerArrowItem(self.algItems[depend], -1, self.algItems[alg.modeler_name], -1) self.algItems[depend].addArrow(arrow) self.algItems[alg.modeler_name].addArrow(arrow) arrow.updatePath() self.addItem(arrow) # And finally the outputs for alg in list(model.algs.values()): outputs = alg.outputs outputItems = {} idx = 0 for key in outputs: out = outputs[key] if out is not None: item = ModelerGraphicItem(out, model, controls) item.setFlag(QGraphicsItem.ItemIsMovable, True) item.setFlag(QGraphicsItem.ItemIsSelectable, True) self.addItem(item) pos = alg.outputs[key].pos if pos is None: pos = (alg.pos + QPointF(ModelerGraphicItem.BOX_WIDTH, 0) + self.algItems[alg.modeler_name].getLinkPointForOutput(idx)) item.setPos(pos) outputItems[key] = item arrow = ModelerArrowItem(self.algItems[alg.modeler_name], idx, item, -1) self.algItems[alg.modeler_name].addArrow(arrow) item.addArrow(arrow) arrow.updatePath() self.addItem(arrow) idx += 1 else: outputItems[key] = None self.outputItems[alg.modeler_name] = outputItems
def paintModel(self, model): self.model = model i=0 #inputs for param in model.parameters: item = ModelerGraphicItem(param, i, model) item.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) item.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(model.paramPos[i]) self.paramItems.append(item) i+=1 #we add the algs iAlg=0 for alg in model.algs: item = ModelerGraphicItem(alg, iAlg, model) item.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) item.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(model.algPos[iAlg]) self.algItems.append(item) iAlg+=1 #and then the arrows iAlg=0 for alg in model.algs: params = model.algParameters[iAlg] idx = 0 for parameter in alg.parameters: param = params[parameter.name] if param: sourceItems = self.getItemsFromAAP(param, isinstance(alg.getParameterFromName(parameter.name), ParameterMultipleInput)) for sourceItem in sourceItems: arrow = ModelerArrowItem(sourceItem[0], sourceItem[1], self.algItems[iAlg], idx) self.addItem(arrow) idx += 1 for depend in model.dependencies[iAlg]: arrow = ModelerArrowItem(self.algItems[depend], -1, self.algItems[iAlg], -1) self.addItem(arrow) iAlg+=1 #and finally the outputs for iAlg, alg in enumerate(model.algs): outputs = model.algOutputs[iAlg] outputItems = {} for idx, key in enumerate(outputs.keys()): out = outputs[key] if out is not None: item = ModelerGraphicItem(out, idx, model) item.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) item.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True) self.addItem(item) pos = model.outputPos[iAlg][key] if pos is None: pos = self.algItems[iAlg].pos() + QtCore.QPointF(ModelerGraphicItem.BOX_WIDTH,0) + self.algItems[iAlg].getLinkPointForOutput(idx) item.setPos(pos) outputItems[key] = item arrow = ModelerArrowItem(self.algItems[iAlg], idx, item, -1) self.addItem(arrow) else: outputItems[key] = None self.outputItems.append(outputItems)
def paintModel(self, model): self.model = model i = 0 # Inputs for param in model.parameters: item = ModelerGraphicItem(param, i, model) item.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) item.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(model.paramPos[i]) self.paramItems.append(item) i += 1 # We add the algs iAlg = 0 for alg in model.algs: item = ModelerGraphicItem(alg, iAlg, model) item.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) item.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True) self.addItem(item) item.setPos(model.algPos[iAlg]) self.algItems.append(item) iAlg += 1 # And then the arrows iAlg = 0 for alg in model.algs: params = model.algParameters[iAlg] idx = 0 for parameter in alg.parameters: if not parameter.hidden: param = params[parameter.name] if param: sourceItems = self.getItemsFromAAP(param, isinstance(alg.getParameterFromName(parameter.name), ParameterMultipleInput)) for sourceItem in sourceItems: arrow = ModelerArrowItem(sourceItem[0], sourceItem[1], self.algItems[iAlg], idx) self.addItem(arrow) idx += 1 for depend in model.dependencies[iAlg]: arrow = ModelerArrowItem(self.algItems[depend], -1, self.algItems[iAlg], -1) self.addItem(arrow) iAlg += 1 # And finally the outputs for (iAlg, alg) in enumerate(model.algs): outputs = model.algOutputs[iAlg] outputItems = {} for (idx, key) in enumerate(outputs.keys()): out = outputs[key] if out is not None: item = ModelerGraphicItem(out, idx, model) item.setFlag(QtGui.QGraphicsItem.ItemIsMovable, True) item.setFlag(QtGui.QGraphicsItem.ItemIsSelectable, True) self.addItem(item) pos = model.outputPos[iAlg][key] if pos is None: pos = self.algItems[iAlg].pos() \ + QtCore.QPointF(ModelerGraphicItem.BOX_WIDTH, 0) \ + self.algItems[iAlg].getLinkPointForOutput(idx) item.setPos(pos) outputItems[key] = item arrow = ModelerArrowItem(self.algItems[iAlg], idx, item, -1) self.addItem(arrow) else: outputItems[key] = None self.outputItems.append(outputItems)