Esempio n. 1
0
    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']))
Esempio n. 2
0
 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
Esempio n. 3
0
    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
Esempio n. 4
0
 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
Esempio n. 5
0
    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()