mirror of
https://github.com/qgis/QGIS.git
synced 2025-04-14 00:07:35 -04:00
Port some symbol buttons across to QgsSymbolButton
- composer shape style button (no other composer ones for now- they're all getting removed with layouts anyway) - point cluster/displacement renderer buttons
This commit is contained in:
parent
22c4740f63
commit
46f6f83fb9
@ -53,6 +53,7 @@ class QgsSymbolButton : QToolButton
|
||||
:rtype: QgsSymbol
|
||||
%End
|
||||
|
||||
|
||||
QgsMapCanvas *mapCanvas() const;
|
||||
%Docstring
|
||||
Returns the map canvas associated with the widget.
|
||||
|
@ -11,7 +11,7 @@
|
||||
|
||||
|
||||
|
||||
class QgsPointClusterRendererWidget: QgsRendererWidget
|
||||
class QgsPointClusterRendererWidget: QgsRendererWidget, QgsExpressionContextGenerator
|
||||
{
|
||||
%Docstring
|
||||
A widget which allows configuration of the properties for a QgsPointClusterRenderer.
|
||||
@ -48,6 +48,9 @@ class QgsPointClusterRendererWidget: QgsRendererWidget
|
||||
virtual void setContext( const QgsSymbolWidgetContext &context );
|
||||
|
||||
|
||||
virtual QgsExpressionContext createExpressionContext() const;
|
||||
|
||||
|
||||
};
|
||||
|
||||
/************************************************************************
|
||||
|
@ -10,7 +10,7 @@
|
||||
|
||||
|
||||
|
||||
class QgsPointDisplacementRendererWidget: QgsRendererWidget
|
||||
class QgsPointDisplacementRendererWidget: QgsRendererWidget, QgsExpressionContextGenerator
|
||||
{
|
||||
|
||||
%TypeHeaderCode
|
||||
@ -29,6 +29,9 @@ class QgsPointDisplacementRendererWidget: QgsRendererWidget
|
||||
virtual void setContext( const QgsSymbolWidgetContext &context );
|
||||
|
||||
|
||||
virtual QgsExpressionContext createExpressionContext() const;
|
||||
|
||||
|
||||
};
|
||||
|
||||
/************************************************************************
|
||||
|
@ -52,7 +52,10 @@ QgsComposerShapeWidget::QgsComposerShapeWidget( QgsComposerShape *composerShape
|
||||
if ( mComposerShape )
|
||||
{
|
||||
connect( mComposerShape, &QgsComposerObject::itemChanged, this, &QgsComposerShapeWidget::setGuiElementValues );
|
||||
mShapeStyleButton->registerExpressionContextGenerator( mComposerShape );
|
||||
}
|
||||
connect( mShapeStyleButton, &QgsSymbolButton::changed, this, &QgsComposerShapeWidget::symbolChanged );
|
||||
mShapeStyleButton->setLayer( atlasCoverageLayer() );
|
||||
}
|
||||
|
||||
QgsComposerShapeWidget::~QgsComposerShapeWidget()
|
||||
@ -76,7 +79,7 @@ void QgsComposerShapeWidget::setGuiElementValues()
|
||||
|
||||
blockAllSignals( true );
|
||||
|
||||
updateShapeStyle();
|
||||
mShapeStyleButton->setSymbol( mComposerShape->shapeStyleSymbol()->clone() );
|
||||
|
||||
mCornerRadiusSpinBox->setValue( mComposerShape->cornerRadius() );
|
||||
if ( mComposerShape->shapeType() == QgsComposerShape::Ellipse )
|
||||
@ -98,38 +101,16 @@ void QgsComposerShapeWidget::setGuiElementValues()
|
||||
blockAllSignals( false );
|
||||
}
|
||||
|
||||
void QgsComposerShapeWidget::on_mShapeStyleButton_clicked()
|
||||
void QgsComposerShapeWidget::symbolChanged()
|
||||
{
|
||||
if ( !mComposerShape )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// use the atlas coverage layer, if any
|
||||
QgsVectorLayer *coverageLayer = atlasCoverageLayer();
|
||||
|
||||
QgsFillSymbol *newSymbol = mComposerShape->shapeStyleSymbol()->clone();
|
||||
QgsExpressionContext context = mComposerShape->createExpressionContext();
|
||||
|
||||
QgsSymbolSelectorWidget *d = new QgsSymbolSelectorWidget( newSymbol, QgsStyle::defaultStyle(), coverageLayer, nullptr );
|
||||
QgsSymbolWidgetContext symbolContext;
|
||||
symbolContext.setExpressionContext( &context );
|
||||
d->setContext( symbolContext );
|
||||
|
||||
connect( d, &QgsPanelWidget::widgetChanged, this, &QgsComposerShapeWidget::updateSymbolFromWidget );
|
||||
connect( d, &QgsPanelWidget::panelAccepted, this, &QgsComposerShapeWidget::cleanUpSymbolSelector );
|
||||
openPanel( d );
|
||||
mComposerShape->beginCommand( tr( "Shape style changed" ) );
|
||||
}
|
||||
|
||||
void QgsComposerShapeWidget::updateShapeStyle()
|
||||
{
|
||||
if ( mComposerShape )
|
||||
{
|
||||
mComposerShape->refreshSymbol();
|
||||
QIcon icon = QgsSymbolLayerUtils::symbolPreviewIcon( mComposerShape->shapeStyleSymbol(), mShapeStyleButton->iconSize() );
|
||||
mShapeStyleButton->setIcon( icon );
|
||||
}
|
||||
mComposerShape->setShapeStyleSymbol( mShapeStyleButton->clonedSymbol<QgsFillSymbol>() );
|
||||
mComposerShape->endCommand();
|
||||
}
|
||||
|
||||
void QgsComposerShapeWidget::on_mCornerRadiusSpinBox_valueChanged( double val )
|
||||
@ -179,23 +160,3 @@ void QgsComposerShapeWidget::toggleRadiusSpin( const QString &shapeText )
|
||||
mCornerRadiusSpinBox->setEnabled( false );
|
||||
}
|
||||
}
|
||||
|
||||
void QgsComposerShapeWidget::updateSymbolFromWidget()
|
||||
{
|
||||
if ( QgsSymbolSelectorWidget *w = qobject_cast<QgsSymbolSelectorWidget *>( sender() ) )
|
||||
mComposerShape->setShapeStyleSymbol( static_cast< QgsFillSymbol * >( w->symbol() ) );
|
||||
}
|
||||
|
||||
void QgsComposerShapeWidget::cleanUpSymbolSelector( QgsPanelWidget *container )
|
||||
{
|
||||
QgsSymbolSelectorWidget *w = qobject_cast<QgsSymbolSelectorWidget *>( container );
|
||||
if ( !w )
|
||||
return;
|
||||
|
||||
delete w->symbol();
|
||||
updateShapeStyle();
|
||||
mComposerShape->endCommand();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
@ -40,17 +40,13 @@ class QgsComposerShapeWidget: public QgsComposerItemBaseWidget, private Ui::QgsC
|
||||
private slots:
|
||||
void on_mShapeComboBox_currentIndexChanged( const QString &text );
|
||||
void on_mCornerRadiusSpinBox_valueChanged( double val );
|
||||
void on_mShapeStyleButton_clicked();
|
||||
void symbolChanged();
|
||||
|
||||
//! Sets the GUI elements to the currentValues of mComposerShape
|
||||
void setGuiElementValues();
|
||||
|
||||
void updateShapeStyle();
|
||||
|
||||
//! Enables or disables the rounded radius spin box based on shape type
|
||||
void toggleRadiusSpin( const QString &shapeText );
|
||||
void updateSymbolFromWidget();
|
||||
void cleanUpSymbolSelector( QgsPanelWidget *container );
|
||||
};
|
||||
|
||||
#endif // QGSCOMPOSERSHAPEWIDGET_H
|
||||
|
@ -72,6 +72,28 @@ class GUI_EXPORT QgsSymbolButton : public QToolButton
|
||||
*/
|
||||
QgsSymbol *symbol();
|
||||
|
||||
/**
|
||||
* Returns a clone of the current symbol (as the specified template type) defined by the button.
|
||||
* \see setSymbol()
|
||||
* \see changed()
|
||||
* \note Not available in Python bindings.
|
||||
*/
|
||||
template <class SymbolType> SymbolType *clonedSymbol() SIP_SKIP
|
||||
{
|
||||
QgsSymbol *tmpSymbol = mSymbol.get();
|
||||
SymbolType *symbolCastToType = dynamic_cast<SymbolType *>( tmpSymbol );
|
||||
|
||||
if ( symbolCastToType )
|
||||
{
|
||||
return symbolCastToType->clone();
|
||||
}
|
||||
else
|
||||
{
|
||||
//could not cast
|
||||
return nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the map canvas associated with the widget.
|
||||
* \see setMapCanvas()
|
||||
|
@ -79,6 +79,7 @@ QgsPointClusterRendererWidget::QgsPointClusterRendererWidget( QgsVectorLayer *la
|
||||
mDistanceSpinBox->setValue( mRenderer->tolerance() );
|
||||
mDistanceUnitWidget->setUnit( mRenderer->toleranceUnit() );
|
||||
mDistanceUnitWidget->setMapUnitScale( mRenderer->toleranceMapUnitScale() );
|
||||
mCenterSymbolToolButton->setSymbol( mRenderer->clusterSymbol()->clone() );
|
||||
|
||||
blockAllSignals( false );
|
||||
|
||||
@ -94,7 +95,10 @@ QgsPointClusterRendererWidget::QgsPointClusterRendererWidget( QgsVectorLayer *la
|
||||
}
|
||||
}
|
||||
|
||||
updateCenterIcon();
|
||||
connect( mCenterSymbolToolButton, &QgsSymbolButton::changed, this, &QgsPointClusterRendererWidget::centerSymbolChanged );
|
||||
mCenterSymbolToolButton->setDialogTitle( tr( "Cluster symbol" ) );
|
||||
mCenterSymbolToolButton->setLayer( mLayer );
|
||||
mCenterSymbolToolButton->registerExpressionContextGenerator( this );
|
||||
}
|
||||
|
||||
QgsPointClusterRendererWidget::~QgsPointClusterRendererWidget()
|
||||
@ -112,6 +116,8 @@ void QgsPointClusterRendererWidget::setContext( const QgsSymbolWidgetContext &co
|
||||
QgsRendererWidget::setContext( context );
|
||||
if ( mDistanceUnitWidget )
|
||||
mDistanceUnitWidget->setMapCanvas( context.mapCanvas() );
|
||||
if ( mCenterSymbolToolButton )
|
||||
mCenterSymbolToolButton->setMapCanvas( context.mapCanvas() );
|
||||
}
|
||||
|
||||
void QgsPointClusterRendererWidget::on_mRendererComboBox_currentIndexChanged( int index )
|
||||
@ -175,53 +181,34 @@ void QgsPointClusterRendererWidget::on_mDistanceUnitWidget_changed()
|
||||
void QgsPointClusterRendererWidget::blockAllSignals( bool block )
|
||||
{
|
||||
mRendererComboBox->blockSignals( block );
|
||||
mCenterSymbolPushButton->blockSignals( block );
|
||||
mCenterSymbolToolButton->blockSignals( block );
|
||||
mDistanceSpinBox->blockSignals( block );
|
||||
mDistanceUnitWidget->blockSignals( block );
|
||||
}
|
||||
|
||||
void QgsPointClusterRendererWidget::on_mCenterSymbolPushButton_clicked()
|
||||
QgsExpressionContext QgsPointClusterRendererWidget::createExpressionContext() const
|
||||
{
|
||||
if ( !mRenderer || !mRenderer->clusterSymbol() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
QgsMarkerSymbol *markerSymbol = mRenderer->clusterSymbol()->clone();
|
||||
QgsSymbolSelectorWidget *dlg = new QgsSymbolSelectorWidget( markerSymbol, QgsStyle::defaultStyle(), mLayer, this );
|
||||
dlg->setPanelTitle( tr( "Cluster symbol" ) );
|
||||
dlg->setDockMode( this->dockMode() );
|
||||
|
||||
QgsSymbolWidgetContext context = mContext;
|
||||
QgsExpressionContext context;
|
||||
if ( mContext.expressionContext() )
|
||||
context = *mContext.expressionContext();
|
||||
else
|
||||
context.appendScopes( mContext.globalProjectAtlasMapLayerScopes( mLayer ) );
|
||||
QgsExpressionContextScope scope;
|
||||
scope.addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_CLUSTER_COLOR, "", true ) );
|
||||
scope.addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_CLUSTER_SIZE, 0, true ) );
|
||||
QList< QgsExpressionContextScope > scopes = context.additionalExpressionContextScopes();
|
||||
QList< QgsExpressionContextScope > scopes = mContext.additionalExpressionContextScopes();
|
||||
scopes << scope;
|
||||
context.setAdditionalExpressionContextScopes( scopes );
|
||||
|
||||
dlg->setContext( context );
|
||||
|
||||
connect( dlg, &QgsPanelWidget::widgetChanged, this, &QgsPointClusterRendererWidget::updateCenterSymbolFromWidget );
|
||||
connect( dlg, &QgsPanelWidget::panelAccepted, this, &QgsPointClusterRendererWidget::cleanUpSymbolSelector );
|
||||
openPanel( dlg );
|
||||
}
|
||||
|
||||
void QgsPointClusterRendererWidget::updateCenterSymbolFromWidget()
|
||||
{
|
||||
QgsSymbolSelectorWidget *dlg = qobject_cast<QgsSymbolSelectorWidget *>( sender() );
|
||||
QgsSymbol *symbol = dlg->symbol()->clone();
|
||||
mRenderer->setClusterSymbol( static_cast< QgsMarkerSymbol * >( symbol ) );
|
||||
updateCenterIcon();
|
||||
emit widgetChanged();
|
||||
}
|
||||
|
||||
void QgsPointClusterRendererWidget::cleanUpSymbolSelector( QgsPanelWidget *container )
|
||||
{
|
||||
if ( container )
|
||||
Q_FOREACH ( const QgsExpressionContextScope &s, scopes )
|
||||
{
|
||||
QgsSymbolSelectorWidget *dlg = qobject_cast<QgsSymbolSelectorWidget *>( container );
|
||||
delete dlg->symbol();
|
||||
context << new QgsExpressionContextScope( s );
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
void QgsPointClusterRendererWidget::centerSymbolChanged()
|
||||
{
|
||||
mRenderer->setClusterSymbol( mCenterSymbolToolButton->clonedSymbol< QgsMarkerSymbol >() );
|
||||
emit widgetChanged();
|
||||
}
|
||||
|
||||
void QgsPointClusterRendererWidget::updateRendererFromWidget()
|
||||
@ -234,17 +221,6 @@ void QgsPointClusterRendererWidget::updateRendererFromWidget()
|
||||
emit widgetChanged();
|
||||
}
|
||||
|
||||
void QgsPointClusterRendererWidget::updateCenterIcon()
|
||||
{
|
||||
QgsMarkerSymbol *symbol = mRenderer->clusterSymbol();
|
||||
if ( !symbol )
|
||||
{
|
||||
return;
|
||||
}
|
||||
QIcon icon = QgsSymbolLayerUtils::symbolPreviewIcon( symbol, mCenterSymbolPushButton->iconSize() );
|
||||
mCenterSymbolPushButton->setIcon( icon );
|
||||
}
|
||||
|
||||
void QgsPointClusterRendererWidget::setupBlankUi( const QString &layerName )
|
||||
{
|
||||
QGridLayout *layout = new QGridLayout( this );
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "ui_qgspointclusterrendererwidgetbase.h"
|
||||
#include "qgis.h"
|
||||
#include "qgsrendererwidget.h"
|
||||
#include "qgsexpressioncontextgenerator.h"
|
||||
#include "qgis_gui.h"
|
||||
|
||||
class QgsPointClusterRenderer;
|
||||
@ -31,9 +32,10 @@ class QgsPointClusterRenderer;
|
||||
* \since QGIS 3.0
|
||||
*/
|
||||
|
||||
class GUI_EXPORT QgsPointClusterRendererWidget: public QgsRendererWidget, private Ui::QgsPointClusterRendererWidgetBase
|
||||
class GUI_EXPORT QgsPointClusterRendererWidget: public QgsRendererWidget, public QgsExpressionContextGenerator, private Ui::QgsPointClusterRendererWidgetBase
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
|
||||
/** Returns a new QgsPointClusterRendererWidget.
|
||||
@ -56,11 +58,12 @@ class GUI_EXPORT QgsPointClusterRendererWidget: public QgsRendererWidget, privat
|
||||
QgsFeatureRenderer *renderer() override;
|
||||
void setContext( const QgsSymbolWidgetContext &context ) override;
|
||||
|
||||
QgsExpressionContext createExpressionContext() const override;
|
||||
|
||||
private:
|
||||
QgsPointClusterRenderer *mRenderer = nullptr;
|
||||
|
||||
void blockAllSignals( bool block );
|
||||
void updateCenterIcon();
|
||||
void setupBlankUi( const QString &layerName );
|
||||
|
||||
private slots:
|
||||
@ -68,10 +71,8 @@ class GUI_EXPORT QgsPointClusterRendererWidget: public QgsRendererWidget, privat
|
||||
void on_mRendererComboBox_currentIndexChanged( int index );
|
||||
void on_mDistanceSpinBox_valueChanged( double d );
|
||||
void on_mDistanceUnitWidget_changed();
|
||||
void on_mCenterSymbolPushButton_clicked();
|
||||
void on_mRendererSettingsButton_clicked();
|
||||
void updateCenterSymbolFromWidget();
|
||||
void cleanUpSymbolSelector( QgsPanelWidget *container );
|
||||
void centerSymbolChanged();
|
||||
void updateRendererFromWidget();
|
||||
};
|
||||
|
||||
|
@ -118,6 +118,7 @@ QgsPointDisplacementRendererWidget::QgsPointDisplacementRendererWidget( QgsVecto
|
||||
mDistanceSpinBox->setValue( mRenderer->tolerance() );
|
||||
mDistanceUnitWidget->setUnit( mRenderer->toleranceUnit() );
|
||||
mDistanceUnitWidget->setMapUnitScale( mRenderer->toleranceMapUnitScale() );
|
||||
mCenterSymbolToolButton->setSymbol( mRenderer->centerSymbol()->clone() );
|
||||
|
||||
mPlacementComboBox->setCurrentIndex( mPlacementComboBox->findData( mRenderer->placement() ) );
|
||||
|
||||
@ -150,8 +151,10 @@ QgsPointDisplacementRendererWidget::QgsPointDisplacementRendererWidget( QgsVecto
|
||||
|
||||
connect( mMinLabelScaleWidget, &QgsScaleWidget::scaleChanged, this, &QgsPointDisplacementRendererWidget::minLabelScaleChanged );
|
||||
connect( mLabelFontButton, &QgsFontButton::changed, this, &QgsPointDisplacementRendererWidget::labelFontChanged );
|
||||
|
||||
updateCenterIcon();
|
||||
connect( mCenterSymbolToolButton, &QgsSymbolButton::changed, this, &QgsPointDisplacementRendererWidget::centerSymbolChanged );
|
||||
mCenterSymbolToolButton->setDialogTitle( tr( "Center symbol" ) );
|
||||
mCenterSymbolToolButton->setLayer( mLayer );
|
||||
mCenterSymbolToolButton->registerExpressionContextGenerator( this );
|
||||
}
|
||||
|
||||
QgsPointDisplacementRendererWidget::~QgsPointDisplacementRendererWidget()
|
||||
@ -174,6 +177,29 @@ void QgsPointDisplacementRendererWidget::setContext( const QgsSymbolWidgetContex
|
||||
mMinLabelScaleWidget->setMapCanvas( context.mapCanvas() );
|
||||
mMinLabelScaleWidget->setShowCurrentScaleButton( true );
|
||||
}
|
||||
if ( mCenterSymbolToolButton )
|
||||
{
|
||||
mCenterSymbolToolButton->setMapCanvas( context.mapCanvas() );
|
||||
}
|
||||
}
|
||||
|
||||
QgsExpressionContext QgsPointDisplacementRendererWidget::createExpressionContext() const
|
||||
{
|
||||
QgsExpressionContext context;
|
||||
if ( mContext.expressionContext() )
|
||||
context = *mContext.expressionContext();
|
||||
else
|
||||
context.appendScopes( mContext.globalProjectAtlasMapLayerScopes( mLayer ) );
|
||||
QgsExpressionContextScope scope;
|
||||
scope.addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_CLUSTER_COLOR, "", true ) );
|
||||
scope.addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_CLUSTER_SIZE, 0, true ) );
|
||||
QList< QgsExpressionContextScope > scopes = mContext.additionalExpressionContextScopes();
|
||||
scopes << scope;
|
||||
Q_FOREACH ( const QgsExpressionContextScope &s, scopes )
|
||||
{
|
||||
context << new QgsExpressionContextScope( s );
|
||||
}
|
||||
return context;
|
||||
}
|
||||
|
||||
void QgsPointDisplacementRendererWidget::on_mLabelFieldComboBox_currentIndexChanged( const QString &text )
|
||||
@ -348,55 +374,18 @@ void QgsPointDisplacementRendererWidget::blockAllSignals( bool block )
|
||||
mCircleModificationSpinBox->blockSignals( block );
|
||||
mScaleDependentLabelsCheckBox->blockSignals( block );
|
||||
mMinLabelScaleWidget->blockSignals( block );
|
||||
mCenterSymbolPushButton->blockSignals( block );
|
||||
mCenterSymbolToolButton->blockSignals( block );
|
||||
mDistanceSpinBox->blockSignals( block );
|
||||
mDistanceUnitWidget->blockSignals( block );
|
||||
mPlacementComboBox->blockSignals( block );
|
||||
}
|
||||
|
||||
void QgsPointDisplacementRendererWidget::on_mCenterSymbolPushButton_clicked()
|
||||
void QgsPointDisplacementRendererWidget::centerSymbolChanged()
|
||||
{
|
||||
if ( !mRenderer || !mRenderer->centerSymbol() )
|
||||
{
|
||||
return;
|
||||
}
|
||||
QgsMarkerSymbol *markerSymbol = mRenderer->centerSymbol()->clone();
|
||||
QgsSymbolSelectorWidget *dlg = new QgsSymbolSelectorWidget( markerSymbol, QgsStyle::defaultStyle(), mLayer, this );
|
||||
dlg->setPanelTitle( tr( "Center symbol" ) );
|
||||
|
||||
QgsSymbolWidgetContext context = mContext;
|
||||
|
||||
QgsExpressionContextScope scope;
|
||||
scope.addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_CLUSTER_COLOR, "", true ) );
|
||||
scope.addVariable( QgsExpressionContextScope::StaticVariable( QgsExpressionContext::EXPR_CLUSTER_SIZE, 0, true ) );
|
||||
QList< QgsExpressionContextScope > scopes = context.additionalExpressionContextScopes();
|
||||
scopes << scope;
|
||||
context.setAdditionalExpressionContextScopes( scopes );
|
||||
dlg->setContext( context );
|
||||
|
||||
connect( dlg, &QgsPanelWidget::widgetChanged, this, &QgsPointDisplacementRendererWidget::updateCenterSymbolFromWidget );
|
||||
connect( dlg, &QgsPanelWidget::panelAccepted, this, &QgsPointDisplacementRendererWidget::cleanUpSymbolSelector );
|
||||
openPanel( dlg );
|
||||
}
|
||||
|
||||
void QgsPointDisplacementRendererWidget::updateCenterSymbolFromWidget()
|
||||
{
|
||||
QgsSymbolSelectorWidget *dlg = qobject_cast<QgsSymbolSelectorWidget *>( sender() );
|
||||
QgsSymbol *symbol = dlg->symbol()->clone();
|
||||
mRenderer->setCenterSymbol( static_cast< QgsMarkerSymbol * >( symbol ) );
|
||||
updateCenterIcon();
|
||||
mRenderer->setCenterSymbol( mCenterSymbolToolButton->clonedSymbol< QgsMarkerSymbol >() );
|
||||
emit widgetChanged();
|
||||
}
|
||||
|
||||
void QgsPointDisplacementRendererWidget::cleanUpSymbolSelector( QgsPanelWidget *container )
|
||||
{
|
||||
if ( container )
|
||||
{
|
||||
QgsSymbolSelectorWidget *dlg = qobject_cast<QgsSymbolSelectorWidget *>( container );
|
||||
delete dlg->symbol();
|
||||
}
|
||||
}
|
||||
|
||||
void QgsPointDisplacementRendererWidget::updateRendererFromWidget()
|
||||
{
|
||||
QgsRendererWidget *w = qobject_cast<QgsRendererWidget *>( sender() );
|
||||
@ -407,17 +396,6 @@ void QgsPointDisplacementRendererWidget::updateRendererFromWidget()
|
||||
emit widgetChanged();
|
||||
}
|
||||
|
||||
void QgsPointDisplacementRendererWidget::updateCenterIcon()
|
||||
{
|
||||
QgsMarkerSymbol *symbol = mRenderer->centerSymbol();
|
||||
if ( !symbol )
|
||||
{
|
||||
return;
|
||||
}
|
||||
QIcon icon = QgsSymbolLayerUtils::symbolPreviewIcon( symbol, mCenterSymbolPushButton->iconSize() );
|
||||
mCenterSymbolPushButton->setIcon( icon );
|
||||
}
|
||||
|
||||
void QgsPointDisplacementRendererWidget::setupBlankUi( const QString &layerName )
|
||||
{
|
||||
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 );
|
||||
|
@ -21,6 +21,7 @@
|
||||
#include "ui_qgspointdisplacementrendererwidgetbase.h"
|
||||
#include "qgis.h"
|
||||
#include "qgsrendererwidget.h"
|
||||
#include "qgsexpressioncontextgenerator.h"
|
||||
#include "qgis_gui.h"
|
||||
|
||||
class QgsPointDisplacementRenderer;
|
||||
@ -28,7 +29,7 @@ class QgsPointDisplacementRenderer;
|
||||
/** \ingroup gui
|
||||
* \class QgsPointDisplacementRendererWidget
|
||||
*/
|
||||
class GUI_EXPORT QgsPointDisplacementRendererWidget: public QgsRendererWidget, private Ui::QgsPointDisplacementRendererWidgetBase
|
||||
class GUI_EXPORT QgsPointDisplacementRendererWidget: public QgsRendererWidget, public QgsExpressionContextGenerator, private Ui::QgsPointDisplacementRendererWidgetBase
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
@ -39,11 +40,12 @@ class GUI_EXPORT QgsPointDisplacementRendererWidget: public QgsRendererWidget, p
|
||||
QgsFeatureRenderer *renderer() override;
|
||||
void setContext( const QgsSymbolWidgetContext &context ) override;
|
||||
|
||||
QgsExpressionContext createExpressionContext() const override;
|
||||
|
||||
private:
|
||||
QgsPointDisplacementRenderer *mRenderer = nullptr;
|
||||
|
||||
void blockAllSignals( bool block );
|
||||
void updateCenterIcon();
|
||||
void setupBlankUi( const QString &layerName );
|
||||
|
||||
private slots:
|
||||
@ -59,10 +61,8 @@ class GUI_EXPORT QgsPointDisplacementRendererWidget: public QgsRendererWidget, p
|
||||
void on_mCircleModificationSpinBox_valueChanged( double d );
|
||||
void on_mScaleDependentLabelsCheckBox_stateChanged( int state );
|
||||
void minLabelScaleChanged( double scale );
|
||||
void on_mCenterSymbolPushButton_clicked();
|
||||
void on_mRendererSettingsButton_clicked();
|
||||
void updateCenterSymbolFromWidget();
|
||||
void cleanUpSymbolSelector( QgsPanelWidget *container );
|
||||
void centerSymbolChanged();
|
||||
void updateRendererFromWidget();
|
||||
};
|
||||
|
||||
|
@ -96,8 +96,11 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QComboBox" name="mShapeComboBox"/>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QPushButton" name="mShapeStyleButton">
|
||||
<widget class="QgsSymbolButton" name="mShapeStyleButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Expanding" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
@ -109,9 +112,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="0" colspan="2">
|
||||
<widget class="QComboBox" name="mShapeComboBox"/>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
@ -122,6 +122,11 @@
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QgsDoubleSpinBox</class>
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>qgsdoublespinbox.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsScrollArea</class>
|
||||
<extends>QScrollArea</extends>
|
||||
@ -135,9 +140,9 @@
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsDoubleSpinBox</class>
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>qgsdoublespinbox.h</header>
|
||||
<class>QgsSymbolButton</class>
|
||||
<extends>QToolButton</extends>
|
||||
<header>qgssymbolbutton.h</header>
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
|
@ -663,6 +663,11 @@
|
||||
</widget>
|
||||
<layoutdefault spacing="6" margin="11"/>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QgsDoubleSpinBox</class>
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>qgsdoublespinbox.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsScrollArea</class>
|
||||
<extends>QScrollArea</extends>
|
||||
@ -681,11 +686,6 @@
|
||||
<header>qgscollapsiblegroupbox.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsDoubleSpinBox</class>
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>qgsdoublespinbox.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsSpinBox</class>
|
||||
<extends>QSpinBox</extends>
|
||||
|
@ -136,13 +136,6 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="mCenterSymbolPushButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="4" column="0" colspan="2">
|
||||
<widget class="QPushButton" name="mRendererSettingsButton">
|
||||
<property name="text">
|
||||
@ -272,14 +265,26 @@
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QgsSymbolButton" name="mCenterSymbolToolButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
<customwidget>
|
||||
<class>QgsColorButton</class>
|
||||
<extends>QToolButton</extends>
|
||||
<header>qgscolorbutton.h</header>
|
||||
<container>1</container>
|
||||
<class>QgsDoubleSpinBox</class>
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>qgsdoublespinbox.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsCollapsibleGroupBoxBasic</class>
|
||||
@ -288,9 +293,15 @@
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsDoubleSpinBox</class>
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>qgsdoublespinbox.h</header>
|
||||
<class>QgsSymbolButton</class>
|
||||
<extends>QToolButton</extends>
|
||||
<header>qgssymbolbutton.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsColorButton</class>
|
||||
<extends>QToolButton</extends>
|
||||
<header>qgscolorbutton.h</header>
|
||||
<container>1</container>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsFontButton</class>
|
||||
@ -310,7 +321,7 @@
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>mCenterSymbolPushButton</tabstop>
|
||||
<tabstop>mCenterSymbolToolButton</tabstop>
|
||||
<tabstop>mRendererComboBox</tabstop>
|
||||
<tabstop>mRendererSettingsButton</tabstop>
|
||||
<tabstop>mDistanceSpinBox</tabstop>
|
||||
|
@ -26,13 +26,6 @@
|
||||
<property name="bottomMargin">
|
||||
<number>0</number>
|
||||
</property>
|
||||
<item row="0" column="1">
|
||||
<widget class="QPushButton" name="mCenterSymbolPushButton">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="2" column="1">
|
||||
<widget class="QComboBox" name="mRendererComboBox"/>
|
||||
</item>
|
||||
@ -98,6 +91,19 @@
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="0" column="1">
|
||||
<widget class="QgsSymbolButton" name="mCenterSymbolToolButton">
|
||||
<property name="sizePolicy">
|
||||
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
|
||||
<horstretch>0</horstretch>
|
||||
<verstretch>0</verstretch>
|
||||
</sizepolicy>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
<customwidgets>
|
||||
@ -106,6 +112,11 @@
|
||||
<extends>QDoubleSpinBox</extends>
|
||||
<header>qgsdoublespinbox.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsSymbolButton</class>
|
||||
<extends>QToolButton</extends>
|
||||
<header>qgssymbolbutton.h</header>
|
||||
</customwidget>
|
||||
<customwidget>
|
||||
<class>QgsUnitSelectionWidget</class>
|
||||
<extends>QWidget</extends>
|
||||
@ -114,7 +125,7 @@
|
||||
</customwidget>
|
||||
</customwidgets>
|
||||
<tabstops>
|
||||
<tabstop>mCenterSymbolPushButton</tabstop>
|
||||
<tabstop>mCenterSymbolToolButton</tabstop>
|
||||
<tabstop>mRendererComboBox</tabstop>
|
||||
<tabstop>mRendererSettingsButton</tabstop>
|
||||
<tabstop>mDistanceSpinBox</tabstop>
|
||||
|
Loading…
x
Reference in New Issue
Block a user