26#include "moc_qgsmergedfeaturerendererwidget.cpp"
28using namespace Qt::StringLiterals;
49 mRenderer.reset(
nullptr );
50 QGridLayout *layout =
new QGridLayout(
this );
51 QLabel *label =
new QLabel(
53 "The merged feature renderer only applies to line and polygon layers. \n"
54 "'%1' is not a line or polygon layer and then cannot be displayed"
56 .arg( layer->
name() ),
59 this->setLayout( layout );
60 layout->addWidget( label );
64 connect( mRendererComboBox,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, &QgsMergedFeatureRendererWidget::mRendererComboBox_currentIndexChanged );
77 renderer->copyRendererData( mRenderer.get() );
80 int currentEmbeddedIdx = 0;
85 QStringList::const_iterator it = rendererList.constBegin();
87 mRendererComboBox->blockSignals(
true );
88 for ( ; it != rendererList.constEnd(); ++it, ++idx )
90 if ( *it !=
"mergedFeatureRenderer"_L1 && *it !=
"invertedPolygonRenderer"_L1 )
95 if ( embeddedRenderer && embeddedRenderer->
type() == m->
name() )
98 currentEmbeddedIdx = idx;
102 mRendererComboBox->blockSignals(
false );
104 const int oldIdx = mRendererComboBox->currentIndex();
105 mRendererComboBox->setCurrentIndex( currentEmbeddedIdx );
106 if ( oldIdx == currentEmbeddedIdx )
109 mRendererComboBox_currentIndexChanged( currentEmbeddedIdx );
117 if ( mRenderer && mEmbeddedRendererWidget )
120 if ( embeddedRenderer )
122 mRenderer->setEmbeddedRenderer( embeddedRenderer->
clone() );
125 return mRenderer.get();
131 if ( mEmbeddedRendererWidget )
132 mEmbeddedRendererWidget->setContext(
context );
138 if ( mEmbeddedRendererWidget )
139 mEmbeddedRendererWidget->setDockMode(
dockMode );
142void QgsMergedFeatureRendererWidget::mRendererComboBox_currentIndexChanged(
int index )
144 const QString rendererId = mRendererComboBox->itemData( index ).toString();
148 const std::unique_ptr<QgsFeatureRenderer> oldRenderer( mRenderer->embeddedRenderer()->clone() );
151 mEmbeddedRendererWidget->setContext(
mContext );
152 mEmbeddedRendererWidget->disableSymbolLevels();
153 mEmbeddedRendererWidget->setDockMode( this->
dockMode() );
156 if ( layout()->count() > 2 )
159 layout()->takeAt( 2 );
161 layout()->addWidget( mEmbeddedRendererWidget.get() );
GeometryType
The geometry types are used to group Qgis::WkbType in a coarse way.
static QgsRendererRegistry * rendererRegistry()
Returns the application's renderer registry, used for managing vector layer renderers.
Abstract base class for all 2D vector feature renderers.
static QgsFeatureRenderer * defaultRenderer(Qgis::GeometryType geomType)
Returns a new renderer - used by default in vector layers.
virtual const QgsFeatureRenderer * embeddedRenderer() const
Returns the current embedded renderer (subrenderer) for this feature renderer.
virtual QgsFeatureRenderer * clone() const =0
Create a deep copy of this renderer.
static QgsMergedFeatureRenderer * convertFromRenderer(const QgsFeatureRenderer *renderer)
Creates a QgsMergedFeatureRenderer by a conversion from an existing renderer.
QStringList renderersList(QgsRendererAbstractMetadata::LayerTypes layerTypes=QgsRendererAbstractMetadata::All) const
Returns a list of available renderers.
QgsRendererAbstractMetadata * rendererMetadata(const QString &rendererName)
Returns the metadata for a specified renderer.
A database of saved style entities, including symbols, color ramps, text formats and others.
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
Represents a vector layer which manages a vector based dataset.
Q_INVOKABLE Qgis::WkbType wkbType() const final
Returns the WKBType or WKBUnknown in case of error.
static Qgis::GeometryType geometryType(Qgis::WkbType type)
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...