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')
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()
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')
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()
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))
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')
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')
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')
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')
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')
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())
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")
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')
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')
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')
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())
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')
def openModeler(self): dlg = ModelerDialog() dlg.exec_() if dlg.update: algList.reloadProvider('model')
def execute(self): dlg = ModelerDialog(self.itemData.getCopy()) dlg.exec_() if dlg.update: algList.reloadProvider('model')
def reloadProvider(provider_id): algList.reloadProvider(provider_id)
def updateModel(self): algList.reloadProvider('model')
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)
def updateProviders(self): if self.update: if self.algType == self.SCRIPT_PYTHON: algList.reloadProvider('script') elif self.algType == self.SCRIPT_R: algList.reloadProvider('r')
def execute(self): dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.MODELS) dlg.exec_() if dlg.updateProvider: algList.reloadProvider('model')
def execute(self): dlg = GetScriptsAndModelsDialog(GetScriptsAndModelsDialog.SCRIPTS) dlg.exec_() if dlg.updateProvider: algList.reloadProvider('script')
def reloadProvider(providerName): algList.reloadProvider(providerName)