Skip to content

Commit 4976d59

Browse files
committed
Fix few bugs + fix test images + allow data-defined size without transformer
1 parent 59ca985 commit 4976d59

File tree

9 files changed

+15
-18
lines changed

9 files changed

+15
-18
lines changed

python/gui/symbology-ng/qgsrendererwidget.sip

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ and by connecting the slot contextMenuViewCategories(const QPoint&)*
8686
%End
8787
virtual void refreshSymbolView();
8888

89-
QgsDataDefinedSizeLegendWidget *openDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend );
89+
QgsDataDefinedSizeLegendWidget *createDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend ) /Factory/;
9090
%Docstring
9191
.. versionadded:: 3.0
9292
:rtype: QgsDataDefinedSizeLegendWidget

src/gui/symbology-ng/qgscategorizedsymbolrendererwidget.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1046,13 +1046,14 @@ QgsExpressionContext QgsCategorizedSymbolRendererWidget::createExpressionContext
10461046
void QgsCategorizedSymbolRendererWidget::dataDefinedSizeLegend()
10471047
{
10481048
QgsMarkerSymbol *s = static_cast<QgsMarkerSymbol *>( mCategorizedSymbol ); // this should be only enabled for marker symbols
1049-
QgsDataDefinedSizeLegendWidget *panel = openDataDefinedSizeLegendWidget( s, mRenderer->dataDefinedSizeLegend() );
1049+
QgsDataDefinedSizeLegendWidget *panel = createDataDefinedSizeLegendWidget( s, mRenderer->dataDefinedSizeLegend() );
10501050
if ( panel )
10511051
{
10521052
connect( panel, &QgsPanelWidget::widgetChanged, [ = ]
10531053
{
10541054
mRenderer->setDataDefinedSizeLegend( panel->dataDefinedSizeLegend() );
10551055
emit widgetChanged();
10561056
} );
1057+
openPanel( panel ); // takes ownership of the panel
10571058
}
10581059
}

src/gui/symbology-ng/qgsdatadefinedsizelegendwidget.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ QgsDataDefinedSizeLegendWidget::QgsDataDefinedSizeLegendWidget( const QgsDataDef
9090
mSizeClassesModel->sort( 0 );
9191
}
9292

93-
connect( groupManualSizeClasses, &QGroupBox::clicked, this, &QgsDataDefinedSizeLegendWidget::updatePreview );
9493
connect( btnAddClass, &QToolButton::clicked, this, &QgsDataDefinedSizeLegendWidget::addSizeClass );
9594
connect( btnRemoveClass, &QToolButton::clicked, this, &QgsDataDefinedSizeLegendWidget::removeSizeClass );
9695

@@ -109,6 +108,7 @@ QgsDataDefinedSizeLegendWidget::QgsDataDefinedSizeLegendWidget( const QgsDataDef
109108
connect( radDisabled, &QRadioButton::clicked, this, &QgsPanelWidget::widgetChanged );
110109
connect( radSeparated, &QRadioButton::clicked, this, &QgsPanelWidget::widgetChanged );
111110
connect( radCollapsed, &QRadioButton::clicked, this, &QgsPanelWidget::widgetChanged );
111+
connect( groupManualSizeClasses, &QGroupBox::clicked, this, &QgsPanelWidget::widgetChanged );
112112
connect( btnChangeSymbol, &QPushButton::clicked, this, &QgsDataDefinedSizeLegendWidget::changeSymbol );
113113
connect( this, &QgsPanelWidget::widgetChanged, this, &QgsDataDefinedSizeLegendWidget::updatePreview );
114114
updatePreview();
@@ -187,7 +187,7 @@ void QgsDataDefinedSizeLegendWidget::changeSymbol()
187187
QIcon icon = QgsSymbolLayerUtils::symbolPreviewIcon( mSourceSymbol.get(), btnChangeSymbol->iconSize() );
188188
btnChangeSymbol->setIcon( icon );
189189

190-
updatePreview();
190+
emit widgetChanged();
191191
}
192192

193193
void QgsDataDefinedSizeLegendWidget::addSizeClass()
@@ -203,7 +203,7 @@ void QgsDataDefinedSizeLegendWidget::addSizeClass()
203203
item->setData( v );
204204
mSizeClassesModel->appendRow( item );
205205
mSizeClassesModel->sort( 0 );
206-
updatePreview();
206+
emit widgetChanged();
207207
}
208208

209209
void QgsDataDefinedSizeLegendWidget::removeSizeClass()
@@ -213,5 +213,5 @@ void QgsDataDefinedSizeLegendWidget::removeSizeClass()
213213
return;
214214

215215
mSizeClassesModel->removeRow( idx.row() );
216-
updatePreview();
216+
emit widgetChanged();
217217
}

