コード例 #1
0
ファイル: ModelerDialog.py プロジェクト: yujiangshun/QGIS
    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
コード例 #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
コード例 #3
0
ファイル: ModelerDialog.py プロジェクト: dwsilk/QGIS
 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
コード例 #4
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())
            dlg.registerProcessingContextGenerator(self.context_generator)
            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()