QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
19 #include <QStandardItem>
21 #include <QMessageBox>
57 if ( !abstractMetadata )
59 QgsDebugMsg(
"Failed to find symbol layer's entry in registry: " + name );
65 QgsDebugMsg(
"Failed to cast symbol layer's metadata: " + name );
72 static void _initWidgetFunctions()
74 static bool sInitialized =
false;
120 connect( mEnabledCheckBox, &QCheckBox::toggled,
this, &QgsLayerPropertiesWidget::mEnabledCheckBox_toggled );
124 _initWidgetFunctions();
138 cboLayerType->setCurrentIndex( idx );
140 connect( mEnabledCheckBox, &QAbstractButton::toggled, mEnabledDDBtn, &QWidget::setEnabled );
180 mEffectWidget->setDockMode( this->
dockMode() );
187 const auto constSymbolLayerIds = symbolLayerIds;
188 for (
const QString &symbolLayerId : constSymbolLayerIds )
194 const auto constLineLayerIds = lineLayerIds;
195 for (
const QString &lineLayerId : constLineLayerIds )
200 const QString visibleName = layerInfo->
visibleName();
201 const QString name = tr(
"Outline: %1" ).arg( visibleName );
202 cboLayerType->addItem( name, lineLayerId );
210 if ( stackedWidget->currentWidget() != pageDummy )
213 if (
QgsSymbolLayerWidget *w = qobject_cast< QgsSymbolLayerWidget * >( stackedWidget->currentWidget() ) )
215 stackedWidget->removeWidget( stackedWidget->currentWidget() );
220 const QString layerType = layer->
layerType();
229 stackedWidget->addWidget( w );
230 stackedWidget->setCurrentWidget( w );
238 stackedWidget->setCurrentWidget( pageDummy );
244 return *lExpressionContext;
251 if (
auto *lMapCanvas = mContext.
mapCanvas() )
257 expContext << generator->createExpressionContextScope();
274 expContext << symbolScope;
301 << QStringLiteral(
"symbol_layer_count" ) << QStringLiteral(
"symbol_layer_index" )
302 << QStringLiteral(
"symbol_frame" ) );
314 void QgsLayerPropertiesWidget::updateProperty()
327 const QString newLayerType = cboLayerType->currentData().toString();
328 if ( layer->
layerType() == newLayerType )
345 if ( generator->subSymbol() && generator->subSymbol()->symbolLayerCount() > 0 )
346 properties = generator->subSymbol()->symbolLayer( 0 )->properties();
363 std::unique_ptr< QgsMarkerSymbol > markerSymbol = std::make_unique< QgsMarkerSymbol >(
QgsSymbolLayerList( {layer->
clone() } ) );
365 generator->setSubSymbol( markerSymbol.release() );
370 std::unique_ptr< QgsLineSymbol > lineSymbol = std::make_unique< QgsLineSymbol >(
QgsSymbolLayerList( {layer->
clone() } ) );
372 generator->setSubSymbol( lineSymbol.release() );
377 std::unique_ptr< QgsFillSymbol > fillSymbol = std::make_unique< QgsFillSymbol >(
QgsSymbolLayerList( {layer->
clone() } ) );
379 generator->setSubSymbol( fillSymbol.release() );
400 const QString defaultFont = fontMarker->fontFamily();
401 const QFontDatabase fontDb;
402 if ( !fontDb.hasFamily( defaultFont ) )
405 const QStringList candidates = fontDb.families( QFontDatabase::WritingSystem::Symbol );
406 bool foundGoodCandidate =
false;
407 for (
const QString &candidate : candidates )
409 if ( fontDb.writingSystems( candidate ).size() == 1 )
412 fontMarker->setFontFamily( candidate );
413 foundGoodCandidate =
true;
417 if ( !foundGoodCandidate && !candidates.empty() )
420 QString candidate = candidates.at( 0 );
421 fontMarker->setFontFamily( candidate );
426 const QFontMetrics fontMetrics( fontMarker->fontFamily() );
427 ushort character = fontMarker->character().at( 0 ).unicode();
428 for ( ; character < 1000; ++character )
430 if ( fontMetrics.inFont( QChar( character ) ) )
432 fontMarker->setCharacter( QChar( character ) );
447 bool paintEffectToggled =
false;
451 paintEffectToggled =
true;
454 if ( paintEffectToggled )
461 void QgsLayerPropertiesWidget::reloadLayer()
466 void QgsLayerPropertiesWidget::mEnabledCheckBox_toggled(
bool enabled )
void setEnabled(bool enabled)
Sets whether symbol layer is enabled and should be drawn.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
bool enabled() const
Returns true if symbol layer is enabled and will be drawn.
QgsMapCanvas * mapCanvas() const
Returns the map canvas associated with the widget.
QgsPropertyCollection & dataDefinedProperties()
Returns a reference to the symbol layer's property collection, used for data defined overrides.
static const QString EXPR_ORIGINAL_VALUE
Inbuilt variable name for value original value variable.
static QgsExpressionContextScope * globalScope()
Creates a new scope which contains variables and functions relating to the global QGIS context.
void addVariable(const QgsExpressionContextScope::StaticVariable &variable)
Adds a variable into the context scope.
static const QString EXPR_CLUSTER_COLOR
Inbuilt variable name for cluster color variable.
static const QString EXPR_GEOMETRY_POINT_COUNT
Inbuilt variable name for point count variable.
virtual QgsSymbol * subSymbol()
Returns the symbol's sub symbol, if present.
QgsExpressionContextScope * lastScope()
Returns the last scope added to the context.
static const QString EXPR_GEOMETRY_POINT_NUM
Inbuilt variable name for point number variable.
void setOriginalValueVariable(const QVariant &value)
Sets the original value variable value for the context.
static QgsExpressionContextScope * layerScope(const QgsMapLayer *layer)
Creates a new scope which contains variables and functions relating to a QgsMapLayer.
Contains settings which reflect the context in which a symbol (or renderer) widget is shown,...
static QgsExpressionContextScope * mapSettingsScope(const QgsMapSettings &mapSettings)
Creates a new scope which contains variables and functions relating to a QgsMapSettings object.
static QgsProject * instance()
Returns the QgsProject singleton instance.
@ RenderMillimeters
Millimeters.
Registry of available symbol layer classes.
Abstract interface for generating an expression context scope.
static const QString EXPR_GEOMETRY_PART_NUM
Inbuilt variable name for geometry part number variable.
Abstract base class for all rendered symbols.
static QgsPaintEffect * defaultStack()
Returns a new effect stack consisting of a sensible selection of default effects.
static const QString EXPR_SYMBOL_COLOR
Inbuilt variable name for symbol color variable.
void setSymbolType(Qgis::SymbolType type)
Sets the associated symbol type, if the widget is being shown as a subcomponent of a parent symbol co...
static QgsSymbolLayerRegistry * symbolLayerRegistry()
Returns the application's symbol layer registry, used for managing symbol layers.
static const QgsPropertiesDefinition & propertyDefinitions()
Returns the symbol layer property definitions.
virtual QgsSymbolLayer * clone() const =0
Shall be reimplemented by subclasses to create a deep copy of the instance.
static QgsExpressionContextScope * projectScope(const QgsProject *project)
Creates a new scope which contains variables and functions relating to a QGIS project.
QgsSymbolLayerWidget *(* QgsSymbolLayerWidgetFunc)(QgsVectorLayer *)
virtual bool setSubSymbol(QgsSymbol *symbol)
Sets layer's subsymbol. takes ownership of the passed symbol.
Qgis::SymbolType type() const
Returns the symbol's type.
virtual QVariantMap properties() const =0
Should be reimplemented by subclasses to return a string map that contains the configuration informat...
QStringList symbolLayersForType(Qgis::SymbolType type)
Returns a list of available symbol layers for a specified symbol type.
static QPicture symbolLayerPreviewPicture(const QgsSymbolLayer *layer, QgsUnitTypes::RenderUnit units, QSize size, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::SymbolType parentSymbolType=Qgis::SymbolType::Hybrid)
Draws a symbol layer preview to a QPicture.
void setPaintEffect(QgsPaintEffect *effect)
Sets the current paint effect for the layer.
Struct for storing maximum and minimum scales for measurements in map units.
QgsExpressionContext * expressionContext() const
Returns the expression context used for the widget, if set.
QgsPaintEffect * paintEffect() const
Returns the current paint effect for the layer.
void setEnabled(bool enabled)
Sets whether the effect is enabled.
static const QString EXPR_GEOMETRY_RING_NUM
Inbuilt variable name for geometry ring number variable.
Single scope for storing variables and functions for use within a QgsExpressionContext....
@ PropertyLayerEnabled
Whether symbol layer is enabled.
void appendScope(QgsExpressionContextScope *scope)
Appends a scope to the end of the context.
static const QString EXPR_CLUSTER_SIZE
Inbuilt variable name for cluster size variable.
static const QString EXPR_GEOMETRY_PART_COUNT
Inbuilt variable name for geometry part count variable.
virtual QgsSymbol * clone() const =0
Returns a deep copy of this symbol.
static QgsExpressionContextScope * updateSymbolScope(const QgsSymbol *symbol, QgsExpressionContextScope *symbolScope=nullptr)
Updates a symbol scope related to a QgsSymbol to an expression context.
Represents a vector layer which manages a vector based data sets.
QList< QgsSymbolLayer * > QgsSymbolLayerList
static QgsExpressionContextScope * atlasScope(const QgsLayoutAtlas *atlas)
Creates a new scope which contains variables and functions relating to a QgsLayoutAtlas.
Property
Data definable properties.
void setHighlightedVariables(const QStringList &variableNames)
Sets the list of variable names within the context intended to be highlighted to the user.
virtual QString layerType() const =0
Returns a string that represents this layer type.
virtual QColor color() const
Returns the "representative" color of the symbol layer.
bool enabled() const
Returns whether the effect is enabled.
Single variable definition for use within a QgsExpressionContextScope.
The QgsMapSettings class contains configuration for rendering of the map. The rendering itself is don...
QList< QgsExpressionContextScope > additionalExpressionContextScopes() const
Returns the list of additional expression context scopes to show as available within the layer.
virtual void setDataDefinedProperty(Property key, const QgsProperty &property)
Sets a data defined property for the layer.
QgsSymbolLayerAbstractMetadata * symbolLayerMetadata(const QString &name) const
Returns metadata for specified symbol layer. Returns nullptr if not found.