Skip to content

Commit cda3693

Browse files
committedFeb 27, 2012
Live widget updates in graduated symbol renderer when symbol, breaks,
break type, field, or ramp changes.
1 parent b86bb6f commit cda3693

File tree

4 files changed

+53
-2
lines changed

4 files changed

+53
-2
lines changed
 

‎src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,6 +1017,33 @@ void QgsGraduatedSymbolRendererV2::setSourceColorRamp( QgsVectorColorRampV2* ram
10171017
mSourceColorRamp = ramp;
10181018
}
10191019

1020+
void QgsGraduatedSymbolRendererV2::updateColorRamp( QgsVectorColorRampV2 *ramp )
1021+
{
1022+
int i = 0;
1023+
foreach( QgsRendererRangeV2 range, mRanges )
1024+
{
1025+
QgsSymbolV2* symbol = range.symbol()->clone();
1026+
double colorValue = ( mRanges.count() > 1 ? ( double ) i / ( mRanges.count() - 1 ) : 0 );
1027+
symbol->setColor( ramp->color( colorValue ) );
1028+
updateRangeSymbol( i, symbol );
1029+
++i;
1030+
}
1031+
this->setSourceColorRamp( ramp );
1032+
}
1033+
1034+
void QgsGraduatedSymbolRendererV2::updateSymbols( QgsSymbolV2 *sym )
1035+
{
1036+
int i = 0;
1037+
foreach( QgsRendererRangeV2 range, mRanges )
1038+
{
1039+
QgsSymbolV2* symbol = sym->clone();
1040+
symbol->setColor( range.symbol()->color() );
1041+
updateRangeSymbol( i, symbol );
1042+
++i;
1043+
}
1044+
this->setSourceSymbol( sym->clone() );
1045+
}
1046+
10201047
void QgsGraduatedSymbolRendererV2::addClass( QgsSymbolV2* symbol )
10211048
{
10221049
QgsSymbolV2* newSymbol = symbol->clone();

‎src/core/symbology-ng/qgsgraduatedsymbolrendererv2.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,14 @@ class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2
114114
QgsVectorColorRampV2* sourceColorRamp();
115115
void setSourceColorRamp( QgsVectorColorRampV2* ramp );
116116

117+
/** Update the color ramp used. Also updates all symbols colors.
118+
* Doesn't alter current breaks.
119+
*/
120+
void updateColorRamp( QgsVectorColorRampV2* ramp );
121+
122+
/** Update the all symbols but leave breaks and colors. */
123+
void updateSymbols( QgsSymbolV2* sym );
124+
117125
//! @note added in 1.6
118126
void setRotationField( QString fieldName ) { mRotationField = fieldName; }
119127
//! @note added in 1.6

‎src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,13 @@ QgsGraduatedSymbolRendererV2Widget::QgsGraduatedSymbolRendererV2Widget( QgsVecto
6565
connect( btnGraduatedDelete, SIGNAL( clicked() ), this, SLOT( deleteCurrentClass() ) );
6666
connect( btnGraduatedAdd, SIGNAL( clicked() ), this, SLOT( addClass() ) );
6767

68-
69-
7068
// initialize from previously set renderer
7169
updateUiFromRenderer();
7270

71+
connect( spinGraduatedClasses, SIGNAL( valueChanged( int ) ) , this, SLOT( classifyGraduated() ) );
72+
connect( cboGraduatedMode, SIGNAL( currentIndexChanged( int ) ) , this, SLOT( classifyGraduated() ) );
73+
connect( cboGraduatedColorRamp, SIGNAL( currentIndexChanged( int ) ) , this, SLOT( reapplyColorRamp() ) );
74+
7375
// menus for data-defined rotation/size
7476
QMenu* advMenu = new QMenu;
7577

@@ -145,6 +147,7 @@ void QgsGraduatedSymbolRendererV2Widget::populateColumns()
145147
void QgsGraduatedSymbolRendererV2Widget::graduatedColumnChanged()
146148
{
147149
mRenderer->setClassAttribute( cboGraduatedColumn->currentText() );
150+
classifyGraduated();
148151
}
149152

150153

@@ -194,13 +197,25 @@ void QgsGraduatedSymbolRendererV2Widget::classifyGraduated()
194197
populateRanges();
195198
}
196199

200+
void QgsGraduatedSymbolRendererV2Widget::reapplyColorRamp()
201+
{
202+
QgsVectorColorRampV2* ramp = cboGraduatedColorRamp->currentColorRamp();
203+
if ( ramp == NULL )
204+
return;
205+
206+
mRenderer->updateColorRamp( ramp );
207+
refreshSymbolView();
208+
}
209+
197210
void QgsGraduatedSymbolRendererV2Widget::changeGraduatedSymbol()
198211
{
199212
QgsSymbolV2SelectorDialog dlg( mGraduatedSymbol, mStyle, mLayer, this );
200213
if ( !dlg.exec() )
201214
return;
202215

203216
updateGraduatedSymbolIcon();
217+
mRenderer->updateSymbols( mGraduatedSymbol );
218+
refreshSymbolView();
204219
}
205220

206221
void QgsGraduatedSymbolRendererV2Widget::updateGraduatedSymbolIcon()

‎src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
2424
void changeGraduatedSymbol();
2525
void graduatedColumnChanged();
2626
void classifyGraduated();
27+
void reapplyColorRamp();
2728
void rangesDoubleClicked( const QModelIndex & idx );
2829
void rangesClicked( const QModelIndex & idx );
2930
void changeCurrentValue( QStandardItem * item );

0 commit comments

Comments
 (0)
Please sign in to comment.