コード例 #1
0
    def execute(self):
        settings = QgsSettings()
        lastDir = settings.value('Processing/lastModelsDir', '')
        filename, selected_filter = QFileDialog.getOpenFileName(self.toolbox,
                                                                self.tr('Open model', 'AddModelFromFileAction'), lastDir,
                                                                self.tr('Processing model files (*.model *.MODEL)', 'AddModelFromFileAction'))
        if filename:
            try:
                settings.setValue('Processing/lastModelsDir',
                                  QFileInfo(filename).absoluteDir().absolutePath())

                ModelerAlgorithm.fromFile(filename)
            except WrongModelException:
                QMessageBox.warning(
                    self.toolbox,
                    self.tr('Error reading model', 'AddModelFromFileAction'),
                    self.tr('The selected file does not contain a valid model', 'AddModelFromFileAction'))
                return
            except:
                QMessageBox.warning(self.toolbox,
                                    self.tr('Error reading model', 'AddModelFromFileAction'),
                                    self.tr('Cannot read file', 'AddModelFromFileAction'))
                return
            destFilename = os.path.join(ModelerUtils.modelsFolders()[0], os.path.basename(filename))
            shutil.copyfile(filename, destFilename)
            algList.reloadProvider('model')
コード例 #2
0
 def execute(self):
     settings = QgsSettings()
     lastDir = settings.value('Processing/lastScriptsDir', '')
     filenames, selected_filter = QFileDialog.getOpenFileNames(self.toolbox,
                                                               self.tr('Script files', 'AddScriptFromFileAction'), lastDir,
                                                               self.tr('Script files (*.py *.PY)', 'AddScriptFromFileAction'))
     if filenames:
         validAlgs = 0
         wrongAlgs = []
         for filename in filenames:
             try:
                 settings.setValue('Processing/lastScriptsDir',
                                   QFileInfo(filename).absoluteDir().absolutePath())
                 script = ScriptAlgorithm(filename)
                 destFilename = os.path.join(ScriptUtils.scriptsFolders()[0], os.path.basename(filename))
                 with open(destFilename, 'w') as f:
                     f.write(script.script)
                 validAlgs += 1
             except WrongScriptException:
                 wrongAlgs.append(os.path.basename(filename))
         if validAlgs:
             algList.reloadProvider('script')
         if wrongAlgs:
             QMessageBox.warning(self.toolbox,
                                 self.tr('Error reading scripts', 'AddScriptFromFileAction'),
                                 self.tr('The following files do not contain a valid script:\n-', 'AddScriptFromFileAction') +
                                 "\n-".join(wrongAlgs))
コード例 #3
0
 def accept(self):
     try:
         self.setParamValues()
         msg = self.alg._checkParameterValuesBeforeExecuting()
         if msg:
             QMessageBox.warning(
                 self, self.tr('Unable to execute algorithm'), msg)
             return
         description = algAsDict(self.alg)
         description["name"] = self.settingsPanel.txtName.text().strip()
         description["group"] = self.settingsPanel.txtGroup.text().strip()
         if not (description["name"] and description["group"]):
             self.tabWidget.setCurrentIndex(self.tabWidget.count() - 1)
             return
         validChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:'
         filename = ''.join(c for c in description["name"] if c in validChars).lower() + ".json"
         filepath = os.path.join(preconfiguredAlgorithmsFolder(), filename)
         with open(filepath, "w") as f:
             json.dump(description, f)
         algList.reloadProvider('preconfigured')
     except AlgorithmDialogBase.InvalidParameterValue as e:
         try:
             self.buttonBox.accepted.connect(lambda:
                                             e.widget.setPalette(QPalette()))
             palette = e.widget.palette()
             palette.setColor(QPalette.Base, QColor(255, 255, 0))
             e.widget.setPalette(palette)
             self.lblProgress.setText(
                 self.tr('<b>Missing parameter value: %s</b>') % e.parameter.description)
             return
         except:
             QMessageBox.critical(self,
                                  self.tr('Unable to execute algorithm'),
                                  self.tr('Wrong or missing parameter values'))
     self.close()
