36 , mEmbeddedRendererWidget( 0 )
48 setupBlankUi( layer->
name() );
63 blockAllSignals(
true );
72 for (
int idx = 0; idx < layerAttributes.
count(); ++idx )
74 mLabelFieldComboBox->addItem( layerAttributes[idx].
name() );
76 mLabelFieldComboBox->addItem(
tr(
"None" ) );
79 if ( !currentLabelAttribute.
isEmpty() )
81 mLabelFieldComboBox->setCurrentIndex( mLabelFieldComboBox->findText( currentLabelAttribute ) );
85 mLabelFieldComboBox->setCurrentIndex( mLabelFieldComboBox->findText(
tr(
"None" ) ) );
92 for ( ; it != rendererList.
constEnd(); ++it )
94 if ( *it !=
"pointDisplacement" && *it !=
"heatmapRenderer" && *it !=
"invertedPolygonRenderer" )
101 mCircleColorButton->setColorDialogTitle(
tr(
"Select color" ) );
102 mCircleColorButton->setContext(
"symbology" );
103 mCircleColorButton->setAllowAlpha(
true );
104 mCircleColorButton->setShowNoColor(
true );
105 mCircleColorButton->setNoColorString(
tr(
"No outline" ) );
106 mLabelColorButton->setContext(
"symbology" );
107 mLabelColorButton->setColorDialogTitle(
tr(
"Select color" ) );
108 mLabelColorButton->setAllowAlpha(
true );
110 mCircleWidthSpinBox->setValue( mRenderer->
circleWidth() );
111 mCircleColorButton->setColor( mRenderer->
circleColor() );
112 mLabelColorButton->setColor( mRenderer->
labelColor() );
113 mCircleModificationSpinBox->setClearValue( 0.0 );
115 mDistanceSpinBox->setValue( mRenderer->
tolerance() );
119 mPlacementComboBox->setCurrentIndex( mPlacementComboBox->findData( mRenderer->
placement() ) );
123 mMaxScaleDenominatorEdit->setValidator(
new QDoubleValidator( mMaxScaleDenominatorEdit ) );
126 mScaleDependentLabelsCheckBox->setCheckState( Qt::Checked );
130 mScaleDependentLabelsCheckBox->setCheckState( Qt::Unchecked );
131 mMaxScaleDenominatorEdit->setEnabled(
false );
135 blockAllSignals(
false );
141 int rendererIndex = mRendererComboBox->findData( rendererName );
142 if ( rendererIndex != -1 )
144 mRendererComboBox->setCurrentIndex( rendererIndex );
145 on_mRendererComboBox_currentIndexChanged( rendererIndex );
155 delete mEmbeddedRendererWidget;
160 if ( mRenderer && mEmbeddedRendererWidget )
163 if ( embeddedRenderer )
174 if ( mDistanceUnitWidget )
175 mDistanceUnitWidget->setMapCanvas( canvas );
176 if ( mEmbeddedRendererWidget )
180 void QgsPointDisplacementRendererWidget::on_mLabelFieldComboBox_currentIndexChanged(
const QString& text )
184 if ( text ==
tr(
"None" ) )
195 void QgsPointDisplacementRendererWidget::on_mRendererComboBox_currentIndexChanged(
int index )
197 QString rendererId = mRendererComboBox->itemData( index ).toString();
201 delete mEmbeddedRendererWidget;
207 void QgsPointDisplacementRendererWidget::on_mPlacementComboBox_currentIndexChanged(
int index )
215 void QgsPointDisplacementRendererWidget::on_mRendererSettingsButton_clicked()
217 if ( mEmbeddedRendererWidget )
229 buttonBox->
addButton( QDialogButtonBox::Ok );
231 layout->
addWidget( mEmbeddedRendererWidget, 0, 0 );
239 void QgsPointDisplacementRendererWidget::on_mLabelFontButton_clicked()
254 void QgsPointDisplacementRendererWidget::on_mCircleWidthSpinBox_valueChanged(
double d )
262 void QgsPointDisplacementRendererWidget::on_mCircleColorButton_colorChanged(
const QColor& newColor )
272 void QgsPointDisplacementRendererWidget::on_mLabelColorButton_colorChanged(
const QColor& newColor )
282 void QgsPointDisplacementRendererWidget::on_mCircleModificationSpinBox_valueChanged(
double d )
292 void QgsPointDisplacementRendererWidget::on_mDistanceSpinBox_valueChanged(
double d )
300 void QgsPointDisplacementRendererWidget::on_mDistanceUnitWidget_changed()
309 void QgsPointDisplacementRendererWidget::on_mScaleDependentLabelsCheckBox_stateChanged(
int state )
311 if ( state == Qt::Unchecked )
313 mMaxScaleDenominatorEdit->setText(
"-1" );
314 mMaxScaleDenominatorEdit->setEnabled(
false );
318 mMaxScaleDenominatorEdit->setEnabled(
true );
322 void QgsPointDisplacementRendererWidget::on_mMaxScaleDenominatorEdit_textChanged(
const QString & text )
330 double scaleDenominator = text.
toDouble( &ok );
337 void QgsPointDisplacementRendererWidget::blockAllSignals(
bool block )
339 mLabelFieldComboBox->blockSignals( block );
340 mLabelFontButton->blockSignals( block );
341 mCircleWidthSpinBox->blockSignals( block );
342 mCircleColorButton->blockSignals( block );
343 mRendererComboBox->blockSignals( block );
344 mLabelColorButton->blockSignals( block );
345 mCircleModificationSpinBox->blockSignals( block );
346 mScaleDependentLabelsCheckBox->blockSignals( block );
347 mMaxScaleDenominatorEdit->blockSignals( block );
348 mCenterSymbolPushButton->blockSignals( block );
349 mDistanceSpinBox->blockSignals( block );
350 mDistanceUnitWidget->blockSignals( block );
351 mPlacementComboBox->blockSignals( block );
354 void QgsPointDisplacementRendererWidget::on_mCenterSymbolPushButton_clicked()
363 if ( dlg.exec() == QDialog::Rejected )
372 void QgsPointDisplacementRendererWidget::updateCenterIcon()
380 mCenterSymbolPushButton->setIcon( icon );
383 void QgsPointDisplacementRendererWidget::setupBlankUi(
const QString& layerName )
386 QLabel* label =
new QLabel(
tr(
"The point displacement renderer only applies to (single) point layers. \n'%1' is not a point layer and cannot be displayed by the point displacement renderer" ).arg( layerName ),
this );
static QgsRendererV2Registry * instance()
Placement
Placement methods for dispersing points.
double tolerance() const
Returns the tolerance distance for grouping points.
QgsFields fields() const
Returns the list of fields of this layer.
double maxLabelScaleDenominator() const
void setLabelAttributeName(const QString &name)
QFont getFont(bool &ok, const QFont &initial, const QString &title)
Show font selection dialog.
void setLabelFont(const QFont &f)
void setCenterSymbol(QgsMarkerSymbolV2 *symbol)
Sets the center symbol (takes ownership)
The output shall be in pixels.
void setMaxLabelScaleDenominator(double d)
const QgsMapUnitScale & toleranceMapUnitScale() const
Returns the map unit scale object for the distance tolerance.
Container of fields for a vector layer.
static QgsPointDisplacementRenderer * convertFromRenderer(const QgsFeatureRendererV2 *renderer)
creates a QgsPointDisplacementRenderer from an existing renderer.
double circleWidth() const
double toDouble(bool *ok) const
QString tr(const char *sourceText, const char *disambiguation, int n)
Map canvas is a class for displaying all GIS data types on a canvas.
QgsRendererV2AbstractMetadata * rendererMetadata(const QString &rendererName)
get metadata for particular renderer. Returns NULL if not found in registry.
QGis::WkbType wkbType() const
Returns the WKBType or WKBUnknown in case of error.
void setToleranceUnit(QgsSymbolV2::OutputUnit unit)
Sets the units for the tolerance distance.
const QString & name() const
Get the display name of the layer.
const char * name() const
virtual QgsFeatureRendererV2 * clone() const =0
The output shall be in millimeters.
QString number(int n, int base)
static QIcon symbolPreviewIcon(QgsSymbolV2 *symbol, QSize size)
QString labelAttributeName() const
void setEmbeddedRenderer(QgsFeatureRendererV2 *r)
Sets embedded renderer (takes ownership)
QStringList renderersList()
return a list of available renderers
static QgsStyleV2 * defaultStyle()
return default application-wide style
The output shall be in map unitx.
void setLabelColor(const QColor &c)
virtual QgsSymbolV2 * clone() const override
Placement placement() const
Returns the placement method used for dispersing the points.
int count() const
Return number of items.
void setPlacement(Placement placement)
Sets the placement method used for dispersing the points.
QgsFeatureRendererV2 * embeddedRenderer() const
void setCircleRadiusAddition(double d)
QColor circleColor() const
A renderer that automatically displaces points with the same position.
void setCircleWidth(double w)
void setCircleColor(const QColor &c)
void setToleranceMapUnitScale(const QgsMapUnitScale &scale)
Sets the map unit scale object for the distance tolerance.
const_iterator constEnd() const
const_iterator constBegin() const
QgsSymbolV2::OutputUnit toleranceUnit() const
Returns the units for the tolerance distance.
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QgsMarkerSymbolV2 * centerSymbol()
Returns the symbol for the center of a displacement group (but not ownership of the symbol) ...
Represents a vector layer which manages a vector based data sets.
QColor labelColor() const
void setTolerance(double t)
Sets the tolerance distance for grouping points.
double circleRadiusAddition() const