QGIS API Documentation  3.24.2-Tisler (13c1a02865)
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 #include "qgsproject.h"
18 
20  : QObject( project )
21 {
22 
23 }
24 
25 bool QgsMapViewsManager::readXml( const QDomElement &element, const QDomDocument &doc )
26 {
27  Q_UNUSED( doc );
28  clear();
29 
30  QgsReadWriteContext readWriteContext;
31  readWriteContext.setPathResolver( QgsProject::instance()->pathResolver() );
32  QDomElement elem3DMaps = element.firstChildElement( QStringLiteral( "mapViewDocks3D" ) );
33  if ( !elem3DMaps.isNull() )
34  {
35  QDomElement elem3DMap = elem3DMaps.firstChildElement( QStringLiteral( "view" ) );
36  while ( !elem3DMap.isNull() )
37  {
38  QString mapName = elem3DMap.attribute( QStringLiteral( "name" ) );
39  m3DMapViewsDom.insert( mapName, elem3DMap );
40 
41  elem3DMap = elem3DMap.nextSiblingElement( QStringLiteral( "view" ) );
42  }
43  }
44 
45  return true;
46 }
47 
48 QDomElement QgsMapViewsManager::writeXml( QDomDocument &doc ) const
49 {
50  QDomElement dom = doc.createElement( "mapViewDocks3D" );
51  for ( QDomElement d : m3DMapViewsDom.values() )
52  dom.appendChild( d );
53  return dom;
54 }
55 
57 {
58  m3DMapViewsDom.clear();
59  emit views3DListChanged();
60 }
61 
62 QDomElement QgsMapViewsManager::get3DViewSettings( const QString &name ) const
63 {
64  return m3DMapViewsDom.value( name, QDomElement() );
65 }
66 
67 QList<QDomElement> QgsMapViewsManager::get3DViews() const
68 {
69  return m3DMapViewsDom.values();
70 }
71 
72 void QgsMapViewsManager::register3DViewSettings( const QString &name, const QDomElement &dom )
73 {
74  m3DMapViewsDom.insert( name, dom );
75  emit views3DListChanged();
76 }
77 
79 {
80  return m3DMapViewsDom.keys();
81 }
82 
83 void QgsMapViewsManager::remove3DView( const QString &name )
84 {
85  m3DMapViewsDom.remove( name );
86  emit views3DListChanged();
87 }
88 
89 void QgsMapViewsManager::rename3DView( const QString &oldTitle, const QString &newTitle )
90 {
91  QDomElement elem = m3DMapViewsDom.value( oldTitle );
92  m3DMapViewsDom.remove( oldTitle );
93  m3DMapViewsDom[ newTitle ] = elem;
94  m3DMapViewsDom[ newTitle ].setAttribute( QStringLiteral( "name" ), newTitle );
95  emit views3DListChanged();
96 }
97 
98 void QgsMapViewsManager::set3DViewInitiallyVisible( const QString &name, bool visible )
99 {
100  if ( m3DMapViewsDom.contains( name ) )
101  {
102  m3DMapViewsDom[ name ].setAttribute( QStringLiteral( "isOpen" ), visible );
103  }
104 }
105 
106 bool QgsMapViewsManager::is3DViewOpen( const QString &name )
107 {
108  return m3DMapViewsDom.value( name, QDomElement() ).attribute( QStringLiteral( "isOpen" ), QStringLiteral( "1" ) ).toInt() == 1;
109 }
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:101
static QgsProject * instance()
Returns the QgsProject singleton instance.
Definition: qgsproject.cpp:470
The class is used as a container of context for various read/write operations on other objects.
void setPathResolver(const QgsPathResolver &resolver)
Sets up path resolver for conversion between relative and absolute paths.