@@ -239,7 +239,16 @@ void QgsGraduatedSymbolRendererV2Widget::reapplyColorRamp()
239
239
240
240
void QgsGraduatedSymbolRendererV2Widget::changeGraduatedSymbol ()
241
241
{
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
+ }
242
250
251
+ // Otherwise change the base mGraduatedSymbol
243
252
QgsSymbolV2* newSymbol = mGraduatedSymbol ->clone ();
244
253
245
254
QgsSymbolV2SelectorDialog dlg ( newSymbol, mStyle , mLayer , this );
@@ -328,6 +337,34 @@ void QgsGraduatedSymbolRendererV2Widget::rangesClicked( const QModelIndex & idx
328
337
mRowSelected = idx.row ();
329
338
}
330
339
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
+
331
368
void QgsGraduatedSymbolRendererV2Widget::changeRangeSymbol ( int rangeIdx )
332
369
{
333
370
QgsSymbolV2* newSymbol = mRenderer ->ranges ()[rangeIdx].symbol ()->clone ();
0 commit comments