Bug report #8646
Python QgsRendererV2Widget not displaying on Windows 64 build
|Affected QGIS version:||2.4.0||Regression?:||No|
|Operating System:||All||Easy fix?:||No|
|Pull Request or Patch supplied:||No||Resolution:||end of life|
|Crashes QGIS or corrupts data:||No||Copied to github as #:||17377|
I maintain the VectorFieldRenderer widget, which implements a python custom renderer. The QGIS 2.0 version is working on Ubuntu, but on windows 64 (using standalone installer), when the renderer is selected in the Properties | Style dialog, the renderer configuration widget is not displayed, and instead there is just a message "This renderer doesn't implement a graphical interface".
I've build a minimal custom renderer (attached as LayerTest.zip), and that behaves in the same way, so I suspect that there is an issue in 64bit build (note - I haven't tested other windows builds).
Steps to replicate:
1) Install attached LayerTest plugin to <user home>/.qgis2/python/plugins
2) Start QGIS
3) Open plugin manager and enable LayerTest plugin
4) Create a new point vector layer
5) Make the new layer the current layer and open the Style tab of the layer Properties dialog
6) Select the LayerTest renderer type
The dialog box should show "Dummy widget for layer <layer name>".
It does this on ubuntu 12.04. On windows 64bit build it displays the error message above (This renderer doesn't implement a graphical interface).
#4 Updated by Andy Aschwanden over 7 years ago
- Status changed from Closed to Reopened
While I was trying to use the VectorFieldRenderer widget mentioned above, I've noticed that this issue still exists on QGIS 7c98970 (nightly build from http://qgis.dakotacarto.com/, Mac OS X 10.8.5). I've also tested the minimal example in TestLayer.zip, with the same result, it shows
"This renderer doesn't implement a graphical interface"
#8 Updated by Chris Crook over 6 years ago
- Operating System changed from Windows to All
- Priority changed from Normal to High
I've just upgraded Ubuntu to version 14.04 and this issue is now present on Ubuntu as well. So it occurs in 64 bit environments generally - windows, ubuntu, mac. This occurs both in the released version and building from source. I assume that this is due to a new version of SIP with the Ubuntu version upgrade.
#9 Updated by Chris Crook over 6 years ago
The underlying issue relates to python subclasses of C++ classes. When the python object is saved in C++ code (eg in a registry), it loses the python bindings to methods that are over-ridden in the python class- they are not used when the object is called from C++, and instead the C++ base class implementations of the methods are used.
This means that python implementations of C++ base classes (renderers, custom layers, etc) will generally not work.
#15 Updated by Giovanni Manghi almost 2 years ago
- Resolution set to end of life
- Status changed from Reopened to Closed
End of life notice: QGIS 2.18 LTR