diff --git a/python/core/symbology-ng/qgsinvertedpolygonrenderer.sip b/python/core/symbology-ng/qgsinvertedpolygonrenderer.sip index fd28e1ed078..0e535c7f8c9 100644 --- a/python/core/symbology-ng/qgsinvertedpolygonrenderer.sip +++ b/python/core/symbology-ng/qgsinvertedpolygonrenderer.sip @@ -85,6 +85,8 @@ class QgsInvertedPolygonRenderer : QgsFeatureRendererV2 void setEmbeddedRenderer( QgsFeatureRendererV2* subRenderer /Transfer/ ); const QgsFeatureRendererV2* embeddedRenderer() const; + virtual void setLegendSymbolItem( const QString& key, QgsSymbolV2* symbol ); + /** @returns true if the geometries are to be preprocessed (merged with an union) before rendering.*/ bool preprocessingEnabled() const; /** diff --git a/python/core/symbology-ng/qgspointdisplacementrenderer.sip b/python/core/symbology-ng/qgspointdisplacementrenderer.sip index 4128803228b..07a23d72005 100644 --- a/python/core/symbology-ng/qgspointdisplacementrenderer.sip +++ b/python/core/symbology-ng/qgspointdisplacementrenderer.sip @@ -71,6 +71,8 @@ class QgsPointDisplacementRenderer : QgsFeatureRendererV2 void setEmbeddedRenderer( QgsFeatureRendererV2* r /Transfer/ ); QgsFeatureRendererV2* embeddedRenderer(); + virtual void setLegendSymbolItem( const QString& key, QgsSymbolV2* symbol ); + //! not available in python bindings //! @deprecated since 2.4 // void setDisplacementGroups( const QList >& list ); diff --git a/src/app/qgsapplayertreeviewmenuprovider.cpp b/src/app/qgsapplayertreeviewmenuprovider.cpp index f3fa4d24793..0cb362ba1bc 100644 --- a/src/app/qgsapplayertreeviewmenuprovider.cpp +++ b/src/app/qgsapplayertreeviewmenuprovider.cpp @@ -287,44 +287,44 @@ QMenu* QgsAppLayerTreeViewMenuProvider::createContextMenu() menu->addAction( QgsApplication::getThemeIcon( "/mActionHideAllLayers.png" ), tr( "&Hide All Items" ), symbolNode, SLOT( uncheckAllItems() ) ); menu->addSeparator(); + } - if ( symbolNode->symbol() ) - { - QgsColorWheel* colorWheel = new QgsColorWheel( menu ); - colorWheel->setColor( symbolNode->symbol()->color() ); - QgsColorWidgetAction* colorAction = new QgsColorWidgetAction( colorWheel, menu, menu ); - colorAction->setDismissOnColorSelection( false ); - connect( colorAction, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( setSymbolLegendNodeColor( const QColor& ) ) ); - //store the layer id and rule key in action, so we can later retrieve the corresponding - //legend node, if it still exists - colorAction->setProperty( "layerId", symbolNode->layerNode()->layerId() ); - colorAction->setProperty( "ruleKey", symbolNode->data( QgsLayerTreeModelLegendNode::RuleKeyRole ).toString() ); - menu->addAction( colorAction ); - - //add recent colors action - QList recentSchemes; - QgsColorSchemeRegistry::instance()->schemes( recentSchemes ); - if ( !recentSchemes.isEmpty() ) - { - QgsColorSwatchGridAction* recentColorAction = new QgsColorSwatchGridAction( recentSchemes.at( 0 ), menu, "symbology", menu ); - recentColorAction->setProperty( "layerId", symbolNode->layerNode()->layerId() ); - recentColorAction->setProperty( "ruleKey", symbolNode->data( QgsLayerTreeModelLegendNode::RuleKeyRole ).toString() ); - recentColorAction->setDismissOnColorSelection( false ); - menu->addAction( recentColorAction ); - connect( recentColorAction, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( setSymbolLegendNodeColor( const QColor& ) ) ); - } - - menu->addSeparator(); - } - - QAction* editSymbolAction = new QAction( tr( "Edit Symbol..." ), menu ); + if ( symbolNode->symbol() ) + { + QgsColorWheel* colorWheel = new QgsColorWheel( menu ); + colorWheel->setColor( symbolNode->symbol()->color() ); + QgsColorWidgetAction* colorAction = new QgsColorWidgetAction( colorWheel, menu, menu ); + colorAction->setDismissOnColorSelection( false ); + connect( colorAction, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( setSymbolLegendNodeColor( const QColor& ) ) ); //store the layer id and rule key in action, so we can later retrieve the corresponding //legend node, if it still exists - editSymbolAction->setProperty( "layerId", symbolNode->layerNode()->layerId() ); - editSymbolAction->setProperty( "ruleKey", symbolNode->data( QgsLayerTreeModelLegendNode::RuleKeyRole ).toString() ); - connect( editSymbolAction, SIGNAL( triggered() ), this, SLOT( editSymbolLegendNodeSymbol() ) ); - menu->addAction( editSymbolAction ); + colorAction->setProperty( "layerId", symbolNode->layerNode()->layerId() ); + colorAction->setProperty( "ruleKey", symbolNode->data( QgsLayerTreeModelLegendNode::RuleKeyRole ).toString() ); + menu->addAction( colorAction ); + + //add recent colors action + QList recentSchemes; + QgsColorSchemeRegistry::instance()->schemes( recentSchemes ); + if ( !recentSchemes.isEmpty() ) + { + QgsColorSwatchGridAction* recentColorAction = new QgsColorSwatchGridAction( recentSchemes.at( 0 ), menu, "symbology", menu ); + recentColorAction->setProperty( "layerId", symbolNode->layerNode()->layerId() ); + recentColorAction->setProperty( "ruleKey", symbolNode->data( QgsLayerTreeModelLegendNode::RuleKeyRole ).toString() ); + recentColorAction->setDismissOnColorSelection( false ); + menu->addAction( recentColorAction ); + connect( recentColorAction, SIGNAL( colorChanged( const QColor& ) ), this, SLOT( setSymbolLegendNodeColor( const QColor& ) ) ); + } + + menu->addSeparator(); } + + QAction* editSymbolAction = new QAction( tr( "Edit Symbol..." ), menu ); + //store the layer id and rule key in action, so we can later retrieve the corresponding + //legend node, if it still exists + editSymbolAction->setProperty( "layerId", symbolNode->layerNode()->layerId() ); + editSymbolAction->setProperty( "ruleKey", symbolNode->data( QgsLayerTreeModelLegendNode::RuleKeyRole ).toString() ); + connect( editSymbolAction, SIGNAL( triggered() ), this, SLOT( editSymbolLegendNodeSymbol() ) ); + menu->addAction( editSymbolAction ); } } diff --git a/src/core/symbology-ng/qgsinvertedpolygonrenderer.cpp b/src/core/symbology-ng/qgsinvertedpolygonrenderer.cpp index e7cedb8f6b4..4aec6265200 100644 --- a/src/core/symbology-ng/qgsinvertedpolygonrenderer.cpp +++ b/src/core/symbology-ng/qgsinvertedpolygonrenderer.cpp @@ -64,6 +64,14 @@ const QgsFeatureRendererV2* QgsInvertedPolygonRenderer::embeddedRenderer() const return mSubRenderer.data(); } +void QgsInvertedPolygonRenderer::setLegendSymbolItem( const QString& key, QgsSymbolV2* symbol ) +{ + if ( !mSubRenderer ) + return; + + mSubRenderer->setLegendSymbolItem( key, symbol ); +} + void QgsInvertedPolygonRenderer::startRender( QgsRenderContext& context, const QgsFields& fields ) { if ( !mSubRenderer ) diff --git a/src/core/symbology-ng/qgsinvertedpolygonrenderer.h b/src/core/symbology-ng/qgsinvertedpolygonrenderer.h index 901d28c41fe..249a88cda71 100644 --- a/src/core/symbology-ng/qgsinvertedpolygonrenderer.h +++ b/src/core/symbology-ng/qgsinvertedpolygonrenderer.h @@ -121,6 +121,8 @@ class CORE_EXPORT QgsInvertedPolygonRenderer : public QgsFeatureRendererV2 void setEmbeddedRenderer( QgsFeatureRendererV2* subRenderer ) override; const QgsFeatureRendererV2* embeddedRenderer() const override; + virtual void setLegendSymbolItem( const QString& key, QgsSymbolV2* symbol ) override; + /** @returns true if the geometries are to be preprocessed (merged with an union) before rendering.*/ bool preprocessingEnabled() const { return mPreprocessingEnabled; } /** diff --git a/src/core/symbology-ng/qgspointdisplacementrenderer.cpp b/src/core/symbology-ng/qgspointdisplacementrenderer.cpp index f714267f745..144b2d34cb9 100644 --- a/src/core/symbology-ng/qgspointdisplacementrenderer.cpp +++ b/src/core/symbology-ng/qgspointdisplacementrenderer.cpp @@ -227,6 +227,14 @@ const QgsFeatureRendererV2* QgsPointDisplacementRenderer::embeddedRenderer() con return mRenderer; } +void QgsPointDisplacementRenderer::setLegendSymbolItem( const QString& key, QgsSymbolV2* symbol ) +{ + if ( !mRenderer ) + return; + + mRenderer->setLegendSymbolItem( key, symbol ); +} + QList QgsPointDisplacementRenderer::usedAttributes() { QList attributeList; diff --git a/src/core/symbology-ng/qgspointdisplacementrenderer.h b/src/core/symbology-ng/qgspointdisplacementrenderer.h index 738fb1126af..a38dec7b73e 100644 --- a/src/core/symbology-ng/qgspointdisplacementrenderer.h +++ b/src/core/symbology-ng/qgspointdisplacementrenderer.h @@ -98,6 +98,8 @@ class CORE_EXPORT QgsPointDisplacementRenderer: public QgsFeatureRendererV2 void setEmbeddedRenderer( QgsFeatureRendererV2* r ) override; const QgsFeatureRendererV2* embeddedRenderer() const override; + virtual void setLegendSymbolItem( const QString& key, QgsSymbolV2* symbol ) override; + //! not available in python bindings //! @deprecated since 2.4 Q_DECL_DEPRECATED void setDisplacementGroups( const QList >& list ) { Q_UNUSED( list ); }