[Qgis-developer] overload closeEvent in AlgorithmDialog.py

Arnaud Morvan arnaud.morvan at camptocamp.com
Mon Mar 27 00:28:35 PDT 2017


Hello Enrico,

Do not change the common dialog closeEvent Method, you should subclass it.

class MyCustomDialog(AlgorithmDialog):

     ...

You can give a custom dialog to you algorithm using 
GeoAlgorithm.getCustomParametersDialog method.

class MyAlgorithm(GeoAlgorithm):

     ...

     def getCustomParametersDialog(self):

         return MyCustomDialog()


Do not forget to call the base AlgorithmDialog.closeEvent method in yours :

class MyCustomDialog(AlgorithmDialog):

     def closeEvent(self):

         super(MyCustomDialog, self).closeEvent()


This is the way to execute custom tasks in the closeEvent, I do not say 
that this the better way for your job.

Cheers

Arnaud Morvan
Ingénieur logiciel
Tél: +33 (0)4 58 48 20 32

Camptocamp France SAS
Savoie Technolac, BP 352
73377 Le Bourget du Lac Cedex
http://www.camptocamp.com

Le 23/03/2017 à 18:14, enrico chiaradia a écrit :
>
> Dear (processing) developers,
>
> for my plugin (IO Geopaparazzi), I need to stop the execution of an 
> external thread when the user presses the X button of the form.
>
> I though to overload the closeEvent in this way:
>
> from processing.gui.AlgorithmDialog import AlgorithmDialog
>
> [omitted]
>
> class ExportTilesAlgorithm(GeoAlgorithm):
>
>     [omitted]
>
>     # get the AlgorithmDialog dialog object and overload the closeEvent
>     AlgorithmDialog.closeEvent = self.closeEvent
>
>     [omitted]
>
>     def closeEvent(self, evt):
>        # necessary to close the thread before it is finished
>        self.workThread.stop()
>
> it works perfectly but I'm not sure that it will not induce anomalous 
> behaviours in other geoalgorithms as the original function is (from 
> AlgorithmDialog.py) :
>
> def closeEvent(self, evt):
> QgsMapLayerRegistry.instance().layerWasAdded.disconnect(self.mainWidget.layerAdded)
> QgsMapLayerRegistry.instance().layersWillBeRemoved.disconnect(self.mainWidget.layersWillBeRemoved)
>         super(AlgorithmDialog, self).closeEvent(evt)
>
> Any suggestions?
>
> Thank you
>
> enrico
>
>
>
> _______________________________________________
> Qgis-developer mailing list
> Qgis-developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20170327/756e4b7e/attachment.html>


More information about the Qgis-developer mailing list