Skip to content

Commit ae75e45

Browse files
authored
[symbology] migrate graduated renderer color ramp widget (#3815)
1 parent 9bb9b58 commit ae75e45

9 files changed

+168
-197
lines changed

python/core/symbology-ng/qgsgraduatedsymbolrenderer.sip

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -197,14 +197,23 @@ class QgsGraduatedSymbolRenderer : QgsFeatureRenderer
197197
//! @note Added in 2.6
198198
void calculateLabelPrecision( bool updateRanges = true );
199199

200+
/** Creates a new graduated renderer.
201+
* @param vlayer vector layer
202+
* @param attrName attribute to classify
203+
* @param classes number of classes
204+
* @param mode classification mode
205+
* @param symbol base symbol
206+
* @param ramp color ramp for classes
207+
* @param legendFormat
208+
* @returns new QgsGraduatedSymbolRenderer object
209+
*/
200210
static QgsGraduatedSymbolRenderer* createRenderer(
201211
QgsVectorLayer* vlayer,
202212
const QString& attrName,
203213
int classes,
204214
Mode mode,
205215
QgsSymbol* symbol /Transfer/,
206216
QgsColorRamp* ramp /Transfer/,
207-
bool inverted = false,
208217
const QgsRendererRangeLabelFormat& legendFormat = QgsRendererRangeLabelFormat()
209218
);
210219

@@ -252,16 +261,11 @@ class QgsGraduatedSymbolRenderer : QgsFeatureRenderer
252261
*/
253262
void setSourceColorRamp( QgsColorRamp* ramp /Transfer/ );
254263

255-
//! @note added in 2.1
256-
bool invertedColorRamp();
257-
void setInvertedColorRamp( bool inverted );
258-
259264
/** Update the color ramp used. Also updates all symbols colors.
260265
* Doesn't alter current breaks.
261266
* @param ramp color ramp. Ownership is transferred to the renderer
262-
* @param inverted set to true to invert ramp colors
263267
*/
264-
void updateColorRamp( QgsColorRamp* ramp /Transfer/ = 0, bool inverted = false );
268+
void updateColorRamp( QgsColorRamp* ramp /Transfer/ = 0 );
265269

266270
/** Update all the symbols but leave breaks and colors. This method also sets the source
267271
* symbol for the renderer.

src/core/symbology-ng/qgsgraduatedsymbolrenderer.cpp

Lines changed: 4 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,6 @@ QgsGraduatedSymbolRenderer::QgsGraduatedSymbolRenderer( const QString& attrName,
288288
: QgsFeatureRenderer( QStringLiteral( "graduatedSymbol" ) )
289289
, mAttrName( attrName )
290290
, mMode( Custom )
291-
, mInvertedColorRamp( false )
292291
, mGraduatedMethod( GraduatedColor )
293292
, mAttrNum( -1 )
294293
, mCounting( false )
@@ -501,7 +500,6 @@ QgsGraduatedSymbolRenderer* QgsGraduatedSymbolRenderer::clone() const
501500
if ( mSourceColorRamp.data() )
502501
{
503502
r->setSourceColorRamp( mSourceColorRamp->clone() );
504-
r->setInvertedColorRamp( mInvertedColorRamp );
505503
}
506504
r->setUsingSymbolLevels( usingSymbolLevels() );
507505
r->setLabelFormat( labelFormat() );
@@ -790,15 +788,13 @@ QgsGraduatedSymbolRenderer* QgsGraduatedSymbolRenderer::createRenderer(
790788
Mode mode,
791789
QgsSymbol* symbol,
792790
QgsColorRamp* ramp,
793-
bool inverted,
794791
const QgsRendererRangeLabelFormat& labelFormat
795792
)
796793
{
797794
QgsRangeList ranges;
798795
QgsGraduatedSymbolRenderer* r = new QgsGraduatedSymbolRenderer( attrName, ranges );
799796
r->setSourceSymbol( symbol->clone() );
800797
r->setSourceColorRamp( ramp->clone() );
801-
r->setInvertedColorRamp( inverted );
802798
r->setMode( mode );
803799
r->setLabelFormat( labelFormat );
804800
r->updateClasses( vlayer, mode, classes );
@@ -916,7 +912,7 @@ void QgsGraduatedSymbolRenderer::updateClasses( QgsVectorLayer* vlayer, Mode mod
916912
QgsSymbol* newSymbol = mSourceSymbol ? mSourceSymbol->clone() : QgsSymbol::defaultSymbol( vlayer->geometryType() );
917913
addClass( QgsRendererRange( lower, upper, newSymbol, label ) );
918914
}
919-
updateColorRamp( nullptr, mInvertedColorRamp );
915+
updateColorRamp( nullptr );
920916
}
921917

922918
QgsFeatureRenderer* QgsGraduatedSymbolRenderer::create( QDomElement& element )
@@ -985,9 +981,6 @@ QgsFeatureRenderer* QgsGraduatedSymbolRenderer::create( QDomElement& element )
985981
if ( !sourceColorRampElem.isNull() && sourceColorRampElem.attribute( QStringLiteral( "name" ) ) == QLatin1String( "[source]" ) )
986982
{
987983
r->setSourceColorRamp( QgsSymbolLayerUtils::loadColorRamp( sourceColorRampElem ) );
988-
QDomElement invertedColorRampElem = element.firstChildElement( QStringLiteral( "invertedcolorramp" ) );
989-
if ( !invertedColorRampElem.isNull() )
990-
r->setInvertedColorRamp( invertedColorRampElem.attribute( QStringLiteral( "value" ) ) == QLatin1String( "1" ) );
991984
}
992985

993986
// try to load mode
@@ -1098,9 +1091,6 @@ QDomElement QgsGraduatedSymbolRenderer::save( QDomDocument& doc )
10981091
{
10991092
QDomElement colorRampElem = QgsSymbolLayerUtils::saveColorRamp( QStringLiteral( "[source]" ), mSourceColorRamp.data(), doc );
11001093
rendererElem.appendChild( colorRampElem );
1101-
QDomElement invertedElem = doc.createElement( QStringLiteral( "invertedcolorramp" ) );
1102-
invertedElem.setAttribute( QStringLiteral( "value" ), mInvertedColorRamp );
1103-
rendererElem.appendChild( invertedElem );
11041094
}
11051095

11061096
// save mode
@@ -1306,13 +1296,12 @@ void QgsGraduatedSymbolRenderer::setSymbolSizes( double minSize, double maxSize
13061296
}
13071297
}
13081298

1309-
void QgsGraduatedSymbolRenderer::updateColorRamp( QgsColorRamp *ramp, bool inverted )
1299+
void QgsGraduatedSymbolRenderer::updateColorRamp( QgsColorRamp *ramp )
13101300
{
13111301
int i = 0;
13121302
if ( ramp )
13131303
{
13141304
setSourceColorRamp( ramp );
1315-
setInvertedColorRamp( inverted );
13161305
}
13171306

13181307
if ( mSourceColorRamp )
@@ -1323,10 +1312,7 @@ void QgsGraduatedSymbolRenderer::updateColorRamp( QgsColorRamp *ramp, bool inver
13231312
if ( symbol )
13241313
{
13251314
double colorValue;
1326-
if ( inverted )
1327-
colorValue = ( mRanges.count() > 1 ? static_cast< double >( mRanges.count() - i - 1 ) / ( mRanges.count() - 1 ) : 0 );
1328-
else
1329-
colorValue = ( mRanges.count() > 1 ? static_cast< double >( i ) / ( mRanges.count() - 1 ) : 0 );
1315+
colorValue = ( mRanges.count() > 1 ? static_cast< double >( i ) / ( mRanges.count() - 1 ) : 0 );
13301316
symbol->setColor( mSourceColorRamp->color( colorValue ) );
13311317
}
13321318
updateRangeSymbol( i, symbol );
@@ -1441,7 +1427,7 @@ void QgsGraduatedSymbolRenderer::addBreak( double breakValue, bool updateSymbols
14411427
switch ( mGraduatedMethod )
14421428
{
14431429
case GraduatedColor:
1444-
updateColorRamp( mSourceColorRamp.data(), mInvertedColorRamp );
1430+
updateColorRamp( mSourceColorRamp.data() );
14451431
break;
14461432
case GraduatedSize:
14471433
setSymbolSizes( minSymbolSize(), maxSymbolSize() );

src/core/symbology-ng/qgsgraduatedsymbolrenderer.h

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,6 @@ class CORE_EXPORT QgsGraduatedSymbolRenderer : public QgsFeatureRenderer
235235
* @param mode classification mode
236236
* @param symbol base symbol
237237
* @param ramp color ramp for classes
238-
* @param inverted set to true to invert color ramp
239238
* @param legendFormat
240239
* @returns new QgsGraduatedSymbolRenderer object
241240
*/
@@ -246,7 +245,6 @@ class CORE_EXPORT QgsGraduatedSymbolRenderer : public QgsFeatureRenderer
246245
Mode mode,
247246
QgsSymbol* symbol,
248247
QgsColorRamp* ramp,
249-
bool inverted = false,
250248
const QgsRendererRangeLabelFormat& legendFormat = QgsRendererRangeLabelFormat()
251249
);
252250

