def testModelerParametersDialogAvailableValuesOfType(self): # test getAvailableValuesOfType from ModelerParametersDialog m = QgsProcessingModelAlgorithm() string_param_1 = QgsProcessingModelParameter('string') m.addModelParameter(QgsProcessingParameterString('string'), string_param_1) string_param_2 = QgsProcessingModelParameter('string2') m.addModelParameter(QgsProcessingParameterString('string2'), string_param_2) num_param = QgsProcessingModelParameter('number') m.addModelParameter(QgsProcessingParameterNumber('number'), num_param) table_field_param = QgsProcessingModelParameter('field') m.addModelParameter(QgsProcessingParameterField('field'), table_field_param) file_param = QgsProcessingModelParameter('file') m.addModelParameter(QgsProcessingParameterFile('file'), file_param) dlg = ModelerParametersDialog(m, m) # test single types self.assertEqual(set(p.parameterName() for p in dlg.getAvailableValuesOfType(QgsProcessingParameterNumber)), set(['number'])) self.assertEqual(set(p.parameterName() for p in dlg.getAvailableValuesOfType(QgsProcessingParameterField)), set(['field'])) self.assertEqual(set(p.parameterName() for p in dlg.getAvailableValuesOfType(QgsProcessingParameterFile)), set(['file'])) # test multiple types self.assertEqual(set(p.parameterName() for p in dlg.getAvailableValuesOfType([QgsProcessingParameterString, QgsProcessingParameterNumber, QgsProcessingParameterFile])), set(['string', 'string2', 'number', 'file']))
def addInputOfType(self, paramType, pos=None): dlg = ModelerParameterDefinitionDialog(self.model, paramType) dlg.exec_() if dlg.param is not None: if pos is None: pos = self.getPositionForParameterItem() if isinstance(pos, QPoint): pos = QPointF(pos) component = QgsProcessingModelParameter(dlg.param.name()) component.setDescription(dlg.param.name()) component.setPosition(pos) self.model.addModelParameter(dlg.param, component) self.repaintModel() # self.view.ensureVisible(self.scene.getLastParameterItem()) self.hasChanged = True
def addInputOfType(self, paramType, pos=None): new_param = None if ModelerParameterDefinitionDialog.use_legacy_dialog( paramType=paramType): dlg = ModelerParameterDefinitionDialog(self.model, paramType) if dlg.exec_(): new_param = dlg.param else: # yay, use new API! context = createContext() widget_context = self.create_widget_context() dlg = QgsProcessingParameterDefinitionDialog( type=paramType, context=context, widgetContext=widget_context, algorithm=self.model) if dlg.exec_(): new_param = dlg.createParameter() self.autogenerate_parameter_name(new_param) if new_param is not None: if pos is None: pos = self.getPositionForParameterItem() if isinstance(pos, QPoint): pos = QPointF(pos) component = QgsProcessingModelParameter(new_param.name()) component.setDescription(new_param.name()) component.setPosition(pos) self.model.addModelParameter(new_param, component) self.repaintModel() # self.view.ensureVisible(self.scene.getLastParameterItem()) self.hasChanged = True
def addInput(self, paramType, pos=None): if paramType not in [param.id() for param in QgsApplication.instance().processingRegistry().parameterTypes()]: return new_param = None comment = None if ModelerParameterDefinitionDialog.use_legacy_dialog(paramType=paramType): dlg = ModelerParameterDefinitionDialog(self.model(), paramType) if dlg.exec_(): new_param = dlg.param comment = dlg.comments() else: # yay, use new API! context = createContext() widget_context = self.create_widget_context() dlg = QgsProcessingParameterDefinitionDialog(type=paramType, context=context, widgetContext=widget_context, algorithm=self.model()) if dlg.exec_(): new_param = dlg.createParameter() self.autogenerate_parameter_name(new_param) comment = dlg.comments() if new_param is not None: if pos is None or not pos: pos = self.getPositionForParameterItem() if isinstance(pos, QPoint): pos = QPointF(pos) component = QgsProcessingModelParameter(new_param.name()) component.setDescription(new_param.name()) component.setPosition(pos) component.comment().setDescription(comment) component.comment().setPosition(component.position() + QPointF( component.size().width(), -1.5 * component.size().height())) self.beginUndoCommand(self.tr('Add Model Input')) self.model().addModelParameter(new_param, component) self.repaintModel() # self.view().ensureVisible(self.scene.getLastParameterItem()) self.endUndoCommand()