コード例 #4
0
    def execute(self):
        settings = QSettings()
        lastDir = settings.value('Processing/lastModelsDir', '')
        filename, selected_filter = QFileDialog.getOpenFileName(self.toolbox,
                                                                self.tr('Open model', 'AddModelFromFileAction'), lastDir,
                                                                self.tr('Processing model files (*.model *.MODEL)', 'AddModelFromFileAction'))
        if filename:
            try:
                settings.setValue('Processing/lastModelsDir',
                                  QFileInfo(filename).absoluteDir().absolutePath())

                ModelerAlgorithm.fromFile(filename)
            except WrongModelException:
                QMessageBox.warning(
                    self.toolbox,
                    self.tr('Error reading model', 'AddModelFromFileAction'),
                    self.tr('The selected file does not contain a valid model', 'AddModelFromFileAction'))
                return
            except:
                QMessageBox.warning(self.toolbox,
                                    self.tr('Error reading model', 'AddModelFromFileAction'),
                                    self.tr('Cannot read file', 'AddModelFromFileAction'))
                return
            destFilename = os.path.join(ModelerUtils.modelsFolders()[0], os.path.basename(filename))
            shutil.copyfile(filename, destFilename)
            algList.reloadProvider('model')
コード例 #5
0
 def accept(self):
     try:
         self.setParamValues()
         msg = self.alg._checkParameterValuesBeforeExecuting()
         if msg:
             QMessageBox.warning(
                 self, self.tr('Unable to execute algorithm'), msg)
             return
         description = algAsDict(self.alg)
         description["name"] = self.settingsPanel.txtName.text().strip()
         description["group"] = self.settingsPanel.txtGroup.text().strip()
         if not (description["name"] and description["group"]):
             self.tabWidget.setCurrentIndex(self.tabWidget.count() - 1)
             return
         validChars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:'
         filename = ''.join(c for c in description["name"] if c in validChars).lower() + ".json"
         filepath = os.path.join(preconfiguredAlgorithmsFolder(), filename)
         with open(filepath, "w") as f:
             json.dump(description, f)
         algList.reloadProvider('preconfigured')
     except AlgorithmDialogBase.InvalidParameterValue as e:
         try:
             self.buttonBox.accepted.connect(lambda: e.widget.setPalette(QPalette()))
             palette = e.widget.palette()
             palette.setColor(QPalette.Base, QColor(255, 255, 0))
             e.widget.setPalette(palette)
             self.parent.bar.pushMessage("", self.tr('Missing parameter value: {0}').format(
                                         e.parameter.description),
                                         level=QgsMessageBar.WARNING, duration=5)
             return
         except:
             QMessageBox.critical(self,
                                  self.tr('Unable to execute algorithm'),
                                  self.tr('Wrong or missing parameter values'))
     self.close()
コード例 #6
0
 def execute(self):
     settings = QSettings()
     lastDir = settings.value('Processing/lastScriptsDir', '')
     filenames, selected_filter = QFileDialog.getOpenFileNames(self.toolbox,
                                                             self.tr('Script files', 'AddScriptFromFileAction'), lastDir,
                                                             self.tr('Script files (*.py *.PY)', 'AddScriptFromFileAction'))
     if filenames:
         validAlgs = 0
         wrongAlgs = []
         for filename in filenames:
             try:
                 settings.setValue('Processing/lastScriptsDir',
                                   QFileInfo(filename).absoluteDir().absolutePath())
                 script = ScriptAlgorithm(filename)
                 destFilename = os.path.join(ScriptUtils.scriptsFolders()[0], os.path.basename(filename))
                 with open(destFilename, 'w') as f:
                     f.write(script.script)
                 validAlgs += 1
             except WrongScriptException:
                 wrongAlgs.append(os.path.basename(filename))
         if validAlgs:
             algList.reloadProvider('script')
         if wrongAlgs:
             QMessageBox.warning(self.toolbox,
                                     self.tr('Error reading scripts', 'AddScriptFromFileAction'),
                                     self.tr('The following files do not contain a valid script:\n-', 'AddScriptFromFileAction')
                                     + "\n-".join(wrongAlgs))
