@@ -133,10 +133,7 @@ void QgsPropertyAssistantWidget::computeValuesFromLayer()
133
133
134
134
void QgsPropertyAssistantWidget::updatePreview ()
135
135
{
136
- if ( !mTransformerWidget || !mSymbol )
137
- return ;
138
-
139
- if ( dockMode () )
136
+ if ( !mTransformerWidget || !mLayer ) // TODO - make this work OK without a layer
140
137
return ;
141
138
142
139
mLegendPreview ->setIconSize ( QSize ( 512 , 512 ) );
@@ -145,7 +142,7 @@ void QgsPropertyAssistantWidget::updatePreview()
145
142
QList<double > breaks = QgsSymbolLayerUtils::prettyBreaks ( minValueSpinBox->value (),
146
143
maxValueSpinBox->value (), 4 );
147
144
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 (),
149
146
maxValueSpinBox->value () );
150
147
if ( nodes.isEmpty () )
151
148
{
@@ -321,29 +318,44 @@ QgsSizeScaleTransformer* QgsPropertySizeAssistantWidget::createTransformer( doub
321
318
return transformer;
322
319
}
323
320
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
325
322
{
326
323
QList< QgsSymbolLegendNode* > nodes;
327
324
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 )
329
341
return nodes;
330
342
331
343
std::unique_ptr< QgsSizeScaleTransformer > t ( createTransformer ( minValue, maxValue ) );
332
344
333
345
for ( int i = 0 ; i < breaks.length (); i++ )
334
346
{
335
347
std::unique_ptr< QgsSymbolLegendNode > node;
336
- if ( dynamic_cast <const QgsMarkerSymbol*>( symbol ) )
348
+ if ( dynamic_cast <const QgsMarkerSymbol*>( legendSymbol ) )
337
349
{
338
- std::unique_ptr< QgsMarkerSymbol > symbolClone ( static_cast <QgsMarkerSymbol*>( symbol ->clone () ) );
350
+ std::unique_ptr< QgsMarkerSymbol > symbolClone ( static_cast <QgsMarkerSymbol*>( legendSymbol ->clone () ) );
339
351
symbolClone->setDataDefinedSize ( QgsProperty () );
340
352
symbolClone->setDataDefinedAngle ( QgsProperty () ); // to avoid symbol not being drawn
341
353
symbolClone->setSize ( t->size ( breaks[i] ) );
342
354
node.reset ( new QgsSymbolLegendNode ( parent, QgsLegendSymbolItem ( symbolClone.get (), QString::number ( i ), QString () ) ) );
343
355
}
344
- else if ( dynamic_cast <const QgsLineSymbol*>( symbol ) )
356
+ else if ( dynamic_cast <const QgsLineSymbol*>( legendSymbol ) )
345
357
{
346
- std::unique_ptr< QgsLineSymbol > symbolClone ( static_cast <QgsLineSymbol*>( symbol ->clone () ) );
358
+ std::unique_ptr< QgsLineSymbol > symbolClone ( static_cast <QgsLineSymbol*>( legendSymbol ->clone () ) );
347
359
symbolClone->setDataDefinedWidth ( QgsProperty () );
348
360
symbolClone->setWidth ( t->size ( breaks[i] ) );
349
361
node.reset ( new QgsSymbolLegendNode ( parent, QgsLegendSymbolItem ( symbolClone.get (), QString::number ( i ), QString () ) ) );
@@ -354,7 +366,7 @@ QList< QgsSymbolLegendNode* > QgsPropertySizeAssistantWidget::generatePreviews(
354
366
return nodes;
355
367
}
356
368
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
358
370
{
359
371
return QList< QgsSymbolLegendNode* >();
360
372
}
0 commit comments