24 #include "qgis_core.h"
34 #include <QStringList>
35 #include <QTranslator>
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 )
115 Q_PROPERTY(
QgsMapThemeCollection *mapThemeCollection READ mapThemeCollection NOTIFY mapThemeCollectionChanged )
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 )
120 Q_PROPERTY(
QgsProjectMetadata metadata READ metadata WRITE setMetadata NOTIFY metadataChanged )
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 )
144 WMSOnlineResource = 2,
159 static void setInstance(
QgsProject *project ) ;
181 void setTitle(
const QString &title );
189 QString title()
const;
236 QString saveUser()
const;
245 QString saveUserFullName()
const;
252 QDateTime lastSaveDateTime()
const;
264 bool isDirty()
const;
272 void setFileName(
const QString &name );
280 QString fileName()
const;
293 void setOriginalPath(
const QString &path );
306 QString originalPath()
const;
332 QDateTime lastModified() const;
339 QString absoluteFilePath() const;
346 QString absolutePath() const;
352 QString baseName() const;
360 Qgis::FilePathType filePathStorage() const;
368 void setFilePathStorage(
Qgis::FilePathType type );
392 QString ellipsoid() const;
399 void setEllipsoid( const QString &ellipsoid );
434 bool read( const QString &filename,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
444 bool read(
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
455 bool readLayer( const QDomNode &layerNode );
464 bool write( const QString &filename );
484 bool writeEntry( const QString &scope, const QString &key,
bool value )
SIP_PYNAME( writeEntryBool );
497 bool writeEntry( const QString &scope, const QString &key,
double value )
SIP_PYNAME( writeEntryDouble );
509 bool writeEntry( const QString &scope, const QString &key,
int value );
521 bool writeEntry( const QString &scope, const QString &key, const QString &value );
533 bool writeEntry( const QString &scope, const QString &key, const QStringList &value );
545 QStringList readListEntry( const QString &scope, const QString &key, const QStringList &def = QStringList(),
bool *ok
SIP_OUT =
nullptr ) const;
557 QString readEntry( const QString &scope, const QString &key, const QString &def = QString(),
bool *ok
SIP_OUT =
nullptr ) const;
569 int readNumEntry( const QString &scope, const QString &key,
int def = 0,
bool *ok
SIP_OUT =
nullptr ) const;
581 double readDoubleEntry( const QString &scope, const QString &key,
double def = 0,
bool *ok
SIP_OUT =
nullptr ) const;
593 bool readBoolEntry( const QString &scope, const QString &key,
bool def = false,
bool *ok
SIP_OUT =
nullptr ) const;
598 bool removeEntry( const QString &scope, const QString &key );
608 QStringList entryList( const QString &scope, const QString &key ) const;
618 QStringList subkeyList( const QString &scope, const QString &key ) const;
626 void dumpProperties() const;
639 QString writePath( const QString &filename ) const;
644 QString readPath( const QString &filename ) const;
647 QString error() const;
660 QString layerIsEmbedded( const QString &
id ) const;
670 bool createEmbeddedLayer( const QString &layerId, const QString &projectFilePath, QList<QDomNode> &brokenNodes,
671 bool saveFlag = true,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() )
SIP_SKIP;
679 QgsLayerTreeGroup *createEmbeddedGroup( const QString &groupName, const QString &projectFilePath, const QStringList &invisibleLayers,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
682 void setTopologicalEditing(
bool enabled );
685 bool topologicalEditing() const;
692 Qgis::DistanceUnit distanceUnits()
const {
return mDistanceUnits; }
726 QString homePath()
const;
740 QString presetHomePath()
const;
928 Q_DECL_DEPRECATED
void setNonIdentifiableLayers( const QList<
QgsMapLayer *> &layers );
934 Q_DECL_DEPRECATED
void setNonIdentifiableLayers( const QStringList &layerIds );
940 Q_DECL_DEPRECATED QStringList nonIdentifiableLayers() const;
960 Q_DECL_DEPRECATED
void setAutoTransaction(
bool autoTransaction )
SIP_DEPRECATED;
968 Qgis::TransactionMode transactionMode() const;
979 bool setTransactionMode(
Qgis::TransactionMode transactionMode );
997 QgsTransactionGroup *transactionGroup( const QString &providerKey, const QString &connString );
1011 Q_DECL_DEPRECATED
bool evaluateDefaultValues() const
SIP_DEPRECATED;
1018 Q_DECL_DEPRECATED
void setEvaluateDefaultValues(
bool evaluateDefaultValues )
SIP_DEPRECATED;
1040 void setAvoidIntersectionsLayers( const QList<
QgsVectorLayer *> &layers );
1047 void setAvoidIntersectionsMode( const
Qgis::AvoidIntersectionsMode mode );
1054 Qgis::AvoidIntersectionsMode avoidIntersectionsMode()
const {
return mAvoidIntersectionsMode; }
1061 QVariantMap customVariables()
const;
1067 void setCustomVariables(
const QVariantMap &customVariables );
1097 int validCount()
const;
1106 Q_INVOKABLE
QgsMapLayer *mapLayer(
const QString &layerId )
const;
1128 return qobject_cast<T>( mapLayer( layerId ) );
1139 QList<QgsMapLayer *> mapLayersByName(
const QString &layerName )
const;
1150 QList<QgsMapLayer *> mapLayersByShortName(
const QString &shortName )
const;
1161 QMap<QString, QgsMapLayer *> mapLayers(
const bool validOnly =
false )
const;
1166 bool isZipped()
const;
1180 template <
typename T>
1183 return mLayerStore->layers<T>();
1197 template <
typename T>
1201 const auto constMapLayers { mLayerStore->layers<T>() };
1202 for (
const auto l : constMapLayers )
1204 if ( ! l->shortName().isEmpty() )
1206 if ( l->shortName() == shortName )
1209 else if ( l->name() == shortName )
1243 QList<QgsMapLayer *> addMapLayers(
const QList<QgsMapLayer *> &mapLayers
SIP_TRANSFER,
1244 bool addToLegend =
true,
1275 bool addToLegend =
true,
1291 void removeMapLayers(
const QStringList &layerIds );
1308 void removeMapLayers(
const QList<QgsMapLayer *> &layers );
1323 void removeMapLayer(
const QString &layerId );
1371 void removeAllMapLayers();
1378 void reloadAllLayers();
1397 Q_DECL_DEPRECATED
void setTrustLayerMetadata(
bool trust )
SIP_DEPRECATED;
1409 Q_DECL_DEPRECATED
bool trustLayerMetadata() const
SIP_DEPRECATED;
1431 QString createAttachedFile( const QString &nameTemplate );
1439 QStringList attachedFiles() const;
1448 bool removeAttachedFile( const QString &path );
1458 QString attachmentIdentifier( const QString &attachedFile ) const;
1466 QString resolveAttachmentIdentifier( const QString &identifier ) const;
1492 Q_DECL_DEPRECATED QSet<
QgsMapLayer *> requiredLayers() const;
1502 Q_DECL_DEPRECATED
void setRequiredLayers( const QSet<
QgsMapLayer *> &layers );
1518 void setBackgroundColor( const QColor &color );
1526 QColor backgroundColor() const;
1534 void setSelectionColor( const QColor &color );
1542 QColor selectionColor() const;
1555 Q_DECL_DEPRECATED
void setMapScales( const QVector<
double> &scales )
SIP_DEPRECATED;
1568 Q_DECL_DEPRECATED QVector<
double> mapScales() const
SIP_DEPRECATED;
1578 Q_DECL_DEPRECATED
void setUseProjectScales(
bool enabled )
SIP_DEPRECATED;
1594 void generateTsFile( const QString &locale );
1606 QString translate( const QString &context, const QString &sourceText, const
char *disambiguation =
nullptr,
int n = -1 ) const override;
1634 SIP_PYOBJECT __repr__();
1636 QString
str = QStringLiteral(
"<QgsProject: '%1'%2>" ).arg( sipCpp->fileName(),
1638 sipRes = PyUnicode_FromString(
str.toUtf8().constData() );
2017 void elevationShadingRendererChanged();
2035 void setDirty(
bool b = true );
2045 void setPresetHomePath( const QString &path );
2129 bool commitChanges( QStringList &commitErrors
SIP_OUT,
bool stopEditing = true,
QgsVectorLayer *vectorLayer =
nullptr );
2147 bool rollBack( QStringList &rollbackErrors
SIP_OUT,
bool stopEditing = true,
QgsVectorLayer *vectorLayer =
nullptr );
2150 void onMapLayersAdded( const QList<
QgsMapLayer *> &layers );
2151 void onMapLayersRemoved( const QList<
QgsMapLayer *> &layers );
2152 void cleanTransactionGroups(
bool force = false );
2153 void updateTransactionGroups();
2168 bool _getMapLayers( const QDomDocument &doc, QList<QDomNode> &brokenNodes,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
2174 void setError( const QString &errorMessage )
SIP_SKIP;
2191 bool addLayer( const QDomElement &layerElem,
2192 QList<QDomNode> &brokenNodes,
2194 Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags(),
2200 void removeAuxiliaryLayer( const
QgsMapLayer *ml );
2216 bool readProjectFile( const QString &filename,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
2219 bool writeProjectFile( const QString &filename );
2222 bool unzip( const QString &filename,
Qgis::ProjectReadFlags flags =
Qgis::ProjectReadFlags() );
2225 bool zip( const QString &filename );
2228 bool saveAuxiliaryStorage( const QString &filename = QString() );
2231 void loadProjectFlags( const QDomDocument *doc );
2237 void preloadProviders( const QVector<QDomNode> &asynchronusLayerNodes,
2241 int totalProviderCount );
2247 void releaseHandlesToProjectArchive();
2249 Qgis::ProjectCapabilities mCapabilities;
2253 QString mErrorMessage;
2262 QHash< QString, QPair< QString,
bool> > mEmbeddedLayers;
2265 Qgis::AvoidIntersectionsMode mAvoidIntersectionsMode =
Qgis::AvoidIntersectionsMode::AllowIntersections;
2304 QVariantMap mCustomVariables;
2312 QString mOriginalPath;
2315 QString mSaveUserFull;
2316 QDateTime mSaveDateTime;
2324 mutable QString mCachedHomePath;
2326 QColor mBackgroundColor;
2327 QColor mSelectionColor;
2329 Qgis::DistanceUnit mDistanceUnits =
Qgis::DistanceUnit::Meters;
2330 Qgis::AreaUnit mAreaUnits =
Qgis::AreaUnit::SquareMeters;
2333 Qgis::TransactionMode mTransactionMode =
Qgis::TransactionMode::Disabled;
2335 Qgis::ProjectFlags mFlags;
2337 bool mDirty = false;
2338 int mDirtyBlockCount = 0;
2348 bool mIsBeingDeleted = false;
2354 int mBlockSnappingUpdates = 0;
2368 friend class TestQgsProject;
2404 : mProject( project )
2406 mProject->mDirtyBlockCount++;
2417 mProject->mDirtyBlockCount--;
2442 GetNamedProjectColor(
const QgsProject *project );
2448 GetNamedProjectColor(
const QHash< QString, QColor > &colors );
2455 QHash< QString, QColor > mColors;
2462 GetSensorData(
const QMap<QString, QgsAbstractSensor::SensorData> &sensorData = QMap<QString, QgsAbstractSensor::SensorData>() );
2468 QMap<QString, QgsAbstractSensor::SensorData> mSensorData;
The Qgis class provides global constants for use throughout the application.
QFlags< ProjectCapability > ProjectCapabilities
Flags which control project capabilities.
DistanceUnit
Units of distance.
@ ProjectStyles
Enable the project embedded style library. Enabling this flag can increase the time required to clear...
AvoidIntersectionsMode
Flags which control how intersections of pre-existing feature are handled when digitizing new feature...
ProjectFlag
Flags which control the behavior of QgsProjects.
QFlags< ProjectFlag > ProjectFlags
Represents a map layer containing a set of georeferenced annotations, e.g.
Manages storage of a set of QgsAnnotation annotation objects.
Extends QApplication to provide access to QGIS specific resources such as theme paths,...
Class allowing to manage the zip/unzip actions.
This is a container for attribute editors, used to group them visually in the attribute form if it is...
Class providing some utility methods to manage auxiliary storage.
Manages storage of a set of bookmarks.
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.
This class can render elevation shading on an image with different methods (eye dome lighting,...
Abstract interface for generating an expression context.
Abstract interface for generating an expression context scope.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
An expression node for expression functions.
Class for parsing and evaluation of expressions (formerly called "search strings").
Stores global configuration for labeling engine.
Layer tree group node serves as a container for layers and further groups.
Listens to the updates in map layer registry and does changes in layer tree.
Namespace with helper functions for layer tree operations.
Manages storage of a set of layouts.
A storage object for map layers, in which the layers are owned by the store and have their lifetime b...
Base class for all map layer types.
Container class that allows storage of map themes consisting of visible map layers and layer styles.
Manages storage of a set of views.
Resolves relative paths into absolute paths and vice versa.
Interface for classes that handle missing layer files when reading project file.
Temporarily blocks QgsProject "dirtying" for the lifetime of the object.
QgsProjectDirtyBlocker & operator=(const QgsProjectDirtyBlocker &other)=delete
QgsProjectDirtyBlocker cannot be copied.
QgsProjectDirtyBlocker(QgsProject *project)
Constructor for QgsProjectDirtyBlocker.
~QgsProjectDirtyBlocker()
QgsProjectDirtyBlocker(const QgsProjectDirtyBlocker &other)=delete
QgsProjectDirtyBlocker cannot be copied.
Contains settings and properties relating to how a QgsProject should display values such as map coord...
Contains elevation properties for a QgsProject.
Contains settings and properties relating to how a QgsProject should interact with a GPS device.
Project property key node.
Abstract interface for project storage - to be implemented by various backends and registered in QgsP...
Contains settings and properties relating to how a QgsProject should handle styling.
Contains temporal settings and properties for the project, this may be used when animating maps or sh...
Wherever an object of this class is available, the derived translate function can be called from.
A class to describe the version of a project.
Contains settings and properties relating to how a QgsProject should be displayed inside map canvas,...
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
void layersRemoved(const QStringList &layerIds)
Emitted after one or more layers were removed from the registry.
Qgis::ProjectFlags flags() const
Returns the project's flags, which dictate the behavior of the project.
void mapThemeCollectionChanged()
Emitted when the map theme collection changes.
static QgsProject * instance()
Returns the QgsProject singleton instance.
Q_DECL_DEPRECATED void mapScalesChanged()
Emitted when the list of custom project map scales changes.
void readVersionMismatchOccurred(const QString &fileVersion)
Emitted when a project is read and the version of QGIS used to save the project differs from the curr...
void fileNameChanged()
Emitted when the file name of the project changes.
void writeMapLayer(QgsMapLayer *mapLayer, QDomElement &layerElem, QDomDocument &doc)
Emitted when a layer is being saved.
void areaUnitsChanged()
Emitted when the default area units changes.
Q_DECL_DEPRECATED void nonIdentifiableLayersChanged(QStringList nonIdentifiableLayers)
Emitted when the list of layer which are excluded from map identification changes.
void layersWillBeRemoved(const QStringList &layerIds)
Emitted when one or more layers are about to be removed from the registry.
void snappingConfigChanged(const QgsSnappingConfig &config)
Emitted whenever the configuration for snapping has changed.
void layerWasAdded(QgsMapLayer *layer)
Emitted when a layer was added to the registry.
void crsChanged()
Emitted when the CRS of the project has changed.
Qgis::AreaUnit areaUnits() const
Convenience function to query default area measurement units for project.
void avoidIntersectionsLayersChanged()
Emitted whenever avoidIntersectionsLayers has changed.
void layerWillBeRemoved(const QString &layerId)
Emitted when a layer is about to be removed from the registry.
void distanceUnitsChanged()
Emitted when the default distance units changes.
void readMapLayer(QgsMapLayer *mapLayer, const QDomElement &layerNode)
Emitted after the basic initialization of a layer from the project file is done.
DataDefinedServerProperty
Data defined properties.
void aboutToBeCleared()
Emitted when the project is about to be cleared.
QgsMapThemeCollection * mapThemeCollection()
Returns pointer to the project's map theme collection.
void cleared()
Emitted when the project is cleared (and additionally when an open project is cleared just before a n...
Q_DECL_DEPRECATED void oldProjectVersionWarning(const QString &)
Emitted when an old project file is read.
void metadataChanged()
Emitted when the project's metadata is changed.
QVector< T > layers() const
Returns a list of registered map layers with a specified layer type.
void ellipsoidChanged(const QString &ellipsoid)
Emitted when the project ellipsoid is changed.
void projectColorsChanged()
Emitted whenever the project's color scheme has been changed.
void labelingEngineSettingsChanged()
Emitted when global configuration of the labeling engine changes.
void customVariablesChanged()
Emitted whenever the expression variables stored in the project have been changed.
void readProject(const QDomDocument &)
Emitted when a project is being read.
T mapLayer(const QString &layerId) const
Retrieve a pointer to a registered layer by layerId converted to type T.
void missingDatumTransforms(const QStringList &missingTransforms)
Emitted when datum transforms stored in the project are not available locally.
void readProjectWithContext(const QDomDocument &, QgsReadWriteContext &context)
Emitted when a project is being read.
void layerWillBeRemoved(QgsMapLayer *layer)
Emitted when a layer is about to be removed from the registry.
void transactionGroupsChanged()
Emitted whenever a new transaction group has been created or a transaction group has been removed.
void loadingLayerMessageReceived(const QString &layerName, const QList< QgsReadWriteContext::ReadWriteMessage > &messages)
Emitted when loading layers has produced some messages.
void writeProject(QDomDocument &)
Emitted when the project is being written.
Qgis::ProjectCapabilities capabilities() const
Returns the project's capabilities, which dictate optional functionality which can be selectively ena...
void projectSaved()
Emitted when the project file has been written and closed.
void layersWillBeRemoved(const QList< QgsMapLayer * > &layers)
Emitted when one or more layers are about to be removed from the registry.
void layerLoaded(int i, int n)
Emitted when a layer from a projects was read.
void selectionColorChanged()
Emitted whenever the project's selection color has been changed.
void removeAll()
Emitted when all layers are removed, before layersWillBeRemoved() and layerWillBeRemoved() signals ar...
QVector< T > mapLayersByShortName(const QString &shortName) const
Retrieves a list of matching registered layers by layer shortName with a specified layer type,...
void backgroundColorChanged()
Emitted whenever the project's canvas background color has been changed.
void transformContextChanged()
Emitted when the project transformContext() is changed.
void legendLayersAdded(const QList< QgsMapLayer * > &layers)
Emitted, when a layer was added to the registry and the legend.
void layerRemoved(const QString &layerId)
Emitted after a layer was removed from the registry.
void homePathChanged()
Emitted when the home path of the project changes.
void dirtySet()
Emitted when setDirty(true) is called.
void layersAdded(const QList< QgsMapLayer * > &layers)
Emitted when one or more layers were added to the registry.
void isDirtyChanged(bool dirty)
Emitted when the project dirty status changes.
void topologicalEditingChanged()
Emitted when the topological editing flag has changed.
void avoidIntersectionsModeChanged()
Emitted whenever the avoid intersections mode has changed.
void loadingLayer(const QString &layerName)
Emitted when a layer is loaded.
A grouped map of multiple QgsProperty objects, each referenced by a integer key value.
A registry / canonical manager of data providers.
The class is used as a container of context for various read/write operations on other objects.
This class manages a set of relations between layers.
Expression function for use within a QgsExpressionContextScope.
The QgsServer class provides OGC web services.
This class is a composition of two QSettings instances:
This is a container for configuration of the snapping of the project.
An interface for classes which can visit style entity (e.g.
This is the class is providing tolerance value in map unit values.
Used for the collecting of strings from projects for translation and creation of ts files.
The edit buffer group manages a group of edit buffers.
Represents a vector layer which manages a vector based data sets.
QList< QPair< QColor, QString > > QgsNamedColorList
List of colors paired with a friendly display name identifying the color.
CORE_EXPORT bool zip(const QString &zip, const QStringList &files)
Zip the list of files in the zip file.
CORE_EXPORT bool unzip(const QString &zip, const QString &dir, QStringList &files, bool checkConsistency=true)
Unzip a zip file in an output directory.
std::unique_ptr< GEOSGeometry, GeosDeleter > unique_ptr
Scoped GEOS pointer.
#define SIP_MONKEYPATCH_SCOPEENUM_UNNEST(OUTSIDE_CLASS, FORMERNAME)
CORE_EXPORT QgsProjectVersion getVersion(QDomDocument const &doc)
Returns the version string found in the given DOM document.
QMap< int, QgsPropertyDefinition > QgsPropertiesDefinition
Definition of available properties.
const QgsCoordinateReferenceSystem & crs