コード例 #7
0
 def execute(self):
     settings = QSettings()
     lastDir = settings.value('Processing/lastScriptsDir', '')
     filename, selected_filter = QFileDialog.getOpenFileName(
         self.toolbox, self.tr('Script files', 'AddScriptFromFileAction'),
         lastDir,
         self.tr('Script files (*.py *.PY)', 'AddScriptFromFileAction'))
     if filename:
         try:
             settings.setValue(
                 'Processing/lastScriptsDir',
                 QFileInfo(filename).absoluteDir().absolutePath())
             script = ScriptAlgorithm(filename)
         except WrongScriptException:
             QMessageBox.warning(
                 self.toolbox,
                 self.tr('Error reading script', 'AddScriptFromFileAction'),
                 self.tr(
                     'The selected file does not contain a valid script',
                     'AddScriptFromFileAction'))
             return
         destFilename = os.path.join(ScriptUtils.scriptsFolders()[0],
                                     os.path.basename(filename))
         with open(destFilename, 'w') as f:
             f.write(script.script)
         algList.reloadProvider('script')
コード例 #8
0
 def refresh_script_provider(self):
     """Refresh the processing script provider."""
     if qgis_version() < 21600:
         from processing.core.Processing import Processing
         Processing.updateAlgsList()
     else:
         from processing.core.alglist import algList
         algList.reloadProvider('script')
コード例 #9
0
ファイル: EditScriptAction.py プロジェクト: 3liz/Quantum-GIS
 def execute(self):
     dlg = ScriptEditorDialog(self.scriptType, self.itemData)
     dlg.show()
     dlg.exec_()
     if dlg.update:
         if self.scriptType == ScriptEditorDialog.SCRIPT_PYTHON:
             algList.reloadProvider('script')
         elif self.scriptType == ScriptEditorDialog.SCRIPT_R:
             algList.reloadProvider('r')
コード例 #10
0
ファイル: EditScriptAction.py プロジェクト: AndiJay/QGIS
 def execute(self):
     dlg = ScriptEditorDialog(self.scriptType, self.itemData)
     dlg.show()
     dlg.exec_()
     if dlg.update:
         if self.scriptType == ScriptEditorDialog.SCRIPT_PYTHON:
             algList.reloadProvider('script')
         elif self.scriptType == ScriptEditorDialog.SCRIPT_R:
             algList.reloadProvider('r')
コード例 #11
0
 def execute(self):
     reply = QMessageBox.question(
         None, self.tr('Confirmation', 'DeleteModelAction'),
         self.tr('Are you sure you want to delete this model?',
                 'DeleteModelAction'), QMessageBox.Yes | QMessageBox.No,
         QMessageBox.No)
     if reply == QMessageBox.Yes:
         os.remove(self.itemData.descriptionFile)
         algList.reloadProvider('model')
コード例 #12
0
 def execute(self):
     reply = QMessageBox.question(
         None,
         self.tr('Confirmation', 'DeleteModelAction'),
         self.tr('Are you sure you want to delete this model?', 'DeleteModelAction'),
         QMessageBox.Yes | QMessageBox.No,
         QMessageBox.No)
     if reply == QMessageBox.Yes:
         os.remove(self.itemData.descriptionFile)
         algList.reloadProvider('model')
コード例 #13
0
 def execute(self):
     repoUrl = ProcessingConfig.getSetting(ProcessingConfig.MODELS_SCRIPTS_REPO)
     if repoUrl is None or repoUrl == '':
         QMessageBox.warning(None,
                             self.tr('Repository error'),
                             self.tr('Scripts and models repository is not configured.'))
         return
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.SCRIPTS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('script')
コード例 #14
0
 def execute(self):
     repoUrl = ProcessingConfig.getSetting(ProcessingConfig.MODELS_SCRIPTS_REPO)
     if repoUrl is None or repoUrl == '':
         QMessageBox.warning(None,
                             self.tr('Repository error'),
                             self.tr('Scripts and models repository is not configured.'))
         return
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.SCRIPTS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('script')
コード例 #15
0
 def execute(self):
     dlg = GPFModelerDialog(self.gpfAlgorithmProvider)
     dlg.exec_()
     if dlg.update:
         try:
             # QGIS 2.16 (and up?) Processing implementation
             from processing.core.alglist import algList
             algList.reloadProvider(self.gpfAlgorithmProvider.getName())
         except ImportError:
             # QGIS 2.14 Processing implementation
             self.toolbox.updateProvider(self.gpfAlgorithmProvider.getName())
