Skip to content

Commit 68e7cd6

Browse files
committedMay 26, 2021
Don't show symbol levels actions in renderer widgets for renderers
which are subrenderers for other renderers Symbol layers have no effect in this situation (e.g. when a categorized renderer is used as a subrenderer for point displacement renderer), so don't show the option in the GUI
1 parent f7f43e0 commit 68e7cd6

14 files changed

+52
-22
lines changed
 

‎python/gui/auto_generated/symbology/qgsrendererwidget.sip.in

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ Returns pointer to the renderer (no transfer of ownership)
3535

3636
void showSymbolLevelsDialog( QgsFeatureRenderer *r );
3737
%Docstring
38-
show a dialog with renderer's symbol level settings
38+
Show a dialog with renderer's symbol level settings.
3939
%End
4040

4141
virtual void setContext( const QgsSymbolWidgetContext &context );
@@ -73,6 +73,7 @@ This method should be called whenever the renderer is actually set on the layer.
7373
virtual void setDockMode( bool dockMode );
7474

7575

76+
7677
signals:
7778

7879
void layerVariablesChanged();
@@ -82,9 +83,12 @@ vector layers have been changed. Will request the parent dialog
8283
to re-synchronize with the variables.
8384
%End
8485

85-
void symbolLevelsChanged();
86+
void symbolLevelsChanged() /Deprecated/;
8687
%Docstring
8788
Emitted when the symbol levels settings have been changed.
89+
90+
.. deprecated:: QGIS 3.20
91+
-- no longer emitted.
8892
%End
8993

9094
protected:

‎python/gui/auto_generated/symbology/qgssinglesymbolrendererwidget.sip.in

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,15 +26,8 @@ class QgsSingleSymbolRendererWidget : QgsRendererWidget
2626

2727
virtual void setContext( const QgsSymbolWidgetContext &context );
2828

29-
3029
virtual void setDockMode( bool dockMode );
3130

32-
%Docstring
33-
Set the widget in dock mode which tells the widget to emit panel
34-
widgets and not open dialogs
35-
36-
:param dockMode: ``True`` to enable dock mode.
37-
%End
3831

3932
protected:
4033
virtual void setSymbolLevels( const QList< QgsLegendSymbolItem > &levels, bool enabled );

