Skip to content

Commit b1e7ede

Browse files
committedOct 18, 2014
[processing] more robust layer sorting in multiple selection widget (fixes #11429)
1 parent 99cec14 commit b1e7ede

File tree

2 files changed

+19
-16
lines changed

2 files changed

+19
-16
lines changed
 

‎python/plugins/processing/gui/AlgorithmExecutionDialog.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,9 @@ def setParamValue(self, param, widget):
175175
return param.setValue(widget.selectedoptions)
176176
else:
177177
if param.datatype == ParameterMultipleInput.TYPE_VECTOR_ANY:
178-
options = dataobjects.getVectorLayers()
178+
options = dataobjects.getVectorLayers(sorting=False)
179179
else:
180-
options = dataobjects.getRasterLayers()
180+
options = dataobjects.getRasterLayers(sorting=False)
181181
return param.setValue([options[i] for i in widget.selectedoptions])
182182
elif isinstance(param, (ParameterNumber, ParameterFile, ParameterCrs,
183183
ParameterExtent)):

‎python/plugins/processing/tools/dataobjects.py

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -69,28 +69,30 @@ def getSupportedOutputTableExtensions():
6969

7070

7171
def getRasterLayers(sorting=True):
72-
layers = QgsMapLayerRegistry.instance().mapLayers().values()
72+
layers = QgsProject.instance().layerTreeRoot().findLayers()
7373
raster = []
7474

7575
for layer in layers:
76-
if layer.type() == layer.RasterLayer:
77-
if layer.providerType() == 'gdal': # only gdal file-based layers
78-
raster.append(layer)
76+
mapLayer = layer.layer()
77+
if mapLayer.type() == QgsMapLayer.RasterLayer:
78+
if mapLayer.providerType() == 'gdal': # only gdal file-based layers
79+
raster.append(mapLayer)
7980
if sorting:
8081
return sorted(raster, key=lambda layer: layer.name().lower())
8182
else:
8283
return raster
8384

8485

8586
def getVectorLayers(shapetype=[-1], sorting=True):
86-
layers = QgsMapLayerRegistry.instance().mapLayers().values()
87+
layers = QgsProject.instance().layerTreeRoot().findLayers()
8788
vector = []
8889
for layer in layers:
89-
if layer.type() == layer.VectorLayer:
90-
if shapetype == ALL_TYPES or layer.geometryType() in shapetype:
91-
uri = unicode(layer.source())
90+
mapLayer = layer.layer()
91+
if mapLayer.type() == QgsMapLayer.VectorLayer:
92+
if shapetype == ALL_TYPES or mapLayer.geometryType() in shapetype:
93+
uri = unicode(mapLayer.source())
9294
if not uri.lower().endswith('csv') and not uri.lower().endswith('dbf'):
93-
vector.append(layer)
95+
vector.append(mapLayer)
9496
if sorting:
9597
return sorted(vector, key=lambda layer: layer.name().lower())
9698
else:
@@ -105,11 +107,12 @@ def getAllLayers():
105107

106108

107109
def getTables(sorting=True):
108-
layers = QgsMapLayerRegistry.instance().mapLayers().values()
109-
tables = list()
110+
layers = QgsProject.instance().layerTreeRoot().findLayers()
111+
tables = []
110112
for layer in layers:
111-
if layer.type() == layer.VectorLayer:
112-
tables.append(layer)
113+
mapLayer = layer.layer()
114+
if mapLayer.type() == QgsMapLayer.VectorLayer:
115+
tables.append(mapLayer)
113116
if sorting:
114117
return sorted(tables, key=lambda table: table.name().lower())
115118
else:
@@ -119,7 +122,7 @@ def getTables(sorting=True):
119122
def extent(layers):
120123
first = True
121124
for layer in layers:
122-
if not isinstance(layer, (QgsRasterLayer, QgsVectorLayer)):
125+
if not isinstance(layer, (QgsMapLayer.QgsRasterLayer, QgsMapLayer.QgsVectorLayer)):
123126
layer = getObjectFromUri(layer)
124127
if layer is None:
125128
continue

0 commit comments

Comments
 (0)
Please sign in to comment.