7 changes: 4 additions & 3 deletions python/plugins/processing/core/GeoAlgorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
* *
***************************************************************************
"""
from processing import interface
__author__ = 'Victor Olaya'
__date__ = 'August 2012'
__copyright__ = '(C) 2012, Victor Olaya'
Expand Down Expand Up @@ -284,7 +283,7 @@ def setOutputCRS(self):
if p is not None:
self.crs = p.crs()
return
qgis = interface.iface
qgis = dataobjects.iface
self.crs = qgis.mapCanvas().mapRenderer().destinationCrs()

def checkInputCRS(self):
Expand Down Expand Up @@ -369,9 +368,11 @@ def __str__(self):

def commandLineName(self):
name = self.provider.getName().lower() + ":" + self.name.lower()
name = removeInvalidChars(name)
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:"
name = ''.join(c for c in name if c in validChars)
return name


def removeOutputFromName(self, name):
for out in self.outputs:
if out.name == name:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
* *
***************************************************************************
"""
from processing.tools.general import removeInvalidChars


__author__ = 'Victor Olaya'
Expand Down Expand Up @@ -229,7 +228,8 @@ def okPressed(self):
QMessageBox.critical(self, "Unable to define parameter", "Invalid parameter name")
return
if self.param is None:
safeName = removeInvalidChars(description)
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
safeName = ''.join(c for c in description if c in validChars)
name = self.paramType.upper().replace(" ","") + "_" + safeName.upper()
else:
name = self.param.name
Expand Down
3 changes: 2 additions & 1 deletion python/plugins/processing/saga/SagaAlgorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,8 @@ def exportRasterLayer(self, source):
filename = str(layer.name())
else:
filename = os.path.basename(source)
filename = removeInvalidChars(filename)
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:"
filename = ''.join(c for c in filename if c in validChars)
if len(filename) == 0:
filename = "layer"
destFilename = getTempFilenameInTempFolder(filename + ".sgrd")
Expand Down
3 changes: 2 additions & 1 deletion python/plugins/processing/saga/SplitRGBBands.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ def processAlgorithm(self, progress):
input = self.getParameterValue(SplitRGBBands.INPUT)
temp = getTempFilename(None).replace('.','');
basename = os.path.basename(temp)
safeBasename = removeInvalidChars(basename)
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
safeBasename = ''.join(c for c in basename if c in validChars)
temp = os.path.join(os.path.dirname(temp), safeBasename)

r = self.getOutputValue(SplitRGBBands.R)
Expand Down
28 changes: 26 additions & 2 deletions python/plugins/processing/tools/dataobjects.py
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,29 @@ def getTables():
tables.append(layer)
return tables

def extent(layers):
first = True
for layer in layers:
if not isinstance(layer, (QgsRasterLayer, QgsVectorLayer)):
layer = getObjectFromUri(layer)
if layer is None:
continue
if first:
xmin = layer.extent().xMinimum()
xmax = layer.extent().xMaximum()
ymin = layer.extent().yMinimum()
ymax = layer.extent().yMaximum()
else:
xmin = min(xmin, layer.extent().xMinimum())
xmax = max(xmax, layer.extent().xMaximum())
ymin = min(ymin, layer.extent().yMinimum())
ymax = max(ymax, layer.extent().yMaximum())
first = False
if first:
return "0,0,0,0"
else:
return str(xmin) + "," + str(xmax) + "," + str(ymin) + "," + str(ymax)


def loadList(layers):
for layer in layers:
Expand Down Expand Up @@ -219,9 +242,10 @@ def exportVectorLayer(layer):
filename = filename[:idx]

filename = str(layer.name())
filename = removeInvalidChars(filename)
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:"
filename = ''.join(c for c in filename if c in validChars)
if len(filename) == 0:
filename = "layer"
filename = "layer"
output = getTempFilenameInTempFolder(filename + ".shp")
provider = layer.dataProvider()
useSelection = ProcessingConfig.getSetting(ProcessingConfig.USE_SELECTED)
Expand Down
27 changes: 0 additions & 27 deletions python/plugins/processing/tools/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
__revision__ = '$Format:%H$'

from qgis.core import *
from processing.tools import dataobjects
from processing.core.Processing import Processing
from processing.parameters.ParameterSelection import ParameterSelection
from processing.gui.Postprocessing import Postprocessing
Expand Down Expand Up @@ -70,31 +69,5 @@ def runalg(algOrName, *args):
def runandload(name, *args):
return Processing.runAlgorithm(name, Postprocessing.handleAlgorithmResults, *args)

def extent(layers):
first = True
for layer in layers:
if not isinstance(layer, (QgsRasterLayer, QgsVectorLayer)):
layer = dataobjects.getObjectFromUri(layer)
if layer is None:
continue
if first:
xmin = layer.extent().xMinimum()
xmax = layer.extent().xMaximum()
ymin = layer.extent().yMinimum()
ymax = layer.extent().yMaximum()
else:
xmin = min(xmin, layer.extent().xMinimum())
xmax = max(xmax, layer.extent().xMaximum())
ymin = min(ymin, layer.extent().yMinimum())
ymax = max(ymax, layer.extent().yMaximum())
first = False
if first:
return "0,0,0,0"
else:
return str(xmin) + "," + str(xmax) + "," + str(ymin) + "," + str(ymax)

def removeInvalidChars(string):
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:"
string = ''.join(c for c in string if c in validChars)
return string

4 changes: 2 additions & 2 deletions python/plugins/processing/tools/help.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
* *
***************************************************************************
"""
from processing.tools.general import removeInvalidChars

__author__ = 'Victor Olaya'
__date__ = 'March 2013'
Expand All @@ -33,7 +32,8 @@ def createBaseHelpFile(alg, folder):
folder = os.path.join(folder, alg.provider.getName().lower())
mkdir(folder)
cmdLineName = alg.commandLineName()[alg.commandLineName().find(":") + 1:].lower()
safeFilename = removeInvalidChars(cmdLineName)
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
safeFilename = ''.join(c for c in cmdLineName if c in validChars)
filepath = os.path.join(folder, safeFilename + ".rst")
file = open(filepath, "w")
file.write(alg.name.upper())
Expand Down
7 changes: 6 additions & 1 deletion python/plugins/processing/tools/system.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
* *
***************************************************************************
"""
from processing.tools.general import removeInvalidChars

__author__ = 'Victor Olaya'
__date__ = 'August 2012'
Expand Down Expand Up @@ -73,6 +72,12 @@ def getTempFilenameInTempFolder(basename):
filename = os.path.join(path, basename)
return filename

def removeInvalidChars(string):
validChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789:"
string = ''.join(c for c in string if c in validChars)
return string


NUM_EXPORTED = 1

def getNumExportedLayers():
Expand Down