QGIS API Documentation 4.0.0-Norrköping (1ddcee3d0e4)
Loading...
Searching...
No Matches
qgsmapviewsmanager.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsmapviewsmanager.cpp
3 ------------------
4 Date : December 2021
5 Copyright : (C) 2021 Belgacem Nedjima
6 Email : gb underscore nedjima at esi dot dz
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 "qgsmapviewsmanager.h"
17
18#include "qgsproject.h"
19
20#include <QString>
21
22#include "moc_qgsmapviewsmanager.cpp"
23
24using namespace Qt::StringLiterals;
25
27 : QObject( project )
28{}
29
30bool QgsMapViewsManager::readXml( const QDomElement &element, const QDomDocument &doc )
31{
32 Q_UNUSED( doc );
33 clear();
34
35 QgsReadWriteContext readWriteContext;
36 readWriteContext.setPathResolver( QgsProject::instance()->pathResolver() ); // skip-keyword-check
37 QDomElement elem3DMaps = element.firstChildElement( u"mapViewDocks3D"_s );
38 if ( !elem3DMaps.isNull() )
39 {
40 QDomElement elem3DMap = elem3DMaps.firstChildElement( u"view"_s );
41 while ( !elem3DMap.isNull() )
42 {
43 QString mapName = elem3DMap.attribute( u"name"_s );
44 m3DMapViewsDom.insert( mapName, elem3DMap );
45
46 elem3DMap = elem3DMap.nextSiblingElement( u"view"_s );
47 }
48 }
49
50 return true;
51}
52
53QDomElement QgsMapViewsManager::writeXml( QDomDocument &doc ) const
54{
55 QDomElement dom = doc.createElement( "mapViewDocks3D" );
56 for ( QDomElement d : m3DMapViewsDom )
57 dom.appendChild( d );
58 return dom;
59}
60
62{
63 m3DMapViewsDom.clear();
64 emit views3DListChanged();
65}
66
67QDomElement QgsMapViewsManager::get3DViewSettings( const QString &name ) const
68{
69 return m3DMapViewsDom.value( name, QDomElement() );
70}
71
72QList<QDomElement> QgsMapViewsManager::get3DViews() const
73{
74 return m3DMapViewsDom.values();
75}
76
77void QgsMapViewsManager::register3DViewSettings( const QString &name, const QDomElement &dom )
78{
79 m3DMapViewsDom.insert( name, dom );
80 emit views3DListChanged();
81}
82
84{
85 return m3DMapViewsDom.keys();
86}
87
88void QgsMapViewsManager::remove3DView( const QString &name )
89{
90 m3DMapViewsDom.remove( name );
91 emit views3DListChanged();
92}
93
94void QgsMapViewsManager::rename3DView( const QString &oldTitle, const QString &newTitle )
95{
96 QDomElement elem = m3DMapViewsDom.value( oldTitle );
97 m3DMapViewsDom.remove( oldTitle );
98 m3DMapViewsDom[newTitle] = elem;
99 m3DMapViewsDom[newTitle].setAttribute( u"name"_s, newTitle );
100 emit views3DListChanged();
101}
102
103void QgsMapViewsManager::set3DViewInitiallyVisible( const QString &name, bool visible )
104{
105 if ( m3DMapViewsDom.contains( name ) )
106 {
107 m3DMapViewsDom[name].setAttribute( u"isOpen"_s, visible );
108 }
109}
110
111bool QgsMapViewsManager::is3DViewOpen( const QString &name )
112{
113 return m3DMapViewsDom.value( name, QDomElement() ).attribute( u"isOpen"_s, u"1"_s ).toInt() == 1;
114}
bool is3DViewOpen(const QString &name)
Returns whether the 3D view named name will is opened.
QDomElement writeXml(QDomDocument &doc) const
Returns a DOM element representing the state of the manager.
void remove3DView(const QString &name)
Removes the configuration of the 3D view named name.
void clear()
Removes and deletes all views from the manager.
QStringList get3DViewsNames() const
Returns the names of all 3D views added to the manager.
void rename3DView(const QString &oldTitle, const QString &newTitle)
Renames the 3D view named oldTitle to newTitle.
QList< QDomElement > get3DViews() const
Returns the list of configurations of 3D views added to the manager.
void views3DListChanged()
Emitted when the views list has changed (whenever a view was removed, added, renamed....
bool readXml(const QDomElement &element, const QDomDocument &doc)
Reads the manager's state from a DOM element, restoring all views present in the XML document.
void register3DViewSettings(const QString &name, const QDomElement &dom)
Adds a new 3D view named name to the manager with the configuration DOM dom.
QgsMapViewsManager(QgsProject *project)
Constructor for QgsMapViewsManager.
void set3DViewInitiallyVisible(const QString &name, bool visible)
Sets whether the 3D view named name will be initially visible when the project is opened.
QDomElement get3DViewSettings(const QString &name) const
Returns the DOM element representing the settings of the 3D view named name.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition qgsproject.h:113
static QgsProject * instance()
Returns the QgsProject singleton instance.
A container for the context for various read/write operations on objects.
void setPathResolver(const QgsPathResolver &resolver)
Sets up path resolver for conversion between relative and absolute paths.