def testModelerParametersDialogAvailableValuesOfType(self): # test getAvailableValuesOfType from ModelerParametersDialog m = QgsProcessingModelAlgorithm() string_param_1 = QgsProcessingModelAlgorithm.ModelParameter('string') m.addModelParameter(QgsProcessingParameterString('string'), string_param_1) string_param_2 = QgsProcessingModelAlgorithm.ModelParameter('string2') m.addModelParameter(QgsProcessingParameterString('string2'), string_param_2) num_param = QgsProcessingModelAlgorithm.ModelParameter('number') m.addModelParameter(QgsProcessingParameterNumber('number'), num_param) table_field_param = QgsProcessingModelAlgorithm.ModelParameter('field') m.addModelParameter(QgsProcessingParameterField('field'), table_field_param) file_param = QgsProcessingModelAlgorithm.ModelParameter('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): if paramType in ModelerParameterDefinitionDialog.paramTypes: 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 = QgsProcessingModelAlgorithm.ModelParameter( 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