mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-17 00:04:02 -04:00
[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
This commit is contained in:
parent
4ec9e00a73
commit
c5ff6b9c99
@ -901,6 +901,7 @@ class MapLayerWidgetWrapper(WidgetWrapper):
|
||||
self.combo.setCurrentIndex(self.combo.findText(filename))
|
||||
else:
|
||||
self.combo.setEditText(filename)
|
||||
self.widgetValueHasChanged.emit(self)
|
||||
|
||||
def setValue(self, value):
|
||||
if value is None or value == NULL:
|
||||
@ -918,6 +919,7 @@ class MapLayerWidgetWrapper(WidgetWrapper):
|
||||
self.widget.setText(value)
|
||||
else:
|
||||
self.setComboValue(value, combobox=self.combo)
|
||||
self.widgetValueHasChanged.emit(self)
|
||||
|
||||
def value(self):
|
||||
if self.dialogType == DIALOG_STANDARD:
|
||||
@ -962,6 +964,7 @@ class RasterWidgetWrapper(MapLayerWidgetWrapper):
|
||||
self.combo.setCurrentIndex(self.combo.findText(filename))
|
||||
else:
|
||||
self.combo.setEditText(filename)
|
||||
self.widgetValueHasChanged.emit(self)
|
||||
|
||||
|
||||
class EnumWidgetWrapper(WidgetWrapper):
|
||||
@ -1136,6 +1139,7 @@ class FeatureSourceWidgetWrapper(WidgetWrapper):
|
||||
self.combo.setCurrentIndex(self.combo.findText(filename))
|
||||
else:
|
||||
self.combo.setEditText(filename)
|
||||
self.widgetValueHasChanged.emit(self)
|
||||
|
||||
def setValue(self, value):
|
||||
if value is None or value == NULL:
|
||||
@ -1153,6 +1157,7 @@ class FeatureSourceWidgetWrapper(WidgetWrapper):
|
||||
self.widget.setValue(value)
|
||||
else:
|
||||
self.setComboValue(value, combobox=self.combo)
|
||||
self.widgetValueHasChanged.emit(self)
|
||||
|
||||
def value(self):
|
||||
if self.dialogType == DIALOG_STANDARD:
|
||||
@ -1280,6 +1285,10 @@ class StringWidgetWrapper(WidgetWrapper):
|
||||
|
||||
class ExpressionWidgetWrapper(WidgetWrapper):
|
||||
|
||||
def __init__(self, param, dialog, row=0, col=0, **kwargs):
|
||||
super().__init__(param, dialog, row, col, **kwargs)
|
||||
self.context = dataobjects.createContext()
|
||||
|
||||
def createWidget(self):
|
||||
if self.dialogType in (DIALOG_STANDARD, DIALOG_BATCH):
|
||||
if self.param.parentLayerParameterName():
|
||||
@ -1312,11 +1321,10 @@ class ExpressionWidgetWrapper(WidgetWrapper):
|
||||
self.setLayer(wrapper.value())
|
||||
|
||||
def setLayer(self, layer):
|
||||
context = dataobjects.createContext()
|
||||
if isinstance(layer, QgsProcessingFeatureSourceDefinition):
|
||||
layer, ok = layer.source.valueAsString(context.expressionContext())
|
||||
layer, ok = layer.source.valueAsString(self.context.expressionContext())
|
||||
if isinstance(layer, str):
|
||||
layer = QgsProcessingUtils.mapLayerFromString(layer, context)
|
||||
layer = QgsProcessingUtils.mapLayerFromString(layer, self.context)
|
||||
self.widget.setLayer(layer)
|
||||
|
||||
def setValue(self, value):
|
||||
@ -1433,6 +1441,7 @@ class VectorLayerWidgetWrapper(WidgetWrapper):
|
||||
self.combo.setCurrentIndex(self.combo.findText(filename))
|
||||
else:
|
||||
self.combo.setEditText(filename)
|
||||
self.widgetValueHasChanged.emit(self)
|
||||
|
||||
def setValue(self, value):
|
||||
if value is None or value == NULL:
|
||||
@ -1450,6 +1459,7 @@ class VectorLayerWidgetWrapper(WidgetWrapper):
|
||||
return self.widget.setText(value)
|
||||
else:
|
||||
self.setComboValue(value, combobox=self.combo)
|
||||
self.widgetValueHasChanged.emit(self)
|
||||
|
||||
def value(self):
|
||||
if self.dialogType == DIALOG_STANDARD:
|
||||
@ -1473,6 +1483,10 @@ class VectorLayerWidgetWrapper(WidgetWrapper):
|
||||
class TableFieldWidgetWrapper(WidgetWrapper):
|
||||
NOT_SET = '[Not set]'
|
||||
|
||||
def __init__(self, param, dialog, row=0, col=0, **kwargs):
|
||||
super().__init__(param, dialog, row, col, **kwargs)
|
||||
self.context = dataobjects.createContext()
|
||||
|
||||
def createWidget(self):
|
||||
self._layer = None
|
||||
|
||||
@ -1516,11 +1530,10 @@ class TableFieldWidgetWrapper(WidgetWrapper):
|
||||
self.setLayer(wrapper.value())
|
||||
|
||||
def setLayer(self, layer):
|
||||
context = dataobjects.createContext()
|
||||
if isinstance(layer, QgsProcessingFeatureSourceDefinition):
|
||||
layer, ok = layer.source.valueAsString(context.expressionContext())
|
||||
layer, ok = layer.source.valueAsString(self.context.expressionContext())
|
||||
if isinstance(layer, str):
|
||||
layer = QgsProcessingUtils.mapLayerFromString(layer, context)
|
||||
layer = QgsProcessingUtils.mapLayerFromString(layer, self.context)
|
||||
self._layer = layer
|
||||
self.refreshItems()
|
||||
|
||||
@ -1595,6 +1608,10 @@ class TableFieldWidgetWrapper(WidgetWrapper):
|
||||
class BandWidgetWrapper(WidgetWrapper):
|
||||
NOT_SET = '[Not set]'
|
||||
|
||||
def __init__(self, param, dialog, row=0, col=0, **kwargs):
|
||||
super().__init__(param, dialog, row, col, **kwargs)
|
||||
self.context = dataobjects.createContext()
|
||||
|
||||
def createWidget(self):
|
||||
self._layer = None
|
||||
|
||||
@ -1626,11 +1643,10 @@ class BandWidgetWrapper(WidgetWrapper):
|
||||
self.setLayer(wrapper.value())
|
||||
|
||||
def setLayer(self, layer):
|
||||
context = dataobjects.createContext()
|
||||
if isinstance(layer, QgsProcessingParameterRasterLayer):
|
||||
layer, ok = layer.source.valueAsString(context.expressionContext())
|
||||
layer, ok = layer.source.valueAsString(self.context.expressionContext())
|
||||
if isinstance(layer, str):
|
||||
layer = QgsProcessingUtils.mapLayerFromString(layer, context)
|
||||
layer = QgsProcessingUtils.mapLayerFromString(layer, self.context)
|
||||
self._layer = layer
|
||||
self.refreshItems()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user