36
36
QgsProcessingUtils ,
37
37
QgsMapLayer ,
38
38
QgsWkbTypes ,
39
- QgsMessageLog )
39
+ QgsMessageLog ,
40
+ QgsProviderRegistry )
40
41
41
42
from processing .core .ProcessingConfig import ProcessingConfig
42
43
from processing .gui .RenderingStyles import RenderingStyles
43
44
44
45
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
+
45
67
def handleAlgorithmResults (alg , context , feedback = None , showResults = True ):
46
68
wrongLayers = []
47
69
if feedback is None :
48
70
feedback = QgsProcessingFeedback ()
49
71
feedback .setProgressText (QCoreApplication .translate ('Postprocessing' , 'Loading resulting layers' ))
50
72
i = 0
73
+
51
74
for l , details in context .layersToLoadOnCompletion ().items ():
52
75
if feedback .isCanceled ():
53
76
return False
@@ -59,8 +82,7 @@ def handleAlgorithmResults(alg, context, feedback=None, showResults=True):
59
82
try :
60
83
layer = QgsProcessingUtils .mapLayerFromString (l , context , typeHint = details .layerTypeHint )
61
84
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 )
64
86
65
87
style = None
66
88
if details .outputName :
0 commit comments