Skip to content

Commit 8567719

Browse files
committed
Show a default symbol in assistant legend preview if none set
1 parent 42df2c8 commit 8567719

File tree

5 files changed

+26
-18
lines changed

5 files changed

+26
-18
lines changed

src/gui/qgspropertyassistantwidget.cpp

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,7 @@ void QgsPropertyAssistantWidget::computeValuesFromLayer()
133133

134134
void QgsPropertyAssistantWidget::updatePreview()
135135
{
136-
if ( !mTransformerWidget || !mSymbol )
137-
return;
138-
139-
if ( dockMode() )
136+
if ( !mTransformerWidget || !mLayer ) // TODO - make this work OK without a layer
140137
return;
141138

142139
mLegendPreview->setIconSize( QSize( 512, 512 ) );
@@ -145,7 +142,7 @@ void QgsPropertyAssistantWidget::updatePreview()
145142
QList<double> breaks = QgsSymbolLayerUtils::prettyBreaks( minValueSpinBox->value(),
146143
maxValueSpinBox->value(), 4 );
147144

148-
QList< QgsSymbolLegendNode* > nodes = mTransformerWidget->generatePreviews( breaks, mLayerTreeLayer, mLayer, mSymbol.get(), minValueSpinBox->value(),
145+
QList< QgsSymbolLegendNode* > nodes = mTransformerWidget->generatePreviews( breaks, mLayerTreeLayer, mSymbol.get(), minValueSpinBox->value(),
149146
maxValueSpinBox->value() );
150147
if ( nodes.isEmpty() )
151148
{
@@ -321,29 +318,44 @@ QgsSizeScaleTransformer* QgsPropertySizeAssistantWidget::createTransformer( doub
321318
return transformer;
322319
}
323320

324-
QList< QgsSymbolLegendNode* > QgsPropertySizeAssistantWidget::generatePreviews( const QList<double>& breaks, QgsLayerTreeLayer* parent, const QgsVectorLayer* layer, const QgsSymbol* symbol, double minValue, double maxValue ) const
321+
QList< QgsSymbolLegendNode* > QgsPropertySizeAssistantWidget::generatePreviews( const QList<double>& breaks, QgsLayerTreeLayer* parent, const QgsSymbol* symbol, double minValue, double maxValue ) const
325322
{
326323
QList< QgsSymbolLegendNode* > nodes;
327324

328-
if ( !symbol || !layer )
325+
const QgsSymbol* legendSymbol = symbol;
326+
std::unique_ptr< QgsSymbol > tempSymbol;
327+
328+
if ( !legendSymbol )
329+
{
330+
if ( mDefinition.standardTemplate() == QgsPropertyDefinition::Size )
331+
{
332+
tempSymbol.reset( QgsMarkerSymbol::createSimple( QgsStringMap() ) );
333+
}
334+
else if ( mDefinition.standardTemplate() == QgsPropertyDefinition::StrokeWidth )
335+
{
336+
tempSymbol.reset( QgsLineSymbol::createSimple( QgsStringMap() ) );
337+
}
338+
legendSymbol = tempSymbol.get();
339+
}
340+
if ( !legendSymbol )
329341
return nodes;
330342

331343
std::unique_ptr< QgsSizeScaleTransformer > t( createTransformer( minValue, maxValue ) );
332344

333345
for ( int i = 0; i < breaks.length(); i++ )
334346
{
335347
std::unique_ptr< QgsSymbolLegendNode > node;
336-
if ( dynamic_cast<const QgsMarkerSymbol*>( symbol ) )
348+
if ( dynamic_cast<const QgsMarkerSymbol*>( legendSymbol ) )
337349
{
338-
std::unique_ptr< QgsMarkerSymbol > symbolClone( static_cast<QgsMarkerSymbol*>( symbol->clone() ) );
350+
std::unique_ptr< QgsMarkerSymbol > symbolClone( static_cast<QgsMarkerSymbol*>( legendSymbol->clone() ) );
339351
symbolClone->setDataDefinedSize( QgsProperty() );
340352
symbolClone->setDataDefinedAngle( QgsProperty() ); // to avoid symbol not being drawn
341353
symbolClone->setSize( t->size( breaks[i] ) );
342354
node.reset( new QgsSymbolLegendNode( parent, QgsLegendSymbolItem( symbolClone.get(), QString::number( i ), QString() ) ) );
343355
}
344-
else if ( dynamic_cast<const QgsLineSymbol*>( symbol ) )
356+
else if ( dynamic_cast<const QgsLineSymbol*>( legendSymbol ) )
345357
{
346-
std::unique_ptr< QgsLineSymbol > symbolClone( static_cast<QgsLineSymbol*>( symbol->clone() ) );
358+
std::unique_ptr< QgsLineSymbol > symbolClone( static_cast<QgsLineSymbol*>( legendSymbol->clone() ) );
347359
symbolClone->setDataDefinedWidth( QgsProperty() );
348360
symbolClone->setWidth( t->size( breaks[i] ) );
349361
node.reset( new QgsSymbolLegendNode( parent, QgsLegendSymbolItem( symbolClone.get(), QString::number( i ), QString() ) ) );
@@ -354,7 +366,7 @@ QList< QgsSymbolLegendNode* > QgsPropertySizeAssistantWidget::generatePreviews(
354366
return nodes;
355367
}
356368

357-
QList<QgsSymbolLegendNode*> QgsPropertyAbstractTransformerWidget::generatePreviews( const QList<double>& , QgsLayerTreeLayer* , const QgsVectorLayer*, const QgsSymbol*, double, double ) const
369+
QList<QgsSymbolLegendNode*> QgsPropertyAbstractTransformerWidget::generatePreviews( const QList<double>& , QgsLayerTreeLayer* , const QgsSymbol*, double, double ) const
358370
{
359371
return QList< QgsSymbolLegendNode* >();
360372
}

src/gui/qgspropertyassistantwidget.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class GUI_EXPORT QgsPropertyAbstractTransformerWidget : public QWidget
4646

4747
virtual QgsPropertyTransformer* createTransformer( double minValue, double maxValue ) const = 0;
4848

49-
virtual QList< QgsSymbolLegendNode* > generatePreviews( const QList<double>& breaks, QgsLayerTreeLayer* parent, const QgsVectorLayer* layer, const QgsSymbol* symbol, double minValue, double maxValue ) const;
49+
virtual QList< QgsSymbolLegendNode* > generatePreviews( const QList<double>& breaks, QgsLayerTreeLayer* parent, const QgsSymbol* symbol, double minValue, double maxValue ) const;
5050

5151
signals:
5252

@@ -68,7 +68,7 @@ class GUI_EXPORT QgsPropertySizeAssistantWidget : public QgsPropertyAbstractTran
6868

6969
virtual QgsSizeScaleTransformer* createTransformer( double minValue, double maxValue ) const override;
7070

71-
QList< QgsSymbolLegendNode* > generatePreviews( const QList<double>& breaks, QgsLayerTreeLayer* parent, const QgsVectorLayer* layer, const QgsSymbol* symbol, double minValue, double maxValue ) const override;
71+
QList< QgsSymbolLegendNode* > generatePreviews( const QList<double>& breaks, QgsLayerTreeLayer* parent, const QgsSymbol* symbol, double minValue, double maxValue ) const override;
7272
};
7373

7474
///@endcond PRIVATE

src/gui/qgspropertyoverridebutton.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,6 @@ void QgsPropertyOverrideButton::showAssistant()
533533

534534
QgsPanelWidget* panel = QgsPanelWidget::findParentPanel( this );
535535
QgsPropertyAssistantWidget* widget = new QgsPropertyAssistantWidget( panel, mDefinition, mProperty, mVectorLayer );
536-
widget->setDockMode( panel && panel->dockMode() );
537536
widget->registerExpressionContextGenerator( mExpressionContextGenerator );
538537
widget->setSymbol( mSymbol ); // we only show legend preview in dialog version
539538

src/gui/symbology-ng/qgssymbollayerwidget.cpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@
3838
#include "qgssvgselectorwidget.h"
3939

4040
#include "qgslogger.h"
41-
#include "qgssizescalewidget.h"
4241

4342
#include <QAbstractButton>
4443
#include <QColorDialog>

src/gui/symbology-ng/qgssymbolslistwidget.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
#include "qgssymbolslistwidget.h"
1818

19-
#include "qgssizescalewidget.h"
20-
2119
#include "qgsstylemanagerdialog.h"
2220
#include "qgsstylesavedialog.h"
2321

0 commit comments

Comments
 (0)