コード例 #16
0
 def execute(self):
     reply = QMessageBox.question(
         None,
         self.tr("Confirmation", "DeletePreconfiguredAlgorithmAction"),
         self.tr("Are you sure you want to delete this algorithm?", "DeletePreconfiguredAlgorithmAction"),
         QMessageBox.Yes | QMessageBox.No,
         QMessageBox.No,
     )
     if reply == QMessageBox.Yes:
         os.remove(self.itemData.descriptionFile)
         algList.reloadProvider("preconfigured")
コード例 #17
0
 def execute(self):
     dlg = None
     if self.scriptType == self.SCRIPT_PYTHON:
         dlg = ScriptEditorDialog(ScriptEditorDialog.SCRIPT_PYTHON, None)
     if self.scriptType == self.SCRIPT_R:
         dlg = ScriptEditorDialog(ScriptEditorDialog.SCRIPT_R, None)
     dlg.show()
     if dlg.update:
         if self.scriptType == self.SCRIPT_PYTHON:
             algList.reloadProvider('script')
         elif self.scriptType == self.SCRIPT_R:
             algList.reloadProvider('r')
コード例 #18
0
 def execute(self):
     reply = QMessageBox.question(
         None, self.tr('Confirmation', 'DeleteScriptAction'),
         self.tr('Are you sure you want to delete this script?',
                 'DeleteScriptAction'), QMessageBox.Yes | QMessageBox.No,
         QMessageBox.No)
     if reply == QMessageBox.Yes:
         os.remove(self.itemData.descriptionFile)
         if self.scriptType == self.SCRIPT_PYTHON:
             algList.reloadProvider('script')
         elif self.scriptType == self.SCRIPT_R:
             algList.reloadProvider('r')
コード例 #19
0
 def execute(self):
     dlg = None
     if self.scriptType == self.SCRIPT_PYTHON:
         dlg = ScriptEditorDialog(ScriptEditorDialog.SCRIPT_PYTHON, None)
     if self.scriptType == self.SCRIPT_R:
         dlg = ScriptEditorDialog(ScriptEditorDialog.SCRIPT_R, None)
     dlg.show()
     if dlg.update:
         if self.scriptType == self.SCRIPT_PYTHON:
             algList.reloadProvider('script')
         elif self.scriptType == self.SCRIPT_R:
             algList.reloadProvider('r')
コード例 #20
0
 def execute(self):
     reply = QMessageBox.question(None,
                                  self.tr('Confirmation', 'DeleteScriptAction'),
                                  self.tr('Are you sure you want to delete this script?',
                                          'DeleteScriptAction'),
                                  QMessageBox.Yes | QMessageBox.No,
                                  QMessageBox.No)
     if reply == QMessageBox.Yes:
         os.remove(self.itemData.descriptionFile)
         if self.scriptType == self.SCRIPT_PYTHON:
             algList.reloadProvider('script')
         elif self.scriptType == self.SCRIPT_R:
             algList.reloadProvider('r')
コード例 #21
0
 def execute(self):
     reply = QMessageBox.question(
         None, self.tr('Confirmation', 'DeleteGpfModelAction'),
         self.tr('Are you sure you want to delete this graph?',
                 'DeleteGpfModelAction'), QMessageBox.Yes | QMessageBox.No,
         QMessageBox.No)
     if reply == QMessageBox.Yes:
         os.remove(self.alg.descriptionFile)
         try:
             # QGIS 2.16 (and up?) Processing implementation
             from processing.core.alglist import algList
             algList.reloadProvider(self.alg.provider.getName())
         except ImportError:
             # QGIS 2.14 Processing implementation
             self.toolbox.updateProvider(self.alg.provider.getName())
コード例 #22
0
 def execute(self):
     settings = QSettings()
     lastDir = settings.value('Processing/lastScriptsDir', '')
     filename, selected_filter = QFileDialog.getOpenFileName(self.toolbox,
                                                             self.tr('Script files', 'AddScriptFromFileAction'), lastDir,
                                                             self.tr('Script files (*.py *.PY)', 'AddScriptFromFileAction'))
     if filename:
         try:
             settings.setValue('Processing/lastScriptsDir',
                               QFileInfo(filename).absoluteDir().absolutePath())
             script = ScriptAlgorithm(filename)
         except WrongScriptException:
             QMessageBox.warning(self.toolbox,
                                 self.tr('Error reading script', 'AddScriptFromFileAction'),
                                 self.tr('The selected file does not contain a valid script', 'AddScriptFromFileAction'))
             return
         destFilename = os.path.join(ScriptUtils.scriptsFolders()[0], os.path.basename(filename))
         with open(destFilename, 'w') as f:
             f.write(script.script)
         algList.reloadProvider('script')
