109 Q_PROPERTY( QStringList nonIdentifiableLayers READ nonIdentifiableLayers WRITE setNonIdentifiableLayers NOTIFY nonIdentifiableLayersChanged )
110 Q_PROPERTY( QString fileName READ fileName WRITE setFileName NOTIFY fileNameChanged )
111 Q_PROPERTY( QString homePath READ homePath WRITE setPresetHomePath NOTIFY homePathChanged )
114 Q_PROPERTY( QString ellipsoid READ ellipsoid WRITE setEllipsoid NOTIFY ellipsoidChanged )
116 Q_PROPERTY(
QgsSnappingConfig snappingConfig READ snappingConfig WRITE setSnappingConfig NOTIFY snappingConfigChanged )
118 Q_PROPERTY(
Qgis::AvoidIntersectionsMode avoidIntersectionsMode READ avoidIntersectionsMode WRITE setAvoidIntersectionsMode NOTIFY avoidIntersectionsModeChanged )
119 Q_PROPERTY( QList<
QgsVectorLayer *> avoidIntersectionsLayers READ avoidIntersectionsLayers WRITE setAvoidIntersectionsLayers NOTIFY avoidIntersectionsLayersChanged )
121 Q_PROPERTY( QColor backgroundColor READ backgroundColor WRITE setBackgroundColor NOTIFY backgroundColorChanged )
122 Q_PROPERTY( QColor selectionColor READ selectionColor WRITE setSelectionColor NOTIFY selectionColorChanged )
123 Q_PROPERTY(
bool topologicalEditing READ topologicalEditing WRITE setTopologicalEditing NOTIFY topologicalEditingChanged )
124 Q_PROPERTY(
Qgis::DistanceUnit distanceUnits READ distanceUnits WRITE setDistanceUnits NOTIFY distanceUnitsChanged )
125 Q_PROPERTY(
Qgis::AreaUnit areaUnits READ areaUnits WRITE setAreaUnits NOTIFY areaUnitsChanged )
127 Q_PROPERTY(
Qgis::TransactionMode transactionMode READ transactionMode WRITE setTransactionMode NOTIFY transactionModeChanged )
128 Q_PROPERTY(
Qgis::ScaleCalculationMethod scaleMethod READ scaleMethod WRITE setScaleMethod NOTIFY scaleMethodChanged )
146 WMSOnlineResource = 2,
161 static void setInstance(
QgsProject *project ) ;
183 void setTitle(
const QString &title );
191 QString title()
const;
238 QString saveUser()
const;
247 QString saveUserFullName()
const;
254 QDateTime lastSaveDateTime()
const;
266 bool isDirty()
const;
274 void setFileName(
const QString &name );
282 QString fileName()
const;
295 void setOriginalPath(
const QString &path );
308 QString originalPath()
const;
334 QDateTime lastModified() const;
341 QString absoluteFilePath() const;
348 QString absolutePath() const;
354 QString baseName() const;
362 Qgis::FilePathType filePathStorage() const;
370 void setFilePathStorage(
Qgis::FilePathType type );
429 QString ellipsoid() const;
438 void setEllipsoid( const QString &ellipsoid );
513 bool read( const QString &filename,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
523 bool read(
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
534 bool readLayer( const QDomNode &layerNode );
543 bool write( const QString &filename );
563 bool writeEntry( const QString &scope, const QString &key,
bool value )
SIP_PYNAME( writeEntryBool );
576 bool writeEntry( const QString &scope, const QString &key,
double value )
SIP_PYNAME( writeEntryDouble );
588 bool writeEntry( const QString &scope, const QString &key,
int value );
600 bool writeEntry( const QString &scope, const QString &key, const QString &value );
612 bool writeEntry( const QString &scope, const QString &key, const QStringList &value );
624 QStringList readListEntry( const QString &scope, const QString &key, const QStringList &def = QStringList(),
bool *ok
SIP_OUT =
nullptr ) const;
636 QString readEntry( const QString &scope, const QString &key, const QString &def = QString(),
bool *ok
SIP_OUT =
nullptr ) const;
648 int readNumEntry( const QString &scope, const QString &key,
int def = 0,
bool *ok
SIP_OUT =
nullptr ) const;
660 double readDoubleEntry( const QString &scope, const QString &key,
double def = 0,
bool *ok
SIP_OUT =
nullptr ) const;
672 bool readBoolEntry( const QString &scope, const QString &key,
bool def = false,
bool *ok
SIP_OUT =
nullptr ) const;
677 bool removeEntry( const QString &scope, const QString &key );
687 QStringList entryList( const QString &scope, const QString &key ) const;
697 QStringList subkeyList( const QString &scope, const QString &key ) const;
705 void dumpProperties() const;
718 QString writePath( const QString &filename ) const;
723 QString readPath( const QString &filename ) const;
726 QString error() const;
739 QString layerIsEmbedded( const QString &
id ) const;
749 bool createEmbeddedLayer( const QString &layerId, const QString &projectFilePath, QList<QDomNode> &brokenNodes,
750 bool saveFlag = true,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() )
SIP_SKIP;
758 QgsLayerTreeGroup *createEmbeddedGroup( const QString &groupName, const QString &projectFilePath, const QStringList &invisibleLayers,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
761 void setTopologicalEditing(
bool enabled );
764 bool topologicalEditing() const;
771 Qgis::DistanceUnit distanceUnits()
const {
return mDistanceUnits; }
823 QString homePath()
const;
837 QString presetHomePath()
const;
1025 Q_DECL_DEPRECATED
void setNonIdentifiableLayers( const QList<
QgsMapLayer *> &layers );
1031 Q_DECL_DEPRECATED
void setNonIdentifiableLayers( const QStringList &layerIds );
1037 Q_DECL_DEPRECATED QStringList nonIdentifiableLayers() const;
1057 Q_DECL_DEPRECATED
void setAutoTransaction(
bool autoTransaction )
SIP_DEPRECATED;
1065 Qgis::TransactionMode transactionMode() const;
1076 bool setTransactionMode(
Qgis::TransactionMode transactionMode );
1094 QgsTransactionGroup *transactionGroup( const QString &providerKey, const QString &connString );
1108 Q_DECL_DEPRECATED
bool evaluateDefaultValues() const
SIP_DEPRECATED;
1115 Q_DECL_DEPRECATED
void setEvaluateDefaultValues(
bool evaluateDefaultValues )
SIP_DEPRECATED;
1138 void setAvoidIntersectionsLayers( const QList<
QgsVectorLayer *> &layers );
1145 void setAvoidIntersectionsMode( const
Qgis::AvoidIntersectionsMode mode );
1152 Qgis::AvoidIntersectionsMode avoidIntersectionsMode()
const {
return mAvoidIntersectionsMode; }
1159 QVariantMap customVariables()
const;
1165 void setCustomVariables(
const QVariantMap &customVariables );
1195 int validCount()
const;
1204 Q_INVOKABLE
QgsMapLayer *mapLayer(
const QString &layerId )
const;
1226 return qobject_cast<T>( mapLayer( layerId ) );
1237 Q_INVOKABLE QList<QgsMapLayer *> mapLayersByName(
const QString &layerName )
const;
1248 QList<QgsMapLayer *> mapLayersByShortName(
const QString &shortName )
const;
1259 QMap<QString, QgsMapLayer *> mapLayers(
const bool validOnly =
false )
const;
1264 bool isZipped()
const;
1278 template <
typename T>
1281 return mLayerStore->layers<T>();
1295 template <
typename T>
1299 const auto constMapLayers { mLayerStore->layers<T>() };
1300 for (
const auto l : constMapLayers )
1302 if ( ! l->serverProperties()->shortName().isEmpty() )
1304 if ( l->serverProperties()->shortName() == shortName )
1307 else if ( l->name() == shortName )
1341 QList<QgsMapLayer *> addMapLayers(
const QList<QgsMapLayer *> &mapLayers
SIP_TRANSFER,
1342 bool addToLegend =
true,
1373 bool addToLegend =
true,
1390 void removeMapLayers(
const QStringList &layerIds );
1407 void removeMapLayers(
const QList<QgsMapLayer *> &layers );
1425 if ( !PyList_Check( a0 ) )
1428 PyErr_SetString( PyExc_TypeError,
"Expected a list of layers or layers IDs" );
1430 else if ( PyList_GET_SIZE( a0 ) )
1432 PyObject *firstLayerPyObj = PyList_GetItem( a0, 0 );
1433 if ( firstLayerPyObj )
1436 if ( sipCanConvertToType( firstLayerPyObj, sipType_QgsMapLayer, SIP_NOT_NONE ) )
1438 const sipTypeDef *qlist_type = sipFindType(
"QList<QgsMapLayer *>" );
1439 QList<QgsMapLayer *> *layersList =
reinterpret_cast<QList<QgsMapLayer *> *
>( sipConvertToType( a0, qlist_type, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
1442 sipCpp->removeMapLayers( *layersList );
1444 sipReleaseType( layersList, qlist_type, state );
1446 else if ( sipCanConvertToType( firstLayerPyObj, sipType_QString, SIP_NOT_NONE ) )
1448 QStringList *layersId =
reinterpret_cast<QStringList *
>( sipConvertToType( a0, sipType_QStringList, 0, SIP_NOT_NONE, &state, &sipIsErr ) );
1451 sipCpp->removeMapLayers( *layersId );
1453 sipReleaseType( layersId, sipType_QStringList, state );
1458 PyErr_SetString( PyExc_TypeError,
"Expected a list of layers or layers IDs" );
1478 void removeMapLayer(
const QString &layerId );
1526 void removeAllMapLayers();
1533 void reloadAllLayers();
1552 Q_DECL_DEPRECATED
void setTrustLayerMetadata(
bool trust )
SIP_DEPRECATED;
1564 Q_DECL_DEPRECATED
bool trustLayerMetadata() const
SIP_DEPRECATED;
1586 QString createAttachedFile( const QString &nameTemplate );
1594 QStringList attachedFiles() const;
1603 bool removeAttachedFile( const QString &path );
1613 QString attachmentIdentifier( const QString &attachedFile ) const;
1621 QString resolveAttachmentIdentifier( const QString &identifier ) const;
1647 Q_DECL_DEPRECATED QSet<
QgsMapLayer *> requiredLayers() const;
1657 Q_DECL_DEPRECATED
void setRequiredLayers( const QSet<
QgsMapLayer *> &layers );
1673 void setBackgroundColor( const QColor &color );
1681 QColor backgroundColor() const;
1689 void setSelectionColor( const QColor &color );
1697 QColor selectionColor() const;
1710 Q_DECL_DEPRECATED
void setMapScales( const QVector<
double> &scales )
SIP_DEPRECATED;
1723 Q_DECL_DEPRECATED QVector<
double> mapScales() const
SIP_DEPRECATED;
1733 Q_DECL_DEPRECATED
void setUseProjectScales(
bool enabled )
SIP_DEPRECATED;
1749 void generateTsFile( const QString &locale );
1751 QString translate( const QString &context, const QString &sourceText, const
char *disambiguation =
nullptr,
int n = -1 ) const override;
1786 bool loadFunctionsFromProject(
bool force = false )
SIP_SKIP;
1795 void cleanFunctionsFromProject()
SIP_SKIP;
1799 SIP_PYOBJECT __repr__();
1801 QString str = QStringLiteral(
"<QgsProject: '%1'%2>" ).arg( sipCpp->fileName(),
1803 sipRes = PyUnicode_FromString( str.toUtf8().constData() );
2230 void elevationShadingRendererChanged();
2248 void setDirty(
bool b = true );
2258 void setPresetHomePath( const QString &path );
2342 bool commitChanges( QStringList &commitErrors
SIP_OUT,
bool stopEditing = true,
QgsVectorLayer *vectorLayer =
nullptr );
2360 bool rollBack( QStringList &rollbackErrors
SIP_OUT,
bool stopEditing = true,
QgsVectorLayer *vectorLayer =
nullptr );
2363 void onMapLayersAdded( const QList<
QgsMapLayer *> &layers );
2364 void onMapLayersRemoved( const QList<
QgsMapLayer *> &layers );
2365 void cleanTransactionGroups(
bool force = false );
2366 void updateTransactionGroups();
2381 bool _getMapLayers( const QDomDocument &doc, QList<QDomNode> &brokenNodes,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
2387 void setError( const QString &errorMessage )
SIP_SKIP;
2404 bool addLayer( const QDomElement &layerElem,
2405 QList<QDomNode> &brokenNodes,
2407 Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags(),
2413 void removeAuxiliaryLayer( const
QgsMapLayer *ml );
2429 bool readProjectFile( const QString &filename,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
2432 bool writeProjectFile( const QString &filename );
2435 bool unzip( const QString &filename,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
2438 bool zip( const QString &filename );
2441 bool saveAuxiliaryStorage( const QString &filename = QString() );
2444 void loadProjectFlags( const QDomDocument *doc );
2450 void preloadProviders( const QVector<QDomNode> &asynchronusLayerNodes,
2454 int totalProviderCount );
2460 void releaseHandlesToProjectArchive();
2462 bool rebuildCrs3D( QString *error =
nullptr );
2464 Qgis::ProjectCapabilities mCapabilities;
2468 QString mErrorMessage;
2477 QHash< QString, QPair< QString,
bool> > mEmbeddedLayers;
2480 Qgis::AvoidIntersectionsMode mAvoidIntersectionsMode =
Qgis::AvoidIntersectionsMode::AllowIntersections;
2519 QVariantMap mCustomVariables;
2527 QString mOriginalPath;
2530 QString mSaveUserFull;
2531 QDateTime mSaveDateTime;
2539 mutable QString mCachedHomePath;
2541 QColor mBackgroundColor;
2542 QColor mSelectionColor;
2544 Qgis::DistanceUnit mDistanceUnits =
Qgis::DistanceUnit::Meters;
2545 Qgis::AreaUnit mAreaUnits =
Qgis::AreaUnit::SquareMeters;
2546 Qgis::ScaleCalculationMethod mScaleMethod =
Qgis::ScaleCalculationMethod::HorizontalMiddle;
2549 Qgis::TransactionMode mTransactionMode =
Qgis::TransactionMode::Disabled;
2551 Qgis::ProjectFlags mFlags;
2556 bool mDirty = false;
2557 int mDirtyBlockCount = 0;
2565 std::unique_ptr< QTranslator > mTranslator;
2567 bool mIsBeingDeleted = false;
2573 bool mBlockChangeSignalsDuringClear = false;
2574 int mBlockSnappingUpdates = 0;
2588 friend class TestQgsProject;