Re: [Qgis-developer] symbolForFeature() does not works?

2014-07-04 Thread Alexander Bruy
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 akagi...@gmail.com:
 Hi Alexander,

 2014-07-04 0:53 GMT+09:00 Alexander Bruy alexander.b...@gmail.com:
 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
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Re: [Qgis-developer] symbolForFeature() does not works?

2014-07-04 Thread Martin Dobias
Hi Alex

On Thu, Jul 3, 2014 at 10:53 PM, Alexander Bruy
alexander.b...@gmail.com wrote:
 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?

Like with renderFeature() call, the symbolForFeature() method must be
called in between startRender()/stopRender() calls, otherwise the
behaviour is undefined. It would be nice though not to crash and emit
a warning instead...

Regards
Martin
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer

[Qgis-developer] symbolForFeature() does not works?

2014-07-03 Thread Alexander Bruy
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?


Thanks
-- 
Alexander Bruy
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Re: [Qgis-developer] symbolForFeature() does not works?

2014-07-03 Thread Minoru Akagi
Hi Alexander,

2014-07-04 0:53 GMT+09:00 Alexander Bruy alexander.b...@gmail.com:
 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
___
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer