void QgsSymbolsListWidget::createAuxiliaryField() { // try to create an auxiliary layer if not yet created if ( !mLayer->auxiliaryLayer() ) { QgsNewAuxiliaryLayerDialog dlg( mLayer, this ); dlg.exec(); } // return if still not exists if ( !mLayer->auxiliaryLayer() ) return; QgsPropertyOverrideButton *button = qobject_cast<QgsPropertyOverrideButton *>( sender() ); QgsSymbolLayer::Property key = static_cast< QgsSymbolLayer::Property >( button->propertyKey() ); const QgsPropertyDefinition def = QgsSymbolLayer::propertyDefinitions()[key]; // create property in auxiliary storage if necessary if ( !mLayer->auxiliaryLayer()->exists( def ) ) mLayer->auxiliaryLayer()->addAuxiliaryField( def ); // update property with join field name from auxiliary storage QgsProperty property = button->toProperty(); property.setField( QgsAuxiliaryLayer::nameFromProperty( def, true ) ); property.setActive( true ); button->updateFieldLists(); button->setToProperty( property ); QgsMarkerSymbol *markerSymbol = static_cast<QgsMarkerSymbol *>( mSymbol ); QgsLineSymbol *lineSymbol = static_cast<QgsLineSymbol *>( mSymbol ); switch ( key ) { case QgsSymbolLayer::PropertyAngle: if ( markerSymbol ) markerSymbol->setDataDefinedAngle( button->toProperty() ); break; case QgsSymbolLayer::PropertySize: if ( markerSymbol ) { markerSymbol->setDataDefinedSize( button->toProperty() ); markerSymbol->setScaleMethod( QgsSymbol::ScaleDiameter ); } break; case QgsSymbolLayer::PropertyStrokeWidth: if ( lineSymbol ) lineSymbol->setDataDefinedWidth( button->toProperty() ); break; default: break; } emit changed(); }
void QgsFeatureRenderer::convertSymbolRotation( QgsSymbol * symbol, const QString & field ) { if ( symbol->type() == QgsSymbol::Marker ) { QgsMarkerSymbol * s = static_cast<QgsMarkerSymbol *>( symbol ); const QgsDataDefined dd(( s->angle() ? QString::number( s->angle() ) + " + " : QString() ) + field ); s->setDataDefinedAngle( dd ); } }
void QgsSymbolsListWidget::updateDataDefinedMarkerAngle() { QgsMarkerSymbol *markerSymbol = static_cast<QgsMarkerSymbol *>( mSymbol ); QgsProperty dd( mRotationDDBtn->toProperty() ); spinAngle->setEnabled( !mRotationDDBtn->isActive() ); QgsProperty symbolDD( markerSymbol->dataDefinedAngle() ); if ( // shall we remove datadefined expressions for layers ? ( !symbolDD && !dd ) // shall we set the "en masse" expression for properties ? || dd ) { markerSymbol->setDataDefinedAngle( dd ); emit changed(); } }
void QgsMapToolRotatePointSymbols::createPixmapItem( QgsMarkerSymbol *markerSymbol ) { if ( !mCanvas ) { return; } //get the image that is used for that symbol, but without point rotation QImage pointImage; if ( markerSymbol ) { QgsSymbol *clone = markerSymbol->clone(); QgsMarkerSymbol *markerClone = static_cast<QgsMarkerSymbol *>( clone ); markerClone->setDataDefinedAngle( QgsProperty() ); pointImage = markerClone->bigSymbolPreviewImage(); delete clone; } mRotationItem = new QgsPointRotationItem( mCanvas ); mRotationItem->setSymbol( pointImage ); }