Skip to content

Commit 5c9cb5a

Browse files
committed
Merge pull request #1490 from radosuav/small_processing_fixes2
[processing] Small fixes 2
2 parents 09645e4 + 2982b57 commit 5c9cb5a

File tree

5 files changed

+34
-22
lines changed

5 files changed

+34
-22
lines changed

python/plugins/processing/algs/gdal/GdalUtils.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def getFormatShortNameFromFilename(filename):
138138
def escapeAndJoin(strList):
139139
joined = ''
140140
for s in strList:
141-
if ' ' in s:
141+
if s[0]!='-' and ' ' in s:
142142
escaped = '"' + s.replace('\\', '\\\\').replace('"', '\\"') \
143143
+ '"'
144144
else:

python/plugins/processing/core/GeoAlgorithm.py

+2-9
Original file line numberDiff line numberDiff line change
@@ -361,17 +361,10 @@ def setOutputCRS(self):
361361
if layer.source() == inputlayer:
362362
self.crs = layer.crs()
363363
return
364-
if isinstance(param, ParameterRaster) \
365-
or isinstance(param, ParameterMultipleInput) \
366-
and param.datatype \
367-
== ParameterMultipleInput.TYPE_RASTER:
368-
p = QgsProviderRegistry.instance().provider('gdal',
369-
inputlayer)
370-
else:
371-
p = QgsProviderRegistry.instance().provider('ogr',
372-
inputlayer)
364+
p = dataobjects.getObjectFromUri(inputlayer)
373365
if p is not None:
374366
self.crs = p.crs()
367+
p = None
375368
return
376369
try:
377370
from qgis.utils import iface

python/plugins/processing/core/Processing.py

+26-11
Original file line numberDiff line numberDiff line change
@@ -286,24 +286,39 @@ def runAlgorithm(algOrName, onFinish, *args):
286286
if alg is None:
287287
print 'Error: Algorithm not found\n'
288288
return
289-
if len(args) != alg.getVisibleParametersCount() \
290-
+ alg.getVisibleOutputsCount():
291-
print 'Error: Wrong number of parameters'
292-
processing.alghelp(algOrName)
293-
return
294-
295289
alg = alg.getCopy()
296-
if isinstance(args, dict):
297-
# Set params by name
298-
for (name, value) in args.items():
299-
if alg.getParameterFromName(name).setValue(value):
290+
291+
if len(args) == 1 and isinstance(args[0], dict):
292+
# Set params by name and try to run the alg even if not all parameter values are provided,
293+
# by using the default values instead.
294+
setParams = []
295+
for (name, value) in args[0].items():
296+
param = alg.getParameterFromName(name)
297+
if param and param.setValue(value):
298+
setParams.append(name)
300299
continue
301-
if alg.getOutputFromName(name).setValue(value):
300+
output = alg.getOutputFromName(name)
301+
if output and output.setValue(value):
302302
continue
303303
print 'Error: Wrong parameter value %s for parameter %s.' \
304304
% (value, name)
305+
ProcessingLog.addToLog(ProcessingLog.LOG_ERROR, "Error in %s. Wrong parameter value %s for parameter %s." \
306+
% (alg.name, value, name))
305307
return
308+
# fill any missing parameters with default values if allowed
309+
for param in alg.parameters:
310+
if param.name not in setParams:
311+
if not param.setValue(None):
312+
print ("Error: Missing parameter value for parameter %s." % (param.name))
313+
ProcessingLog.addToLog(ProcessingLog.LOG_ERROR, "Error in %s. Missing parameter value for parameter %s." \
314+
% (alg.name, param.name))
315+
return
306316
else:
317+
if len(args) != alg.getVisibleParametersCount() \
318+
+ alg.getVisibleOutputsCount():
319+
print 'Error: Wrong number of parameters'
320+
processing.alghelp(algOrName)
321+
return
307322
i = 0
308323
for param in alg.parameters:
309324
if not param.hidden:

python/plugins/processing/gui/InputLayerSelectorPanel.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ def showSelectionDialog(self):
6363
path = ''
6464

6565
filename = QtGui.QFileDialog.getOpenFileName(self, self.param.description, path,
66-
self.param.getFileFilter())
66+
'All files(*.*);;' + self.param.getFileFilter())
6767
if filename:
6868
self.text.addItem(filename, filename)
6969
self.text.setCurrentIndex(self.text.count() - 1)

python/plugins/processing/gui/ProcessingToolbox.py

+4
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,10 @@ def updateProvider(self, providerName, updateAlgsList = True):
123123
if isinstance(child, TreeProviderItem):
124124
if child.providerName == providerName:
125125
child.refresh()
126+
# sort categories and items in categories
127+
child.sortChildren(0, Qt.AscendingOrder)
128+
for i in xrange(child.childCount()):
129+
child.child(i).sortChildren(0, Qt.AscendingOrder)
126130
break
127131

128132
def showPopupMenu(self, point):

0 commit comments

Comments
 (0)