Skip to content

Commit c5ff6b9

Browse files
committedMay 21, 2018
[processing] Ensure parameters linked to layer parameters
(e.g. field choices) are correctly updated when a layer is selected which doesn't belong to the project
1 parent 4ec9e00 commit c5ff6b9

File tree

1 file changed

+25
-9
lines changed

1 file changed

+25
-9
lines changed
 

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

Lines changed: 25 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -901,6 +901,7 @@ def selectFile(self):
901901
self.combo.setCurrentIndex(self.combo.findText(filename))
902902
else:
903903
self.combo.setEditText(filename)
904+
self.widgetValueHasChanged.emit(self)
904905

905906
def setValue(self, value):
906907
if value is None or value == NULL:
@@ -918,6 +919,7 @@ def setValue(self, value):
918919
self.widget.setText(value)
919920
else:
920921
self.setComboValue(value, combobox=self.combo)
922+
self.widgetValueHasChanged.emit(self)
921923

922924
def value(self):
923925
if self.dialogType == DIALOG_STANDARD:
@@ -962,6 +964,7 @@ def selectFile(self):
962964
self.combo.setCurrentIndex(self.combo.findText(filename))
963965
else:
964966
self.combo.setEditText(filename)
967+
self.widgetValueHasChanged.emit(self)
965968

966969

967970
class EnumWidgetWrapper(WidgetWrapper):
@@ -1136,6 +1139,7 @@ def selectFile(self):
11361139
self.combo.setCurrentIndex(self.combo.findText(filename))
11371140
else:
11381141
self.combo.setEditText(filename)
1142+
self.widgetValueHasChanged.emit(self)
11391143

11401144
def setValue(self, value):
11411145
if value is None or value == NULL:
@@ -1153,6 +1157,7 @@ def setValue(self, value):
11531157
self.widget.setValue(value)
11541158
else:
11551159
self.setComboValue(value, combobox=self.combo)
1160+
self.widgetValueHasChanged.emit(self)
11561161

11571162
def value(self):
11581163
if self.dialogType == DIALOG_STANDARD:
@@ -1280,6 +1285,10 @@ def validator(v):
12801285

12811286
class ExpressionWidgetWrapper(WidgetWrapper):
12821287

1288+
def __init__(self, param, dialog, row=0, col=0, **kwargs):
1289+
super().__init__(param, dialog, row, col, **kwargs)
1290+
self.context = dataobjects.createContext()
1291+
12831292
def createWidget(self):
12841293
if self.dialogType in (DIALOG_STANDARD, DIALOG_BATCH):
12851294
if self.param.parentLayerParameterName():
@@ -1312,11 +1321,10 @@ def parentLayerChanged(self, wrapper):
13121321
self.setLayer(wrapper.value())
13131322

13141323
def setLayer(self, layer):
1315-
context = dataobjects.createContext()
13161324
if isinstance(layer, QgsProcessingFeatureSourceDefinition):
1317-
layer, ok = layer.source.valueAsString(context.expressionContext())
1325+
layer, ok = layer.source.valueAsString(self.context.expressionContext())
13181326
if isinstance(layer, str):
1319-
layer = QgsProcessingUtils.mapLayerFromString(layer, context)
1327+
layer = QgsProcessingUtils.mapLayerFromString(layer, self.context)
13201328
self.widget.setLayer(layer)
13211329

13221330
def setValue(self, value):
@@ -1433,6 +1441,7 @@ def selectFile(self):
14331441
self.combo.setCurrentIndex(self.combo.findText(filename))
14341442
else:
14351443
self.combo.setEditText(filename)
1444+
self.widgetValueHasChanged.emit(self)
14361445

14371446
def setValue(self, value):
14381447
if value is None or value == NULL:
@@ -1450,6 +1459,7 @@ def setValue(self, value):
14501459
return self.widget.setText(value)
14511460
else:
14521461
self.setComboValue(value, combobox=self.combo)
1462+
self.widgetValueHasChanged.emit(self)
14531463

14541464
def value(self):
14551465
if self.dialogType == DIALOG_STANDARD:
@@ -1473,6 +1483,10 @@ def validator(v):
14731483
class TableFieldWidgetWrapper(WidgetWrapper):
14741484
NOT_SET = '[Not set]'
14751485

1486+
def __init__(self, param, dialog, row=0, col=0, **kwargs):
1487+
super().__init__(param, dialog, row, col, **kwargs)
1488+
self.context = dataobjects.createContext()
1489+
14761490
def createWidget(self):
14771491
self._layer = None
14781492

@@ -1516,11 +1530,10 @@ def parentValueChanged(self, wrapper):
15161530
self.setLayer(wrapper.value())
15171531

15181532
def setLayer(self, layer):
1519-
context = dataobjects.createContext()
15201533
if isinstance(layer, QgsProcessingFeatureSourceDefinition):
1521-
layer, ok = layer.source.valueAsString(context.expressionContext())
1534+
layer, ok = layer.source.valueAsString(self.context.expressionContext())
15221535
if isinstance(layer, str):
1523-
layer = QgsProcessingUtils.mapLayerFromString(layer, context)
1536+
layer = QgsProcessingUtils.mapLayerFromString(layer, self.context)
15241537
self._layer = layer
15251538
self.refreshItems()
15261539

@@ -1595,6 +1608,10 @@ def validator(v):
15951608
class BandWidgetWrapper(WidgetWrapper):
15961609
NOT_SET = '[Not set]'
15971610

1611+
def __init__(self, param, dialog, row=0, col=0, **kwargs):
1612+
super().__init__(param, dialog, row, col, **kwargs)
1613+
self.context = dataobjects.createContext()
1614+
15981615
def createWidget(self):
15991616
self._layer = None
16001617

@@ -1626,11 +1643,10 @@ def parentValueChanged(self, wrapper):
16261643
self.setLayer(wrapper.value())
16271644

16281645
def setLayer(self, layer):
1629-
context = dataobjects.createContext()
16301646
if isinstance(layer, QgsProcessingParameterRasterLayer):
1631-
layer, ok = layer.source.valueAsString(context.expressionContext())
1647+
layer, ok = layer.source.valueAsString(self.context.expressionContext())
16321648
if isinstance(layer, str):
1633-
layer = QgsProcessingUtils.mapLayerFromString(layer, context)
1649+
layer = QgsProcessingUtils.mapLayerFromString(layer, self.context)
16341650
self._layer = layer
16351651
self.refreshItems()
16361652

0 commit comments

Comments
 (0)
Please sign in to comment.