Skip to content

Commit ee29fa6

Browse files
committedApr 5, 2017
Use QgsMapLayerComboBox in processing field calculator
1 parent c2c9335 commit ee29fa6

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed
 

‎python/plugins/processing/algs/qgis/ui/DlgFieldsCalculator.ui

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@
148148
</widget>
149149
</item>
150150
<item>
151-
<widget class="QComboBox" name="cmbInputLayer">
151+
<widget class="QgsMapLayerComboBox" name="cmbInputLayer">
152152
<property name="sizePolicy">
153153
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
154154
<horstretch>0</horstretch>
@@ -224,6 +224,12 @@
224224
<header>qgis.gui</header>
225225
<container>1</container>
226226
</customwidget>
227+
<customwidget>
228+
<class>QgsMapLayerComboBox</class>
229+
<extends>QComboBox</extends>
230+
<header>qgis.gui</header>
231+
<container>0</container>
232+
</customwidget>
227233
</customwidgets>
228234
<tabstops>
229235
<tabstop>mOutputFieldNameLineEdit</tabstop>

‎python/plugins/processing/algs/qgis/ui/FieldsCalculatorDialog.py

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
QgsProcessingFeedback,
3838
QgsSettings,
3939
QgsProcessingUtils,
40-
QgsProject)
40+
QgsMapLayerProxyModel)
4141
from qgis.gui import QgsEncodingFileDialog
4242

4343
from processing.core.ProcessingConfig import ProcessingConfig
@@ -77,7 +77,8 @@ def __init__(self, alg):
7777
self.alg = alg
7878
self.layer = None
7979

80-
self.cmbInputLayer.currentIndexChanged.connect(self.updateLayer)
80+
self.cmbInputLayer.setFilters(QgsMapLayerProxyModel.VectorLayer)
81+
self.cmbInputLayer.layerChanged.connect(self.updateLayer)
8182
self.btnBrowse.clicked.connect(self.selectFile)
8283
self.mNewFieldGroupBox.toggled.connect(self.toggleExistingGroup)
8384
self.mUpdateExistingGroupBox.toggled.connect(self.toggleNewGroup)
@@ -101,17 +102,10 @@ def manageGui(self):
101102
for t in self.alg.type_names:
102103
self.mOutputFieldTypeComboBox.addItem(t)
103104
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-
111105
self.builder.loadRecent('fieldcalc')
112106

113107
self.initContext()
114-
self.updateLayer()
108+
self.updateLayer(self.cmbInputLayer.currentLayer())
115109

116110
def initContext(self):
117111
exp_context = self.builder.expressionContext()
@@ -120,8 +114,8 @@ def initContext(self):
120114
exp_context.setHighlightedVariables(["row_number"])
121115
self.builder.setExpressionContext(exp_context)
122116

123-
def updateLayer(self):
124-
self.layer = dataobjects.getObject(self.cmbInputLayer.currentText())
117+
def updateLayer(self, layer):
118+
self.layer = layer
125119
self.builder.setLayer(self.layer)
126120
self.builder.loadFieldNames()
127121
self.populateFields()
@@ -202,7 +196,7 @@ def setParamValues(self):
202196
else:
203197
fieldName = self.mOutputFieldNameLineEdit.text()
204198

205-
layer = dataobjects.getObjectFromName(self.cmbInputLayer.currentText())
199+
layer = self.cmbInputLayer.currentLayer()
206200

207201
self.alg.setParameterValue('INPUT_LAYER', layer)
208202
self.alg.setParameterValue('FIELD_NAME', fieldName)

0 commit comments

Comments
 (0)
Please sign in to comment.