QGIS API Documentation
3.26.3-Buenos Aires (65e4edfdad)
|
Go to the documentation of this file.
22 #include <QTextStream>
42 b.
setId( element.attribute( QStringLiteral(
"id" ) ) );
43 b.
setName( element.attribute( QStringLiteral(
"name" ) ) );
44 b.
setGroup( element.attribute( QStringLiteral(
"group" ) ) );
54 QDomElement bookmarkElem = doc.createElement( QStringLiteral(
"Bookmark" ) );
55 bookmarkElem.setAttribute( QStringLiteral(
"id" ), mId );
56 bookmarkElem.setAttribute( QStringLiteral(
"name" ), mName );
57 bookmarkElem.setAttribute( QStringLiteral(
"group" ), mGroup );
58 bookmarkElem.setAttribute( QStringLiteral(
"extent" ), mExtent.
asWktPolygon() );
65 return mId == other.mId && mName == other.mName && mExtent == other.mExtent && mGroup == other.mGroup;
70 return !( *
this == other );
111 res->mProject = project;
132 if ( bookmark.
id().isEmpty() )
133 bookmark.
setId( QUuid::createUuid().toString() );
137 for (
const QgsBookmark &b : std::as_const( mBookmarks ) )
139 if ( b.
id() == bookmark.
id() )
150 mBookmarks << bookmark;
151 if ( !mGroups.contains( bookmark.group() ) )
152 mGroups << bookmark.group();
159 return bookmark.id();
170 for (
const QgsBookmark &b : std::as_const( mBookmarks ) )
185 mBookmarks.removeAt( pos );
187 mGroups.removeOne( group );
201 for (
const QgsBookmark &b : std::as_const( mBookmarks ) )
203 if ( b.id() == bookmark.
id() )
205 if ( mBookmarks[i].group() != bookmark.
group() )
208 mGroups.removeOne( mBookmarks[i].group() );
209 if ( !mGroups.contains( bookmark.
group() ) )
210 mGroups << bookmark.
group();
212 mBookmarks[i] = bookmark;
228 const QList< QgsBookmark >
bookmarks = mBookmarks;
242 for (
int i = 0; i < mBookmarks.count(); ++i )
244 if ( mBookmarks.at( i ).group() == oldName )
246 mBookmarks[ i ].setGroup( newName );
272 if ( b.group() == group )
282 QDomElement bookmarksElem = element;
283 if ( element.tagName() != QLatin1String(
"Bookmarks" ) )
285 bookmarksElem = element.firstChildElement( QStringLiteral(
"Bookmarks" ) );
288 if ( mProject && bookmarksElem.isNull() )
291 const int count = mProject->
readNumEntry( QStringLiteral(
"Bookmarks" ), QStringLiteral(
"/count" ) );
292 for (
int i = 0; i < count; ++i )
294 const double minX = mProject->
readDoubleEntry( QStringLiteral(
"Bookmarks" ), QStringLiteral(
"/Row-%1/MinX" ).arg( i ) );
295 const double minY = mProject->
readDoubleEntry( QStringLiteral(
"Bookmarks" ), QStringLiteral(
"/Row-%1/MinY" ).arg( i ) );
296 const double maxX = mProject->
readDoubleEntry( QStringLiteral(
"Bookmarks" ), QStringLiteral(
"/Row-%1/MaxX" ).arg( i ) );
297 const double maxY = mProject->
readDoubleEntry( QStringLiteral(
"Bookmarks" ), QStringLiteral(
"/Row-%1/MaxY" ).arg( i ) );
298 const long srid = mProject->
readNumEntry( QStringLiteral(
"Bookmarks" ), QStringLiteral(
"/Row-%1/SRID" ).arg( i ) );
300 b.
setId( QStringLiteral(
"bookmark_%1" ).arg( i ) );
301 b.
setName( mProject->
readEntry( QStringLiteral(
"Bookmarks" ), QStringLiteral(
"/Row-%1/Name" ).arg( i ) ) );
306 result = added && result;
312 QDomNodeList bookmarkNodes = element.elementsByTagName( QStringLiteral(
"Bookmark" ) );
313 for (
int i = 0; i < bookmarkNodes.size(); ++i )
318 result = added && result;
326 QDomElement bookmarksElem = doc.createElement( QStringLiteral(
"Bookmarks" ) );
330 QDomElement bookmarkElem = b.writeXml( doc );
331 bookmarksElem.appendChild( bookmarkElem );
333 return bookmarksElem;
339 if ( b.
id().isEmpty() )
351 QDomDocument doc( QStringLiteral(
"qgis_bookmarks" ) );
352 QDomElement root = doc.createElement( QStringLiteral(
"qgis_bookmarks" ) );
353 doc.appendChild( root );
355 QList<QString> headerList;
357 << QStringLiteral(
"project" )
358 << QStringLiteral(
"xmin" )
359 << QStringLiteral(
"ymin" )
360 << QStringLiteral(
"xmax" )
361 << QStringLiteral(
"ymax" )
362 << QStringLiteral(
"sr_id" );
366 const QList< QgsBookmark >
bookmarks = manager->bookmarks();
369 if ( !group.isEmpty() && b.group() != group )
372 QDomElement bookmark = doc.createElement( QStringLiteral(
"bookmark" ) );
373 root.appendChild( bookmark );
375 QDomElement
id = doc.createElement( QStringLiteral(
"id" ) );
376 id.appendChild( doc.createTextNode( b.id() ) );
377 bookmark.appendChild(
id );
379 QDomElement name = doc.createElement( QStringLiteral(
"name" ) );
380 name.appendChild( doc.createTextNode( b.name() ) );
381 bookmark.appendChild( name );
383 QDomElement group = doc.createElement( QStringLiteral(
"project" ) );
384 group.appendChild( doc.createTextNode( b.group() ) );
385 bookmark.appendChild( group );
387 QDomElement xMin = doc.createElement( QStringLiteral(
"xmin" ) );
388 xMin.appendChild( doc.createTextNode(
qgsDoubleToString( b.extent().xMinimum() ) ) );
389 bookmark.appendChild( xMin );
390 QDomElement yMin = doc.createElement( QStringLiteral(
"ymin" ) );
391 yMin.appendChild( doc.createTextNode(
qgsDoubleToString( b.extent().yMinimum() ) ) );
392 bookmark.appendChild( yMin );
393 QDomElement xMax = doc.createElement( QStringLiteral(
"xmax" ) );
394 xMax.appendChild( doc.createTextNode(
qgsDoubleToString( b.extent().xMaximum() ) ) );
395 bookmark.appendChild( xMax );
396 QDomElement yMax = doc.createElement( QStringLiteral(
"ymax" ) );
397 yMax.appendChild( doc.createTextNode(
qgsDoubleToString( b.extent().yMaximum() ) ) );
398 bookmark.appendChild( yMax );
400 QDomElement
crs = doc.createElement( QStringLiteral(
"sr_id" ) );
401 crs.appendChild( doc.createTextNode( QString::number( b.extent().crs().srsid() ) ) );
402 bookmark.appendChild(
crs );
407 if ( !f.open( QFile::WriteOnly | QIODevice::Truncate ) )
413 QTextStream out( &f );
414 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
415 out.setCodec(
"UTF-8" );
425 if ( path.isEmpty() )
431 if ( !f.open( QIODevice::ReadOnly | QIODevice::Text ) )
437 if ( !doc.setContent( &f ) )
443 QDomElement docElem = doc.documentElement();
444 QDomNodeList nodeList = docElem.elementsByTagName( QStringLiteral(
"bookmark" ) );
447 for (
int i = 0; i < nodeList.count(); i++ )
449 QDomNode bookmark = nodeList.at( i );
450 QDomElement name = bookmark.firstChildElement( QStringLiteral(
"name" ) );
451 QDomElement prjname = bookmark.firstChildElement( QStringLiteral(
"project" ) );
452 QDomElement xmin = bookmark.firstChildElement( QStringLiteral(
"xmin" ) );
453 QDomElement ymin = bookmark.firstChildElement( QStringLiteral(
"ymin" ) );
454 QDomElement xmax = bookmark.firstChildElement( QStringLiteral(
"xmax" ) );
455 QDomElement ymax = bookmark.firstChildElement( QStringLiteral(
"ymax" ) );
456 QDomElement srid = bookmark.firstChildElement( QStringLiteral(
"sr_id" ) );
465 ymin.text().toDouble(),
466 xmax.text().toDouble(),
467 ymax.text().toDouble() ),
crs ) );
475 void QgsBookmarkManager::store()
477 if ( !mFilePath.isEmpty() )
479 QFile f( mFilePath );
480 if ( !f.open( QFile::WriteOnly | QIODevice::Truncate ) )
488 doc.appendChild( elem );
490 QTextStream out( &f );
491 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
492 out.setCodec(
"UTF-8" );
504 mFilePath = filePath;
509 if ( !QFileInfo::exists( mFilePath ) )
514 if ( result != SQLITE_OK )
520 if ( result == SQLITE_OK )
522 while ( preparedStatement.
step() == SQLITE_ROW )
524 const QString name = preparedStatement.
columnAsText( 0 );
542 QFile f( mFilePath );
543 if ( !f.open( QIODevice::ReadOnly | QIODevice::Text ) )
549 if ( !doc.setContent( &f ) )
555 QDomElement elem = doc.documentElement();
QList< QgsBookmark > bookmarksByGroup(const QString &group)
Returns a list of bookmark with a matching group, or an empty list if no matching bookmarks were foun...
bool importFromFile(const QString &path)
Imports the bookmarks from an xml file at the specified path.
QDomElement writeXml(QDomDocument &doc) const
Returns a DOM element representing the state of the manager.
int open(const QString &path)
Opens the database at the specified file path.
void bookmarkAboutToBeRemoved(const QString &id)
Emitted when a bookmark is about to be removed from the manager.
bool moveBookmark(const QString &id, QgsBookmarkManager *destination)
Moves the bookmark with matching id from this manager to a destination manager.
A QgsRectangle with associated coordinate reference system.
sqlite3_statement_unique_ptr prepare(const QString &sql, int &resultCode) const
Prepares a sql statement, returning the result.
QString asWktPolygon() const
Returns a string representation of the rectangle as a WKT Polygon.
bool createFromSrsId(long srsId)
Sets this CRS by lookup of internal QGIS CRS ID in the CRS database.
static QgsBookmarkManager * createProjectBasedManager(QgsProject *project)
Returns a newly created QgsBookmarkManager using a project-based bookmark store, linked to the specif...
const QgsCoordinateReferenceSystem & crs
bool updateBookmark(const QgsBookmark &bookmark)
Updates the definition of a bookmark in the manager.
void setName(const QString &name)
Sets the bookmark's name, which is a user-visible string identifying the bookmark.
void bookmarkAdded(const QString &id)
Emitted when a bookmark has been added to the manager.
Manages storage of a set of bookmarks.
bool operator!=(const QgsBookmark &other) const
QString readEntry(const QString &scope, const QString &key, const QString &def=QString(), bool *ok=nullptr) const
Reads a string from the specified scope and key.
qlonglong columnAsInt64(int column) const
Gets column value from the current statement row as a long long integer (64 bits).
bool readXml(const QDomNode &node)
Restores state from the given DOM node.
QString addBookmark(const QgsBookmark &bookmark, bool *ok=nullptr)
Adds a bookmark to the manager.
A rectangle specified with double values.
QString qgsDoubleToString(double a, int precision=17)
Returns a string representation of a double.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
QString group() const
Returns the bookmark's group, which is a user-visible string identifying the bookmark's category.
int step()
Steps to the next record in the statement, returning the sqlite3 result code.
void clear()
Removes and deletes all bookmarks from the manager.
void bookmarkChanged(const QString &id)
Emitted when a bookmark is changed.
QList< QgsBookmark > bookmarks() const
Returns a list of all bookmarks contained in the manager.
QString id() const
Returns the bookmark's unique ID.
static QgsCoordinateReferenceSystem fromSrsId(long srsId)
Creates a CRS from a specified QGIS SRS ID.
QString name() const
Returns the bookmark's name, which is a user-visible string identifying the bookmark.
void setGroup(const QString &group)
Sets the bookmark's group, which is a user-visible string identifying the bookmark's category.
bool writeXml(QDomNode &node, QDomDocument &doc) const
Stores state to the given Dom node in the given document.
QStringList groups() const
Returns a list of all bookmark groups contained in the manager.
Represents a spatial bookmark, with a name, CRS and extent.
static QgsBookmark fromXml(const QDomElement &element, const QDomDocument &doc)
Creates a bookmark using the properties from a DOM element.
void setDirty(bool b=true)
Flag the project as dirty (modified).
double readDoubleEntry(const QString &scope, const QString &key, double def=0, bool *ok=nullptr) const
Reads a double from the specified scope and key.
~QgsBookmarkManager() override
bool readXml(const QDomElement &element, const QDomDocument &doc)
Reads the manager's state from a DOM element, restoring all bookmarks present in the XML document.
void renameGroup(const QString &oldName, const QString &newName)
Renames an existing group from oldName to newName.
This class represents a coordinate reference system (CRS).
void bookmarkAboutToBeAdded(const QString &id)
Emitted when a bookmark is about to be added to the manager.
QString columnAsText(int column) const
Returns the column value from the current statement row as a string.
QgsCoordinateReferenceSystem crs() const
Returns the associated coordinate reference system, or an invalid CRS if no reference system is set.
bool removeBookmark(const QString &id)
Removes the bookmark with matching id from the manager.
static QgsRectangle fromWkt(const QString &wkt)
Creates a new rectangle from a wkt string.
QgsBookmarkManager(QObject *parent=nullptr)
Constructor for QgsBookmarkManager, with the specified parent object.
void setId(const QString &id)
Sets the bookmark's unique id.
static QString qgisUserDatabaseFilePath()
Returns the path to the user qgis.db file.
QgsReferencedRectangle extent() const
Returns the bookmark's spatial extent.
void initialize(const QString &filePath)
Initializes the bookmark manager.
QgsBookmark bookmarkById(const QString &id) const
Returns the bookmark with a matching id, or an empty bookmark if no matching bookmarks were found.
double columnAsDouble(int column) const
Gets column value from the current statement row as a double.
Unique pointer for sqlite3 databases, which automatically closes the database when the pointer goes o...
static bool exportToFile(const QString &path, const QList< const QgsBookmarkManager * > &managers, const QString &group=QString())
Exports all bookmarks from a list of managers to an xml file at the specified path.
void setExtent(const QgsReferencedRectangle &extent)
Sets the bookmark's spatial extent.
void bookmarkRemoved(const QString &id)
Emitted when a bookmark was removed from the manager.
Unique pointer for sqlite3 prepared statements, which automatically finalizes the statement when the ...
int readNumEntry(const QString &scope, const QString &key, int def=0, bool *ok=nullptr) const
Reads an integer from the specified scope and key.
bool operator==(const QgsBookmark &other) const
QDomElement writeXml(QDomDocument &doc) const
Returns a DOM element representing the bookmark's properties.