[processing] added progress display in qgsMessageBar

This commit is contained in:
Victor Olaya 2013-09-12 20:07:00 +02:00
parent 3d775d6913
commit d69667b838
3 changed files with 67 additions and 7 deletions

View File

@ -16,7 +16,6 @@
* * * *
*************************************************************************** ***************************************************************************
""" """
from processing import interface
__author__ = 'Victor Olaya' __author__ = 'Victor Olaya'
__date__ = 'August 2012' __date__ = 'August 2012'
@ -28,6 +27,8 @@ import processing
from PyQt4.QtCore import * from PyQt4.QtCore import *
from PyQt4.QtGui import * from PyQt4.QtGui import *
from qgis.core import * from qgis.core import *
from processing import interface
from processing.gui.MessageBarProgress import MessageBarProgress
from processing.tools import dataobjects from processing.tools import dataobjects
from processing.core.ProcessingConfig import ProcessingConfig from processing.core.ProcessingConfig import ProcessingConfig
from processing.core.GeoAlgorithm import GeoAlgorithm from processing.core.GeoAlgorithm import GeoAlgorithm
@ -341,11 +342,13 @@ class Processing:
algEx.start() algEx.start()
algEx.wait() algEx.wait()
else: else:
progress = SilentProgress() #progress = SilentProgress()
progress = MessageBarProgress()
ret = UnthreadedAlgorithmExecutor.runalg(alg, progress) ret = UnthreadedAlgorithmExecutor.runalg(alg, progress)
if onFinish is not None and ret: if onFinish is not None and ret:
onFinish(alg, progress) onFinish(alg, progress)
QApplication.restoreOverrideCursor() QApplication.restoreOverrideCursor()
progress.close()
return alg return alg

View File

@ -0,0 +1,62 @@
# -*- coding: utf-8 -*-
"""
***************************************************************************
SilentProgress.py
---------------------
Date : April 2013
Copyright : (C) 2013 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 2013'
__copyright__ = '(C) 2013, Victor Olaya'
# This will get replaced with a git SHA1 when you do a git archive
__revision__ = '$Format:%H$'
from processing import interface
from PyQt4.QtCore import *
from PyQt4 import QtGui
class MessageBarProgress():
def __init__(self):
self.progressMessageBar = interface.iface.messageBar().createMessage("Executing algorithm")
self.progress = QtGui.QProgressBar()
self.progress.setMaximum(100)
self.progress.setAlignment(Qt.AlignLeft|Qt.AlignVCenter)
self.progressMessageBar.layout().addWidget(self.progress)
interface.iface.messageBar().pushWidget(self.progressMessageBar, interface.iface.messageBar().INFO)
def setText(self, text):
pass
def setPercentage(self, i):
self.progress.setValue(i)
def setInfo(self, _):
pass
def setCommand(self, _):
pass
def setDebugInfo(self, _):
pass
def setConsoleInfo(self, _):
pass
def close(self):
interface.iface.messageBar().clearWidgets()

View File

@ -196,7 +196,6 @@ def getObjectFromUri(uri, forceLoad = True):
These methods are used by the GeoAlgorithm class and allow the developer to use transparently These methods are used by the GeoAlgorithm class and allow the developer to use transparently
any layer that is loaded into QGIS, without having to worry about its origin''' any layer that is loaded into QGIS, without having to worry about its origin'''
@staticmethod
def exportVectorLayer(layer): def exportVectorLayer(layer):
'''Takes a QgsVectorLayer and returns the filename to refer to it, which allows external '''Takes a QgsVectorLayer and returns the filename to refer to it, which allows external
apps which support only file-based layers to use it. It performs the necessary export apps which support only file-based layers to use it. It performs the necessary export
@ -245,8 +244,6 @@ def exportVectorLayer(layer):
return unicode(layer.source()) return unicode(layer.source())
@staticmethod
def exportRasterLayer(layer): def exportRasterLayer(layer):
'''Takes a QgsRasterLayer and returns the filename to refer to it, which allows external '''Takes a QgsRasterLayer and returns the filename to refer to it, which allows external
apps which support only file-based layers to use it. It performs the necessary export apps which support only file-based layers to use it. It performs the necessary export
@ -259,8 +256,6 @@ def exportRasterLayer(layer):
#TODO:Do the conversion here #TODO:Do the conversion here
return unicode(layer.source()) return unicode(layer.source())
@staticmethod
def exportTable( table): def exportTable( table):
'''Takes a QgsVectorLayer and returns the filename to refer to its attributes table, '''Takes a QgsVectorLayer and returns the filename to refer to its attributes table,
which allows external apps which support only file-based layers to use it. which allows external apps which support only file-based layers to use it.