30 mTree =
new QTreeWidget(
this );
31 mTree->setHeaderHidden(
true );
33 connect( mTree, &QTreeWidget::itemChanged,
this, [&]( QTreeWidgetItem *,
int ) { emit this->
changed(); } );
36 QVBoxLayout *vbox =
new QVBoxLayout();
37 vbox->setContentsMargins( 0, 0, 0, 0 );
38 vbox->addWidget( mTree );
52 TreeFillVisitor( QTreeWidgetItem *layerItem,
const QgsVectorLayer *layer, QHash<QString, QTreeWidgetItem *> &items ):
53 mLayerItem( layerItem ), mLayer( layer ), mItems( items )
67 void visitSymbol( QTreeWidgetItem *rootItem,
const QString &identifier,
const QgsSymbol *symbol, QVector<int> rootPath )
78 QVector<int> indexPath = rootPath;
79 indexPath.append( idx );
81 QTreeWidgetItem *slItem =
new QTreeWidgetItem();
83 slItem->setData( 0, Qt::UserRole, idx );
84 slItem->setIcon( 0, slIcon );
85 auto flags = slItem->flags();
88 flags.setFlag( Qt::ItemIsUserCheckable,
true );
89 slItem->setCheckState( 0, Qt::Unchecked );
93 flags.setFlag( Qt::ItemIsUserCheckable,
false );
95 slItem->setFlags( flags );
96 rootItem->addChild( slItem );
97 slItem->setExpanded(
true );
99 mItems[sl->
id()] = slItem;
103 visitSymbol( slItem, identifier, subSymbol, indexPath );
114 const QgsSymbol *symbol = symbolEntity->symbol();
119 QTreeWidgetItem *symbolItem =
new QTreeWidgetItem( QStringList() << ( mCurrentDescription + leaf.
description ) );
121 symbolItem->setData( 0, Qt::UserRole, mCurrentIdentifier );
122 symbolItem->setIcon( 0, icon );
123 mLayerItem->addChild( symbolItem );
124 symbolItem->setExpanded(
true );
126 visitSymbol( symbolItem, leaf.
identifier, symbol, {} );
132 QString mCurrentDescription;
133 QString mCurrentIdentifier;
134 QTreeWidgetItem *mLayerItem;
136 QHash<QString, QTreeWidgetItem *> &mItems;
145 TreeFillVisitor visitor( mTree->invisibleRootItem(), mLayer, mItems );
152 for (
auto it = mItems.begin(); it != mItems.end(); it++ )
154 if ( it.value()->checkState( 0 ) == Qt::Checked )
155 sel.insert( it.key() );
163 for (
auto it = mItems.begin(); it != mItems.end(); it++ )
165 if ( it.value()->flags() & Qt::ItemIsUserCheckable )
166 it.value()->setCheckState( 0, Qt::Unchecked );
170 for (
const QString &lid : sel )
172 const auto it = mItems.find( lid );
173 if ( it != mItems.end() )
174 ( *it )->setCheckState( 0, Qt::Checked );
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the renderer...
Struct for storing maximum and minimum scales for measurements in map units.
virtual QgsStyle::StyleEntity type() const =0
Returns the type of style entity.
An interface for classes which can visit style entity (e.g.
@ SymbolRule
Rule based symbology or label child rule.
A symbol entity for QgsStyle databases.
static QIcon symbolPreviewIcon(const QgsSymbol *symbol, QSize size, int padding=0, QgsLegendPatchShape *shape=nullptr)
Returns an icon preview for a color ramp.
static QIcon symbolLayerPreviewIcon(const QgsSymbolLayer *layer, Qgis::RenderUnit u, QSize size, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::SymbolType parentSymbolType=Qgis::SymbolType::Hybrid, QgsMapLayer *mapLayer=nullptr)
Draws a symbol layer preview to an icon.
virtual QString layerType() const =0
Returns a string that represents this layer type.
QString id() const
Returns symbol layer identifier This id is unique in the whole project.
Abstract base class for all rendered symbols.
QgsSymbolLayer * symbolLayer(int layer)
Returns the symbol layer at the specified index.
int symbolLayerCount() const
Returns the total number of symbol layers contained in the symbol.
Qgis::SymbolType type() const
Returns the symbol's type.
Represents a vector layer which manages a vector based data sets.
QgsFeatureRenderer * renderer()
Returns the feature renderer used for rendering the features in the layer in 2D map views.
QSize iconSize(bool dockableToolbar)
Returns the user-preferred size of a window's toolbar icons.
int scaleIconSize(int standardSize)
Scales an icon size to compensate for display pixel density, making the icon size hi-dpi friendly,...
Contains information relating to a node (i.e.
QString identifier
A string identifying the node.
QString description
A string describing the node.
QgsStyleEntityVisitorInterface::NodeType type
Node type.
Contains information relating to the style entity currently being visited.
QString description
A string describing the style entity.
const QgsStyleEntityInterface * entity
Reference to style entity being visited.
QString identifier
A string identifying the style entity.