QGIS API Documentation
4.3.0-Master (16eddb2670e)
Toggle main menu visibility
Loading...
Searching...
No Matches
src
core
project
qgsprojectstoredobjectmanager.cpp
Go to the documentation of this file.
1
/***************************************************************************
2
qgsprojectstoredobjectmanager.cpp
3
--------------------
4
Date : July 2025
5
Copyright : (C) 2025 Nyall Dawson
6
Email : nyall dot dawson at gmail dot com
7
***************************************************************************
8
* *
9
* This program is free software; you can redistribute it and/or modify *
10
* it under the terms of the GNU General Public License as published by *
11
* the Free Software Foundation; either version 2 of the License, or *
12
* (at your option) any later version. *
13
* *
14
***************************************************************************/
15
16
#include "
qgsprojectstoredobjectmanager.h
"
17
18
#include "
qgsproject.h
"
19
20
#include "moc_qgsprojectstoredobjectmanager.cpp"
21
22
//
23
// QgsProjectStoredObjectManagerBase
24
//
25
26
QgsProjectStoredObjectManagerBase::QgsProjectStoredObjectManagerBase
(
QgsProject
*project )
27
: QObject( project )
28
,
mProject
( project )
29
{}
30
31
void
QgsProjectStoredObjectManagerBase::markProjectDirty
()
32
{
33
mProject
->setDirty(
true
);
34
}
35
36
//
37
// QgsAbstractProjectStoredObjectManager
38
//
39
40
template
<
class
T>
QgsAbstractProjectStoredObjectManager<T>::QgsAbstractProjectStoredObjectManager
(
QgsProject
*project )
41
:
QgsProjectStoredObjectManagerBase
( project )
42
{}
43
44
template
<
class
T>
QgsAbstractProjectStoredObjectManager<T>::~QgsAbstractProjectStoredObjectManager
()
45
{
46
Q_ASSERT_X(
mObjects
.isEmpty(),
"~QgsAbstractProjectStoredObjectManager"
,
"Subclasses of QgsAbstractProjectStoredObjectManager MUST explicitly call clearObjects() in their class destructor."
);
47
clearObjects
();
48
}
49
50
template
<
class
T> QList<T *>
QgsAbstractProjectStoredObjectManager<T>::objects
()
const
51
{
52
return
mObjects
;
53
}
54
55
template
<
class
T> T *
QgsAbstractProjectStoredObjectManager<T>::objectByName
(
const
QString &name )
const
56
{
57
for
( T *l :
mObjects
)
58
{
59
if
( l->name() == name )
60
return
l;
61
}
62
return
nullptr
;
63
}
64
65
template
<
class
T>
void
QgsAbstractProjectStoredObjectManager<T>::clearObjects
()
66
{
67
const
QList< T * >
objects
=
mObjects
;
68
for
( T *l :
objects
)
69
{
70
removeObject
( l );
71
}
72
}
73
74
template
<
class
T>
bool
QgsAbstractProjectStoredObjectManager<T>::addObject
( T *
object
)
75
{
76
if
( !
object
||
mObjects
.contains(
object
) )
77
return
false
;
78
79
// check for duplicate name
80
const
QList<T *> constObjects =
mObjects
;
81
for
( T *l : constObjects )
82
{
83
if
( l->name() == object->name() )
84
{
85
delete
object;
86
return
false
;
87
}
88
}
89
90
setupObjectConnections
(
object
);
91
92
emit
objectAboutToBeAdded
( object->name() );
93
mObjects
<< object;
94
emit
objectAdded
( object->name() );
95
markProjectDirty
();
96
return
true
;
97
}
98
99
template
<
class
T>
bool
QgsAbstractProjectStoredObjectManager<T>::removeObject
( T *
object
)
100
{
101
if
( !
object
)
102
return
false
;
103
104
if
( !
mObjects
.contains(
object
) )
105
return
false
;
106
107
QString name =
object
->name();
108
emit
objectAboutToBeRemoved
( name );
109
mObjects
.removeAll(
object
);
110
delete
object;
111
emit
objectRemoved
( name );
112
markProjectDirty
();
113
return
true
;
114
}
115
116
template
<
class
T>
void
QgsAbstractProjectStoredObjectManager<T>::setupObjectConnections
( T * )
117
{}
118
119
#include "
qgsmasterlayoutinterface.h
"
120
121
template
class
QgsAbstractProjectStoredObjectManager<QgsMasterLayoutInterface>
;
// clazy:exclude=missing-qobject-macro
122
123
#include "
qgselevationprofile.h
"
124
125
template
class
QgsAbstractProjectStoredObjectManager<QgsElevationProfile>
;
// clazy:exclude=missing-qobject-macro
126
127
#include "
qgsselectivemaskingsourceset.h
"
128
129
template
class
QgsAbstractProjectStoredObjectManager<QgsSelectiveMaskingSourceSet>
;
// clazy:exclude=missing-qobject-macro
QgsAbstractProjectStoredObjectManager
Template class for storage of a set of objects attached to a QgsProject.
Definition
qgsprojectstoredobjectmanager.h:89
QgsAbstractProjectStoredObjectManager::objectByName
T * objectByName(const QString &name) const
Returns the object with a matching name, or nullptr if no matching objects were found.
Definition
qgsprojectstoredobjectmanager.cpp:55
QgsAbstractProjectStoredObjectManager::~QgsAbstractProjectStoredObjectManager
~QgsAbstractProjectStoredObjectManager() override
Definition
qgsprojectstoredobjectmanager.cpp:44
QgsAbstractProjectStoredObjectManager::objects
QList< T * > objects() const
Returns the list of objects contained within the manager.
Definition
qgsprojectstoredobjectmanager.cpp:50
QgsAbstractProjectStoredObjectManager::mObjects
QList< T * > mObjects
Attached objects, owned by the manager.
Definition
qgsprojectstoredobjectmanager.h:111
QgsAbstractProjectStoredObjectManager::addObject
bool addObject(T *object)
Adds an object to the manager.
Definition
qgsprojectstoredobjectmanager.cpp:74
QgsAbstractProjectStoredObjectManager::removeObject
bool removeObject(T *object)
Removes an object from the manager.
Definition
qgsprojectstoredobjectmanager.cpp:99
QgsAbstractProjectStoredObjectManager::QgsAbstractProjectStoredObjectManager
QgsAbstractProjectStoredObjectManager(QgsProject *project=nullptr)
Constructor for QgsAbstractProjectStoredObjectManager, for objects attached to the specified project.
Definition
qgsprojectstoredobjectmanager.cpp:40
QgsAbstractProjectStoredObjectManager::setupObjectConnections
virtual void setupObjectConnections(T *object)
Sets up additional connections to an object, called when the object is first added to the manager.
Definition
qgsprojectstoredobjectmanager.cpp:116
QgsAbstractProjectStoredObjectManager::clearObjects
void clearObjects()
Removes and deletes all objects from the manager.
Definition
qgsprojectstoredobjectmanager.cpp:65
QgsProjectStoredObjectManagerBase::objectAdded
void objectAdded(const QString &name)
Emitted when an object has been added to the manager.
QgsProjectStoredObjectManagerBase::objectRemoved
void objectRemoved(const QString &name)
Emitted when an object was removed from the manager.
QgsProjectStoredObjectManagerBase::mProject
QgsProject * mProject
Associated project.
Definition
qgsprojectstoredobjectmanager.h:66
QgsProjectStoredObjectManagerBase::objectAboutToBeAdded
void objectAboutToBeAdded(const QString &name)
Emitted when an object is about to be added to the manager.
QgsProjectStoredObjectManagerBase::objectAboutToBeRemoved
void objectAboutToBeRemoved(const QString &name)
Emitted when an object is about to be removed from the manager.
QgsProjectStoredObjectManagerBase::markProjectDirty
void markProjectDirty()
Marks the project as dirty.
Definition
qgsprojectstoredobjectmanager.cpp:31
QgsProjectStoredObjectManagerBase::QgsProjectStoredObjectManagerBase
QgsProjectStoredObjectManagerBase(QgsProject *project=nullptr)
Constructor for QgsProjectStoredObjectManagerBase, for objects attached to the specified project.
Definition
qgsprojectstoredobjectmanager.cpp:26
QgsProject
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition
qgsproject.h:114
qgselevationprofile.h
qgsmasterlayoutinterface.h
qgsproject.h
qgsprojectstoredobjectmanager.h
qgsselectivemaskingsourceset.h
Generated on
for QGIS API Documentation by
1.17.0