QgsFeatureRendererV2* QgsGrassEditRenderer::create( QDomElement& element ) { QgsGrassEditRenderer *renderer = new QgsGrassEditRenderer(); QDomElement childElem = element.firstChildElement(); while ( !childElem.isNull() ) { QDomElement elem = childElem.firstChildElement(); if ( !elem.isNull() ) { QString rendererType = elem.attribute( "type" ); QgsDebugMsg( "childElem.tagName() = " + childElem.tagName() + " rendererType = " + rendererType ); QgsRendererV2AbstractMetadata* meta = QgsRendererV2Registry::instance()->rendererMetadata( rendererType ); if ( meta ) { QgsFeatureRendererV2* subRenderer = meta->createRenderer( elem ); if ( subRenderer ) { QgsDebugMsg( "renderer created : " + renderer->type() ); if ( childElem.tagName() == "line" ) { renderer->setLineRenderer( subRenderer ); } else if ( childElem.tagName() == "marker" ) { renderer->setMarkerRenderer( subRenderer ); } } } } childElem = childElem.nextSiblingElement(); } return renderer; }
QgsFeatureRenderer *QgsGrassEditRenderer::create( QDomElement &element, const QgsReadWriteContext &context ) { QgsGrassEditRenderer *renderer = new QgsGrassEditRenderer(); QDomElement childElem = element.firstChildElement(); while ( !childElem.isNull() ) { QDomElement elem = childElem.firstChildElement(); if ( !elem.isNull() ) { QString rendererType = elem.attribute( QStringLiteral( "type" ) ); QgsDebugMsg( "childElem.tagName() = " + childElem.tagName() + " rendererType = " + rendererType ); QgsRendererAbstractMetadata *meta = QgsApplication::rendererRegistry()->rendererMetadata( rendererType ); if ( meta ) { QgsFeatureRenderer *subRenderer = meta->createRenderer( elem, context ); if ( subRenderer ) { QgsDebugMsg( "renderer created : " + renderer->type() ); if ( childElem.tagName() == QLatin1String( "line" ) ) { renderer->setLineRenderer( subRenderer ); } else if ( childElem.tagName() == QLatin1String( "marker" ) ) { renderer->setMarkerRenderer( subRenderer ); } } } } childElem = childElem.nextSiblingElement(); } return renderer; }