Hi Minoru, thanks for information. As I can see from ticket, this was fixed about month ago, but now exists again. Also this issue still exists with other renderers.
I will reopen 10096 and add more information to tickets about other renderers 2014-07-04 3:54 GMT+03:00 Minoru Akagi <[email protected]>: > Hi Alexander, > > 2014-07-04 0:53 GMT+09:00 Alexander Bruy <[email protected]>: >> Hi all, >> >> seems symbolForFeature() method does not works as expected for most >> renderers: >> * QgsSingleSymbolRendererV2 — returns feature symbol >> * QgsCategorizedSymbolRendererV2 — returns None and in debug output >> I have message saying "there are no hashed symbols!!!" >> * QgsGraduatedSymbolRendererV2 — just crashes QGIS >> * QgsRuleBasedRendererV2 — returns None >> >> All tests made with point shapefile. Here is code snipped I used (load vector >> layer and activate it first): >> >> layer = iface.mapCanvas().currentLayer() >> feat = layer.getFeatures().next() >> renderer = layer.rendererV2() >> symbol = renderer.symbolForFeature(feat) >> >> For me this is major issue that makes difficult to develop plugins that works >> with layer symbology (e.g. symbology import/export/conversion) >> >> Anyone confirms? Should I open a ticket? > > Matthias Kuhn showed me a workaround > (http://hub.qgis.org/issues/10096#note-1). My code is like this: > > # initialize symbol rendering > renderer = QgsMapRenderer() > layer.rendererV2().startRender(renderer.rendererContext(), > layer.pendingFields() if > apiChanged23 else layer) > > for f in layer.getFeatures(): > symbol = layer.rendererV2().symbolForFeature(f) > print symbol.color().name() > > layer.rendererV2().stopRender(renderer.rendererContext()) > > -- > Regards, > Minoru -- Alexander Bruy _______________________________________________ Qgis-developer mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/qgis-developer
