@@ -71,7 +71,16 @@ QgsPropertyAssistantWidget::QgsPropertyAssistantWidget( QWidget* parent ,
71
71
case QgsPropertyDefinition::StrokeWidth:
72
72
{
73
73
mTransformerWidget = new QgsPropertySizeAssistantWidget ( this , mDefinition , initialState );
74
+ break ;
75
+ }
76
+
77
+ case QgsPropertyDefinition::ColorNoAlpha:
78
+ case QgsPropertyDefinition::ColorWithAlpha:
79
+ {
80
+ mTransformerWidget = new QgsPropertyColorAssistantWidget ( this , mDefinition , initialState );
81
+ break ;
74
82
}
83
+
75
84
default :
76
85
break ;
77
86
}
@@ -370,3 +379,63 @@ QList<QgsSymbolLegendNode*> QgsPropertyAbstractTransformerWidget::generatePrevie
370
379
{
371
380
return QList< QgsSymbolLegendNode* >();
372
381
}
382
+
383
+ QgsPropertyColorAssistantWidget::QgsPropertyColorAssistantWidget ( QWidget* parent, const QgsPropertyDefinition& definition, const QgsProperty& initialState )
384
+ : QgsPropertyAbstractTransformerWidget( parent, definition )
385
+ {
386
+ setupUi ( this );
387
+
388
+ layout ()->setContentsMargins ( 0 , 0 , 0 , 0 );
389
+ layout ()->setMargin ( 0 );
390
+
391
+ bool supportsAlpha = definition.standardTemplate () == QgsPropertyDefinition::ColorWithAlpha;
392
+ mNullColorButton ->setAllowAlpha ( supportsAlpha );
393
+
394
+ if ( const QgsColorRampTransformer* colorTransform = dynamic_cast < const QgsColorRampTransformer* >( initialState.transformer () ) )
395
+ {
396
+ mNullColorButton ->setColor ( colorTransform->nullColor () );
397
+ mColorRampButton ->setColorRamp ( colorTransform->colorRamp () );
398
+ }
399
+
400
+ connect ( mNullColorButton , &QgsColorButton::colorChanged, this , &QgsPropertyColorAssistantWidget::widgetChanged );
401
+ connect ( mColorRampButton , &QgsColorRampButton::colorRampChanged, this , &QgsPropertyColorAssistantWidget::widgetChanged );
402
+ }
403
+
404
+ QgsColorRampTransformer* QgsPropertyColorAssistantWidget::createTransformer ( double minValue, double maxValue ) const
405
+ {
406
+ QgsColorRampTransformer* transformer = new QgsColorRampTransformer (
407
+ minValue,
408
+ maxValue,
409
+ mColorRampButton ->colorRamp (),
410
+ mNullColorButton ->color () );
411
+ return transformer;
412
+ }
413
+
414
+ QList<QgsSymbolLegendNode*> QgsPropertyColorAssistantWidget::generatePreviews ( const QList<double >& breaks, QgsLayerTreeLayer* parent, const QgsSymbol* symbol, double minValue, double maxValue ) const
415
+ {
416
+ QList< QgsSymbolLegendNode* > nodes;
417
+
418
+ const QgsMarkerSymbol* legendSymbol = dynamic_cast <const QgsMarkerSymbol*>( symbol );
419
+ std::unique_ptr< QgsMarkerSymbol > tempSymbol;
420
+
421
+ if ( !legendSymbol )
422
+ {
423
+ tempSymbol.reset ( QgsMarkerSymbol::createSimple ( QgsStringMap () ) );
424
+ legendSymbol = tempSymbol.get ();
425
+ }
426
+ if ( !legendSymbol )
427
+ return nodes;
428
+
429
+ std::unique_ptr< QgsColorRampTransformer > t ( createTransformer ( minValue, maxValue ) );
430
+
431
+ for ( int i = 0 ; i < breaks.length (); i++ )
432
+ {
433
+ std::unique_ptr< QgsSymbolLegendNode > node;
434
+ std::unique_ptr< QgsMarkerSymbol > symbolClone ( static_cast <QgsMarkerSymbol*>( legendSymbol->clone () ) );
435
+ symbolClone->setColor ( t->color ( breaks[i] ) );
436
+ node.reset ( new QgsSymbolLegendNode ( parent, QgsLegendSymbolItem ( symbolClone.get (), QString::number ( i ), QString () ) ) );
437
+ if ( node )
438
+ nodes << node.release ();
439
+ }
440
+ return nodes;
441
+ }
0 commit comments