37
37
QgsProcessingFeedback ,
38
38
QgsSettings ,
39
39
QgsProcessingUtils ,
40
- QgsProject )
40
+ QgsMapLayerProxyModel )
41
41
from qgis .gui import QgsEncodingFileDialog
42
42
43
43
from processing .core .ProcessingConfig import ProcessingConfig
@@ -77,7 +77,8 @@ def __init__(self, alg):
77
77
self .alg = alg
78
78
self .layer = None
79
79
80
- self .cmbInputLayer .currentIndexChanged .connect (self .updateLayer )
80
+ self .cmbInputLayer .setFilters (QgsMapLayerProxyModel .VectorLayer )
81
+ self .cmbInputLayer .layerChanged .connect (self .updateLayer )
81
82
self .btnBrowse .clicked .connect (self .selectFile )
82
83
self .mNewFieldGroupBox .toggled .connect (self .toggleExistingGroup )
83
84
self .mUpdateExistingGroupBox .toggled .connect (self .toggleNewGroup )
@@ -101,17 +102,10 @@ def manageGui(self):
101
102
for t in self .alg .type_names :
102
103
self .mOutputFieldTypeComboBox .addItem (t )
103
104
self .mOutputFieldTypeComboBox .blockSignals (False )
104
-
105
- self .cmbInputLayer .blockSignals (True )
106
- layers = QgsProcessingUtils .compatibleVectorLayers (QgsProject .instance ())
107
- for layer in layers :
108
- self .cmbInputLayer .addItem (layer .name ())
109
- self .cmbInputLayer .blockSignals (False )
110
-
111
105
self .builder .loadRecent ('fieldcalc' )
112
106
113
107
self .initContext ()
114
- self .updateLayer ()
108
+ self .updateLayer (self . cmbInputLayer . currentLayer () )
115
109
116
110
def initContext (self ):
117
111
exp_context = self .builder .expressionContext ()
@@ -120,8 +114,8 @@ def initContext(self):
120
114
exp_context .setHighlightedVariables (["row_number" ])
121
115
self .builder .setExpressionContext (exp_context )
122
116
123
- def updateLayer (self ):
124
- self .layer = dataobjects . getObject ( self . cmbInputLayer . currentText ())
117
+ def updateLayer (self , layer ):
118
+ self .layer = layer
125
119
self .builder .setLayer (self .layer )
126
120
self .builder .loadFieldNames ()
127
121
self .populateFields ()
@@ -202,7 +196,7 @@ def setParamValues(self):
202
196
else :
203
197
fieldName = self .mOutputFieldNameLineEdit .text ()
204
198
205
- layer = dataobjects . getObjectFromName ( self .cmbInputLayer .currentText () )
199
+ layer = self .cmbInputLayer .currentLayer ( )
206
200
207
201
self .alg .setParameterValue ('INPUT_LAYER' , layer )
208
202
self .alg .setParameterValue ('FIELD_NAME' , fieldName )
0 commit comments