‎src/gui/symbology/qgscategorizedsymbolrendererwidget.cpp

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -577,9 +577,9 @@ QgsCategorizedSymbolRendererWidget::QgsCategorizedSymbolRendererWidget( QgsVecto
577577
// menus for data-defined rotation/size
578578
QMenu *advMenu = new QMenu;
579579

580-
advMenu->addAction( tr( "Match to Saved Symbols" ), this, SLOT( matchToSymbolsFromLibrary() ) );
581-
advMenu->addAction( tr( "Match to Symbols from File…" ), this, SLOT( matchToSymbolsFromXml() ) );
582-
advMenu->addAction( tr( "Symbol Levels…" ), this, SLOT( showSymbolLevels() ) );
580+
advMenu->addAction( tr( "Match to Saved Symbols" ), this, &QgsCategorizedSymbolRendererWidget::matchToSymbolsFromLibrary );
581+
advMenu->addAction( tr( "Match to Symbols from File…" ), this, &QgsCategorizedSymbolRendererWidget::matchToSymbolsFromXml );
582+
mActionLevels = advMenu->addAction( tr( "Symbol Levels…" ), this, &QgsCategorizedSymbolRendererWidget::showSymbolLevels );
583583
if ( mCategorizedSymbol && mCategorizedSymbol->type() == Qgis::SymbolType::Marker )
584584
{
585585
QAction *actionDdsLegend = advMenu->addAction( tr( "Data-defined Size Legend…" ) );
@@ -646,6 +646,12 @@ void QgsCategorizedSymbolRendererWidget::setContext( const QgsSymbolWidgetContex
646646
btnChangeCategorizedSymbol->setMessageBar( context.messageBar() );
647647
}
648648

649+
void QgsCategorizedSymbolRendererWidget::disableSymbolLevels()
650+
{
651+
delete mActionLevels;
652+
mActionLevels = nullptr;
653+
}
654+
649655
void QgsCategorizedSymbolRendererWidget::changeSelectedSymbols()
650656
{
651657
QList<int> selectedCats = selectedCategories();

‎src/gui/symbology/qgscategorizedsymbolrendererwidget.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class GUI_EXPORT QgsCategorizedSymbolRendererWidget : public QgsRendererWidget,
100100

101101
QgsFeatureRenderer *renderer() override;
102102
void setContext( const QgsSymbolWidgetContext &context ) override;
103+
void disableSymbolLevels() override SIP_SKIP;
103104

104105
/**
105106
* Replaces category symbols with the symbols from a style that have a matching
@@ -219,6 +220,7 @@ class GUI_EXPORT QgsCategorizedSymbolRendererWidget : public QgsRendererWidget,
219220
QMenu *mContextMenu = nullptr;
220221
QAction *mMergeCategoriesAction = nullptr;
221222
QAction *mUnmergeCategoriesAction = nullptr;
223+
QAction *mActionLevels = nullptr;
222224

223225
QgsExpressionContext createExpressionContext() const override;
224226

‎src/gui/symbology/qgsgraduatedsymbolrendererwidget.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,7 +576,7 @@ QgsGraduatedSymbolRendererWidget::QgsGraduatedSymbolRendererWidget( QgsVectorLay
576576
// menus for data-defined rotation/size
577577
QMenu *advMenu = new QMenu( this );
578578

579-
advMenu->addAction( tr( "Symbol Levels…" ), this, SLOT( showSymbolLevels() ) );
579+
mActionLevels = advMenu->addAction( tr( "Symbol Levels…" ), this, &QgsGraduatedSymbolRendererWidget::showSymbolLevels );
580580
if ( mGraduatedSymbol && mGraduatedSymbol->type() == Qgis::SymbolType::Marker )
581581
{
582582
QAction *actionDdsLegend = advMenu->addAction( tr( "Data-defined Size Legend…" ) );
@@ -622,6 +622,12 @@ void QgsGraduatedSymbolRendererWidget::setContext( const QgsSymbolWidgetContext
622622
btnChangeGraduatedSymbol->setMessageBar( context.messageBar() );
623623
}
624624

625+
void QgsGraduatedSymbolRendererWidget::disableSymbolLevels()
626+
{
627+
delete mActionLevels;
628+
mActionLevels = nullptr;
629+
}
630+
625631
// Connect/disconnect event handlers which trigger updating renderer
626632
void QgsGraduatedSymbolRendererWidget::connectUpdateHandlers()
627633
{

‎src/gui/symbology/qgsgraduatedsymbolrendererwidget.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,7 @@ class GUI_EXPORT QgsGraduatedSymbolRendererWidget : public QgsRendererWidget, pr
100100

101101
QgsFeatureRenderer *renderer() override;
102102
void setContext( const QgsSymbolWidgetContext &context ) override;
103+
void disableSymbolLevels() override SIP_SKIP;
103104

104105
public slots:
105106
void graduatedColumnChanged( const QString &field );
@@ -197,7 +198,7 @@ class GUI_EXPORT QgsGraduatedSymbolRendererWidget : public QgsRendererWidget, pr
197198
QgsRangeList mCopyBuffer;
198199

199200
QDoubleValidator *mSymmetryPointValidator = nullptr;
200-
201+
QAction *mActionLevels = nullptr;
201202
std::vector< std::unique_ptr< QgsAbstractProcessingParameterWidgetWrapper >> mParameterWidgetWrappers;
202203
};
203204

‎src/gui/symbology/qgsinvertedpolygonrendererwidget.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,7 @@ void QgsInvertedPolygonRendererWidget::mRendererComboBox_currentIndexChanged( in
139139
mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, oldRenderer.get() ) );
140140
connect( mEmbeddedRendererWidget.get(), &QgsRendererWidget::widgetChanged, this, &QgsInvertedPolygonRendererWidget::widgetChanged );
141141
mEmbeddedRendererWidget->setContext( mContext );
142+
mEmbeddedRendererWidget->disableSymbolLevels();
142143
mEmbeddedRendererWidget->setDockMode( this->dockMode() );
143144
connect( mEmbeddedRendererWidget.get(), &QgsPanelWidget::showPanel, this, &QgsPanelWidget::openPanel );
144145

‎src/gui/symbology/qgsmergedfeaturerendererwidget.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ void QgsMergedFeatureRendererWidget::mRendererComboBox_currentIndexChanged( int
136136
mEmbeddedRendererWidget.reset( m->createRendererWidget( mLayer, mStyle, oldRenderer.get() ) );
137137
connect( mEmbeddedRendererWidget.get(), &QgsRendererWidget::widgetChanged, this, &QgsMergedFeatureRendererWidget::widgetChanged );
138138
mEmbeddedRendererWidget->setContext( mContext );
139+
mEmbeddedRendererWidget->disableSymbolLevels();
139140
mEmbeddedRendererWidget->setDockMode( this->dockMode() );
140141
connect( mEmbeddedRendererWidget.get(), &QgsPanelWidget::showPanel, this, &QgsPanelWidget::openPanel );
141142

‎src/gui/symbology/qgspointclusterrendererwidget.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,7 @@ void QgsPointClusterRendererWidget::mRendererSettingsButton_clicked()
162162
QgsSymbolWidgetContext context = mContext;
163163
context.setAdditionalExpressionContextScopes( scopes );
164164
w->setContext( context );
165+
w->disableSymbolLevels();
165166
connect( w, &QgsPanelWidget::widgetChanged, this, &QgsPointClusterRendererWidget::updateRendererFromWidget );
166167
w->setDockMode( this->dockMode() );
167168
openPanel( w );

‎src/gui/symbology/qgspointdisplacementrendererwidget.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ void QgsPointDisplacementRendererWidget::mRendererSettingsButton_clicked()
279279
QList< QgsExpressionContextScope > scopes = context.additionalExpressionContextScopes();
280280
scopes << scope;
281281
context.setAdditionalExpressionContextScopes( scopes );
282+
w->disableSymbolLevels();
282283
w->setContext( context );
283284

284285
connect( w, &QgsPanelWidget::widgetChanged, this, &QgsPointDisplacementRendererWidget::updateRendererFromWidget );

‎src/gui/symbology/qgsrendererwidget.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,10 @@ void QgsRendererWidget::setDockMode( bool dockMode )
366366
QgsPanelWidget::setDockMode( dockMode );
367367
}
368368

369+
void QgsRendererWidget::disableSymbolLevels()
370+
{
371+
}
372+
369373
QgsDataDefinedSizeLegendWidget *QgsRendererWidget::createDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend )
370374
{
371375
QgsProperty ddSize = symbol->dataDefinedSize();

‎src/gui/symbology/qgsrendererwidget.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,14 @@ class GUI_EXPORT QgsRendererWidget : public QgsPanelWidget
8484

8585
void setDockMode( bool dockMode ) override;
8686

87+
/**
88+
* Disables symbol level modification on the widget.
89+
*
90+
* \note Not available in Python bindings
91+
* \since QGIS 3.20
92+
*/
93+
virtual void disableSymbolLevels() SIP_SKIP;
94+
8795
signals:
8896

8997
/**

‎src/gui/symbology/qgssinglesymbolrendererwidget.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,8 @@ QgsSingleSymbolRendererWidget::QgsSingleSymbolRendererWidget( QgsVectorLayer *la
6767
// advanced actions - data defined rendering
6868
QMenu *advMenu = mSelector->advancedMenu();
6969

70-
QAction *actionLevels = advMenu->addAction( tr( "Symbol Levels…" ) );
71-
connect( actionLevels, &QAction::triggered, this, &QgsSingleSymbolRendererWidget::showSymbolLevels );
70+
mActionLevels = advMenu->addAction( tr( "Symbol Levels…" ) );
71+
connect( mActionLevels, &QAction::triggered, this, &QgsSingleSymbolRendererWidget::showSymbolLevels );
7272
if ( mSingleSymbol && mSingleSymbol->type() == Qgis::SymbolType::Marker )
7373
{
7474
QAction *actionDdsLegend = advMenu->addAction( tr( "Data-defined Size Legend…" ) );
@@ -103,6 +103,12 @@ void QgsSingleSymbolRendererWidget::setDockMode( bool dockMode )
103103
mSelector->setDockMode( dockMode );
104104
}
105105

106+
void QgsSingleSymbolRendererWidget::disableSymbolLevels()
107+
{
108+
delete mActionLevels;
109+
mActionLevels = nullptr;
110+
}
111+
106112
void QgsSingleSymbolRendererWidget::setSymbolLevels( const QList<QgsLegendSymbolItem> &levels, bool enabled )
107113
{
108114
mSingleSymbol.reset( levels.at( 0 ).symbol()->clone() );

‎src/gui/symbology/qgssinglesymbolrendererwidget.h

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,13 +41,8 @@ class GUI_EXPORT QgsSingleSymbolRendererWidget : public QgsRendererWidget
4141
QgsFeatureRenderer *renderer() override;
4242

4343
void setContext( const QgsSymbolWidgetContext &context ) override;
44-
45-
/**
46-
* Set the widget in dock mode which tells the widget to emit panel
47-
* widgets and not open dialogs
48-
* \param dockMode TRUE to enable dock mode.
49-
*/
5044
void setDockMode( bool dockMode ) override;
45+
void disableSymbolLevels() override SIP_SKIP;
5146

5247
protected:
5348
void setSymbolLevels( const QList< QgsLegendSymbolItem > &levels, bool enabled ) override;
@@ -64,6 +59,7 @@ class GUI_EXPORT QgsSingleSymbolRendererWidget : public QgsRendererWidget
6459
std::unique_ptr< QgsSingleSymbolRenderer > mRenderer;
6560
QgsSymbolSelectorWidget *mSelector = nullptr;
6661
std::unique_ptr< QgsSymbol > mSingleSymbol;
62+
QAction *mActionLevels = nullptr;
6763
};
6864

6965

0 commit comments

Comments
 (0)
Please sign in to comment.