Skip to content

Commit b2b44cc

Browse files
committed
split generating XML and saving to QLR-file into separate functions
This increases flexibility and is consistent with the loading of a QLR-file.
1 parent ff3200f commit b2b44cc

File tree

3 files changed

+24
-13
lines changed

3 files changed

+24
-13
lines changed

python/core/qgslayerdefinition.sip

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,7 @@ class QgsLayerDefinition
1717
static bool loadLayerDefinition( QDomDocument doc, QgsLayerTreeGroup* rootGroup, QString &errorMessage /Out/ );
1818
/** Export the selected layer tree nodes to a QLR file */
1919
static bool exportLayerDefinition( QString path, const QList<QgsLayerTreeNode*>& selectedTreeNodes, QString &errorMessage /Out/ );
20+
/** Export the selected layer tree nodes to a QLR-XML document */
21+
static bool exportLayerDefinition( QDomDocument doc, const QList<QgsLayerTreeNode*>& selectedTreeNodes, QString &errorMessage, const QString& relativeBasePath = QString::null );
2022
};
2123

src/core/qgslayerdefinition.cpp

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,24 @@ bool QgsLayerDefinition::exportLayerDefinition( QString path, const QList<QgsLay
119119
QFileInfo fileinfo( file );
120120

121121
QDomDocument doc( "qgis-layer-definition" );
122+
if ( !exportLayerDefinition( doc, selectedTreeNodes, errorMessage, fileinfo.canonicalFilePath() ) )
123+
return false;
124+
if ( file.open( QFile::WriteOnly | QFile::Truncate ) )
125+
{
126+
QTextStream qlayerstream( &file );
127+
doc.save( qlayerstream, 2 );
128+
return true;
129+
}
130+
else
131+
{
132+
errorMessage = file.errorString();
133+
return false;
134+
}
135+
}
136+
137+
bool QgsLayerDefinition::exportLayerDefinition( QDomDocument doc, const QList<QgsLayerTreeNode*>& selectedTreeNodes, QString &errorMessage, const QString& relativeBasePath )
138+
{
139+
Q_UNUSED( errorMessage );
122140
QDomElement qgiselm = doc.createElement( "qlr" );
123141
doc.appendChild( qgiselm );
124142
QList<QgsLayerTreeNode*> nodes = selectedTreeNodes;
@@ -135,20 +153,9 @@ bool QgsLayerDefinition::exportLayerDefinition( QString path, const QList<QgsLay
135153
Q_FOREACH ( QgsLayerTreeLayer* layer, layers )
136154
{
137155
QDomElement layerelm = doc.createElement( "maplayer" );
138-
layer->layer()->writeLayerXML( layerelm, doc, fileinfo.canonicalFilePath() );
156+
layer->layer()->writeLayerXML( layerelm, doc, relativeBasePath );
139157
layerselm.appendChild( layerelm );
140158
}
141159
qgiselm.appendChild( layerselm );
142-
143-
if ( file.open( QFile::WriteOnly | QFile::Truncate ) )
144-
{
145-
QTextStream qlayerstream( &file );
146-
doc.save( qlayerstream, 2 );
147-
return true;
148-
}
149-
else
150-
{
151-
errorMessage = file.errorString();
152-
return false;
153-
}
160+
return true;
154161
}

src/core/qgslayerdefinition.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ class CORE_EXPORT QgsLayerDefinition
1919
static bool loadLayerDefinition( QDomDocument doc, QgsLayerTreeGroup* rootGroup, QString &errorMessage );
2020
/** Export the selected layer tree nodes to a QLR file */
2121
static bool exportLayerDefinition( QString path, const QList<QgsLayerTreeNode*>& selectedTreeNodes, QString &errorMessage );
22+
/** Export the selected layer tree nodes to a QLR-XML document */
23+
static bool exportLayerDefinition( QDomDocument doc, const QList<QgsLayerTreeNode*>& selectedTreeNodes, QString &errorMessage, const QString& relativeBasePath = QString::null );
2224
};
2325

2426
#endif // QGSLAYERDEFINITION_H

0 commit comments

Comments
 (0)