diff --git a/python/plugins/processing/modeler/AddModelFromFileAction.py b/python/plugins/processing/modeler/AddModelFromFileAction.py new file mode 100644 index 00000000000..7a41798f19e --- /dev/null +++ b/python/plugins/processing/modeler/AddModelFromFileAction.py @@ -0,0 +1,57 @@ +# -*- coding: utf-8 -*- + +""" +*************************************************************************** + EditScriptAction.py + --------------------- + Date : August 2012 + Copyright : (C) 2012 by Victor Olaya + Email : volayaf at gmail dot com +*************************************************************************** +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +*************************************************************************** +""" + +__author__ = 'Victor Olaya' +__date__ = 'April 2014' +__copyright__ = '(C) 201, Victor Olaya' + +# This will get replaced with a git SHA1 when you do a git archive + +__revision__ = '$Format:%H$' + +import os +import shutil +from PyQt4 import QtGui +from processing.gui.ToolboxAction import ToolboxAction +from processing.modeler.ModelerAlgorithm import ModelerAlgorithm +from processing.modeler.WrongModelException import WrongModelException +from processing.modeler.ModelerUtils import ModelerUtils + +class AddModelFromFileAction(ToolboxAction): + + def __init__(self): + self.name = "Add model from file" + self.group = 'Tools' + + def getIcon(self): + return QtGui.QIcon(os.path.dirname(__file__) + '/../images/model.png') + + def execute(self): + filename = QtGui.QFileDialog.getOpenFileName(self.toolbox, 'model files', None, + '*.model') + if filename: + try: + model = ModelerAlgorithm() + model.openModel(filename) + except WrongModelException: + QtGui.QMessageBox.warning(self.toolbox, "Error reading model", "The selected file does not contain a valid model") + return + destFilename = os.path.join(ModelerUtils.modelsFolder(), os.path.basename(filename)) + shutil.copyfile(filename,destFilename) + self.toolbox.updateProvider('script') \ No newline at end of file diff --git a/python/plugins/processing/modeler/ModelerAlgorithmProvider.py b/python/plugins/processing/modeler/ModelerAlgorithmProvider.py index 7f10e6f713d..2b092f0e563 100644 --- a/python/plugins/processing/modeler/ModelerAlgorithmProvider.py +++ b/python/plugins/processing/modeler/ModelerAlgorithmProvider.py @@ -31,8 +31,6 @@ from PyQt4.QtGui import * from processing.core.AlgorithmProvider import AlgorithmProvider from processing.core.ProcessingConfig import ProcessingConfig, Setting from processing.core.ProcessingLog import ProcessingLog -from processing.modeler.CreateNewModelAction import \ - CreateNewModelAction from processing.modeler.SaveAsPythonScriptAction import \ SaveAsPythonScriptAction from processing.modeler.ModelerUtils import ModelerUtils @@ -41,13 +39,14 @@ from processing.modeler.WrongModelException import WrongModelException from processing.modeler.EditModelAction import EditModelAction from processing.modeler.CreateNewModelAction import CreateNewModelAction from processing.modeler.DeleteModelAction import DeleteModelAction +from processing.modeler.AddModelFromFileAction import AddModelFromFileAction class ModelerAlgorithmProvider(AlgorithmProvider): def __init__(self): AlgorithmProvider.__init__(self) - self.actions = [CreateNewModelAction()] + self.actions = [CreateNewModelAction(), AddModelFromFileAction()] self.contextMenuActions = [EditModelAction(), DeleteModelAction(), SaveAsPythonScriptAction()] diff --git a/python/plugins/processing/script/AddScriptFromFileAction.py b/python/plugins/processing/script/AddScriptFromFileAction.py new file mode 100644 index 00000000000..a7d1a25fa59 --- /dev/null +++ b/python/plugins/processing/script/AddScriptFromFileAction.py @@ -0,0 +1,56 @@ +# -*- coding: utf-8 -*- + +""" +*************************************************************************** + EditScriptAction.py + --------------------- + Date : August 2012 + Copyright : (C) 2012 by Victor Olaya + Email : volayaf at gmail dot com +*************************************************************************** +* * +* This program is free software; you can redistribute it and/or modify * +* it under the terms of the GNU General Public License as published by * +* the Free Software Foundation; either version 2 of the License, or * +* (at your option) any later version. * +* * +*************************************************************************** +""" + +__author__ = 'Victor Olaya' +__date__ = 'April 2014' +__copyright__ = '(C) 201, Victor Olaya' + +# This will get replaced with a git SHA1 when you do a git archive + +__revision__ = '$Format:%H$' + +import os +from PyQt4 import QtGui +from processing.script.ScriptAlgorithm import ScriptAlgorithm +from processing.gui.ToolboxAction import ToolboxAction +from processing.script.WrongScriptException import WrongScriptException +from processing.script.ScriptUtils import ScriptUtils + +class AddScriptFromFileAction(ToolboxAction): + + def __init__(self): + self.name = "Add script from file" + self.group = 'Tools' + + def getIcon(self): + return QtGui.QIcon(':/processing/images/script.png') + + def execute(self): + filename = QtGui.QFileDialog.getOpenFileName(self.toolbox, 'Script files', None, + '*.py') + if filename: + try: + script = ScriptAlgorithm(filename) + except WrongScriptException: + QtGui.QMessageBox.warning(self.toolbox, "Error reading script", "The selected file does not contain a valid script") + return + destFilename = os.path.join(ScriptUtils.scriptsFolder(), os.path.basename(filename)) + with open(destFilename) as f: + f.write(script.script) + self.toolbox.updateProvider('script') \ No newline at end of file diff --git a/python/plugins/processing/script/ScriptAlgorithmProvider.py b/python/plugins/processing/script/ScriptAlgorithmProvider.py index be48faf8675..d259696899b 100644 --- a/python/plugins/processing/script/ScriptAlgorithmProvider.py +++ b/python/plugins/processing/script/ScriptAlgorithmProvider.py @@ -37,6 +37,8 @@ from processing.gui.CreateNewScriptAction import CreateNewScriptAction from processing.script.ScriptAlgorithm import ScriptAlgorithm from processing.script.ScriptUtils import ScriptUtils from processing.script.WrongScriptException import WrongScriptException +from processing.script.AddScriptFromFileAction import AddScriptFromFileAction + import processing.resources_rc @@ -44,8 +46,9 @@ class ScriptAlgorithmProvider(AlgorithmProvider): def __init__(self): AlgorithmProvider.__init__(self) - self.actions.append(CreateNewScriptAction('Create new script', - CreateNewScriptAction.SCRIPT_PYTHON)) + self.actions.extend([CreateNewScriptAction('Create new script', + CreateNewScriptAction.SCRIPT_PYTHON), + AddScriptFromFileAction()]) self.contextMenuActions = \ [EditScriptAction(EditScriptAction.SCRIPT_PYTHON), DeleteScriptAction(DeleteScriptAction.SCRIPT_PYTHON)]