diff -r -u --new-file '--exclude=.svn' '--exclude=build' '--exclude=cmake*' '--exclude=CMake*' '--exclude=*~' '--exclude=*.orig' '--exclude=*.back' '--exclude=qtcreator-build' '--exclude=astyle' /hometb/mk/sig/dev/r15538-backup/qgis//src/core/symbology-ng/qgsrulebasedrendererv2.cpp /hometb/mk/sig/dev/r15538-patched/qgis//src/core/symbology-ng/qgsrulebasedrendererv2.cpp --- /hometb/mk/sig/dev/r15538-backup/qgis//src/core/symbology-ng/qgsrulebasedrendererv2.cpp 2011-03-19 20:24:58.297781638 +0100 +++ /hometb/mk/sig/dev/r15538-patched/qgis//src/core/symbology-ng/qgsrulebasedrendererv2.cpp 2011-03-20 00:23:38.414326467 +0100 @@ -128,7 +128,21 @@ QgsSymbolV2* QgsRuleBasedRendererV2::symbolForFeature( QgsFeature& feature ) { - return mCurrentSymbol; + QgsDebugMsg( "usingSymbolLevels:" ); + QgsDebugMsg( QString(usingSymbolLevels()?"T":"F") ); + QgsDebugMsg( QString(mUsingSymbolLevels?"T":"F") ); + + if( !usingSymbolLevels() ) return mCurrentSymbol; + + for ( QList::iterator it = mCurrentRules.begin(); it != mCurrentRules.end(); ++it ) + { + Rule* rule = *it; + + if ( rule->isFilterOK( mCurrentFields, feature ) ) + { + return rule->symbol(); //works with levels but takes only first rule + } + } } void QgsRuleBasedRendererV2::renderFeature( QgsFeature& feature, @@ -200,6 +214,7 @@ QgsSymbolV2* s = mDefaultSymbol->clone(); QgsRuleBasedRendererV2* r = new QgsRuleBasedRendererV2( s ); r->mRules = mRules; + r->setUsingSymbolLevels( usingSymbolLevels() ); return r; } @@ -219,6 +234,7 @@ { QDomElement rendererElem = doc.createElement( RENDERER_TAG_NAME ); rendererElem.setAttribute( "type", "RuleRenderer" ); + rendererElem.setAttribute( "symbollevels", ( mUsingSymbolLevels ? "1" : "0" ) ); QDomElement rulesElem = doc.createElement( "rules" ); diff -r -u --new-file '--exclude=.svn' '--exclude=build' '--exclude=cmake*' '--exclude=CMake*' '--exclude=*~' '--exclude=*.orig' '--exclude=*.back' '--exclude=qtcreator-build' '--exclude=astyle' /hometb/mk/sig/dev/r15538-backup/qgis//src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp /hometb/mk/sig/dev/r15538-patched/qgis//src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp --- /hometb/mk/sig/dev/r15538-backup/qgis//src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp 2011-03-19 20:24:57.187812910 +0100 +++ /hometb/mk/sig/dev/r15538-patched/qgis//src/gui/symbology-ng/qgsrulebasedrendererv2widget.cpp 2011-03-20 21:04:05.928573752 +0100 @@ -27,6 +27,7 @@ #include #include #include +#include QgsRendererV2Widget* QgsRuleBasedRendererV2Widget::create( QgsVectorLayer* layer, QgsStyleV2* style, QgsFeatureRendererV2* renderer ) { @@ -487,6 +488,13 @@ //item->setBackground( 1, Qt::lightGray ); //item->setBackground( 3, Qt::lightGray ); + // Id: add 1 to rule number and convert to string + std::ostringstream ioss; + ioss << i+1; + std::string ruleIdx = ioss.str(); + while( ruleIdx.size() < 4 ){ ruleIdx.insert( 0, " " );} // pad to left with spaces (to fix string-based sorting) + item->setText( 4, QString(ruleIdx.c_str()) );// Insert Id in table (as 'Priority' column) + item->setTextAlignment (4, Qt::AlignRight); lst << item; } @@ -550,6 +558,15 @@ //item->setBackground( 1, Qt::lightGray ); //item->setBackground( 3, Qt::lightGray ); + + // Id: add 1 to rule number and convert to string + std::ostringstream ioss; + ioss << i+1; + std::string ruleIdx = ioss.str(); + while( ruleIdx.size() < 4 ){ ruleIdx.insert( 0, " " );} // pad to left with spaces (to fix string-based sorting) + item->setText( 4, QString(ruleIdx.c_str()) );// Insert Id in table TODO: base it on SymbolIdx ? How to access it? + item->setTextAlignment (4, Qt::AlignRight); + } addTopLevelItems( scale_items.values() ); } @@ -601,6 +618,14 @@ item->setTextAlignment( 2, Qt::AlignRight ); item->setTextAlignment( 3, Qt::AlignRight ); } + + // Id: add 1 to rule number and convert to string + std::ostringstream ioss; + ioss << i+1; + std::string ruleIdx = ioss.str(); + while( ruleIdx.size() < 4 ){ ruleIdx.insert( 0, " " );} // pad to left with spaces (to fix string-based sorting) + item->setText( 4, QString(ruleIdx.c_str()) );// Insert Id in table + item->setTextAlignment (4, Qt::AlignRight); } addTopLevelItems( filter_items.values() ); diff -r -u --new-file '--exclude=.svn' '--exclude=build' '--exclude=cmake*' '--exclude=CMake*' '--exclude=*~' '--exclude=*.orig' '--exclude=*.back' '--exclude=qtcreator-build' '--exclude=astyle' /hometb/mk/sig/dev/r15538-backup/qgis//src/ui/qgsrulebasedrendererv2widget.ui /hometb/mk/sig/dev/r15538-patched/qgis//src/ui/qgsrulebasedrendererv2widget.ui --- /hometb/mk/sig/dev/r15538-backup/qgis//src/ui/qgsrulebasedrendererv2widget.ui 2011-03-19 20:25:06.157560196 +0100 +++ /hometb/mk/sig/dev/r15538-patched/qgis//src/ui/qgsrulebasedrendererv2widget.ui 2011-03-20 00:48:48.341785748 +0100 @@ -51,6 +51,14 @@ AlignHCenter|AlignVCenter|AlignCenter + + + Priority + + + AlignHCenter|AlignVCenter|AlignCenter + +