Skip to content

Commit

Permalink
Add scale method to data defined size label, related to #8887
Browse files Browse the repository at this point in the history
  • Loading branch information
blazek committed Jan 28, 2014
1 parent 8cf9936 commit 3256c92
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 5 deletions.
4 changes: 2 additions & 2 deletions src/core/symbology-ng/qgsgraduatedsymbolrendererv2.cpp
Expand Up @@ -1157,9 +1157,9 @@ void QgsGraduatedSymbolRendererV2::updateSymbols( QgsSymbolV2 *sym )
void QgsGraduatedSymbolRendererV2::setScaleMethod( QgsSymbolV2::ScaleMethod scaleMethod )
{
mScaleMethod = scaleMethod;
foreach ( QgsRendererRangeV2 range, mRanges )
for ( QgsRangeList::iterator it = mRanges.begin(); it != mRanges.end(); ++it )
{
setScaleMethodToSymbol( range.symbol(), scaleMethod );
setScaleMethodToSymbol( it->symbol(), scaleMethod );
}
}

Expand Down
6 changes: 6 additions & 0 deletions src/gui/symbology-ng/qgssinglesymbolrendererv2widget.cpp
Expand Up @@ -107,6 +107,12 @@ void QgsSingleSymbolRendererV2Widget::sizeScaleFieldChanged( QString fldName )
void QgsSingleSymbolRendererV2Widget::scaleMethodChanged( QgsSymbolV2::ScaleMethod scaleMethod )
{
mRenderer->setScaleMethod( scaleMethod );
// Set also on the symbol clone
QgsMarkerSymbolV2 *markerSymbol = dynamic_cast<QgsMarkerSymbolV2 *>( mSingleSymbol );
if ( markerSymbol )
{
markerSymbol->setScaleMethod( scaleMethod );
}
}

void QgsSingleSymbolRendererV2Widget::showSymbolLevels()
Expand Down
27 changes: 24 additions & 3 deletions src/gui/symbology-ng/qgssymbollayerv2widget.cpp
Expand Up @@ -43,7 +43,28 @@
#include <QStandardItemModel>
#include <QSvgRenderer>


QString QgsSymbolLayerV2Widget::dataDefinedPropertyLabel( const QString &entryName )
{
QString label = entryName;
if ( entryName == "size" )
{
label = tr( "Size" );
QgsMarkerSymbolLayerV2 * layer = dynamic_cast<QgsMarkerSymbolLayerV2 *>( symbolLayer() );
if ( layer )
{
switch ( layer->scaleMethod() )
{
case QgsSymbolV2::ScaleArea:
label += " (" + tr( "area" ) + ")";
break;
case QgsSymbolV2::ScaleDiameter:
label += " (" + tr( "diameter" ) + ")";
break;
}
}
}
return label;
}

QgsSimpleLineSymbolLayerV2Widget::QgsSimpleLineSymbolLayerV2Widget( const QgsVectorLayer* vl, QWidget* parent )
: QgsSymbolLayerV2Widget( parent, vl )
Expand Down Expand Up @@ -455,7 +476,7 @@ void QgsSimpleMarkerSymbolLayerV2Widget::on_mDataDefinedPropertiesButton_clicked
QgsDataDefinedSymbolDialog::colorHelpText() );
dataDefinedProperties << QgsDataDefinedSymbolDialog::DataDefinedSymbolEntry( "outline_width", tr( "Outline width" ), mLayer->dataDefinedPropertyString( "outline_width" ),
QgsDataDefinedSymbolDialog::doubleHelpText() );
dataDefinedProperties << QgsDataDefinedSymbolDialog::DataDefinedSymbolEntry( "size", tr( "Size" ), mLayer->dataDefinedPropertyString( "size" ),
dataDefinedProperties << QgsDataDefinedSymbolDialog::DataDefinedSymbolEntry( "size", dataDefinedPropertyLabel( "size" ), mLayer->dataDefinedPropertyString( "size" ),
QgsDataDefinedSymbolDialog::doubleHelpText() );
dataDefinedProperties << QgsDataDefinedSymbolDialog::DataDefinedSymbolEntry( "angle", tr( "Angle" ), mLayer->dataDefinedPropertyString( "angle" ),
QgsDataDefinedSymbolDialog::doubleHelpText() );
Expand Down Expand Up @@ -1556,7 +1577,7 @@ void QgsSvgMarkerSymbolLayerV2Widget::on_mDataDefinedPropertiesButton_clicked()
}

QList< QgsDataDefinedSymbolDialog::DataDefinedSymbolEntry > dataDefinedProperties;
dataDefinedProperties << QgsDataDefinedSymbolDialog::DataDefinedSymbolEntry( "size", tr( "Size" ), mLayer->dataDefinedPropertyString( "size" ),
dataDefinedProperties << QgsDataDefinedSymbolDialog::DataDefinedSymbolEntry( "size", dataDefinedPropertyLabel( "size" ), mLayer->dataDefinedPropertyString( "size" ),
QgsDataDefinedSymbolDialog::doubleHelpText() );
dataDefinedProperties << QgsDataDefinedSymbolDialog::DataDefinedSymbolEntry( "outline-width", tr( "Border width" ), mLayer->dataDefinedPropertyString( "outline-width" ),
QgsDataDefinedSymbolDialog::doubleHelpText() );
Expand Down
4 changes: 4 additions & 0 deletions src/gui/symbology-ng/qgssymbollayerv2widget.h
Expand Up @@ -36,6 +36,10 @@ class GUI_EXPORT QgsSymbolLayerV2Widget : public QWidget

protected:
const QgsVectorLayer* mVectorLayer;
/** Get label for data defined entry.
* Implemented only for 'size' of marker symbols
* @added in 2.1 */
virtual QString dataDefinedPropertyLabel( const QString &entryName );

signals:
void changed();
Expand Down

0 comments on commit 3256c92

Please sign in to comment.