[QGIS-Developer] QGIS3 plugin migration issue
Nyall Dawson
nyall.dawson at gmail.com
Mon Apr 2 20:29:10 PDT 2018
On 31 March 2018 at 14:06, André William <wss.andre at gmail.com> wrote:
> After some digging, I found that while the textShortHelp object is not
> directly available in the AlgorithmDialog class anymore, i was able to
> access it like this:
>>
>> shortHelpObj = dlg.findChild(QTextBrowser, 'textShortHelp')
>
> Is this the expected behavior?
None of this is in stable API, so can change between QGIS versions
(including within minor versions/patch releases).
Stable API for processing is:
- the classes within the core library (unless they are explicitly
marked as non-stable, e.g. the modeler related classes)
- the base GUI "WidgetWrapper" class (NOT any of its subclasses)
- some methods from the processing namespace:
- processing.algorithmHelp()
- processing.run()
- processing.runAndLoadResults()
- processing.createAlgorithmDialog()
- processing.execAlgorithmDialog()
So, in short, unfortunately this approach is always going to be
fragile. Better wrap it in a big try block! ;)
I gather you're trying to force the "help" panel to resize when the
dialog is opened. Is there a particular reason why you need to do
this?
Nyall
>
> André W.
>
> 2018-03-30 18:54 GMT-03:00 André William <wss.andre at gmail.com>:
>>
>> Hi all,
>>
>> I'm porting an existing Geoprocessing Algorithm plugin to QGIS 3 and I'm
>> having some trouble customizing the default dialog.
>> On QGIS 2.x the following code worked:
>>
>>> class TestAlgorithm(GeoAlgorithm):
>>> INPUT = 'INPUT'
>>> OUTPUT = 'OUTPUT'
>>>
>>>
>>>
>>> def getCustomParametersDialog(self):
>>> customDialog = AlgorithmDialog(self)
>>> customDialog.textShortHelp.setFixedWidth(450)
>>> return customDialog
>>
>>
>> On QGIS 3 however, the getCustomParametersDialog() method is gone. I
>> assumed it was replaced by the new createCustomParametersWidget(), but
>> unfortunately this method doesn't seem to get called by the parent class:
>>
>>> def createCustomParametersWidget(self, parent):
>>> customDialog = AlgorithmDialog(self)
>>> customDialog.textShortHelp.setFixedWidth(450)
>>> return customDialog
>>
>>
>> I also tried manually creating the dialog, but I get a message saying that
>> the 'AlgorithmDialog' object has no attribute 'textShortHelp'.
>>
>>> alg =
>>> QgsApplication.processingRegistry().algorithmById('test:testAlgorithm')
>>> dlg = AlgorithmDialog(alg)
>>> dlg.textShortHelp.setFixedWidth(450)
>>> dlg.show()
>>
>>
>> Any thoughts?
>>
>> Thanks in advance!
>> André
>
>
>
> _______________________________________________
> 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
More information about the QGIS-Developer
mailing list