80 Q_PROPERTY( QString
id READ
id WRITE setId NOTIFY idChanged )
81 Q_PROPERTY( QString name READ name WRITE setName NOTIFY nameChanged )
82 Q_PROPERTY(
int autoRefreshInterval READ autoRefreshInterval WRITE setAutoRefreshInterval NOTIFY autoRefreshIntervalChanged )
83 Q_PROPERTY(
QgsLayerMetadata metadata READ metadata WRITE setMetadata NOTIFY metadataChanged )
87 Q_PROPERTY(
Qgis::LayerType type READ type CONSTANT )
88 Q_PROPERTY(
bool isValid READ isValid NOTIFY isValidChanged )
89 Q_PROPERTY(
double opacity READ opacity WRITE setOpacity NOTIFY opacityChanged )
90 Q_PROPERTY( QString mapTipTemplate READ mapTipTemplate WRITE setMapTipTemplate NOTIFY mapTipTemplateChanged )
91 Q_PROPERTY(
bool mapTipsEnabled READ mapTipsEnabled WRITE setMapTipsEnabled NOTIFY mapTipsEnabledChanged )
95 QgsMapLayer *layer = qobject_cast<QgsMapLayer *>( sipCpp );
101 switch ( layer->type() )
104 sipType = sipType_QgsVectorLayer;
107 sipType = sipType_QgsRasterLayer;
110 sipType = sipType_QgsPluginLayer;
113 sipType = sipType_QgsMeshLayer;
116 sipType = sipType_QgsVectorTileLayer;
119 sipType = sipType_QgsAnnotationLayer;
122 sipType = sipType_QgsPointCloudLayer;
125 sipType = sipType_QgsGroupLayer;
128 sipType = sipType_QgsTiledSceneLayer;
156 Identifiable = 1 << 0,
171 LayerConfiguration = 1 << 0,
173 Symbology3D = 1 << 2,
180 AttributeTable = 1 << 9,
182 CustomProperties = 1 << 11,
183 GeometryOptions = 1 << 12,
189 AllStyleCategories = LayerConfiguration | Symbology | Symbology3D | Labeling | Fields | Forms | Actions |
190 MapTips | Diagrams | AttributeTable | Rendering | CustomProperties | GeometryOptions | Relations | Temporal | Legend | Elevation | Notes,
192 Q_ENUM( StyleCategory )
202 QgsMapLayer(
Qgis::LayerType type =
Qgis::LayerType::Vector, const QString &name = QString(), const QString &source = QString() );
219 Qgis::LayerType type() const;
254 virtual
Qgis::MapLayerProperties properties() const;
260 static QString extensionPropertyType(
PropertyType type );
285 bool setId( const QString &
id );
291 void setName( const QString &name );
297 QString name() const;
321 Q_DECL_DEPRECATED
void setShortName( const QString &shortName )
SIP_DEPRECATED;
335 Q_DECL_DEPRECATED
void setTitle( const QString &title )
SIP_DEPRECATED;
349 Q_DECL_DEPRECATED
void setAbstract( const QString &abstract )
SIP_DEPRECATED;
363 Q_DECL_DEPRECATED
void setKeywordList( const QString &keywords )
SIP_DEPRECATED;
377 Q_DECL_DEPRECATED
void setDataUrl( const QString &dataUrl )
SIP_DEPRECATED;
391 Q_DECL_DEPRECATED
void setDataUrlFormat( const QString &dataUrlFormat )
SIP_DEPRECATED;
405 Q_DECL_DEPRECATED
void setAttribution( const QString &attrib )
SIP_DEPRECATED;
419 Q_DECL_DEPRECATED
void setAttributionUrl( const QString &attribUrl )
SIP_DEPRECATED;
450 Q_DECL_DEPRECATED
void setMetadataUrl(
const QString &metaUrl )
SIP_DEPRECATED;
471 Q_DECL_DEPRECATED
void setMetadataUrlType( const QString &metaUrlType )
SIP_DEPRECATED;
492 Q_DECL_DEPRECATED
void setMetadataUrlFormat( const QString &metaUrlFormat )
SIP_DEPRECATED;
503 Q_DECL_DEPRECATED QString metadataUrlFormat() const
SIP_DEPRECATED;
510 void setBlendMode( QPainter::CompositionMode blendMode );
516 QPainter::CompositionMode blendMode() const;
526 virtual
void setOpacity(
double opacity );
536 virtual
double opacity() const;
539 bool readOnly()
const {
return isReadOnly(); }
568 QgsRectangle wgs84Extent(
bool forceRecalculate =
false )
const;
575 bool isValid()
const;
587 QString publicSource(
bool hidePassword =
false )
const;
594 QString source()
const;
600 virtual QStringList subLayers()
const;
606 virtual void setLayerOrder(
const QStringList &layers );
613 virtual void setSubLayerVisibility(
const QString &name,
bool visible );
621 virtual bool supportsEditing()
const;
624 virtual bool isEditable()
const;
631 virtual bool isModified()
const;
636 virtual bool isSpatial()
const;
647 virtual bool isTemporary()
const;
655 FlagDontResolveLayers = 1 << 0,
656 FlagTrustLayerMetadata = 1 << 1,
657 FlagReadExtentFromXml = 1 << 2,
658 FlagForceReadOnly = 1 << 3,
697 bool writeLayerXml( QDomElement &layerElement, QDomDocument &document,
const QgsReadWriteContext &context )
const;
702 virtual void resolveReferences(
QgsProject *project );
708 Q_INVOKABLE QStringList customPropertyKeys()
const;
715 Q_INVOKABLE
void setCustomProperty(
const QString &key,
const QVariant &value );
721 Q_INVOKABLE QVariant customProperty(
const QString &value,
const QVariant &defaultValue = QVariant() )
const;
744 virtual int listStylesInDatabase( QStringList &ids
SIP_OUT, QStringList &names
SIP_OUT,
750 virtual QString getStyleFromDatabase(
const QString &styleId, QString &msgError
SIP_OUT );
758 virtual bool deleteStyleFromDatabase(
const QString &styleId, QString &msgError
SIP_OUT );
768 QmlGenerationFailed = 1 << 0,
769 SldGenerationFailed = 1 << 1,
770 DatabaseWriteFailed = 1 << 2,
772 Q_ENUM( SaveStyleResult )
799 Q_DECL_DEPRECATED virtual
void saveStyleToDatabase( const QString &name, const QString &description,
800 bool useAsDefault, const QString &uiFileContent,
818 bool useAsDefault, const QString &uiFileContent,
835 virtual QString loadNamedStyle( const QString &theURI,
bool &resultFlag
SIP_OUT,
bool loadFromLocalDb,
837 Qgis::LoadStyleFlags flags =
Qgis::LoadStyleFlags() );
854 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
855 Q_ASSERT( metaEnum.isValid() );
856 if ( !metaEnum.isValid() )
858 QgsDebugError( QStringLiteral(
"Invalid metaenum. Enum probably misses Q_ENUM or Q_FLAG declaration." ) );
864 if ( metaEnum.isValid() )
867 QByteArray ba = customProperty( key, metaEnum.valueToKey(
static_cast<int>( defaultValue ) ) ).toString().toUtf8();
868 const char *vs = ba.data();
869 v =
static_cast<T
>( metaEnum.keyToValue( vs, &ok ) );
877 v =
static_cast<T
>( customProperty( key,
static_cast<int>( defaultValue ) ).toInt( &ok ) );
878 if ( metaEnum.isValid() )
880 if ( !ok || !metaEnum.valueToKey(
static_cast<int>( v ) ) )
888 setCustomEnumProperty( key, v );
906 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
907 Q_ASSERT( metaEnum.isValid() );
908 if ( metaEnum.isValid() )
910 setCustomProperty( key, metaEnum.valueToKey(
static_cast<int>( value ) ) );
914 QgsDebugError( QStringLiteral(
"Invalid metaenum. Enum probably misses Q_ENUM or Q_FLAG declaration." ) );
932 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
933 Q_ASSERT( metaEnum.isValid() );
934 if ( !metaEnum.isValid() )
936 QgsDebugError( QStringLiteral(
"Invalid metaenum. Enum probably misses Q_ENUM or Q_FLAG declaration." ) );
942 if ( metaEnum.isValid() )
945 QByteArray ba = customProperty( key, metaEnum.valueToKeys( defaultValue ) ).toString().toUtf8();
946 const char *vs = ba.data();
947 v =
static_cast<T
>( metaEnum.keysToValue( vs, &ok ) );
952 const int intValue = customProperty( key,
static_cast<int>( defaultValue ) ).toInt( &ok );
953 if ( metaEnum.isValid() )
959 const QByteArray keys = metaEnum.valueToKeys( intValue );
960 const int intValueCheck = metaEnum.keysToValue( keys );
961 if ( intValue != intValueCheck )
972 setCustomFlagProperty( key, v );
996 const QMetaEnum metaEnum = QMetaEnum::fromType<T>();
997 Q_ASSERT( metaEnum.isValid() );
998 if ( metaEnum.isValid() )
1000 setCustomProperty( key, metaEnum.valueToKeys( value ) );
1004 QgsDebugError( QStringLiteral(
"Invalid metaenum. Enum probably misses Q_ENUM or Q_FLAG declaration." ) );
1014 void removeCustomProperty(
const QString &key );
1121 static QString formatLayerName(
const QString &name );
1129 virtual QString metadataUri()
const;
1136 void exportNamedMetadata( QDomDocument &doc, QString &errorMsg )
const;
1146 virtual QString saveDefaultMetadata(
bool &resultFlag
SIP_OUT );
1161 QString saveNamedMetadata(
const QString &uri,
bool &resultFlag
SIP_OUT );
1179 virtual QString loadNamedMetadata(
const QString &uri,
bool &resultFlag
SIP_OUT );
1192 virtual QString loadDefaultMetadata(
bool &resultFlag
SIP_OUT );
1201 bool loadNamedMetadataFromDatabase(
const QString &db,
const QString &uri, QString &qmd );
1209 bool importNamedMetadata( QDomDocument &document, QString &errorMessage );
1219 virtual QString styleURI()
const;
1233 virtual QString loadDefaultStyle(
bool &resultFlag
SIP_OUT );
1263 virtual bool loadNamedStyleFromDatabase(
const QString &db,
const QString &uri, QString &qml
SIP_OUT );
1273 virtual bool importNamedStyle( QDomDocument &doc, QString &errorMsg
SIP_OUT,
1295 Q_DECL_DEPRECATED
virtual void exportSldStyle( QDomDocument &doc, QString &errorMsg )
const SIP_DEPRECATED;
1328 virtual QString saveDefaultStyle(
bool &resultFlag
SIP_OUT, StyleCategories categories );
1358 virtual QString saveNamedStyle(
const QString &uri,
bool &resultFlag
SIP_OUT, StyleCategories categories = AllStyleCategories );
1369 virtual QString saveSldStyle(
const QString &uri,
bool &resultFlag
SIP_OUT )
const;
1391 virtual QString loadSldStyle(
const QString &uri,
bool &resultFlag
SIP_OUT );
1393 virtual bool readSld(
const QDomNode &node, QString &errorMessage )
1394 { Q_UNUSED( node ) errorMessage = QStringLiteral(
"Layer type %1 not supported" ).arg(
static_cast<int>( type() ) );
return false; }
1393 virtual bool readSld(
const QDomNode &node, QString &errorMessage ) {
…}
1418 virtual bool readStyle(
const QDomNode &node, QString &errorMessage,
1445 virtual bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage,
const QgsReadWriteContext &context,
1479 void setDataSource(
const QString &dataSource,
const QString &baseName = QString(),
const QString &provider = QString(),
bool loadDefaultStyleFlag =
false );
1510 void setDataSource(
const QString &dataSource,
const QString &baseName,
const QString &provider,
const QgsDataProvider::ProviderOptions &options,
bool loadDefaultStyleFlag =
false );
1546 QString providerType()
const;
1549 QUndoStack *undoStack();
1554 QUndoStack *undoStackStyles();
1561 Q_DECL_DEPRECATED
void setLegendUrl(
const QString &legendUrl )
SIP_DEPRECATED;
1575 Q_DECL_DEPRECATED
void setLegendUrlFormat( const QString &legendUrlFormat )
SIP_DEPRECATED;
1582 Q_DECL_DEPRECATED QString legendUrlFormat() const
SIP_DEPRECATED;
1618 bool isInScaleRange(
double scale ) const;
1630 double minimumScale() const;
1642 double maximumScale() const;
1652 bool hasScaleBasedVisibility() const;
1660 Q_DECL_DEPRECATED
bool hasAutoRefreshEnabled() const
SIP_DEPRECATED;
1668 Qgis::AutoRefreshMode autoRefreshMode() const;
1676 int autoRefreshInterval() const;
1688 void setAutoRefreshInterval(
int interval );
1696 Q_DECL_DEPRECATED
void setAutoRefreshEnabled(
bool enabled )
SIP_DEPRECATED;
1704 void setAutoRefreshMode(
Qgis::AutoRefreshMode mode );
1723 virtual QString htmlMetadata() const;
1726 virtual QDateTime timestamp() const;
1740 QString refreshOnNotifyMessage()
const {
return mRefreshOnNofifyMessage; }
1756 QString originalXmlProperties()
const;
1765 void setOriginalXmlProperties(
const QString &originalXmlProperties );
1771 static QString generateId(
const QString &layerName );
1825 virtual bool hasMapTips()
const;
1834 QString mapTipTemplate()
const;
1843 void setMapTipTemplate(
const QString &mapTipTemplate );
1851 void setMapTipsEnabled(
bool enabled );
1857 bool mapTipsEnabled()
const;
1879 void setMinimumScale(
double scale );
1890 void setMaximumScale(
double scale );
1899 void setScaleBasedVisibility(
bool enabled );
1909 void triggerRepaint(
bool deferredUpdate =
false );
1917 void trigger3DUpdate();
1922 void emitStyleChanged();
1931 virtual bool setDependencies(
const QSet<QgsMapLayerDependency> &layers );
1937 void setRefreshOnNotifyEnabled(
bool enabled );
1955 SIP_PYOBJECT __repr__();
1957 QString str = QStringLiteral(
"<QgsMapLayer: '%1' (%2)>" ).arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : QStringLiteral(
"Invalid" ) );
1958 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
2202 void onNotified(
const QString &message );
2236 virtual void setExtent3D(
const QgsBox3D &box );
2239 void setValid(
bool valid );
2251 virtual bool writeXml( QDomNode &layer_node, QDomDocument &document,
const QgsReadWriteContext &context )
const;
2264 virtual QString encodedSource(
const QString &source,
const QgsReadWriteContext &context )
const;
2278 virtual QString decodedSource(
const QString &source,
const QString &dataProvider,
const QgsReadWriteContext &context )
const;
2285 void readCustomProperties(
const QDomNode &layerNode,
const QString &keyStartsWith = QString() );
2288 void writeCustomProperties( QDomNode &layerNode, QDomDocument &doc )
const;
2291 void readStyleManager(
const QDomNode &layerNode );
2293 void writeStyleManager( QDomNode &layerNode, QDomDocument &doc )
const;
2298 void writeCommonStyle( QDomElement &layerElement, QDomDocument &document,
2305 void readCommonStyle(
const QDomElement &layerElement,
const QgsReadWriteContext &context,
2309 void setProviderType(
const QString &providerType );
2314 void connectNotify(
const char *signal )
override;
2329 void invalidateWgs84Extent();
2332 bool mValid =
false;
2353 bool mIsRefreshOnNofifyEnabled =
false;
2369 bool mShouldValidateCrs =
true;
2376 double mLayerOpacity = 1.0;
2383 int mBlockStyleChangedSignal = 0;
2395 QString crsHtmlMetadata()
const;
2408 QString generalHtmlMetadata()
const;
2418 QString customPropertyHtmlMetadata()
const;
2440 bool loadNamedPropertyFromDatabase(
const QString &db,
const QString &uri, QString &xml,
QgsMapLayer::PropertyType type );
2444 void updateExtent(
const QgsBox3D &extent )
const;
2446 bool rebuildCrs3D( QString *error =
nullptr );
2452 virtual bool isReadOnly()
const;
2471 QPainter::CompositionMode mBlendMode = QPainter::CompositionMode_SourceOver;
2479 double mMinScale = 0;
2481 double mMaxScale = 100000000;
2483 bool mScaleBasedVisibility =
false;
2488 std::unique_ptr< QgsMapLayerServerProperties > mServerProperties;
2491 QUndoStack *mUndoStack =
nullptr;
2493 QUndoStack *mUndoStackStyles =
nullptr;
2499 std::unique_ptr<QgsMapLayerLegend> mLegend;
2502 std::unique_ptr<QgsMapLayerStyleManager> mStyleManager;
2507 QTimer *mRefreshTimer =
nullptr;
2512 std::unique_ptr<QgsAbstract3DRenderer> m3DRenderer;
2528 QString mOriginalXmlProperties;
2531 bool mRepaintRequestedFired =
false;
2534 QString mLegendPlaceholderImage;
2537 QString mMapTipTemplate;
2540 bool mMapTipsEnabled =
true;
2543 friend class TestQgsProject;
2544 friend class TestQgsMapLayer;