Skip to content

Commit 936f4aa

Browse files
author
Arunmozhi
committed
change symbols for selected ranges using changeBtn; retains colors
1 parent cd3f12f commit 936f4aa

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.cpp

+37
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,16 @@ void QgsGraduatedSymbolRendererV2Widget::reapplyColorRamp()
239239

240240
void QgsGraduatedSymbolRendererV2Widget::changeGraduatedSymbol()
241241
{
242+
// Change the selected symbols alone if anything is selected
243+
QItemSelectionModel* m = viewGraduated->selectionModel();
244+
QModelIndexList i = m->selectedRows();
245+
if ( m && i.size() > 0 )
246+
{
247+
changeSelectedSymbols();
248+
return;
249+
}
242250

251+
// Otherwise change the base mGraduatedSymbol
243252
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
244253

245254
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
@@ -328,6 +337,34 @@ void QgsGraduatedSymbolRendererV2Widget::rangesClicked( const QModelIndex & idx
328337
mRowSelected = idx.row();
329338
}
330339

340+
void QgsGraduatedSymbolRendererV2Widget::changeSelectedSymbols()
341+
{
342+
QItemSelectionModel* m = viewGraduated->selectionModel();
343+
QModelIndexList selectedIndexes = m->selectedRows( 1 );
344+
if ( m && selectedIndexes.size() > 0 )
345+
{
346+
QgsSymbolV2* newSymbol = mGraduatedSymbol->clone();
347+
QgsSymbolV2SelectorDialog dlg( newSymbol, mStyle, mLayer, this );
348+
if ( !dlg.exec() )
349+
{
350+
delete newSymbol;
351+
return;
352+
}
353+
354+
foreach( QModelIndex idx, selectedIndexes )
355+
{
356+
if( idx.isValid() )
357+
{
358+
int rangeIdx = idx.row();
359+
QgsSymbolV2* newRangeSymbol = newSymbol->clone();
360+
newRangeSymbol->setColor( mRenderer->ranges()[rangeIdx].symbol()->color() );
361+
mRenderer->updateRangeSymbol( rangeIdx, newRangeSymbol );
362+
}
363+
}
364+
}
365+
refreshSymbolView();
366+
}
367+
331368
void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol( int rangeIdx )
332369
{
333370
QgsSymbolV2* newSymbol = mRenderer->ranges()[rangeIdx].symbol()->clone();

src/gui/symbology-ng/qgsgraduatedsymbolrendererv2widget.h

+2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,8 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
6868
void changeRangeSymbol( int rangeIdx );
6969
void changeRange( int rangeIdx );
7070

71+
void changeSelectedSymbols();
72+
7173
QList<QgsSymbolV2*> selectedSymbols();
7274
QgsSymbolV2* findSymbolForRange( double lowerBound, double upperBound, const QgsRangeList& ranges ) const;
7375
void refreshSymbolView();

0 commit comments

Comments
 (0)