mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
[layertree] Use writePath() for embedded groups (absolute vs relative path)
This commit is contained in:
parent
48ee84b1bf
commit
9cd70c563a
@ -999,6 +999,24 @@ void QgsProject::loadEmbeddedNodes( QgsLayerTreeGroup* group )
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QgsProject::updateEmbeddedGroupsProjectPath( QgsLayerTreeGroup* group )
|
||||||
|
{
|
||||||
|
foreach ( QgsLayerTreeNode* node, group->children() )
|
||||||
|
{
|
||||||
|
if ( QgsLayerTree::isGroup( node ) )
|
||||||
|
{
|
||||||
|
if ( !node->customProperty( "embedded_project" ).toString().isEmpty() )
|
||||||
|
{
|
||||||
|
// may change from absolute path to relative path
|
||||||
|
QString newPath = writePath( node->customProperty( "embedded_project" ).toString() );
|
||||||
|
node->setCustomProperty( "embedded_project", newPath );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
updateEmbeddedGroupsProjectPath( QgsLayerTree::toGroup( node ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool QgsProject::read( QDomNode & layerNode )
|
bool QgsProject::read( QDomNode & layerNode )
|
||||||
{
|
{
|
||||||
@ -1080,6 +1098,7 @@ bool QgsProject::write()
|
|||||||
// write layer tree - make sure it is without embedded subgroups
|
// write layer tree - make sure it is without embedded subgroups
|
||||||
QgsLayerTreeNode* clonedRoot = mRootGroup->clone();
|
QgsLayerTreeNode* clonedRoot = mRootGroup->clone();
|
||||||
QgsLayerTreeUtils::removeChildrenOfEmbeddedGroups( QgsLayerTree::toGroup( clonedRoot ) );
|
QgsLayerTreeUtils::removeChildrenOfEmbeddedGroups( QgsLayerTree::toGroup( clonedRoot ) );
|
||||||
|
updateEmbeddedGroupsProjectPath( QgsLayerTree::toGroup( clonedRoot ) ); // convert absolute paths to relative paths if required
|
||||||
clonedRoot->writeXML( qgisNode );
|
clonedRoot->writeXML( qgisNode );
|
||||||
delete clonedRoot;
|
delete clonedRoot;
|
||||||
|
|
||||||
|
@ -357,6 +357,8 @@ class CORE_EXPORT QgsProject : public QObject
|
|||||||
|
|
||||||
void loadEmbeddedNodes( QgsLayerTreeGroup* group );
|
void loadEmbeddedNodes( QgsLayerTreeGroup* group );
|
||||||
|
|
||||||
|
void updateEmbeddedGroupsProjectPath( QgsLayerTreeGroup* group );
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
//! emitted when project is being read
|
//! emitted when project is being read
|
||||||
void readProject( const QDomDocument & );
|
void readProject( const QDomDocument & );
|
||||||
|
Loading…
x
Reference in New Issue
Block a user