Skip to content

Commit

Permalink
[processing] Fix gdal algorithm use of old wrapper API
Browse files Browse the repository at this point in the history
  • Loading branch information
nyalldawson committed Sep 11, 2018
1 parent 0b40ffd commit c8abd40
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 11 deletions.
16 changes: 15 additions & 1 deletion python/plugins/processing/algs/gdal/GdalAlgorithmDialog.py
Expand Up @@ -49,6 +49,7 @@
from processing.gui.MultipleInputPanel import MultipleInputPanel
from processing.gui.NumberInputPanel import NumberInputPanel
from processing.gui.DestinationSelectionPanel import DestinationSelectionPanel
from processing.gui.wrappers import WidgetWrapper
from processing.tools.dataobjects import createContext


Expand Down Expand Up @@ -85,10 +86,23 @@ def __init__(self, parent, alg):

def connectParameterSignals(self):
for wrapper in list(self.wrappers.values()):
w = wrapper.widget
wrapper.widgetValueHasChanged.connect(self.parametersHaveChanged)

# TODO - remove when all wrappers correctly emit widgetValueHasChanged!

# For compatibility with 3.x API, we need to check whether the wrapper is
# the deprecated WidgetWrapper class. If not, it's the newer
# QgsAbstractProcessingParameterWidgetWrapper class
# TODO QGIS 4.0 - remove
if issubclass(wrapper.__class__, WidgetWrapper):
w = wrapper.widget
else:
w = wrapper.wrappedWidget()

self.connectWidgetChangedSignals(w)
for c in w.findChildren(QWidget):
self.connectWidgetChangedSignals(c)

for output_widget in self.outputWidgets.values():
self.connectWidgetChangedSignals(output_widget)

Expand Down
6 changes: 3 additions & 3 deletions python/plugins/processing/algs/qgis/ui/FieldsMappingPanel.py
Expand Up @@ -513,9 +513,9 @@ def updatePanelEnabledState():

def postInitialize(self, wrappers):
for wrapper in wrappers:
if wrapper.param.name() == self.parameterDefinition().parentLayerParameter():
if wrapper.value():
self.setLayer(wrapper.value())
if wrapper.parameterDefinition().name() == self.parameterDefinition().parentLayerParameter():
if wrapper.parameterValue():
self.setLayer(wrapper.parameterValue())
wrapper.widgetValueHasChanged.connect(self.parentLayerChanged)
break

Expand Down
12 changes: 6 additions & 6 deletions python/plugins/processing/algs/qgis/ui/HeatmapWidgets.py
Expand Up @@ -182,30 +182,30 @@ def postInitialize(self, wrappers):

for wrapper in wrappers:
if wrapper.parameterDefinition().name() == self.param.parent_layer:
self.setSource(wrapper.value())
self.setSource(wrapper.parameterValue())
wrapper.widgetValueHasChanged.connect(self.parentLayerChanged)
elif wrapper.parameterDefinition().name() == self.param.radius_param:
self.setRadius(wrapper.value())
self.setRadius(wrapper.parameterValue())
wrapper.widgetValueHasChanged.connect(self.radiusChanged)
elif wrapper.parameterDefinition().name() == self.param.radius_field_param:
self.setSource(wrapper.value())
self.setSource(wrapper.parameterValue())
wrapper.widgetValueHasChanged.connect(self.radiusFieldChanged)

def parentLayerChanged(self, wrapper):
self.setSource(wrapper.value())
self.setSource(wrapper.parameterValue())

def setSource(self, source):
source = QgsProcessingUtils.variantToSource(source, self.context)
self.widget.setSource(source)

def radiusChanged(self, wrapper):
self.setRadius(wrapper.value())
self.setRadius(wrapper.parameterValue())

def setRadius(self, radius):
self.widget.setRadius(radius)

def radiusFieldChanged(self, wrapper):
self.setRadiusField(wrapper.value())
self.setRadiusField(wrapper.parameterValue())

def setRadiusField(self, radius_field):
self.widget.setRadiusField(radius_field)
Expand Down
Expand Up @@ -258,7 +258,7 @@ def postInitialize(self, wrappers):
break

def parentValueChanged(self, wrapper):
self.setLayer(wrapper.value())
self.setLayer(wrapper.parameterValue())

def setLayer(self, layer):
if isinstance(layer, QgsMapLayer):
Expand Down

0 comments on commit c8abd40

Please sign in to comment.