mirror of
https://github.com/qgis/QGIS.git
synced 2025-10-06 00:07:29 -04:00
[processing] ressurect 'add from file' action
This commit is contained in:
parent
b747a6b50c
commit
7115e044e3
@ -26,55 +26,42 @@ __copyright__ = '(C) 201, Victor Olaya'
|
|||||||
__revision__ = '$Format:%H$'
|
__revision__ = '$Format:%H$'
|
||||||
|
|
||||||
import os
|
import os
|
||||||
|
import shutil
|
||||||
|
|
||||||
from qgis.PyQt.QtWidgets import QFileDialog, QMessageBox
|
from qgis.PyQt.QtWidgets import QFileDialog
|
||||||
from qgis.PyQt.QtCore import QFileInfo
|
|
||||||
|
|
||||||
from qgis.core import QgsApplication, QgsSettings
|
from qgis.core import QgsApplication, QgsMessageLog, QgsSettings
|
||||||
|
|
||||||
from processing.gui.ToolboxAction import ToolboxAction
|
from processing.gui.ToolboxAction import ToolboxAction
|
||||||
|
|
||||||
from processing.script.ScriptAlgorithm import ScriptAlgorithm
|
|
||||||
from processing.script.WrongScriptException import WrongScriptException
|
|
||||||
from processing.script import ScriptUtils
|
from processing.script import ScriptUtils
|
||||||
|
|
||||||
pluginPath = os.path.split(os.path.dirname(__file__))[0]
|
|
||||||
|
|
||||||
|
|
||||||
class AddScriptFromFileAction(ToolboxAction):
|
class AddScriptFromFileAction(ToolboxAction):
|
||||||
|
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.name = self.tr('Add script from file')
|
self.name = self.tr("Add script from file")
|
||||||
self.group = self.tr('Tools')
|
self.group = self.tr("Tools")
|
||||||
|
|
||||||
def getIcon(self):
|
|
||||||
return QgsApplication.getThemeIcon("/processingScript.svg")
|
|
||||||
|
|
||||||
def execute(self):
|
def execute(self):
|
||||||
settings = QgsSettings()
|
settings = QgsSettings()
|
||||||
lastDir = settings.value('Processing/lastScriptsDir', '')
|
lastDir = settings.value("processing/lastScriptsDir", "")
|
||||||
filenames, selected_filter = QFileDialog.getOpenFileNames(self.toolbox,
|
files, _ = QFileDialog.getOpenFileNames(self.toolbox,
|
||||||
self.tr('Script files'),
|
self.tr("Script file"),
|
||||||
lastDir,
|
lastDir,
|
||||||
self.tr('Script files (*.py *.PY)'))
|
self.tr("Script files (*.py *.PY)"))
|
||||||
if filenames:
|
if files:
|
||||||
validAlgs = 0
|
settings.setValue("processing/lastScriptsDir", os.path.dirname(files[0]))
|
||||||
wrongAlgs = []
|
|
||||||
for filename in filenames:
|
valid = 0
|
||||||
|
for f in files:
|
||||||
try:
|
try:
|
||||||
settings.setValue('Processing/lastScriptsDir',
|
shutil.copy(f, ScriptUtils.scriptsFolders()[0])
|
||||||
QFileInfo(filename).absoluteDir().absolutePath())
|
valid += 1
|
||||||
script = ScriptAlgorithm(filename)
|
except OSError as e:
|
||||||
destFilename = os.path.join(ScriptUtils.scriptsFolders()[0], os.path.basename(filename))
|
QgsMessageLog.logMessage("Could not copy script '{}'\n{}".format(s, str(e)),
|
||||||
with open(destFilename, 'w') as f:
|
"Processing",
|
||||||
f.write(script.script)
|
QgsMessageLog.WARNING)
|
||||||
validAlgs += 1
|
|
||||||
except WrongScriptException:
|
if valid > 0:
|
||||||
wrongAlgs.append(os.path.basename(filename))
|
QgsApplication.processingRegistry().providerById("script").refreshAlgorithms()
|
||||||
if validAlgs:
|
|
||||||
QgsApplication.processingRegistry().providerById('script').refreshAlgorithms()
|
|
||||||
if wrongAlgs:
|
|
||||||
QMessageBox.warning(self.toolbox,
|
|
||||||
self.tr('Error reading scripts'),
|
|
||||||
self.tr('The following files do not contain a valid script:\n') +
|
|
||||||
"\n- ".join(wrongAlgs))
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user