diff --git a/src/mapserver/qgsprojectparser.cpp b/src/mapserver/qgsprojectparser.cpp index b796abb45e8d..bb3af85981a1 100644 --- a/src/mapserver/qgsprojectparser.cpp +++ b/src/mapserver/qgsprojectparser.cpp @@ -43,7 +43,7 @@ QgsProjectParser::QgsProjectParser( QDomDocument* xmlDoc, const QString& filePat { mOutputUnits = QgsMapRenderer::Millimeters; setLegendParametersFromProject(); - QgsRenderer::setSelectionColor( QColor( 255, 255, 0 ) ); + setSelectionColor(); } QgsProjectParser::~QgsProjectParser() @@ -1411,3 +1411,50 @@ QString QgsProjectParser::convertToAbsolutePath( const QString& file ) const return projElems.join( "/" ); } +void QgsProjectParser::setSelectionColor() +{ + int red = 255; + int green = 255; + int blue = 0; + int alpha = 255; + + //overwrite default selection color with settings from the project + if ( mXMLDoc ) + { + QDomElement qgisElem = mXMLDoc->documentElement(); + if ( !qgisElem.isNull() ) + { + QDomElement propertiesElem = qgisElem.firstChildElement( "properties" ); + if ( !propertiesElem.isNull() ) + { + QDomElement guiElem = propertiesElem.firstChildElement( "Gui" ); + if ( !guiElem.isNull() ) + { + QDomElement redElem = guiElem.firstChildElement( "SelectionColorRedPart" ); + if ( !redElem.isNull() ) + { + red = redElem.text().toInt(); + } + QDomElement greenElem = guiElem.firstChildElement( "SelectionColorGreenPart" ); + if ( !greenElem.isNull() ) + { + green = greenElem.text().toInt(); + } + QDomElement blueElem = guiElem.firstChildElement( "SelectionColorBluePart" ); + if ( !blueElem.isNull() ) + { + blue = blueElem.text().toInt(); + } + QDomElement alphaElem = guiElem.firstChildElement( "SelectionColorAlphaPart" ); + if ( !alphaElem.isNull() ) + { + alpha = alphaElem.text().toInt(); + } + } + } + } + } + + QgsRenderer::setSelectionColor( QColor( red, green, blue, alpha ) ); +} + diff --git a/src/mapserver/qgsprojectparser.h b/src/mapserver/qgsprojectparser.h index 57abe58010dd..2c64d6bddffa 100644 --- a/src/mapserver/qgsprojectparser.h +++ b/src/mapserver/qgsprojectparser.h @@ -145,6 +145,9 @@ class QgsProjectParser: public QgsConfigParser /**Converts a (possibly relative) path to absolute*/ QString convertToAbsolutePath( const QString& file ) const; + + /**Sets global selection color from the project or yellow if not defined in project*/ + void setSelectionColor(); }; #endif // QGSPROJECTPARSER_H