@@ -285,16 +283,11 @@ class CORE_EXPORT QgsGraduatedSymbolRenderer : public QgsFeatureRenderer
285283
*/
286284
void setSourceColorRamp( QgsColorRamp* ramp );
287285

288-
//! @note added in 2.1
289-
bool invertedColorRamp() { return mInvertedColorRamp; }
290-
void setInvertedColorRamp( bool inverted ) { mInvertedColorRamp = inverted; }
291-
292286
/** Update the color ramp used. Also updates all symbols colors.
293287
* Doesn't alter current breaks.
294288
* @param ramp color ramp. Ownership is transferred to the renderer
295-
* @param inverted set to true to invert ramp colors
296289
*/
297-
void updateColorRamp( QgsColorRamp* ramp = nullptr, bool inverted = false );
290+
void updateColorRamp( QgsColorRamp* ramp = nullptr );
298291

299292
/** Update all the symbols but leave breaks and colors. This method also sets the source
300293
* symbol for the renderer.
@@ -343,7 +336,6 @@ class CORE_EXPORT QgsGraduatedSymbolRenderer : public QgsFeatureRenderer
343336
Mode mMode;
344337
QScopedPointer<QgsSymbol> mSourceSymbol;
345338
QScopedPointer<QgsColorRamp> mSourceColorRamp;
346-
bool mInvertedColorRamp;
347339
QgsRendererRangeLabelFormat mLabelFormat;
348340

349341
QScopedPointer<QgsExpression> mExpression;

src/gui/qgscolorrampbutton.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -226,7 +226,7 @@ QPixmap QgsColorRampButton::createMenuIcon( QgsColorRamp* colorramp )
226226

227227
void QgsColorRampButton::buttonClicked()
228228
{
229-
if ( !isRandomColorRamp() )
229+
if ( !isRandomColorRamp() && !isNull() )
230230
{
231231
showColorRampDialog();
232232
}
@@ -241,7 +241,7 @@ void QgsColorRampButton::prepareMenu()
241241
mMenu->clear();
242242

243243
QAction* invertAction = new QAction( tr( "Invert color ramp" ), this );
244-
invertAction->setEnabled( !isRandomColorRamp() );
244+
invertAction->setEnabled( !isNull() && !isRandomColorRamp() );
245245
mMenu->addAction( invertAction );
246246
connect( invertAction, &QAction::triggered, this, &QgsColorRampButton::invertColorRamp );
247247

@@ -317,6 +317,7 @@ void QgsColorRampButton::prepareMenu()
317317
mMenu->addAction( newColorRampAction );
318318

319319
QAction* editColorRampAction = new QAction( tr( "Edit color ramp..." ), this );
320+
editColorRampAction->setEnabled( !isNull() && !isRandomColorRamp() );
320321
connect( editColorRampAction, &QAction::triggered, this, &QgsColorRampButton::showColorRampDialog );
321322
mMenu->addAction( editColorRampAction );
322323
}

src/gui/symbology-ng/qgscategorizedsymbolrendererwidget.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,12 @@ QgsCategorizedSymbolRendererWidget::QgsCategorizedSymbolRendererWidget( QgsVecto
421421
{
422422
btnColorRamp->setColorRampFromName( defaultColorRamp );
423423
}
424+
else
425+
{
426+
QgsColorRamp* ramp = new QgsGradientColorRamp( QColor( 255, 255, 255 ), QColor( 255, 0, 0 ) );
427+
btnColorRamp->setColorRamp( ramp );
428+
delete ramp;
429+
}
424430

425431
mCategorizedSymbol = QgsSymbol::defaultSymbol( mLayer->geometryType() );
426432

0 commit comments

Comments
 (0)