void QgsEmbedLayerDialog::changeProjectFile() { QFile projectFile( mProjectFileLineEdit->text() ); if ( !projectFile.exists() ) { return; } if ( mProjectPath == mProjectFileLineEdit->text() ) { //already up to date return; } //check we are not embedding from/to the same project if ( mProjectFileLineEdit->text() == QgsProject::instance()->fileName() ) { QMessageBox::critical( 0, tr( "Recursive embeding not possible" ), tr( "It is not possible to embed layers / groups from the current project" ) ); return; } mTreeWidget->clear(); //parse project file and fill tree if ( !projectFile.open( QIODevice::ReadOnly ) ) { return; } QDomDocument projectDom; if ( !projectDom.setContent( &projectFile ) ) { return; } QDomElement legendElem = projectDom.documentElement().firstChildElement( "legend" ); if ( legendElem.isNull() ) { return; } QDomNodeList legendChildren = legendElem.childNodes(); QDomElement currentChildElem; for ( int i = 0; i < legendChildren.size(); ++i ) { currentChildElem = legendChildren.at( i ).toElement(); if ( currentChildElem.tagName() == "legendlayer" ) { addLegendLayerToTreeWidget( currentChildElem ); } else if ( currentChildElem.tagName() == "legendgroup" ) { addLegendGroupToTreeWidget( currentChildElem ); } } mProjectPath = mProjectFileLineEdit->text(); }
bool QgsLayerTreeUtils::readOldLegend( QgsLayerTreeGroup* root, const QDomElement& legendElem ) { if ( legendElem.isNull() ) return false; QDomNodeList legendChildren = legendElem.childNodes(); for ( int i = 0; i < legendChildren.size(); ++i ) { QDomElement currentChildElem = legendChildren.at( i ).toElement(); if ( currentChildElem.tagName() == "legendlayer" ) { addLegendLayerToTreeWidget( currentChildElem, root ); } else if ( currentChildElem.tagName() == "legendgroup" ) { addLegendGroupToTreeWidget( currentChildElem, root ); } } return true; }
void QgsEmbedLayerDialog::addLegendGroupToTreeWidget( const QDomElement& groupElem, QTreeWidgetItem* parent ) { QDomNodeList groupChildren = groupElem.childNodes(); QDomElement currentChildElem; if ( groupElem.attribute( "embedded" ) == "1" ) { return; } QTreeWidgetItem* groupItem = 0; if ( !parent ) { groupItem = new QTreeWidgetItem( mTreeWidget ); } else { groupItem = new QTreeWidgetItem( parent ); } groupItem->setIcon( 0, QgsApplication::getThemeIcon( "mActionFolder.png" ) ); groupItem->setText( 0, groupElem.attribute( "name" ) ); groupItem->setData( 0, Qt::UserRole, "group" ); for ( int i = 0; i < groupChildren.size(); ++i ) { currentChildElem = groupChildren.at( i ).toElement(); if ( currentChildElem.tagName() == "legendlayer" ) { addLegendLayerToTreeWidget( currentChildElem, groupItem ); } else if ( currentChildElem.tagName() == "legendgroup" ) { addLegendGroupToTreeWidget( currentChildElem, groupItem ); } } }