void QgsSymbolLayerV2::restoreDataDefinedProperties( const QgsStringMap &stringMap ) { QgsStringMap::const_iterator propIt = stringMap.constBegin(); for ( ; propIt != stringMap.constEnd(); ++propIt ) { if ( propIt.key().endsWith( "_dd_expression" ) ) { //found a data defined property //get data defined property name by stripping "_dd_expression" from property key QString propertyName = propIt.key().left( propIt.key().length() - 14 ); QgsDataDefined* dd = QgsDataDefined::fromMap( stringMap, propertyName ); if ( dd ) setDataDefinedProperty( propertyName, dd ); } else if ( propIt.key().endsWith( "_expression" ) ) { //old style data defined property, upgrade //get data defined property name by stripping "_expression" from property key QString propertyName = propIt.key().left( propIt.key().length() - 11 ); setDataDefinedProperty( propertyName, new QgsDataDefined( propIt.value() ) ); } } }
void QgsCompositionWidget::updateDataDefinedProperty() { QgsDataDefinedButton* ddButton = dynamic_cast<QgsDataDefinedButton*>( sender() ); if ( !ddButton || !mComposition ) { return; } QgsComposerObject::DataDefinedProperty property = ddPropertyForWidget( ddButton ); if ( property == QgsComposerObject::NoProperty ) { return; } setDataDefinedProperty( ddButton, property ); mComposition->refreshDataDefinedProperty( property ); }
void QgsComposerItemBaseWidget::updateDataDefinedProperty() { //match data defined button to item's data defined property QgsDataDefinedButton* ddButton = dynamic_cast<QgsDataDefinedButton*>( sender() ); if ( !ddButton ) { return; } QgsComposerObject::DataDefinedProperty property = ddPropertyForWidget( ddButton ); if ( property == QgsComposerObject::NoProperty ) { return; } //set the data defined property and refresh the item setDataDefinedProperty( ddButton, property ); mComposerObject->refreshDataDefinedProperty( property ); }
void QgsSymbolLayer::restoreOldDataDefinedProperties( const QgsStringMap &stringMap ) { QgsStringMap::const_iterator propIt = stringMap.constBegin(); for ( ; propIt != stringMap.constEnd(); ++propIt ) { QgsProperty prop; QString propertyName; if ( propIt.key().endsWith( QLatin1String( "_dd_expression" ) ) ) { //found a data defined property //get data defined property name by stripping "_dd_expression" from property key propertyName = propIt.key().left( propIt.key().length() - 14 ); prop = propertyFromMap( stringMap, propertyName ); } else if ( propIt.key().endsWith( QLatin1String( "_expression" ) ) ) { //old style data defined property, upgrade //get data defined property name by stripping "_expression" from property key propertyName = propIt.key().left( propIt.key().length() - 11 ); prop = QgsProperty::fromExpression( propIt.value() ); } if ( !prop || !OLD_PROPS.contains( propertyName ) ) continue; QgsSymbolLayer::Property key = static_cast< QgsSymbolLayer::Property >( OLD_PROPS.value( propertyName ) ); if ( type() == QgsSymbol::Line ) { //these keys had different meaning for line symbol layers if ( propertyName == QLatin1String( "width" ) ) key = QgsSymbolLayer::PropertyStrokeWidth; else if ( propertyName == QLatin1String( "color" ) ) key = QgsSymbolLayer::PropertyStrokeColor; } setDataDefinedProperty( key, prop ); } }
void QgsComposerPicture::init() { //default to no background setBackgroundEnabled( false ); //data defined strings mDataDefinedNames.insert( QgsComposerObject::PictureSource, QString( "dataDefinedSource" ) ); //insert PictureSource data defined property (only required due to deprecated API elements, //remove after 3.0 setDataDefinedProperty( QgsComposerObject::PictureSource, false, true, QString(), QString() ); //connect some signals //connect to atlas feature changing //to update the picture source expression connect( &mComposition->atlasComposition(), SIGNAL( featureChanged( QgsFeature* ) ), this, SLOT( refreshPicture() ) ); //connect to composer print resolution changing connect( mComposition, SIGNAL( printResolutionChanged() ), this, SLOT( recalculateSize() ) ); }
QgsPalLayerSettings QgsLabelingGui::layerSettings() { QgsPalLayerSettings lyr; lyr.fieldName = cboFieldName->currentText(); // Check if we are an expression. Also treats expressions with just a column name as non expressions, // this saves time later so we don't have to parse the expression tree. lyr.isExpression = mLayer->fieldNameIndex( lyr.fieldName ) == -1 && !lyr.fieldName.isEmpty(); lyr.dist = 0; lyr.placementFlags = 0; if (( stackedPlacement->currentWidget() == pagePoint && radAroundPoint->isChecked() ) || ( stackedPlacement->currentWidget() == pagePolygon && radAroundCentroid->isChecked() ) ) { lyr.placement = QgsPalLayerSettings::AroundPoint; lyr.dist = spinDistPoint->value(); lyr.distInMapUnits = ( mPointDistanceUnitComboBox->currentIndex() == 1 ); } else if (( stackedPlacement->currentWidget() == pagePoint && radOverPoint->isChecked() ) || ( stackedPlacement->currentWidget() == pagePolygon && radOverCentroid->isChecked() ) ) { lyr.placement = QgsPalLayerSettings::OverPoint; } else if (( stackedPlacement->currentWidget() == pageLine && radLineParallel->isChecked() ) || ( stackedPlacement->currentWidget() == pagePolygon && radPolygonPerimeter->isChecked() ) || ( stackedPlacement->currentWidget() == pageLine && radLineCurved->isChecked() ) ) { bool curved = ( stackedPlacement->currentWidget() == pageLine && radLineCurved->isChecked() ); lyr.placement = ( curved ? QgsPalLayerSettings::Curved : QgsPalLayerSettings::Line ); lyr.dist = spinDistLine->value(); lyr.distInMapUnits = ( mLineDistanceUnitComboBox->currentIndex() == 1 ); if ( chkLineAbove->isChecked() ) lyr.placementFlags |= QgsPalLayerSettings::AboveLine; if ( chkLineBelow->isChecked() ) lyr.placementFlags |= QgsPalLayerSettings::BelowLine; if ( chkLineOn->isChecked() ) lyr.placementFlags |= QgsPalLayerSettings::OnLine; if ( ! chkLineOrientationDependent->isChecked() ) lyr.placementFlags |= QgsPalLayerSettings::MapOrientation; } else if (( stackedPlacement->currentWidget() == pageLine && radLineHorizontal->isChecked() ) || ( stackedPlacement->currentWidget() == pagePolygon && radPolygonHorizontal->isChecked() ) ) { lyr.placement = QgsPalLayerSettings::Horizontal; } else if ( radPolygonFree->isChecked() ) { lyr.placement = QgsPalLayerSettings::Free; } else Q_ASSERT( 0 && "NOOO!" ); lyr.textColor = btnTextColor->color(); lyr.textFont = mRefFont; lyr.textTransp = mFontTranspSpinBox->value(); lyr.enabled = chkEnableLabeling->isChecked(); lyr.priority = sliderPriority->value(); lyr.obstacle = !chkNoObstacle->isChecked(); lyr.labelPerPart = chkLabelPerFeaturePart->isChecked(); lyr.mergeLines = chkMergeLines->isChecked(); if ( chkScaleBasedVisibility->isChecked() ) { lyr.scaleMin = spinScaleMin->value(); lyr.scaleMax = spinScaleMax->value(); } else { lyr.scaleMin = lyr.scaleMax = 0; } if ( chkBuffer->isChecked() ) { lyr.bufferSize = spinBufferSize->value(); lyr.bufferColor = btnBufferColor->color(); lyr.bufferTransp = mBufferTranspSpinBox->value(); } else { lyr.bufferSize = 0; } if ( chkFormattedNumbers->isChecked() ) { lyr.formatNumbers = true; lyr.decimals = spinDecimals->value(); lyr.plusSign = chkPlusSign->isChecked(); } else { lyr.formatNumbers = false; lyr.decimals = spinDecimals->value(); lyr.plusSign = true; } if ( chkAddDirectionSymbol->isChecked() ) { lyr.addDirectionSymbol = true; } else { lyr.addDirectionSymbol = false; } lyr.minFeatureSize = mMinSizeSpinBox->value(); lyr.fontSizeInMapUnits = ( mFontSizeUnitComboBox->currentIndex() == 1 ); lyr.wrapChar = wrapCharacterEdit->text(); if ( chkPreserveRotation->isChecked() ) { lyr.preserveRotation = true; } else { lyr.preserveRotation = false; } //data defined labeling setDataDefinedProperty( mSizeAttributeComboBox, QgsPalLayerSettings::Size, lyr ); setDataDefinedProperty( mColorAttributeComboBox, QgsPalLayerSettings::Color, lyr ); setDataDefinedProperty( mBoldAttributeComboBox, QgsPalLayerSettings::Bold, lyr ); setDataDefinedProperty( mItalicAttributeComboBox, QgsPalLayerSettings::Italic, lyr ); setDataDefinedProperty( mUnderlineAttributeComboBox, QgsPalLayerSettings::Underline, lyr ); setDataDefinedProperty( mStrikeoutAttributeComboBox, QgsPalLayerSettings::Strikeout, lyr ); setDataDefinedProperty( mFontFamilyAttributeComboBox, QgsPalLayerSettings::Family, lyr ); setDataDefinedProperty( mBufferSizeAttributeComboBox, QgsPalLayerSettings:: BufferSize, lyr ); setDataDefinedProperty( mBufferColorAttributeComboBox, QgsPalLayerSettings::BufferColor, lyr ); setDataDefinedProperty( mXCoordinateComboBox, QgsPalLayerSettings::PositionX, lyr ); setDataDefinedProperty( mYCoordinateComboBox, QgsPalLayerSettings::PositionY, lyr ); setDataDefinedProperty( mHorizontalAlignmentComboBox, QgsPalLayerSettings::Hali, lyr ); setDataDefinedProperty( mVerticalAlignmentComboBox, QgsPalLayerSettings::Vali, lyr ); setDataDefinedProperty( mLabelDistanceComboBox, QgsPalLayerSettings::LabelDistance, lyr ); setDataDefinedProperty( mRotationComboBox, QgsPalLayerSettings::Rotation, lyr ); setDataDefinedProperty( mShowLabelAttributeComboBox, QgsPalLayerSettings::Show, lyr ); setDataDefinedProperty( mMinScaleAttributeComboBox, QgsPalLayerSettings::MinScale, lyr ); setDataDefinedProperty( mMaxScaleAttributeComboBox, QgsPalLayerSettings::MaxScale, lyr ); setDataDefinedProperty( mTranspAttributeComboBox, QgsPalLayerSettings::FontTransp, lyr ); setDataDefinedProperty( mBufferTranspAttributeComboBox, QgsPalLayerSettings::BufferTransp, lyr ); return lyr; }
QgsPalLayerSettings QgsLabelingGui::layerSettings() { QgsPalLayerSettings lyr; lyr.fieldName = cboFieldName->currentText(); lyr.dist = 0; lyr.placementFlags = 0; if (( stackedPlacement->currentWidget() == pagePoint && radAroundPoint->isChecked() ) || ( stackedPlacement->currentWidget() == pagePolygon && radAroundCentroid->isChecked() ) ) { lyr.placement = QgsPalLayerSettings::AroundPoint; lyr.dist = spinDistPoint->value(); lyr.distInMapUnits = ( mPointDistanceUnitComboBox->currentIndex() == 1 ); } else if (( stackedPlacement->currentWidget() == pagePoint && radOverPoint->isChecked() ) || ( stackedPlacement->currentWidget() == pagePolygon && radOverCentroid->isChecked() ) ) { lyr.placement = QgsPalLayerSettings::OverPoint; } else if (( stackedPlacement->currentWidget() == pageLine && radLineParallel->isChecked() ) || ( stackedPlacement->currentWidget() == pagePolygon && radPolygonPerimeter->isChecked() ) || ( stackedPlacement->currentWidget() == pageLine && radLineCurved->isChecked() ) ) { bool curved = ( stackedPlacement->currentWidget() == pageLine && radLineCurved->isChecked() ); lyr.placement = ( curved ? QgsPalLayerSettings::Curved : QgsPalLayerSettings::Line ); lyr.dist = spinDistLine->value(); lyr.distInMapUnits = ( mLineDistanceUnitComboBox->currentIndex() == 1 ); if ( chkLineAbove->isChecked() ) lyr.placementFlags |= QgsPalLayerSettings::AboveLine; if ( chkLineBelow->isChecked() ) lyr.placementFlags |= QgsPalLayerSettings::BelowLine; if ( chkLineOn->isChecked() ) lyr.placementFlags |= QgsPalLayerSettings::OnLine; if ( radOrientationMap->isChecked() ) lyr.placementFlags |= QgsPalLayerSettings::MapOrientation; } else if (( stackedPlacement->currentWidget() == pageLine && radLineHorizontal->isChecked() ) || ( stackedPlacement->currentWidget() == pagePolygon && radPolygonHorizontal->isChecked() ) ) { lyr.placement = QgsPalLayerSettings::Horizontal; } else if ( radPolygonFree->isChecked() ) { lyr.placement = QgsPalLayerSettings::Free; } else Q_ASSERT( 0 && "NOOO!" ); lyr.textColor = btnTextColor->color(); lyr.textFont = lblFontPreview->font(); lyr.enabled = chkEnableLabeling->isChecked(); lyr.priority = sliderPriority->value(); lyr.obstacle = !chkNoObstacle->isChecked(); lyr.labelPerPart = chkLabelPerFeaturePart->isChecked(); lyr.mergeLines = chkMergeLines->isChecked(); lyr.multiLineLabels = chkMultiLine->isChecked(); if ( chkScaleBasedVisibility->isChecked() ) { lyr.scaleMin = spinScaleMin->value(); lyr.scaleMax = spinScaleMax->value(); } else { lyr.scaleMin = lyr.scaleMax = 0; } if ( chkBuffer->isChecked() ) { lyr.bufferSize = spinBufferSize->value(); lyr.bufferColor = btnBufferColor->color(); } else { lyr.bufferSize = 0; } if ( chkFormattedNumbers->isChecked() ) { lyr.formatNumbers = true; lyr.decimals = spinDecimals->value(); lyr.plusSign = chkPlusSign->isChecked(); } else { lyr.formatNumbers = false; lyr.decimals = spinDecimals->value(); lyr.plusSign = true; } if ( chkAddDirectionSymbol->isChecked() ) { lyr.addDirectionSymbol = true; } else { lyr.addDirectionSymbol = false; } lyr.minFeatureSize = mMinSizeSpinBox->value(); lyr.fontSizeInMapUnits = ( mFontSizeUnitComboBox->currentIndex() == 1 ); //data defined labeling setDataDefinedProperty( mSizeAttributeComboBox, QgsPalLayerSettings::Size, lyr ); setDataDefinedProperty( mColorAttributeComboBox, QgsPalLayerSettings::Color, lyr ); setDataDefinedProperty( mBoldAttributeComboBox, QgsPalLayerSettings::Bold, lyr ); setDataDefinedProperty( mItalicAttributeComboBox, QgsPalLayerSettings::Italic, lyr ); setDataDefinedProperty( mUnderlineAttributeComboBox, QgsPalLayerSettings::Underline, lyr ); setDataDefinedProperty( mStrikeoutAttributeComboBox, QgsPalLayerSettings::Strikeout, lyr ); setDataDefinedProperty( mFontFamilyAttributeComboBox, QgsPalLayerSettings::Family, lyr ); setDataDefinedProperty( mBufferSizeAttributeComboBox, QgsPalLayerSettings:: BufferSize, lyr ); setDataDefinedProperty( mBufferColorAttributeComboBox, QgsPalLayerSettings::BufferColor, lyr ); setDataDefinedProperty( mXCoordinateComboBox, QgsPalLayerSettings::PositionX, lyr ); setDataDefinedProperty( mYCoordinateComboBox, QgsPalLayerSettings::PositionY, lyr ); setDataDefinedProperty( mHorizontalAlignmentComboBox, QgsPalLayerSettings::Hali, lyr ); setDataDefinedProperty( mVerticalAlignmentComboBox, QgsPalLayerSettings::Vali, lyr ); setDataDefinedProperty( mLabelDistanceComboBox, QgsPalLayerSettings::LabelDistance, lyr ); setDataDefinedProperty( mRotationComboBox, QgsPalLayerSettings::Rotation, lyr ); return lyr; }
void QgsSymbolLayerV2::setDataDefinedProperty( const QString& property, const QString& expressionString ) { setDataDefinedProperty( property, new QgsDataDefined( expressionString ) ); }