[processing] changes to allow custom parameter dialog adapt to new parameter architecture

This commit is contained in:
volaya 2016-09-14 09:51:17 +02:00
parent dfb4cdd34b
commit c491c01266
6 changed files with 18 additions and 17 deletions

View File

@ -40,9 +40,8 @@ class GdalAlgorithmDialog(AlgorithmDialog):
AlgorithmDialogBase.__init__(self, alg)
self.alg = alg
self.mainWidget = GdalParametersPanel(self, alg)
self.setMainWidget()
self.setMainWidget(GdalParametersPanel(self, alg))
cornerWidget = QWidget()
layout = QVBoxLayout()
@ -56,10 +55,6 @@ class GdalAlgorithmDialog(AlgorithmDialog):
self.mainWidget.parametersHaveChanged()
QgsMapLayerRegistry.instance().layerWasAdded.connect(self.mainWidget.layerAdded)
QgsMapLayerRegistry.instance().layersWillBeRemoved.connect(self.mainWidget.layersWillBeRemoved)
class GdalParametersPanel(ParametersPanel):
def __init__(self, parent, alg):

View File

@ -98,8 +98,7 @@ class FieldsMapperParametersDialog(AlgorithmDialog):
self.alg = alg
self.mainWidget = FieldsMapperParametersPanel(self, alg)
self.setMainWidget()
self.setMainWidget(FieldsMapperParametersPanel(self, alg))
def setParamValue(self, param, widget, alg=None):
if isinstance(param, ParameterFieldsMapping):

View File

@ -69,8 +69,7 @@ class AlgorithmDialog(AlgorithmDialogBase):
self.alg = alg
self.mainWidget = ParametersPanel(self, alg)
self.setMainWidget()
self.setMainWidget(ParametersPanel(self, alg))
self.cornerWidget = QWidget()
layout = QVBoxLayout()
@ -82,8 +81,6 @@ class AlgorithmDialog(AlgorithmDialogBase):
self.cornerWidget.setLayout(layout)
self.tabWidget.setCornerWidget(self.cornerWidget)
QgsMapLayerRegistry.instance().layerWasAdded.connect(self.mainWidget.layerRegistryChanged)
QgsMapLayerRegistry.instance().layersWillBeRemoved.connect(self.mainWidget.layerRegistryChanged)
def runAsBatch(self):
self.close()

View File

@ -35,7 +35,7 @@ from qgis.PyQt.QtWidgets import QApplication, QDialogButtonBox, QDesktopWidget
from qgis.PyQt.QtNetwork import QNetworkRequest, QNetworkReply
from qgis.utils import iface
from qgis.core import QgsNetworkAccessManager
from qgis.core import QgsNetworkAccessManager, QgsMapLayerRegistry
from processing.core.ProcessingConfig import ProcessingConfig
@ -122,8 +122,15 @@ class AlgorithmDialogBase(BASE, WIDGET):
self.settings.setValue("/Processing/dialogBase", self.saveGeometry())
super(AlgorithmDialogBase, self).closeEvent(evt)
def setMainWidget(self):
def setMainWidget(self, widget):
if self.mainWidget is not None:
QgsMapLayerRegistry.instance().layerWasAdded.disconnect(self.mainWidget.layerRegistryChanged)
QgsMapLayerRegistry.instance().layersWillBeRemoved.disconnect(self.mainWidget.layerRegistryChanged)
self.mainWidget = widget
self.tabWidget.widget(0).layout().addWidget(self.mainWidget)
QgsMapLayerRegistry.instance().layerWasAdded.connect(self.mainWidget.layerRegistryChanged)
QgsMapLayerRegistry.instance().layersWillBeRemoved.connect(self.mainWidget.layerRegistryChanged)
def error(self, msg):
QApplication.restoreOverrideCursor()

View File

@ -56,8 +56,7 @@ class BatchAlgorithmDialog(AlgorithmDialogBase):
self.setWindowTitle(self.tr('Batch Processing - %s') % self.alg.name)
self.mainWidget = BatchPanel(self, self.alg)
self.setMainWidget()
self.setMainWidget(BatchPanel(self, self.alg))
self.textShortHelp.setVisible(False)

View File

@ -88,6 +88,10 @@ class BatchPanel(BASE, WIDGET):
self.fillParameterValues)
self.initWidgets()
def layerRegistryChanged(self):
pass
def initWidgets(self):
# If there are advanced parameters — show corresponding button