void QgsSymbolsListWidget::updateDataDefinedLineWidth() { QgsLineSymbol *lineSymbol = static_cast<QgsLineSymbol *>( mSymbol ); QgsProperty dd( mWidthDDBtn->toProperty() ); spinWidth->setEnabled( !mWidthDDBtn->isActive() ); QgsProperty symbolDD( lineSymbol->dataDefinedWidth() ); if ( // shall we remove datadefined expressions for layers ? ( !symbolDD && !dd ) // shall we set the "en masse" expression for properties ? || dd ) { lineSymbol->setDataDefinedWidth( dd ); emit changed(); } }
void QgsSymbolsListWidget::updateSymbolInfo() { updateSymbolColor(); const auto overrideButtons {findChildren< QgsPropertyOverrideButton * >()}; for ( QgsPropertyOverrideButton *button : overrideButtons ) { button->registerExpressionContextGenerator( this ); } if ( mSymbol->type() == QgsSymbol::Marker ) { QgsMarkerSymbol *markerSymbol = static_cast<QgsMarkerSymbol *>( mSymbol ); spinSize->setValue( markerSymbol->size() ); spinAngle->setValue( markerSymbol->angle() ); if ( mLayer ) { QgsProperty ddSize( markerSymbol->dataDefinedSize() ); mSizeDDBtn->init( QgsSymbolLayer::PropertySize, ddSize, QgsSymbolLayer::propertyDefinitions(), mLayer, true ); spinSize->setEnabled( !mSizeDDBtn->isActive() ); QgsProperty ddAngle( markerSymbol->dataDefinedAngle() ); mRotationDDBtn->init( QgsSymbolLayer::PropertyAngle, ddAngle, QgsSymbolLayer::propertyDefinitions(), mLayer, true ); spinAngle->setEnabled( !mRotationDDBtn->isActive() ); } else { mSizeDDBtn->setEnabled( false ); mRotationDDBtn->setEnabled( false ); } } else if ( mSymbol->type() == QgsSymbol::Line ) { QgsLineSymbol *lineSymbol = static_cast<QgsLineSymbol *>( mSymbol ); spinWidth->setValue( lineSymbol->width() ); if ( mLayer ) { QgsProperty dd( lineSymbol->dataDefinedWidth() ); mWidthDDBtn->init( QgsSymbolLayer::PropertyStrokeWidth, dd, QgsSymbolLayer::propertyDefinitions(), mLayer, true ); spinWidth->setEnabled( !mWidthDDBtn->isActive() ); } else { mWidthDDBtn->setEnabled( false ); } } mSymbolUnitWidget->blockSignals( true ); mSymbolUnitWidget->setUnit( mSymbol->outputUnit() ); mSymbolUnitWidget->setMapUnitScale( mSymbol->mapUnitScale() ); mSymbolUnitWidget->blockSignals( false ); mOpacityWidget->setOpacity( mSymbol->opacity() ); // Clean up previous advanced symbol actions const QList<QAction *> actionList( btnAdvanced->menu()->actions() ); for ( const auto &action : actionList ) { if ( mClipFeaturesAction->text() == action->text() ) { btnAdvanced->menu()->removeAction( action ); } else if ( mStandardizeRingsAction->text() == action->text() ) { btnAdvanced->menu()->removeAction( action ); } } if ( mSymbol->type() == QgsSymbol::Line || mSymbol->type() == QgsSymbol::Fill ) { //add clip features option for line or fill symbols btnAdvanced->menu()->addAction( mClipFeaturesAction ); } if ( mSymbol->type() == QgsSymbol::Fill ) { btnAdvanced->menu()->addAction( mStandardizeRingsAction ); } btnAdvanced->setVisible( mAdvancedMenu || !btnAdvanced->menu()->isEmpty() ); whileBlocking( mClipFeaturesAction )->setChecked( mSymbol->clipFeaturesToExtent() ); whileBlocking( mStandardizeRingsAction )->setChecked( mSymbol->forceRHR() ); }