[Qgis-developer] overload closeEvent in AlgorithmDialog.py

enrico chiaradia enrico.chiaradia at yahoo.it
Mon Mar 27 00:52:27 PDT 2017


Thank you, Arnaud!

you confirm my last choice.

It works perfectly!

enrico


Il 27/03/2017 09:28, Arnaud Morvan ha scritto:
>
> 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
>
>
>
> _______________________________________________
> 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/ffcf8442/attachment.html>


More information about the Qgis-developer mailing list