コード例 #23
0
 def openModeler(self):
     dlg = ModelerDialog()
     dlg.exec_()
     if dlg.update:
         algList.reloadProvider('model')
コード例 #24
0
ファイル: EditModelAction.py プロジェクト: lidapeng/QGIS
 def execute(self):
     dlg = ModelerDialog(self.itemData.getCopy())
     dlg.exec_()
     if dlg.update:
         algList.reloadProvider('model')
コード例 #25
0
 def reloadProvider(provider_id):
     algList.reloadProvider(provider_id)
コード例 #26
0
ファイル: ProcessingPlugin.py プロジェクト: drnextgis/QGIS
 def updateModel(self):
     algList.reloadProvider('model')
コード例 #27
0
if not test_layer.isValid():
    raise ImportError("Reference Layer failed to load!")

# QGIS 2.14 has ScriptUtils.scriptsFolder()
if QGis.QGIS_VERSION_INT < 21800:
    copy(file_path, ScriptUtils.scriptsFolder())
# QGIS 2.18 has ScriptUtils.scriptsFolders()
elif QGis.QGIS_VERSION_INT >= 21800:
    copy(file_path, ScriptUtils.scriptsFolders()[0])
plugins["processing"].toolbox.updateProvider("script")

Processing.initialize()

# QGIS 2.14 has Processing.updateAlgsList()
if QGis.QGIS_VERSION_INT < 21800:
    Processing.updateAlgsList()
# QGIS 2.18 has algList.reloadProvider(("script")
elif QGis.QGIS_VERSION_INT >= 21800:
    from processing.core.alglist import algList
    algList.reloadProvider("script")

result = runalg("script:addareacolumn", test_layer, None)

output_layer = processing.getObject(result["BQ31_Updated"])


class AddAreaColumnTest(unittest.TestCase):
    def test_valid_output(self):
        """Ensure that an output layer has been created with expected rows."""
        self.assertEqual(output_layer.featureCount(), 1)
コード例 #28
0
ファイル: CreateNewModelAction.py プロジェクト: aacom007/QGIS
 def updateModel(self):
     algList.reloadProvider('model')
コード例 #29
0
ファイル: ScriptEditorDialog.py プロジェクト: ashokdahal/QGIS
 def updateProviders(self):
     if self.update:
         if self.algType == self.SCRIPT_PYTHON:
             algList.reloadProvider('script')
         elif self.algType == self.SCRIPT_R:
             algList.reloadProvider('r')
コード例 #30
0
 def execute(self):
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.MODELS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('model')
コード例 #31
0
ファイル: EditModelAction.py プロジェクト: bjaraujo/QGIS
 def execute(self):
     dlg = ModelerDialog(self.itemData.getCopy())
     dlg.exec_()
     if dlg.update:
         algList.reloadProvider('model')
コード例 #32
0
ファイル: GetScriptsAndModels.py プロジェクト: kermeat/QGIS
 def execute(self):
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.MODELS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('model')
コード例 #33
0
ファイル: GetScriptsAndModels.py プロジェクト: kermeat/QGIS
 def execute(self):
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.SCRIPTS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('script')
コード例 #34
0
 def openModeler(self):
     dlg = ModelerDialog()
     dlg.exec_()
     if dlg.update:
         algList.reloadProvider('model')
コード例 #35
0
ファイル: Processing.py プロジェクト: rldhont/Quantum-GIS
 def reloadProvider(providerName):
     algList.reloadProvider(providerName)
コード例 #36
0
 def execute(self):
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.SCRIPTS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('script')
コード例 #37
0
 def reloadProvider(providerName):
     algList.reloadProvider(providerName)
コード例 #38
0
 def reloadProvider(provider_id):
     algList.reloadProvider(provider_id)