64#define QGSCLIPBOARD_MAPLAYER_MIME "application/qgis.maplayer"
76 Q_PROPERTY( QString name READ name WRITE setName NOTIFY nameChanged )
77 Q_PROPERTY(
int autoRefreshInterval READ autoRefreshInterval WRITE setAutoRefreshInterval NOTIFY autoRefreshIntervalChanged )
78 Q_PROPERTY(
QgsLayerMetadata metadata READ metadata WRITE setMetadata NOTIFY metadataChanged )
81 Q_PROPERTY(
bool isValid READ isValid NOTIFY isValidChanged )
82 Q_PROPERTY(
double opacity READ opacity WRITE setOpacity NOTIFY opacityChanged )
86 QgsMapLayer *layer = qobject_cast<QgsMapLayer *>( sipCpp );
92 switch ( layer->type() )
95 sipType = sipType_QgsVectorLayer;
98 sipType = sipType_QgsRasterLayer;
101 sipType = sipType_QgsPluginLayer;
104 sipType = sipType_QgsMeshLayer;
107 sipType = sipType_QgsVectorTileLayer;
110 sipType = sipType_QgsAnnotationLayer;
113 sipType = sipType_QgsPointCloudLayer;
116 sipType = sipType_QgsGroupLayer;
145 Identifiable = 1 << 0,
151 Q_DECLARE_FLAGS( LayerFlags, LayerFlag )
160 LayerConfiguration = 1 << 0,
162 Symbology3D = 1 << 2,
169 AttributeTable = 1 << 9,
171 CustomProperties = 1 << 11,
172 GeometryOptions = 1 << 12,
178 AllStyleCategories = LayerConfiguration | Symbology | Symbology3D | Labeling | Fields | Forms | Actions |
179 MapTips | Diagrams | AttributeTable | Rendering | CustomProperties | GeometryOptions | Relations | Temporal | Legend | Elevation | Notes,
181 Q_ENUM( StyleCategory )
182 Q_DECLARE_FLAGS( StyleCategories, StyleCategory )
183 Q_FLAG( StyleCategories )
223 QgsMapLayer::LayerFlags flags()
const;
235 void setFlags( QgsMapLayer::LayerFlags flags );
246 virtual Qgis::MapLayerProperties properties()
const;
253 static QString extensionPropertyType(
PropertyType type );
263 void setName(
const QString &name );
269 QString name()
const;
288 void setShortName( const QString &shortName ) { mShortName = shortName; }
295 QString shortName()
const;
302 void setTitle(
const QString &title ) { mTitle = title; }
310 QString
title()
const {
return mTitle; }
318 void setAbstract(
const QString &abstract ) { mAbstract = abstract; }
353 void setDataUrl(
const QString &dataUrl ) { mDataUrl = dataUrl; }
442 Q_DECL_DEPRECATED
void setMetadataUrl(
const QString &metaUrl )
SIP_DEPRECATED;
464 Q_DECL_DEPRECATED
void setMetadataUrlType( const QString &metaUrlType )
SIP_DEPRECATED;
485 Q_DECL_DEPRECATED
void setMetadataUrlFormat( const QString &metaUrlFormat )
SIP_DEPRECATED;
496 Q_DECL_DEPRECATED QString metadataUrlFormat() const
SIP_DEPRECATED;
503 void setBlendMode( QPainter::CompositionMode blendMode );
509 QPainter::CompositionMode blendMode() const;
519 virtual
void setOpacity(
double opacity );
529 virtual
double opacity() const;
532 bool readOnly()
const {
return isReadOnly(); }
556 QgsRectangle wgs84Extent(
bool forceRecalculate =
false )
const;
563 bool isValid()
const;
571 QString publicSource()
const;
578 QString source()
const;
584 virtual QStringList subLayers()
const;
590 virtual void setLayerOrder(
const QStringList &layers );
597 virtual void setSubLayerVisibility(
const QString &name,
bool visible );
605 virtual bool supportsEditing()
const;
608 virtual bool isEditable()
const;
615 virtual bool isModified()
const;
621 virtual bool isSpatial()
const;
632 virtual bool isTemporary()
const;
640 FlagDontResolveLayers = 1 << 0,
641 FlagTrustLayerMetadata = 1 << 1,
642 FlagReadExtentFromXml = 1 << 2,
643 FlagForceReadOnly = 1 << 3,
645 Q_DECLARE_FLAGS( ReadFlags, ReadFlag )
664 bool readLayerXml(
const QDomElement &layerElement,
QgsReadWriteContext &context, QgsMapLayer::ReadFlags flags = QgsMapLayer::ReadFlags() );
683 bool writeLayerXml( QDomElement &layerElement, QDomDocument &document,
const QgsReadWriteContext &context )
const;
689 virtual void resolveReferences(
QgsProject *project );
696 Q_INVOKABLE QStringList customPropertyKeys()
const;
703 Q_INVOKABLE
void setCustomProperty(
const QString &key,
const QVariant &value );
709 Q_INVOKABLE QVariant customProperty(
const QString &value,
const QVariant &defaultValue = QVariant() )
const;
739 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
740 Q_ASSERT( metaEnum.isValid() );
741 if ( !metaEnum.isValid() )
743 QgsDebugMsg( QStringLiteral(
"Invalid metaenum. Enum probably misses Q_ENUM or Q_FLAG declaration." ) );
749 if ( metaEnum.isValid() )
752 QByteArray ba = customProperty( key, metaEnum.valueToKey(
static_cast<int>( defaultValue ) ) ).toString().toUtf8();
753 const char *vs = ba.data();
754 v =
static_cast<T
>( metaEnum.keyToValue( vs, &ok ) );
762 v =
static_cast<T
>( customProperty( key,
static_cast<int>( defaultValue ) ).toInt( &ok ) );
763 if ( metaEnum.isValid() )
765 if ( !ok || !metaEnum.valueToKey(
static_cast<int>( v ) ) )
773 setCustomEnumProperty( key, v );
791 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
792 Q_ASSERT( metaEnum.isValid() );
793 if ( metaEnum.isValid() )
795 setCustomProperty( key, metaEnum.valueToKey(
static_cast<int>( value ) ) );
799 QgsDebugMsg( QStringLiteral(
"Invalid metaenum. Enum probably misses Q_ENUM or Q_FLAG declaration." ) );
817 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
818 Q_ASSERT( metaEnum.isValid() );
819 if ( !metaEnum.isValid() )
821 QgsDebugMsg( QStringLiteral(
"Invalid metaenum. Enum probably misses Q_ENUM or Q_FLAG declaration." ) );
827 if ( metaEnum.isValid() )
830 QByteArray ba = customProperty( key, metaEnum.valueToKeys( defaultValue ) ).toString().toUtf8();
831 const char *vs = ba.data();
832 v =
static_cast<T
>( metaEnum.keysToValue( vs, &ok ) );
837 const int intValue = customProperty( key,
static_cast<int>( defaultValue ) ).toInt( &ok );
838 if ( metaEnum.isValid() )
844 const QByteArray keys = metaEnum.valueToKeys( intValue );
845 const int intValueCheck = metaEnum.keysToValue( keys );
846 if ( intValue != intValueCheck )
857 setCustomFlagProperty( key, v );
881 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
882 Q_ASSERT( metaEnum.isValid() );
883 if ( metaEnum.isValid() )
885 setCustomProperty( key, metaEnum.valueToKeys( value ) );
889 QgsDebugMsg( QStringLiteral(
"Invalid metaenum. Enum probably misses Q_ENUM or Q_FLAG declaration." ) );
899 void removeCustomProperty(
const QString &key );
930 static QString formatLayerName(
const QString &name );
939 virtual QString metadataUri()
const;
947 void exportNamedMetadata( QDomDocument &doc, QString &errorMsg )
const;
958 virtual QString saveDefaultMetadata(
bool &resultFlag
SIP_OUT );
974 QString saveNamedMetadata(
const QString &uri,
bool &resultFlag );
990 virtual QString loadNamedMetadata(
const QString &uri,
bool &resultFlag
SIP_OUT );
1001 virtual QString loadDefaultMetadata(
bool &resultFlag );
1011 bool loadNamedMetadataFromDatabase(
const QString &db,
const QString &uri, QString &qmd );
1020 bool importNamedMetadata( QDomDocument &document, QString &errorMessage );
1029 virtual QString styleURI()
const;
1040 virtual QString loadDefaultStyle(
bool &resultFlag
SIP_OUT );
1066 virtual bool loadNamedStyleFromDatabase(
const QString &db,
const QString &uri, QString &qml
SIP_OUT );
1077 virtual bool importNamedStyle( QDomDocument &doc, QString &errorMsg
SIP_OUT,
1098 virtual void exportSldStyle( QDomDocument &doc, QString &errorMsg )
const;
1110 virtual QString saveDefaultStyle(
bool &resultFlag
SIP_OUT, StyleCategories categories );
1139 virtual QString saveNamedStyle(
const QString &uri,
bool &resultFlag
SIP_OUT, StyleCategories categories = AllStyleCategories );
1149 virtual QString saveSldStyle(
const QString &uri,
bool &resultFlag )
const;
1159 virtual QString loadSldStyle(
const QString &uri,
bool &resultFlag );
1161 virtual bool readSld(
const QDomNode &node, QString &errorMessage )
1162 { Q_UNUSED( node ) errorMessage = QStringLiteral(
"Layer type %1 not supported" ).arg(
static_cast<int>( type() ) );
return false; }
1187 virtual bool readStyle(
const QDomNode &node, QString &errorMessage,
1201 StyleCategories categories = AllStyleCategories )
const = 0;
1215 virtual bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage,
const QgsReadWriteContext &context,
1216 StyleCategories categories = AllStyleCategories )
const;
1233 void setDataSource(
const QString &dataSource,
const QString &baseName,
const QString &provider,
bool loadDefaultStyleFlag =
false );
1248 void setDataSource(
const QString &dataSource,
const QString &baseName,
const QString &provider,
const QgsDataProvider::ProviderOptions &options,
bool loadDefaultStyleFlag =
false );
1264 void setDataSource(
const QString &dataSource,
const QString &baseName,
const QString &provider,
const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags );
1269 QString providerType()
const;
1272 QUndoStack *undoStack();
1278 QUndoStack *undoStackStyles();
1340 bool isInScaleRange(
double scale )
const;
1352 double minimumScale()
const;
1364 double maximumScale()
const;
1374 bool hasScaleBasedVisibility()
const;
1382 bool hasAutoRefreshEnabled()
const;
1391 int autoRefreshInterval()
const;
1404 void setAutoRefreshInterval(
int interval );
1412 void setAutoRefreshEnabled(
bool enabled );
1434 virtual QString htmlMetadata()
const;
1437 virtual QDateTime timestamp()
const;
1446 virtual QSet<QgsMapLayerDependency> dependencies()
const;
1470 QString originalXmlProperties()
const;
1479 void setOriginalXmlProperties(
const QString &originalXmlProperties );
1485 static QString generateId(
const QString &layerName );
1537 void setMinimumScale(
double scale );
1548 void setMaximumScale(
double scale );
1557 void setScaleBasedVisibility(
bool enabled );
1567 void triggerRepaint(
bool deferredUpdate =
false );
1575 void trigger3DUpdate();
1581 void emitStyleChanged();
1591 virtual bool setDependencies(
const QSet<QgsMapLayerDependency> &layers );
1598 void setRefreshOnNotifyEnabled(
bool enabled );
1617 SIP_PYOBJECT __repr__();
1619 QString
str = QStringLiteral(
"<QgsMapLayer: '%1' (%2)>" ).arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : QStringLiteral(
"Invalid" ) );
1620 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
1812 void onNotified(
const QString &message );
1829 virtual void setDataSourcePrivate(
const QString &dataSource,
const QString &baseName,
const QString &provider,
const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags );
1844 void setValid(
bool valid );
1856 virtual bool writeXml( QDomNode &layer_node, QDomDocument &document,
const QgsReadWriteContext &context )
const;
1869 virtual QString encodedSource(
const QString &source,
const QgsReadWriteContext &context )
const;
1883 virtual QString decodedSource(
const QString &source,
const QString &dataProvider,
const QgsReadWriteContext &context )
const;
1890 void readCustomProperties(
const QDomNode &layerNode,
const QString &keyStartsWith = QString() );
1893 void writeCustomProperties( QDomNode &layerNode, QDomDocument &doc )
const;
1896 void readStyleManager(
const QDomNode &layerNode );
1898 void writeStyleManager( QDomNode &layerNode, QDomDocument &doc )
const;
1904 void writeCommonStyle( QDomElement &layerElement, QDomDocument &document,
1906 StyleCategories categories = AllStyleCategories )
const;
1912 void readCommonStyle(
const QDomElement &layerElement,
const QgsReadWriteContext &context,
1913 StyleCategories categories = AllStyleCategories );
1916 void setProviderType(
const QString &providerType );
1921 void connectNotify(
const char *signal )
override;
1936 void invalidateWgs84Extent();
1939 bool mValid =
false;
1979 bool mIsRefreshOnNofifyEnabled =
false;
1988 QgsMapLayer::ReadFlags mReadFlags = QgsMapLayer::ReadFlags();
1995 bool mShouldValidateCrs =
true;
2002 double mLayerOpacity = 1.0;
2009 int mBlockStyleChangedSignal = 0;
2021 QString crsHtmlMetadata()
const;
2034 QString generalHtmlMetadata()
const;
2041 bool &resultFlag, StyleCategories categories = AllStyleCategories );
2043 bool &resultFlag, StyleCategories categories = AllStyleCategories );
2044 bool loadNamedPropertyFromDatabase(
const QString &db,
const QString &uri, QString &xml,
QgsMapLayer::PropertyType type );
2053 virtual bool isReadOnly()
const;
2067 LayerFlags mFlags = LayerFlags( Identifiable | Removable | Searchable );
2070 QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_SourceOver;
2078 double mMinScale = 0;
2080 double mMaxScale = 100000000;
2082 bool mScaleBasedVisibility =
false;
2087 std::unique_ptr< QgsMapLayerServerProperties > mServerProperties;
2090 QUndoStack *mUndoStack =
nullptr;
2092 QUndoStack *mUndoStackStyles =
nullptr;
2104 QTimer *mRefreshTimer =
nullptr;
2122 QString mOriginalXmlProperties;
2125 bool mRepaintRequestedFired =
false;
2128 QString mLegendPlaceholderImage;
2131 friend class TestQgsMapLayer;
Base class for all renderers that may to participate in 3D view.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Abstract base class for spatial data provider implementations.
QgsErrorMessage represents single error message.
QgsError is container for error messages (report).
Base class for storage of map layer elevation properties.
The QgsMapLayerLegend class is abstract interface for implementations of legends for one map layer.
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Manages QGIS Server properties for a map layer.
Management of styles for use with one map layer.
Base class for storage of map layer temporal properties.
Base class for all map layer types.
virtual bool writeSymbology(QDomNode &node, QDomDocument &doc, QString &errorMessage, const QgsReadWriteContext &context, StyleCategories categories=AllStyleCategories) const =0
Write the style for the layer into the document provided.
QString legendUrlFormat() const
Returns the format for a URL based layer legend.
void dependenciesChanged()
Emitted when dependencies are changed.
void setError(const QgsError &error)
Sets error message.
void legendChanged()
Signal emitted when legend of the layer has changed.
void setAbstract(const QString &abstract)
Sets the abstract of the layer used by QGIS Server in GetCapabilities request.
void editingStopped()
Emitted when edited changes have been successfully written to the data provider.
void recalculateExtents() const
This is used to send a request that any mapcanvas using this layer update its extents.
void metadataChanged()
Emitted when the layer's metadata is changed.
void setLegendUrl(const QString &legendUrl)
Sets the URL for the layer's legend.
void request3DUpdate()
Signal emitted when a layer requires an update in any 3D maps.
void configChanged()
Emitted whenever the configuration is changed.
void autoRefreshIntervalChanged(int interval)
Emitted when the auto refresh interval changes.
T customFlagProperty(const QString &key, const T &defaultValue)
Returns the property value for a property based on a flag.
Q_DECL_DEPRECATED bool hasDependencyCycle(const QSet< QgsMapLayerDependency > &) const
Checks whether a new set of dependencies will introduce a cycle this method is now deprecated and alw...
void editingStarted()
Emitted when editing on this layer has started.
void isValidChanged()
Emitted when the validity of this layer changed.
QString legendPlaceholderImage() const
Returns path to the placeholder image or an empty string if a generated legend is shown.
QgsMapLayerServerProperties * serverProperties()
Returns QGIS Server Properties for the map layer.
QString attribution() const
Returns the attribution of the layer used by QGIS Server in GetCapabilities request.
QString mRefreshOnNofifyMessage
QString mLegendUrl
WMS legend.
QString mLayerName
Name of the layer - used for display.
void setCustomFlagProperty(const QString &key, const T &value)
Set the value of a property based on a flag.
void setAttributionUrl(const QString &attribUrl)
Sets the attribution URL of the layer used by QGIS Server in GetCapabilities request.
void renderer3DChanged()
Signal emitted when 3D renderer associated with the layer has changed.
QString abstract() const
Returns the abstract of the layer used by QGIS Server in GetCapabilities request.
QString dataUrlFormat() const
Returns the DataUrl format of the layer used by QGIS Server in GetCapabilities request.
void statusChanged(const QString &status)
Emit a signal with status (e.g. to be caught by QgisApp and display a msg on status bar)
void setDataUrl(const QString &dataUrl)
Sets the DataUrl of the layer used by QGIS Server in GetCapabilities request.
QgsMapLayer(QgsMapLayer const &)=delete
QgsMapLayer cannot be copied.
void setKeywordList(const QString &keywords)
Sets the keyword list of the layer used by QGIS Server in GetCapabilities request.
void setAttribution(const QString &attrib)
Sets the attribution of the layer used by QGIS Server in GetCapabilities request.
bool isRefreshOnNotifyEnabled() const
Returns true if the refresh on provider nofification is enabled.
QSet< QgsMapLayerDependency > mDependencies
List of layers that may modify this layer on modification.
void setDataUrlFormat(const QString &dataUrlFormat)
Sets the DataUrl format of the layer used by QGIS Server in GetCapabilities request.
const QgsMapLayerServerProperties * serverProperties() const
Returns QGIS Server Properties const for the map layer.
QString mProviderKey
Data provider key (name of the data provider)
void styleChanged()
Signal emitted whenever a change affects the layer's style.
void rendererChanged()
Signal emitted when renderer is changed.
QString title() const
Returns the title of the layer used by QGIS Server in GetCapabilities request.
void crsChanged()
Emit a signal that layer's CRS has been reset.
void dataSourceChanged()
Emitted whenever the layer's data source has been changed.
QString dataUrl() const
Returns the DataUrl of the layer used by QGIS Server in GetCapabilities request.
QgsMapLayer & operator=(QgsMapLayer const &)=delete
QgsMapLayer cannot be copied.
void setRefreshOnNofifyMessage(const QString &message)
Set the notification message that triggers repaint If refresh on notification is enabled,...
void opacityChanged(double opacity)
Emitted when the layer's opacity is changed, where opacity is a value between 0 (transparent) and 1 (...
void styleLoaded(QgsMapLayer::StyleCategories categories)
Emitted when a style has been loaded.
virtual QgsMapLayerTemporalProperties * temporalProperties()
Returns the layer's temporal properties.
void dataChanged()
Data of layer changed.
virtual QgsMapLayerRenderer * createMapRenderer(QgsRenderContext &rendererContext)=0
Returns new instance of QgsMapLayerRenderer that will be used for rendering of given context.
void willBeDeleted()
Emitted in the destructor when the layer is about to be deleted, but it is still in a perfectly valid...
virtual QgsMapLayer * clone() const =0
Returns a new instance equivalent to this one except for the id which is still unique.
void blendModeChanged(QPainter::CompositionMode blendMode)
Signal emitted when the blend mode is changed, through QgsMapLayer::setBlendMode()
virtual bool readSymbology(const QDomNode &node, QString &errorMessage, QgsReadWriteContext &context, StyleCategories categories=AllStyleCategories)=0
Read the symbology for the current layer from the DOM node supplied.
LayerFlag
Flags for the map layer.
void setLegendPlaceholderImage(const QString &imgPath)
Set placeholder image for legend.
void appendError(const QgsErrorMessage &error)
Add error message.
QString mDataSource
Data source description string, varies by layer type.
QString refreshOnNotifyMessage() const
Returns the message that should be notified by the provider to triggerRepaint.
virtual bool readSld(const QDomNode &node, QString &errorMessage)
ReadFlag
Flags which control project read behavior.
QString attributionUrl() const
Returns the attribution URL of the layer used by QGIS Server in GetCapabilities request.
QString mAbstract
Description of the layer.
void customPropertyChanged(const QString &key)
Emitted when a custom property of the layer has been changed or removed.
QString legendUrl() const
Returns the URL for the layer's legend.
void flagsChanged()
Emitted when layer's flags have been modified.
void repaintRequested(bool deferredUpdate=false)
By emitting this signal the layer tells that either appearance or content have been changed and any v...
void setLegendUrlFormat(const QString &legendUrlFormat)
Sets the format for a URL based layer legend.
void beforeResolveReferences(QgsProject *project)
Emitted when all layers are loaded and references can be resolved, just before the references of this...
virtual QgsMapLayerElevationProperties * elevationProperties()
Returns the layer's elevation properties.
virtual void setTransformContext(const QgsCoordinateTransformContext &transformContext)=0
Sets the coordinate transform context to transformContext.
void nameChanged()
Emitted when the name has been changed.
QString mDataUrl
DataUrl of the layer.
T customEnumProperty(const QString &key, const T &defaultValue)
Returns the property value for a property based on an enum.
StyleCategory
Categories of style to distinguish appropriate sections for import/export.
void layerModified()
Emitted when modifications has been done on layer.
virtual Q_INVOKABLE void reload()
Synchronises with changes in the datasource.
QString mAttribution
Attribution of the layer.
void setCustomEnumProperty(const QString &key, const T &value)
Set the value of a property based on an enum.
QString keywordList() const
Returns the keyword list of the layer used by QGIS Server in GetCapabilities request.
void setTitle(const QString &title)
Sets the title of the layer used by QGIS Server in GetCapabilities request.
PropertyType
Maplayer has a style and a metadata property.
Simple key-value store (keys = strings, values = variants) that supports loading/saving to/from XML i...
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Contains information about the context of a rendering operation.
An interface for classes which can visit style entity (e.g.
Represents a vector layer which manages a vector based data sets.
QgsMapLayerType
Types of layers that can be added to a map.
@ PointCloudLayer
Point cloud layer. Added in QGIS 3.18.
@ MeshLayer
Mesh layer. Added in QGIS 3.2.
@ VectorLayer
Vector layer.
@ RasterLayer
Raster layer.
@ GroupLayer
Composite group layer. Added in QGIS 3.24.
@ VectorTileLayer
Vector tile layer. Added in QGIS 3.14.
@ AnnotationLayer
Contains freeform, georeferenced annotations. Added in QGIS 3.16.
@ PluginLayer
Plugin based layer.
#define SIP_CONVERT_TO_SUBCLASS_CODE(code)
Q_DECLARE_METATYPE(QgsDatabaseQueryLogEntry)
Q_DECLARE_OPERATORS_FOR_FLAGS(QgsField::ConfigurationFlags) CORE_EXPORT QDataStream &operator<<(QDataStream &out
Writes the field to stream out. QGIS version compatibility is not guaranteed.
QPointer< QgsMapLayer > QgsWeakMapLayerPointer
Weak pointer for QgsMapLayer.
QList< QgsWeakMapLayerPointer > QgsWeakMapLayerPointerList
A list of weak pointers to QgsMapLayers.
const QgsCoordinateReferenceSystem & crs
Setting options for creating vector data providers.