Refactoring ready for manual update dialog. Also improves labelling of StdDev classifications and better determination of decimal places to use

This commit is contained in:
Chris Crook 2014-09-24 10:50:54 +12:00
parent 91358aaa15
commit 2f706bc47a
7 changed files with 152 additions and 77 deletions

View File

@ -107,12 +107,14 @@ class QgsGraduatedSymbolRendererV2 : QgsFeatureRendererV2
Mode mode() const; Mode mode() const;
void setMode( Mode mode ); void setMode( Mode mode );
void updateClasses( QgsVectorLayer *vlayer, Mode mode, int nclasses );
QString units(); QString units();
void setUnits( QString units, bool updateRanges=true ); void setUnits( QString units, bool updateRanges=true );
int decimalPlaces() const; int decimalPlaces() const;
void setDecimalPlaces( int decimalPlaces, bool updateRanges=true ); void setDecimalPlaces( int decimalPlaces, bool updateRanges=true );
void calculateDecimalPlaces( bool updateRanges=true );
static QgsGraduatedSymbolRendererV2* createRenderer( static QgsGraduatedSymbolRendererV2* createRenderer(
QgsVectorLayer* vlayer, QgsVectorLayer* vlayer,

View File

@ -40,7 +40,9 @@ class QgsGraduatedSymbolRendererV2Widget : QgsRendererV2Widget
void rowsMoved(); void rowsMoved();
protected: protected:
void updateUiFromRenderer(); void updateUiFromRenderer( bool updateCount=true );
void connectUpdateHandlers();
void disconnectUpdateHandlers();
void updateGraduatedSymbolIcon(); void updateGraduatedSymbolIcon();

View File

@ -630,7 +630,7 @@ static QList<double> _calcPrettyBreaks( double minimum, double maximum, int clas
} // _calcPrettyBreaks } // _calcPrettyBreaks
static QList<double> _calcStdDevBreaks( QList<double> values, int classes, QList<int> &labels ) static QList<double> _calcStdDevBreaks( QList<double> values, int classes, QList<double> &labels )
{ {
// C++ implementation of the standard deviation class interval algorithm // C++ implementation of the standard deviation class interval algorithm
@ -669,7 +669,7 @@ static QList<double> _calcStdDevBreaks( QList<double> values, int classes, QList
QList<double> breaks = _calcPrettyBreaks(( minimum - mean ) / stdDev, ( maximum - mean ) / stdDev, classes ); QList<double> breaks = _calcPrettyBreaks(( minimum - mean ) / stdDev, ( maximum - mean ) / stdDev, classes );
for ( int i = 0; i < breaks.count(); i++ ) for ( int i = 0; i < breaks.count(); i++ )
{ {
labels.append(( int ) breaks[i] ); labels.append( breaks[i] );
breaks[i] = ( breaks[i] * stdDev ) + mean; breaks[i] = ( breaks[i] * stdDev ) + mean;
} }
@ -820,10 +820,31 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
QString units, QString units,
int decimalPlaces ) int decimalPlaces )
{ {
if ( classes < 1 ) QgsRangeList ranges;
return NULL; QgsGraduatedSymbolRendererV2* r = new QgsGraduatedSymbolRendererV2( attrName, ranges );
r->setSourceSymbol( symbol->clone() );
r->setSourceColorRamp( ramp->clone() );
r->setInvertedColorRamp( inverted );
r->setMode( mode );
r->setUnits( units );
r->updateClasses(vlayer,mode,classes);
r->setDecimalPlaces( decimalPlaces );
int attrNum = vlayer->fieldNameIndex( attrName ); return r;
}
void QgsGraduatedSymbolRendererV2::updateClasses( QgsVectorLayer *vlayer, Mode mode, int nclasses )
{
// Custom classes are not recalculated
setMode(mode);
if( mode == Custom ) return;
if ( nclasses < 1 ) nclasses=1;
int attrNum = vlayer->fieldNameIndex( mAttrName );
double minimum; double minimum;
double maximum; double maximum;
@ -832,9 +853,9 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
if ( attrNum == -1 ) if ( attrNum == -1 )
{ {
// try to use expression // try to use expression
expression.reset( new QgsExpression( attrName ) ); expression.reset( new QgsExpression( mAttrName ) );
if ( expression->hasParserError() || !expression->prepare( vlayer->pendingFields() ) ) if ( expression->hasParserError() || !expression->prepare( vlayer->pendingFields() ) )
return 0; // should have a means to report errors return; // should have a means to report errors
QList<double> values; QList<double> values;
QgsFeatureIterator fit = vlayer->getFeatures(); QgsFeatureIterator fit = vlayer->getFeatures();
@ -855,14 +876,14 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
QgsDebugMsg( QString( "min %1 // max %2" ).arg( minimum ).arg( maximum ) ); QgsDebugMsg( QString( "min %1 // max %2" ).arg( minimum ).arg( maximum ) );
QList<double> breaks; QList<double> breaks;
QList<int> labels; QList<double> labels;
if ( mode == EqualInterval ) if ( mode == EqualInterval )
{ {
breaks = _calcEqualIntervalBreaks( minimum, maximum, classes ); breaks = _calcEqualIntervalBreaks( minimum, maximum, nclasses );
} }
else if ( mode == Pretty ) else if ( mode == Pretty )
{ {
breaks = _calcPrettyBreaks( minimum, maximum, classes ); breaks = _calcPrettyBreaks( minimum, maximum, nclasses );
} }
else if ( mode == Quantile || mode == Jenks || mode == StdDev ) else if ( mode == Quantile || mode == Jenks || mode == StdDev )
{ {
@ -871,7 +892,7 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
QgsFeature f; QgsFeature f;
QStringList lst; QStringList lst;
if ( expression.isNull() ) if ( expression.isNull() )
lst.append( attrName ); lst.append( mAttrName );
else else
lst = expression->referencedColumns(); lst = expression->referencedColumns();
@ -888,15 +909,15 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
// calculate the breaks // calculate the breaks
if ( mode == Quantile ) if ( mode == Quantile )
{ {
breaks = _calcQuantileBreaks( values, classes ); breaks = _calcQuantileBreaks( values, nclasses );
} }
else if ( mode == Jenks ) else if ( mode == Jenks )
{ {
breaks = _calcJenksBreaks( values, classes, minimum, maximum ); breaks = _calcJenksBreaks( values, nclasses, minimum, maximum );
} }
else if ( mode == StdDev ) else if ( mode == StdDev )
{ {
breaks = _calcStdDevBreaks( values, classes, labels ); breaks = _calcStdDevBreaks( values, nclasses, labels );
} }
} }
else else
@ -904,19 +925,13 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
Q_ASSERT( false ); Q_ASSERT( false );
} }
QgsRangeList ranges;
double lower, upper = minimum; double lower, upper = minimum;
QString label; QString label;
mRanges.clear();
QgsGraduatedSymbolRendererV2* r = new QgsGraduatedSymbolRendererV2( attrName, ranges );
r->setSourceSymbol( symbol->clone() );
r->setSourceColorRamp( ramp->clone() );
r->setInvertedColorRamp( inverted );
r->setMode( mode );
r->setUnits( units );
r->setDecimalPlaces( decimalPlaces );
// "breaks" list contains all values at class breaks plus maximum as last break // "breaks" list contains all values at class breaks plus maximum as last break
int i = 0; int i = 0;
for ( QList<double>::iterator it = breaks.begin(); it != breaks.end(); ++it, ++i ) for ( QList<double>::iterator it = breaks.begin(); it != breaks.end(); ++it, ++i )
{ {
@ -924,12 +939,7 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
upper = *it; upper = *it;
// Symbol based on range // Symbol based on range
QgsSymbolV2* newSymbol = symbol->clone(); QgsSymbolV2* newSymbol = mSourceSymbol->clone();
double colorValue;
if ( inverted ) colorValue = ( breaks.count() > 1 ? ( double )( breaks.count() - i - 1 ) / ( breaks.count() - 1 ) : 0 );
else colorValue = ( breaks.count() > 1 ? ( double ) i / ( breaks.count() - 1 ) : 0 );
newSymbol->setColor( ramp->color( colorValue ) ); // color from (0 / cl-1) to (cl-1 / cl-1)
QgsRendererRangeV2 range = QgsRendererRangeV2( lower, upper, newSymbol, "" ); QgsRendererRangeV2 range = QgsRendererRangeV2( lower, upper, newSymbol, "" );
// Label - either StdDev label or default label for a range // Label - either StdDev label or default label for a range
@ -937,27 +947,27 @@ QgsGraduatedSymbolRendererV2* QgsGraduatedSymbolRendererV2::createRenderer(
{ {
if ( i == 0 ) if ( i == 0 )
{ {
label = "< " + QString::number( labels[i], 'i', 0 ) + " Std Dev"; label = "< " + QString::number( labels[i], 'f', 2 ) + " Std Dev";
} }
else if ( i == labels.count() - 1 ) else if ( i == labels.count() - 1 )
{ {
label = ">= " + QString::number( labels[i-1], 'i', 0 ) + " Std Dev"; label = ">= " + QString::number( labels[i-1], 'f', 2 ) + " Std Dev";
} }
else else
{ {
label = QString::number( labels[i-1], 'i', 0 ) + " Std Dev" + " - " + QString::number( labels[i], 'i', 0 ) + " Std Dev"; label = QString::number( labels[i-1], 'f', 2 ) + " Std Dev" + " - " + QString::number( labels[i], 'f', 2 ) + " Std Dev";
} }
} }
else else
{ {
label=r->defaultRangeLabel(range); label=defaultRangeLabel(range);
} }
range.setLabel(label); range.setLabel(label);
r->addClass( range ); addClass( range );
} }
updateColorRamp(0,mInvertedColorRamp);
return r;
} }
@ -1201,18 +1211,20 @@ void QgsGraduatedSymbolRendererV2::setSourceColorRamp( QgsVectorColorRampV2* ram
void QgsGraduatedSymbolRendererV2::updateColorRamp( QgsVectorColorRampV2 *ramp, bool inverted ) void QgsGraduatedSymbolRendererV2::updateColorRamp( QgsVectorColorRampV2 *ramp, bool inverted )
{ {
int i = 0; int i = 0;
if( ramp ) this->setSourceColorRamp( ramp );
this->setInvertedColorRamp( inverted );
foreach ( QgsRendererRangeV2 range, mRanges ) foreach ( QgsRendererRangeV2 range, mRanges )
{ {
QgsSymbolV2* symbol = range.symbol()->clone(); QgsSymbolV2* symbol = range.symbol()->clone();
double colorValue; double colorValue;
if ( inverted ) colorValue = ( mRanges.count() > 1 ? ( double )( mRanges.count() - i - 1 ) / ( mRanges.count() - 1 ) : 0 ); if ( inverted ) colorValue = ( mRanges.count() > 1 ? ( double )( mRanges.count() - i - 1 ) / ( mRanges.count() - 1 ) : 0 );
else colorValue = ( mRanges.count() > 1 ? ( double ) i / ( mRanges.count() - 1 ) : 0 ); else colorValue = ( mRanges.count() > 1 ? ( double ) i / ( mRanges.count() - 1 ) : 0 );
symbol->setColor( ramp->color( colorValue ) ); symbol->setColor( mSourceColorRamp->color( colorValue ) );
updateRangeSymbol( i, symbol ); updateRangeSymbol( i, symbol );
++i; ++i;
} }
this->setSourceColorRamp( ramp );
this->setInvertedColorRamp( inverted );
} }
void QgsGraduatedSymbolRendererV2::updateSymbols( QgsSymbolV2 *sym ) void QgsGraduatedSymbolRendererV2::updateSymbols( QgsSymbolV2 *sym )
@ -1343,6 +1355,32 @@ void QgsGraduatedSymbolRendererV2::setDecimalPlaces( int decimalPlaces, bool upd
mDecimalPlaces=decimalPlaces; mDecimalPlaces=decimalPlaces;
} }
void QgsGraduatedSymbolRendererV2::calculateDecimalPlaces( bool updateRanges )
{
// Find the minimum size of a class
double minClassRange=0.0;
for ( QgsRangeList::iterator it = mRanges.begin(); it != mRanges.end(); ++it )
{
double range = it->upperValue()-it->lowerValue();
if( range <= 0.0 ) continue;
if( minClassRange == 0.0 || range < minClassRange ) minClassRange=range;
}
if( minClassRange <= 0.0 ) return;
// Now set the number of decimal places to ensure no more than 20% error in
// representing this range (up to 10% at upper and lower end)
int ndp=10;
double nextDpMinRange=0.0000000099;
while( ndp > 0 && nextDpMinRange < minClassRange )
{
ndp--;
nextDpMinRange *= 10.0;
}
setDecimalPlaces(ndp,updateRanges);
}
void QgsGraduatedSymbolRendererV2::moveClass( int from, int to ) void QgsGraduatedSymbolRendererV2::moveClass( int from, int to )
{ {
if ( from < 0 || from >= mRanges.size() || to < 0 || to >= mRanges.size() ) return; if ( from < 0 || from >= mRanges.size() || to < 0 || to >= mRanges.size() ) return;

View File

@ -131,12 +131,14 @@ class CORE_EXPORT QgsGraduatedSymbolRendererV2 : public QgsFeatureRendererV2
Mode mode() const { return mMode; } Mode mode() const { return mMode; }
void setMode( Mode mode ) { mMode = mode; } void setMode( Mode mode ) { mMode = mode; }
void updateClasses( QgsVectorLayer *vlayer, Mode mode, int nclasses );
QString units() const { return mUnits; } QString units() const { return mUnits; }
void setUnits( QString units, bool updateRanges=true ); void setUnits( QString units, bool updateRanges=true );
int decimalPlaces() const { return mDecimalPlaces; } int decimalPlaces() const { return mDecimalPlaces; }
void setDecimalPlaces( int decimalPlaces, bool updateRanges=true ); void setDecimalPlaces( int decimalPlaces, bool updateRanges=true );
void calculateDecimalPlaces( bool updateRanges=true );
static QgsGraduatedSymbolRendererV2* createRenderer( static QgsGraduatedSymbolRendererV2* createRenderer(
QgsVectorLayer* vlayer, QgsVectorLayer* vlayer,

View File

@ -401,12 +401,6 @@ QgsGraduatedSymbolRendererV2Widget::QgsGraduatedSymbolRendererV2Widget( QgsVecto
cboGraduatedColorRamp->setCurrentIndex( index ); cboGraduatedColorRamp->setCurrentIndex( index );
} }
mModel = new QgsGraduatedSymbolRendererV2Model( this );
mModel->setRenderer( mRenderer );
viewGraduated->setModel( mModel );
viewGraduated->resizeColumnToContents( 0 );
viewGraduated->resizeColumnToContents( 1 );
viewGraduated->resizeColumnToContents( 2 );
viewGraduated->setStyle( new QgsGraduatedSymbolRendererV2ViewStyle( viewGraduated->style() ) ); viewGraduated->setStyle( new QgsGraduatedSymbolRendererV2ViewStyle( viewGraduated->style() ) );
@ -426,16 +420,11 @@ QgsGraduatedSymbolRendererV2Widget::QgsGraduatedSymbolRendererV2Widget( QgsVecto
connect( btnGraduatedAdd, SIGNAL( clicked() ), this, SLOT( addClass() ) ); connect( btnGraduatedAdd, SIGNAL( clicked() ), this, SLOT( addClass() ) );
connect( cbxLinkBoundaries, SIGNAL( toggled( bool ) ), this, SLOT( toggleBoundariesLink( bool ) ) ); connect( cbxLinkBoundaries, SIGNAL( toggled( bool ) ), this, SLOT( toggleBoundariesLink( bool ) ) );
connectUpdateHandlers();
// initialize from previously set renderer // initialize from previously set renderer
updateUiFromRenderer(); updateUiFromRenderer();
connect( spinGraduatedClasses, SIGNAL( valueChanged( int ) ) , this, SLOT( classifyGraduated() ) );
connect( cboGraduatedMode, SIGNAL( currentIndexChanged( int ) ) , this, SLOT( classifyGraduated() ) );
connect( cboGraduatedColorRamp, SIGNAL( currentIndexChanged( int ) ) , this, SLOT( reapplyColorRamp() ) );
connect( cbxInvertedColorRamp, SIGNAL( toggled( bool ) ) , this, SLOT( reapplyColorRamp() ) );
connect( spinDecimalPlaces, SIGNAL(valueChanged(int)), this, SLOT(decimalPlacesChanged()));
connect( txtUnits, SIGNAL( textChanged(QString)), this, SLOT(unitsChanged(QString)));
// menus for data-defined rotation/size // menus for data-defined rotation/size
QMenu* advMenu = new QMenu; QMenu* advMenu = new QMenu;
@ -460,22 +449,48 @@ QgsFeatureRendererV2* QgsGraduatedSymbolRendererV2Widget::renderer()
return mRenderer; return mRenderer;
} }
// Connect/disconnect event handlers which trigger updating renderer
void QgsGraduatedSymbolRendererV2Widget::updateUiFromRenderer() void QgsGraduatedSymbolRendererV2Widget::connectUpdateHandlers()
{ {
connect( spinGraduatedClasses, SIGNAL( valueChanged( int ) ) , this, SLOT( classifyGraduated() ) );
connect( cboGraduatedMode, SIGNAL( currentIndexChanged( int ) ) , this, SLOT( classifyGraduated() ) );
connect( cboGraduatedColorRamp, SIGNAL( currentIndexChanged( int ) ) , this, SLOT( reapplyColorRamp() ) );
connect( cbxInvertedColorRamp, SIGNAL( toggled( bool ) ) , this, SLOT( reapplyColorRamp() ) );
connect( spinDecimalPlaces, SIGNAL(valueChanged(int)), this, SLOT(decimalPlacesChanged()));
connect( txtUnits, SIGNAL( textChanged(QString)), this, SLOT(unitsChanged(QString)));
}
// Connect/disconnect event handlers which trigger updating renderer
void QgsGraduatedSymbolRendererV2Widget::disconnectUpdateHandlers()
{
disconnect( spinGraduatedClasses, SIGNAL( valueChanged( int ) ) , this, SLOT( classifyGraduated() ) );
disconnect( cboGraduatedMode, SIGNAL( currentIndexChanged( int ) ) , this, SLOT( classifyGraduated() ) );
disconnect( cboGraduatedColorRamp, SIGNAL( currentIndexChanged( int ) ) , this, SLOT( reapplyColorRamp() ) );
disconnect( cbxInvertedColorRamp, SIGNAL( toggled( bool ) ) , this, SLOT( reapplyColorRamp() ) );
disconnect( spinDecimalPlaces, SIGNAL(valueChanged(int)), this, SLOT(decimalPlacesChanged()));
disconnect( txtUnits, SIGNAL( textChanged(QString)), this, SLOT(unitsChanged(QString)));
}
void QgsGraduatedSymbolRendererV2Widget::updateUiFromRenderer( bool updateCount )
{
disconnectUpdateHandlers();
updateGraduatedSymbolIcon(); updateGraduatedSymbolIcon();
// update UI from the graduated renderer (update combo boxes, view) // update UI from the graduated renderer (update combo boxes, view)
if ( mRenderer->mode() < cboGraduatedMode->count() ) if ( mRenderer->mode() < cboGraduatedMode->count() )
cboGraduatedMode->setCurrentIndex( mRenderer->mode() ); cboGraduatedMode->setCurrentIndex( mRenderer->mode() );
if ( mRenderer->ranges().count() )
// Only update class count if different - otherwise typing value gets very messy
int nclasses=mRenderer->ranges().count();
if ( nclasses && updateCount )
spinGraduatedClasses->setValue( mRenderer->ranges().count() ); spinGraduatedClasses->setValue( mRenderer->ranges().count() );
// set column // set column
disconnect( mExpressionWidget, SIGNAL( fieldChanged( QString ) ), this, SLOT( graduatedColumnChanged( QString ) ) );
QString attrName = mRenderer->classAttribute(); QString attrName = mRenderer->classAttribute();
mExpressionWidget->setField( attrName ); mExpressionWidget->setField( attrName );
connect( mExpressionWidget, SIGNAL( fieldChanged( QString ) ), this, SLOT( graduatedColumnChanged( QString ) ) );
// set source symbol // set source symbol
if ( mRenderer->sourceSymbol() ) if ( mRenderer->sourceSymbol() )
@ -494,6 +509,15 @@ void QgsGraduatedSymbolRendererV2Widget::updateUiFromRenderer()
spinDecimalPlaces->setValue( mRenderer->decimalPlaces()); spinDecimalPlaces->setValue( mRenderer->decimalPlaces());
txtUnits->setText( mRenderer->units() ); txtUnits->setText( mRenderer->units() );
mModel = new QgsGraduatedSymbolRendererV2Model( this );
mModel->setRenderer( mRenderer );
viewGraduated->setModel( mModel );
viewGraduated->resizeColumnToContents( 0 );
viewGraduated->resizeColumnToContents( 1 );
viewGraduated->resizeColumnToContents( 2 );
connectUpdateHandlers();
} }
void QgsGraduatedSymbolRendererV2Widget::graduatedColumnChanged( QString field ) void QgsGraduatedSymbolRendererV2Widget::graduatedColumnChanged( QString field )
@ -505,7 +529,7 @@ void QgsGraduatedSymbolRendererV2Widget::classifyGraduated()
{ {
QString attrName = mExpressionWidget->currentField(); QString attrName = mExpressionWidget->currentField();
int classes = spinGraduatedClasses->value(); int nclasses = spinGraduatedClasses->value();
QgsVectorColorRampV2* ramp = cboGraduatedColorRamp->currentColorRamp(); QgsVectorColorRampV2* ramp = cboGraduatedColorRamp->currentColorRamp();
@ -527,6 +551,8 @@ void QgsGraduatedSymbolRendererV2Widget::classifyGraduated()
mode = QgsGraduatedSymbolRendererV2::StdDev; mode = QgsGraduatedSymbolRendererV2::StdDev;
else if ( cboGraduatedMode->currentIndex() == 4 ) else if ( cboGraduatedMode->currentIndex() == 4 )
mode = QgsGraduatedSymbolRendererV2::Pretty; mode = QgsGraduatedSymbolRendererV2::Pretty;
else if ( cboGraduatedMode->currentIndex() == 5)
mode = QgsGraduatedSymbolRendererV2::Custom;
else // default should be quantile for now else // default should be quantile for now
mode = QgsGraduatedSymbolRendererV2::Quantile; mode = QgsGraduatedSymbolRendererV2::Quantile;
@ -541,26 +567,24 @@ void QgsGraduatedSymbolRendererV2Widget::classifyGraduated()
// create and set new renderer // create and set new renderer
QApplication::setOverrideCursor( Qt::WaitCursor ); QApplication::setOverrideCursor( Qt::WaitCursor );
QgsGraduatedSymbolRendererV2* r = QgsGraduatedSymbolRendererV2::createRenderer( mRenderer->setClassAttribute(attrName);
mLayer, attrName, classes, mode, mGraduatedSymbol, ramp, mRenderer->setMode(mode);
cbxInvertedColorRamp->isChecked(), txtUnits->text(), spinDecimalPlaces->value() ); bool updateUiCount=true;
if( mode == QgsGraduatedSymbolRendererV2::Custom )
{
// Need to insert code for manually setting ranges
}
else
{
mRenderer->updateClasses(mLayer,mode,nclasses);
// PrettyBreaks and StdDev calculation don't generate exact
// number of classes - leave user interface unchanged for these
updateUiCount=false;
}
mRenderer->calculateDecimalPlaces();
QApplication::restoreOverrideCursor(); QApplication::restoreOverrideCursor();
if ( !r ) updateUiFromRenderer( updateUiCount );
{
QMessageBox::critical( this, tr( "Error" ), tr( "Renderer creation has failed." ) );
return;
}
r->setSizeScaleField( mRenderer->sizeScaleField() );
r->setRotationField( mRenderer->rotationField() );
r->setScaleMethod( mRenderer->scaleMethod() );
if ( mModel )
{
mModel->setRenderer( r );
}
delete mRenderer;
mRenderer = r;
} }
void QgsGraduatedSymbolRendererV2Widget::reapplyColorRamp() void QgsGraduatedSymbolRendererV2Widget::reapplyColorRamp()

View File

@ -110,7 +110,9 @@ class GUI_EXPORT QgsGraduatedSymbolRendererV2Widget : public QgsRendererV2Widget
void rowsMoved(); void rowsMoved();
protected: protected:
void updateUiFromRenderer(); void updateUiFromRenderer( bool updateCount=true );
void connectUpdateHandlers();
void disconnectUpdateHandlers();
void updateGraduatedSymbolIcon(); void updateGraduatedSymbolIcon();

View File

@ -69,6 +69,11 @@
<string>Pretty Breaks</string> <string>Pretty Breaks</string>
</property> </property>
</item> </item>
<item>
<property name="text">
<string>Manual Breaks</string>
</property>
</item>
</widget> </widget>
</item> </item>
<item row="5" column="0"> <item row="5" column="0">