src/gui/symbology-ng/qgsgraduatedsymbolrendererwidget.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1178,13 +1178,14 @@ void QgsGraduatedSymbolRendererWidget::keyPressEvent( QKeyEvent *event )
11781178
void QgsGraduatedSymbolRendererWidget::dataDefinedSizeLegend()
11791179
{
11801180
QgsMarkerSymbol *s = static_cast<QgsMarkerSymbol *>( mGraduatedSymbol ); // this should be only enabled for marker symbols
1181-
QgsDataDefinedSizeLegendWidget *panel = openDataDefinedSizeLegendWidget( s, mRenderer->dataDefinedSizeLegend() );
1181+
QgsDataDefinedSizeLegendWidget *panel = createDataDefinedSizeLegendWidget( s, mRenderer->dataDefinedSizeLegend() );
11821182
if ( panel )
11831183
{
11841184
connect( panel, &QgsPanelWidget::widgetChanged, [ = ]
11851185
{
11861186
mRenderer->setDataDefinedSizeLegend( panel->dataDefinedSizeLegend() );
11871187
emit widgetChanged();
11881188
} );
1189+
openPanel( panel ); // takes ownership of the panel
11891190
}
11901191
}

src/gui/symbology-ng/qgsrendererwidget.cpp

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -275,23 +275,17 @@ void QgsRendererWidget::applyChanges()
275275
apply();
276276
}
277277

278-
QgsDataDefinedSizeLegendWidget *QgsRendererWidget::openDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend )
278+
QgsDataDefinedSizeLegendWidget *QgsRendererWidget::createDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend )
279279
{
280280
QgsProperty ddSize = symbol->dataDefinedSize();
281281
if ( !ddSize || !ddSize.isActive() )
282282
{
283283
QMessageBox::warning( this, tr( "Data-defined size legend" ), tr( "Data-defined size is not enabled!" ) );
284284
return nullptr;
285285
}
286-
if ( !ddSize.transformer() )
287-
{
288-
QMessageBox::warning( this, tr( "Data-defined size legend" ), tr( "Data-defined size is enabled, but without size scale transformer. Use assistant to define it." ) );
289-
return nullptr;
290-
}
291286

292287
QgsDataDefinedSizeLegendWidget *panel = new QgsDataDefinedSizeLegendWidget( ddsLegend, ddSize, symbol->clone(), mContext.mapCanvas() );
293288
connect( panel, &QgsPanelWidget::widgetChanged, this, &QgsPanelWidget::widgetChanged );
294-
openPanel( panel );
295289
return panel;
296290
}
297291

src/gui/symbology-ng/qgsrendererwidget.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,10 @@ class GUI_EXPORT QgsRendererWidget : public QgsPanelWidget
100100
virtual QList<QgsSymbol *> selectedSymbols() { return QList<QgsSymbol *>(); }
101101
virtual void refreshSymbolView() {}
102102

103-
//! Shows GUI to setup data-defined size legend.
104-
//! Returns newly open panel - may be null if it could not be opened. Ownership is not transferred.
103+
//! Creates widget to setup data-defined size legend.
104+
//! Returns newly created panel - may be null if it could not be opened. Ownership is transferred to the caller.
105105
//! \since QGIS 3.0
106-
QgsDataDefinedSizeLegendWidget *openDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend );
106+
QgsDataDefinedSizeLegendWidget *createDataDefinedSizeLegendWidget( const QgsMarkerSymbol *symbol, const QgsDataDefinedSizeLegend *ddsLegend ) SIP_FACTORY;
107107

108108
protected slots:
109109
void contextMenuViewCategories( QPoint p );

src/gui/symbology-ng/qgssinglesymbolrendererwidget.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,13 +119,14 @@ void QgsSingleSymbolRendererWidget::showSymbolLevels()
119119
void QgsSingleSymbolRendererWidget::dataDefinedSizeLegend()
120120
{
121121
QgsMarkerSymbol *s = static_cast<QgsMarkerSymbol *>( mSingleSymbol ); // this should be only enabled for marker symbols
122-
QgsDataDefinedSizeLegendWidget *panel = openDataDefinedSizeLegendWidget( s, mRenderer->dataDefinedSizeLegend() );
122+
QgsDataDefinedSizeLegendWidget *panel = createDataDefinedSizeLegendWidget( s, mRenderer->dataDefinedSizeLegend() );
123123
if ( panel )
124124
{
125125
connect( panel, &QgsPanelWidget::widgetChanged, [ = ]
126126
{
127127
mRenderer->setDataDefinedSizeLegend( panel->dataDefinedSizeLegend() );
128128
emit widgetChanged();
129129
} );
130+
openPanel( panel ); // takes ownership of the panel
130131
}
131132
}
Loading

0 commit comments

Comments
 (0)