void QgsColorRampComboBox::populate( QgsStyleV2* style ) { if ( count() != 0 ) return; // already populated! mStyle = style; setIconSize( rampIconSize ); QStringList rampNames = mStyle->colorRampNames(); for ( QStringList::iterator it = rampNames.begin(); it != rampNames.end(); ++it ) { QgsVectorColorRampV2* ramp = style->colorRamp( *it ); if ( !mShowGradientOnly || ramp->type() == "gradient" ) { QIcon icon = QgsSymbolLayerV2Utils::colorRampPreviewIcon( ramp, rampIconSize ); addItem( icon, *it ); } delete ramp; } if ( !mShowGradientOnly ) addItem( tr( "Random colors" ) ); addItem( tr( "New color ramp..." ) ); connect( this, SIGNAL( activated( int ) ), SLOT( colorRampChanged( int ) ) ); }
bool QgsStyleV2ManagerDialog::editColorRamp() { QString name = currentItemName(); if ( name.isEmpty() ) return false; QgsVectorColorRampV2* ramp = mStyle->colorRamp( name ); if ( ramp->type() == "gradient" ) { QgsVectorGradientColorRampV2* gradRamp = static_cast<QgsVectorGradientColorRampV2*>( ramp ); QgsVectorGradientColorRampV2Dialog dlg( gradRamp, this ); if ( !dlg.exec() ) { delete ramp; return false; } } else if ( ramp->type() == "random" ) { QgsVectorRandomColorRampV2* randRamp = static_cast<QgsVectorRandomColorRampV2*>( ramp ); QgsVectorRandomColorRampV2Dialog dlg( randRamp, this ); if ( !dlg.exec() ) { delete ramp; return false; } } else if ( ramp->type() == "colorbrewer" ) { QgsVectorColorBrewerColorRampV2* brewerRamp = static_cast<QgsVectorColorBrewerColorRampV2*>( ramp ); QgsVectorColorBrewerColorRampV2Dialog dlg( brewerRamp, this ); if ( !dlg.exec() ) { delete ramp; return false; } } else if ( ramp->type() == "cpt-city" ) { QgsCptCityColorRampV2* cptCityRamp = static_cast<QgsCptCityColorRampV2*>( ramp ); QgsCptCityColorRampV2Dialog dlg( cptCityRamp, this ); if ( !dlg.exec() ) { delete ramp; return false; } if ( dlg.saveAsGradientRamp() ) { ramp = cptCityRamp->cloneGradientRamp(); delete cptCityRamp; } } else { Q_ASSERT( 0 && "invalid ramp type" ); } mStyle->addColorRamp( name, ramp, true ); mModified = true; return true; }