QHash<QString, QString> QgsServerProjectUtils::wmsFeatureInfoLayerAliasMap( const QgsProject &project ) { QHash<QString, QString> aliasMap; //WMSFeatureInfoAliasLayers QStringList aliasLayerStringList = project.readListEntry( QStringLiteral( "WMSFeatureInfoAliasLayers" ), QStringLiteral( "/value" ), QStringList() ); if ( aliasLayerStringList.isEmpty() ) { return aliasMap; } //WMSFeatureInfoLayerAliases QStringList layerAliasStringList = project.readListEntry( QStringLiteral( "WMSFeatureInfoLayerAliases" ), QStringLiteral( "/value" ), QStringList() ); if ( layerAliasStringList.isEmpty() ) { return aliasMap; } int nMapEntries = std::min( aliasLayerStringList.size(), layerAliasStringList.size() ); for ( int i = 0; i < nMapEntries; ++i ) { aliasMap.insert( aliasLayerStringList.at( i ), layerAliasStringList.at( i ) ); } return aliasMap; }
QgsExpressionContextScope* QgsExpressionContextUtils::projectScope() { QgsProject* project = QgsProject::instance(); QgsExpressionContextScope* scope = new QgsExpressionContextScope( QObject::tr( "Project" ) ); //add variables defined in project file QStringList variableNames = project->readListEntry( "Variables", "/variableNames" ); QStringList variableValues = project->readListEntry( "Variables", "/variableValues" ); int varIndex = 0; Q_FOREACH ( const QString& variableName, variableNames ) { if ( varIndex >= variableValues.length() ) { break; } QString varValueString = variableValues.at( varIndex ); varIndex++; scope->setVariable( variableName, varValueString ); } //add other known project variables scope->addVariable( QgsExpressionContextScope::StaticVariable( "project_title", project->title(), true ) ); scope->addVariable( QgsExpressionContextScope::StaticVariable( "project_path", project->fileInfo().filePath(), true ) ); scope->addVariable( QgsExpressionContextScope::StaticVariable( "project_folder", project->fileInfo().dir().path(), true ) ); scope->addVariable( QgsExpressionContextScope::StaticVariable( "project_filename", project->fileInfo().fileName(), true ) ); scope->addFunction( "project_color", new GetNamedProjectColor() ); return scope; }
void QgsExpressionContextUtils::setProjectVariable( const QString& name, const QVariant& value ) { QgsProject* project = QgsProject::instance(); //write variable to project QStringList variableNames = project->readListEntry( "Variables", "/variableNames" ); QStringList variableValues = project->readListEntry( "Variables", "/variableValues" ); variableNames << name; variableValues << value.toString(); project->writeEntry( "Variables", "/variableNames", variableNames ); project->writeEntry( "Variables", "/variableValues", variableValues ); }
QStringList QgsServerProjectUtils::wmsOutputCrsList( const QgsProject &project ) { QStringList crsList; QStringList wmsCrsList = project.readListEntry( QStringLiteral( "WMSCrsList" ), QStringLiteral( "/" ), QStringList() ); if ( !wmsCrsList.isEmpty() ) { for ( int i = 0; i < wmsCrsList.size(); ++i ) { QString crs = wmsCrsList.at( i ); if ( !crs.isEmpty() ) { crsList.append( crs ); } } } if ( crsList.isEmpty() ) { QStringList valueList = project.readListEntry( QStringLiteral( "WMSEpsgList" ), QStringLiteral( "/" ), QStringList() ); bool conversionOk; for ( int i = 0; i < valueList.size(); ++i ) { int epsgNr = valueList.at( i ).toInt( &conversionOk ); if ( conversionOk ) { crsList.append( QStringLiteral( "EPSG:%1" ).arg( epsgNr ) ); } } } if ( crsList.isEmpty() ) { //no CRS restriction defined in the project. Provide project CRS, wgs84 and pseudo mercator QString projectCrsId = project.crs().authid(); crsList.append( projectCrsId ); if ( projectCrsId.compare( QLatin1String( "EPSG:4326" ), Qt::CaseInsensitive ) != 0 ) { crsList.append( QStringLiteral( "EPSG:%1" ).arg( 4326 ) ); } if ( projectCrsId.compare( QLatin1String( "EPSG:3857" ), Qt::CaseInsensitive ) != 0 ) { crsList.append( QStringLiteral( "EPSG:%1" ).arg( 3857 ) ); } } return crsList; }
QgsRectangle QgsServerProjectUtils::wmsExtent( const QgsProject &project ) { bool ok = false; QStringList values = project.readListEntry( QStringLiteral( "WMSExtent" ), QStringLiteral( "/" ), QStringList(), &ok ); if ( !ok || values.size() != 4 ) { return QgsRectangle(); } //order of value elements must be xmin, ymin, xmax, ymax double xmin = values[ 0 ].toDouble(); double ymin = values[ 1 ].toDouble(); double xmax = values[ 2 ].toDouble(); double ymax = values[ 3 ].toDouble(); return QgsRectangle( xmin, ymin, xmax, ymax ); }
QStringList QgsServerProjectUtils::owsServiceKeywords( const QgsProject &project ) { QStringList keywordList; QStringList list = project.readListEntry( QStringLiteral( "WMSKeywordList" ), QStringLiteral( "/" ), QStringList() ); if ( !list.isEmpty() ) { for ( int i = 0; i < list.size(); ++i ) { QString keyword = list.at( i ); if ( !keyword.isEmpty() ) { keywordList.append( keyword ); } } } return keywordList; }
QStringList QgsServerProjectUtils::wcsLayerIds( const QgsProject &project ) { return project.readListEntry( QStringLiteral( "WCSLayers" ), QStringLiteral( "/" ) ); }
QStringList QgsServerProjectUtils::wfstDeleteLayerIds( const QgsProject &project ) { return project.readListEntry( QStringLiteral( "WFSTLayers" ), QStringLiteral( "Delete" ) ); }
QStringList QgsServerProjectUtils::wmsRestrictedLayers( const QgsProject &project ) { return project.readListEntry( QStringLiteral( "WMSRestrictedLayers" ), QStringLiteral( "/" ), QStringList() ); }