Exemplo n.º 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')
Exemplo n.º 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))
 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()
Exemplo n.º 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')
Exemplo n.º 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()
Exemplo n.º 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))
Exemplo n.º 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')
Exemplo n.º 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')
Exemplo n.º 9
0
 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')
Exemplo n.º 10
0
 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')
Exemplo n.º 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')
Exemplo n.º 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')
Exemplo n.º 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')
Exemplo n.º 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')
Exemplo n.º 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())
Exemplo n.º 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")
Exemplo n.º 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')
Exemplo n.º 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')
Exemplo n.º 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')
Exemplo n.º 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')
Exemplo n.º 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())
Exemplo n.º 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')
Exemplo n.º 23
0
 def openModeler(self):
     dlg = ModelerDialog()
     dlg.exec_()
     if dlg.update:
         algList.reloadProvider('model')
Exemplo n.º 24
0
 def execute(self):
     dlg = ModelerDialog(self.itemData.getCopy())
     dlg.exec_()
     if dlg.update:
         algList.reloadProvider('model')
Exemplo n.º 25
0
 def reloadProvider(provider_id):
     algList.reloadProvider(provider_id)
Exemplo n.º 26
0
 def updateModel(self):
     algList.reloadProvider('model')
Exemplo n.º 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)
Exemplo n.º 28
0
 def updateModel(self):
     algList.reloadProvider('model')
Exemplo n.º 29
0
 def updateProviders(self):
     if self.update:
         if self.algType == self.SCRIPT_PYTHON:
             algList.reloadProvider('script')
         elif self.algType == self.SCRIPT_R:
             algList.reloadProvider('r')
Exemplo n.º 30
0
 def execute(self):
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.MODELS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('model')
Exemplo n.º 31
0
 def execute(self):
     dlg = ModelerDialog(self.itemData.getCopy())
     dlg.exec_()
     if dlg.update:
         algList.reloadProvider('model')
Exemplo n.º 32
0
 def execute(self):
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.MODELS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('model')
Exemplo n.º 33
0
 def execute(self):
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.SCRIPTS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('script')
 def openModeler(self):
     dlg = ModelerDialog()
     dlg.exec_()
     if dlg.update:
         algList.reloadProvider('model')
Exemplo n.º 35
0
 def reloadProvider(providerName):
     algList.reloadProvider(providerName)
Exemplo n.º 36
0
 def execute(self):
     dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.SCRIPTS)
     dlg.exec_()
     if dlg.updateProvider:
         algList.reloadProvider('script')
Exemplo n.º 37
0
 def reloadProvider(providerName):
     algList.reloadProvider(providerName)
Exemplo n.º 38
0
 def reloadProvider(provider_id):
     algList.reloadProvider(provider_id)