Skip to content

Commit e5f52f9

Browse files
committedOct 23, 2018
[processing] Use outputi database layer name instead of file name when
'use filename as layer name' is checked Avoids raw uri layer names for database type destinations
1 parent a093dd7 commit e5f52f9

File tree

1 file changed

+25
-3
lines changed

1 file changed

+25
-3
lines changed
 

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

Lines changed: 25 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,41 @@
3636
QgsProcessingUtils,
3737
QgsMapLayer,
3838
QgsWkbTypes,
39-
QgsMessageLog)
39+
QgsMessageLog,
40+
QgsProviderRegistry)
4041

4142
from processing.core.ProcessingConfig import ProcessingConfig
4243
from processing.gui.RenderingStyles import RenderingStyles
4344

4445

46+
def set_layer_name(layer, context_layer_details):
47+
"""
48+
Sets the name for the given layer, either using the layer's file name
49+
(or database layer name), or the name specified by the parameter definition.
50+
"""
51+
use_filename_as_layer_name = ProcessingConfig.getSetting(ProcessingConfig.USE_FILENAME_AS_LAYER_NAME)
52+
53+
if use_filename_as_layer_name or not context_layer_details.name:
54+
source_parts = QgsProviderRegistry.instance().decodeUri(layer.dataProvider().name(), layer.source())
55+
layer_name = source_parts.get('layerName', '')
56+
# if source layer name exists, use that -- else use
57+
if layer_name:
58+
layer.setName(layer_name)
59+
else:
60+
path = source_parts.get('path', '')
61+
if path:
62+
layer.setName(os.path.splitext(os.path.basename(path))[0])
63+
else:
64+
layer.setName(context_layer_details.name)
65+
66+
4567
def handleAlgorithmResults(alg, context, feedback=None, showResults=True):
4668
wrongLayers = []
4769
if feedback is None:
4870
feedback = QgsProcessingFeedback()
4971
feedback.setProgressText(QCoreApplication.translate('Postprocessing', 'Loading resulting layers'))
5072
i = 0
73+
5174
for l, details in context.layersToLoadOnCompletion().items():
5275
if feedback.isCanceled():
5376
return False
@@ -59,8 +82,7 @@ def handleAlgorithmResults(alg, context, feedback=None, showResults=True):
5982
try:
6083
layer = QgsProcessingUtils.mapLayerFromString(l, context, typeHint=details.layerTypeHint)
6184
if layer is not None:
62-
if not ProcessingConfig.getSetting(ProcessingConfig.USE_FILENAME_AS_LAYER_NAME):
63-
layer.setName(details.name)
85+
set_layer_name(layer, details)
6486

6587
style = None
6688
if details.outputName:

0 commit comments

Comments
 (0)
Please sign in to comment.