QGIS/python/plugins/processing/gui/Postprocessing.py

84 lines
3.4 KiB
Python
Raw Normal View History

2012-10-05 23:28:47 +02:00
# -*- coding: utf-8 -*-
"""
***************************************************************************
2013-08-12 20:44:27 +02:00
Postprocessing.py
2012-10-05 23:28:47 +02:00
---------------------
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__ = 'August 2012'
__copyright__ = '(C) 2012, Victor Olaya'
2012-10-05 23:28:47 +02:00
# This will get replaced with a git SHA1 when you do a git archive
2012-10-05 23:28:47 +02:00
__revision__ = '$Format:%H$'
import os
from PyQt4.QtGui import *
from qgis.core import *
from processing.core.ProcessingConfig import ProcessingConfig
from processing.gui.ResultsDialog import ResultsDialog
from processing.gui.RenderingStyles import RenderingStyles
from processing.gui.CouldNotLoadResultsDialog import CouldNotLoadResultsDialog
2013-08-12 20:44:27 +02:00
from processing.outputs.OutputRaster import OutputRaster
from processing.outputs.OutputVector import OutputVector
from processing.outputs.OutputTable import OutputTable
from processing.core.ProcessingResults import ProcessingResults
from processing.outputs.OutputHTML import OutputHTML
from processing.tools import dataobjects
2013-08-12 20:44:27 +02:00
class Postprocessing:
2012-09-15 18:25:25 +03:00
@staticmethod
def handleAlgorithmResults(alg, progress, showResults=True):
wrongLayers = []
htmlResults = False
progress.setText('Loading resulting layers')
i = 0
2012-09-15 18:25:25 +03:00
for out in alg.outputs:
progress.setPercentage(100 * i / float(len(alg.outputs)))
2012-09-15 18:25:25 +03:00
if out.hidden or not out.open:
continue
if isinstance(out, (OutputRaster, OutputVector, OutputTable)):
try:
if out.value.startswith('memory:'):
2012-09-15 18:25:25 +03:00
layer = out.memoryLayer
2012-12-24 11:48:08 +02:00
QgsMapLayerRegistry.instance().addMapLayers([layer])
2012-09-15 18:25:25 +03:00
else:
if ProcessingConfig.getSetting(
ProcessingConfig.USE_FILENAME_AS_LAYER_NAME):
2012-09-15 18:25:25 +03:00
name = os.path.basename(out.value)
else:
name = out.description
dataobjects.load(out.value, name, alg.crs,
RenderingStyles.getStyle(alg.commandLineName(),
out.name))
2012-09-15 18:25:25 +03:00
except Exception, e:
wrongLayers.append(out)
2012-09-15 18:25:25 +03:00
elif isinstance(out, OutputHTML):
2013-08-12 20:44:27 +02:00
ProcessingResults.addResult(out.description, out.value)
2012-09-15 18:25:25 +03:00
htmlResults = True
i += 1
if wrongLayers:
QApplication.restoreOverrideCursor()
dlg = CouldNotLoadResultsDialog(wrongLayers, alg)
dlg.exec_()
2013-03-31 21:18:27 +02:00
if showResults and htmlResults and not wrongLayers:
2012-09-15 18:25:25 +03:00
QApplication.restoreOverrideCursor()
dlg = ResultsDialog()
dlg.exec_()