28 #include <QPainterPath>
30 #include <QProgressDialog>
87 #ifdef TESTPROVIDERLIB
96 const QString& styleDescription,
124 bool loadDefaultStyleFlag )
125 :
QgsMapLayer( VectorLayer, baseName, vectorLayerPath )
126 , mDataProvider( NULL )
127 , mProviderKey( providerKey )
129 , mWkbType(
QGis::WKBUnknown )
130 , mRendererV2( NULL )
133 , mLabelFontNotFoundNotified( false )
134 , mFeatureBlendMode(
QPainter::CompositionMode_SourceOver )
135 , mLayerTransparency( 0 )
136 , mVertexMarkerOnlyForSelection( false )
137 , mEditorLayout( GeneratedLayout )
138 , mFeatureFormSuppress( SuppressDefault )
142 , mExpressionFieldBuffer( 0 )
143 , mDiagramRenderer( 0 )
144 , mDiagramLayerSettings( 0 )
145 , mValidExtent( false )
146 , mLazyExtent( true )
147 , mSymbolFeatureCounted( false )
148 , mEditCommandActive( false )
153 if ( ! mProviderKey.
isEmpty() )
155 setDataSource( vectorLayerPath, baseName, providerKey, loadDefaultStyleFlag );
164 mSimplifyMethod.
setSimplifyHints(( QgsVectorSimplifyMethod::SimplifyHints ) settings.
value(
"/qgis/simplifyDrawingHints", (
int ) mSimplifyMethod.
simplifyHints() ).toInt() );
180 delete mDataProvider;
183 delete mExpressionFieldBuffer;
186 delete mDiagramLayerSettings;
245 mDisplayField = fldName;
250 int fieldsSize = fields.
size();
252 for (
int idx = 0; idx < fields.
count(); ++idx )
254 QString fldName = fields[idx].name();
261 if ( fldName.
indexOf(
"name", 0, Qt::CaseInsensitive ) > -1 )
268 if ( fldName.
indexOf(
"descrip", 0, Qt::CaseInsensitive ) > -1 )
275 if ( fldName.
indexOf(
"id", 0, Qt::CaseInsensitive ) > -1 )
285 if ( fieldsSize == 0 )
288 if ( idxName.
length() > 0 )
290 mDisplayField = idxName;
296 mDisplayField = idxId;
300 mDisplayField = fields[0].name();
317 if ( mRendererV2 && mLabelOn && mLabel &&
326 attributes.
append( attrNum );
334 QgsDebugMsg(
"Selecting features based on view extent" );
343 .setFilterRect( rendererContext.
extent() )
344 .setSubsetOfAttributes( attributes ) );
351 bool sel = mSelectedFeatureIds.
contains( fet.id() );
352 mLabel->
renderLabel( rendererContext, fet, sel, 0 );
397 p.
drawEllipse( x - m, y - m, m * 2 + 1, m * 2 + 1 );
402 p.
drawLine( x - m, y + m, x + m, y - m );
403 p.
drawLine( x - m, y - m, x + m, y + m );
409 mSelectedFeatureIds.
insert( fid );
416 mSelectedFeatureIds.
unite( featureIds );
423 mSelectedFeatureIds.
remove( fid );
430 mSelectedFeatureIds.
subtract( featureIds );
442 .setFilterRect( rect )
454 if ( !addToSelection )
467 if ( intersectingIds.
count() > 0 )
469 QgsDebugMsg(
"Trying to select and deselect the same item at the same time. Unsure what to do. Selecting dubious items." );
472 mSelectedFeatureIds -= deselectIds;
473 mSelectedFeatureIds += selectIds;
481 ids.
subtract( mSelectedFeatureIds );
513 .setFilterRect( rect )
523 if ( mSelectedFeatureIds.
contains( fet.
id() ) )
525 deselectIds << fet.
id();
529 selectIds << fet.
id();
538 if ( mSelectedFeatureIds.
size() == 0 )
546 return mDataProvider;
551 return mDataProvider;
556 if ( mDataProvider && mDataProvider->
encoding() != encoding )
565 delete mDiagramRenderer;
566 mDiagramRenderer = r;
587 QgsDebugMsg(
"WARNING: This code should never be reached. Problems may occur..." );
605 if ( mSelectedFeatureIds.
size() == 0 )
636 if ( mSelectedFeatureIds.
contains( fet.
id() ) )
647 if ( retval.
width() == 0.0 || retval.
height() == 0.0 )
656 retval.
set( -1.0, -1.0, 1.0, 1.0 );
670 if ( !mDiagramRenderer || !mDiagramLayerSettings )
674 if ( settingList.
size() > 0 )
676 return settingList.
at( 0 ).enabled;
683 if ( !mDataProvider )
694 if ( !mSymbolFeatureCounted )
return -1;
695 return mSymbolFeatureCountMap.
value( symbol );
700 if ( mSymbolFeatureCounted )
return true;
701 mSymbolFeatureCountMap.
clear();
703 if ( !mDataProvider )
717 for ( ; symbolIt != symbolList.
constEnd(); ++symbolIt )
719 mSymbolFeatureCountMap.
insert( symbolIt->second, 0 );
723 QProgressDialog progressDialog(
tr(
"Updating feature count for layer %1" ).arg(
name() ),
tr(
"Abort" ), 0, nFeatures );
726 int featuresCounted = 0;
741 mSymbolFeatureCountMap[*symbolIt] += 1;
747 if ( featuresCounted % 50 == 0 )
749 if ( featuresCounted > nFeatures )
753 progressDialog.
setValue( featuresCounted );
756 mSymbolFeatureCountMap.
clear();
764 progressDialog.
setValue( nFeatures );
765 mSymbolFeatureCounted =
true;
771 mValidExtent =
false;
788 if ( !mValidExtent && mLazyExtent && mDataProvider )
806 if ( !mDataProvider )
825 if ( it->constGeometry() )
864 if ( ! mDataProvider )
874 if ( ! mDataProvider )
896 double maximumSimplificationScale = mSimplifyMethod.
maximumScale();
899 if ( maximumSimplificationScale > 1 && renderContext.
rendererScale() <= maximumSimplificationScale )
909 if ( !mDataProvider )
918 Q_UNUSED( alsoUpdateExtent );
919 if ( !mEditBuffer || !mDataProvider )
958 for (
int attr = 0; attr < fa.
count(); ++attr )
960 if ( fa[attr] != ca[attr] )
964 QgsDebugMsg(
QString(
"attribute %1 of feature %2 could not be changed." ).arg( attr ).arg( f.
id() ) );
976 if ( !mEditBuffer || !mDataProvider )
980 return utils.
insertVertex( x, y, atFeatureId, beforeVertex );
986 if ( !mEditBuffer || !mDataProvider )
990 return utils.
moveVertex( x, y, atFeatureId, atVertex );
996 if ( !mEditBuffer || !mDataProvider )
1017 int count = mSelectedFeatureIds.
size();
1030 *deletedCount = deleted;
1033 return deleted == count;
1038 if ( !mEditBuffer || !mDataProvider )
1047 if ( !mEditBuffer || !mDataProvider )
1052 if ( mSelectedFeatureIds.
size() < 1 )
1057 else if ( mSelectedFeatureIds.
size() > 1 )
1070 if ( !mEditBuffer || !mDataProvider )
1079 if ( !mEditBuffer || !mDataProvider )
1083 return utils.
splitParts( splitLine, topologicalEditing );
1088 if ( !mEditBuffer || !mDataProvider )
1092 return utils.
splitFeatures( splitLine, topologicalEditing );
1100 int returnValue = 0;
1113 .setFilterRect( geomBBox )
1141 if ( !mEditBuffer || !mDataProvider )
1150 if ( !mEditBuffer || !mDataProvider )
1179 if ( !mDataProvider )
1249 if ( pkeyNode.isNull() )
1256 mProviderKey = pkeyElt.
text();
1260 if ( ! mProviderKey.
isNull() )
1267 mProviderKey =
"postgres";
1271 mProviderKey =
"ogr";
1274 if ( ! setDataProvider( mProviderKey ) )
1280 if ( !pkeyElem.
isNull() )
1283 if ( !encodingString.
isEmpty() )
1293 connect( mJoinBuffer, SIGNAL( joinedFieldsChanged() ),
this, SLOT( onJoinedFieldsChanged() ) );
1295 mJoinBuffer->
readXml( layer_node );
1297 if ( !mExpressionFieldBuffer )
1299 mExpressionFieldBuffer->
readXml( layer_node );
1306 if ( prevExpNode.
isNull() )
1308 mDisplayExpression =
"";
1313 mDisplayExpression = prevExpElem.
text();
1338 setDataProvider( provider );
1350 bool defaultLoadedFlag =
false;
1351 if ( loadDefaultStyleFlag )
1372 bool QgsVectorLayer::setDataProvider(
QString const & provider )
1374 mProviderKey = provider;
1379 delete mDataProvider;
1383 if ( mDataProvider )
1385 QgsDebugMsg(
"Instantiated the data provider plugin" );
1397 connect( mJoinBuffer, SIGNAL( joinedFieldsChanged() ),
this, SLOT( onJoinedFieldsChanged() ) );
1405 if ( mProviderKey ==
"postgres" )
1410 QRegExp reg(
"\"[^\"]+\"\\.\"([^\"]+)\"( \\([^)]+\\))?" );
1411 if ( reg.indexIn(
name() ) >= 0 )
1419 for ( it = layers.
constBegin(); it != layers.
constEnd() && ( *it )->name() != lName; ++it )
1424 lName +=
"." + stuff[2].
mid( 2, stuff[2].length() - 3 );
1436 else if ( mProviderKey ==
"osm" )
1441 else if ( provider ==
"ogr" )
1482 if ( mapLayerNode.
isNull() || (
"maplayer" != mapLayerNode.
nodeName() ) )
1494 if ( mDataProvider )
1510 mJoinBuffer->
writeXml( layer_node, document );
1513 mExpressionFieldBuffer->
writeXml( layer_node, document );
1530 if ( !rendererElement.
isNull() )
1549 if ( !displayFieldNode.
isNull() )
1557 if ( !blendModeNode.
isNull() )
1565 if ( !featureBlendModeNode.
isNull() )
1573 if ( !layerTransparencyNode.
isNull() )
1602 if ( hasLabelsEnabled < 1 )
1614 if ( !labelattributesnode.isNull() && mLabel )
1617 mLabel->
readXML( labelattributesnode );
1621 delete mDiagramRenderer; mDiagramRenderer = 0;
1623 if ( !singleCatDiagramElem.
isNull() )
1626 mDiagramRenderer->
readXML( singleCatDiagramElem,
this );
1629 if ( !linearDiagramElem.
isNull() )
1632 mDiagramRenderer->
readXML( linearDiagramElem,
this );
1635 if ( mDiagramRenderer )
1638 if ( !diagramSettingsElem.
isNull() )
1641 mDiagramLayerSettings->
readXML( diagramSettingsElem,
this );
1651 if ( !editFormNode.
isNull() )
1658 if ( !editFormInitNode.
isNull() )
1664 if ( fFSuppNode.
isNull() )
1675 if ( !annotationFormNode.
isNull() )
1681 mAttributeAliasMap.
clear();
1683 if ( !aliasesNode.
isNull() )
1688 for (
int i = 0; i < aliasNodeList.
size(); ++i )
1711 if ( editorLayoutNode.
isNull() )
1717 if ( editorLayoutNode.
toElement().
text() ==
"uifilelayout" )
1721 else if ( editorLayoutNode.
toElement().
text() ==
"tablayout" )
1732 mExcludeAttributesWMS.
clear();
1734 if ( !excludeWMSNode.
isNull() )
1737 for (
int i = 0; i < attributeNodeList.
size(); ++i )
1743 mExcludeAttributesWFS.
clear();
1745 if ( !excludeWFSNode.
isNull() )
1748 for (
int i = 0; i < attributeNodeList.
size(); ++i )
1755 mAttributeEditorElements.
clear();
1759 for (
int i = 0; i < attributeEditorFormNodeList.
size(); i++ )
1764 mAttributeEditorElements.
append( attributeEditorWidget );
1774 if ( elem.
tagName() ==
"attributeEditorContainer" )
1780 for (
int i = 0; i < childNodeList.size(); i++ )
1788 newElement = container;
1790 else if ( elem.
tagName() ==
"attributeEditorField" )
1796 else if ( elem.
tagName() ==
"attributeEditorRelation" )
1843 featureBlendModeElem.
appendChild( featureBlendModeText );
1849 layerTransparencyElem.
appendChild( layerTransparencyText );
1881 if ( fieldname !=
"" )
1892 if ( mDiagramRenderer )
1894 mDiagramRenderer->
writeXML( mapLayerNode, doc,
this );
1895 if ( mDiagramLayerSettings )
1896 mDiagramLayerSettings->
writeXML( mapLayerNode, doc,
this );
1913 if ( !mEditFormInit.
isEmpty() )
1929 switch ( mEditorLayout )
1948 if ( mAttributeAliasMap.
size() > 0 )
1952 for ( ; a_it != mAttributeAliasMap.
constEnd(); ++a_it )
1970 for ( ; attWMSIt != mExcludeAttributesWMS.
constEnd(); ++attWMSIt )
1982 for ( ; attWFSIt != mExcludeAttributesWFS.
constEnd(); ++attWFSIt )
1992 if ( mAttributeEditorElements.
size() > 0 )
1998 QDomElement attributeEditorWidgetElem = ( *it )->toDomElement( doc );
1999 tabsElem.
appendChild( attributeEditorWidgetElem );
2017 errorMessage =
"Warning: Name element not found within NamedLayer while it's required.";
2029 readSldLabeling( node );
2037 Q_UNUSED( errorMessage );
2054 if ( !mEditBuffer || !mDataProvider )
2067 Q_UNUSED( emitSignal );
2073 if ( !mEditBuffer || !mDataProvider )
2081 if ( !mEditBuffer || !mDataProvider )
2093 if ( mAttributeAliasMap.
contains( name ) )
2095 mAttributeAliasMap.
remove( name );
2107 mAttributeAliasMap.
insert( name, aliasString );
2113 mAttributeEditorElements.
append( data );
2118 if ( fieldIdx < 0 || fieldIdx >= mUpdatedFields.
count() )
2121 return mEditorWidgetV2Types.
value( mUpdatedFields[fieldIdx].
name(),
"TextEdit" );
2126 return mEditorWidgetV2Types.
value( fieldName,
"TextEdit" );
2131 if ( fieldIdx < 0 || fieldIdx >= mUpdatedFields.
count() )
2134 return mEditorWidgetV2Configs.value( mUpdatedFields[fieldIdx].
name() );
2139 return mEditorWidgetV2Configs.value( fieldName );
2144 if ( attributeIndex < 0 || attributeIndex >=
pendingFields().count() )
2149 return mAttributeAliasMap.
value( name,
"" );
2158 if ( attributeIndex >= 0 && attributeIndex < fields.
count() )
2160 displayName = fields[attributeIndex].name();
2177 if ( !mEditBuffer || !mDataProvider )
2185 bool deleted =
false;
2188 attrs = attrs.
toSet().toList();
2190 qSort( attrs.
begin(), attrs.
end(), qGreater<int>() );
2192 Q_FOREACH (
int attr, attrs )
2210 mSelectedFeatureIds.
remove( fid );
2219 return mUpdatedFields;
2232 for (
int i = 0; i < mUpdatedFields.
count(); ++i )
2236 pkAttributesList << i;
2239 return pkAttributesList;
2250 mCommitErrors.
clear();
2252 if ( !mDataProvider )
2254 mCommitErrors <<
tr(
"ERROR: no provider" );
2260 mCommitErrors <<
tr(
"ERROR: layer not editable" );
2295 return mCommitErrors;
2337 QgsFeatureIds deselectedFeatures = mSelectedFeatureIds - ids;
2339 mSelectedFeatureIds = ids;
2346 return mSelectedFeatureIds.
size();
2351 return mSelectedFeatureIds;
2359 if ( mSelectedFeatureIds.
count() <= 8 )
2384 if ( mSelectedFeatureIds.
count() == 0 )
2390 if ( mSelectedFeatureIds.
count() == 1 )
2400 if ( !mEditBuffer || !mDataProvider )
2434 if ( snapResults.
size() < 1 )
2440 point.
setX( snap_it.
value().snappedVertex.x() );
2441 point.
setY( snap_it.
value().snappedVertex.y() );
2453 if ( snappingTolerance <= 0 || !mDataProvider )
2459 QgsRectangle searchRect( startPoint.
x() - snappingTolerance, startPoint.
y() - snappingTolerance,
2460 startPoint.
x() + snappingTolerance, startPoint.
y() + snappingTolerance );
2461 double sqrSnappingTolerance = snappingTolerance * snappingTolerance;
2469 for ( QgsGeometryMap::iterator it = cachedGeometries.
begin(); it != cachedGeometries.
end() ; ++it )
2474 snapToGeometry( startPoint, it.
key(), g, sqrSnappingTolerance, snappingResults, snap_to );
2484 .setFilterRect( searchRect )
2490 snapToGeometry( startPoint, f.
id(), f.
constGeometry(), sqrSnappingTolerance, snappingResults, snap_to );
2495 return n == 0 ? 2 : 0;
2498 void QgsVectorLayer::snapToGeometry(
const QgsPoint& startPoint,
2501 double sqrSnappingTolerance,
2510 int atVertex, beforeVertex, afterVertex;
2511 double sqrDistVertexSnap, sqrDistSegmentSnap;
2518 snappedPoint = geom->
closestVertex( startPoint, atVertex, beforeVertex, afterVertex, sqrDistVertexSnap );
2519 if ( sqrDistVertexSnap < sqrSnappingTolerance )
2524 if ( beforeVertex != -1 )
2529 if ( afterVertex != -1 )
2534 snappingResultVertex.
layer =
this;
2535 snappingResults.
insert( sqrt( sqrDistVertexSnap ), snappingResultVertex );
2543 sqrDistSegmentSnap = geom->
closestSegmentWithContext( startPoint, snappedPoint, afterVertex, NULL,
crs().geographicFlag() ? 1e-12 : 1e-8 );
2545 if ( sqrDistSegmentSnap < sqrSnappingTolerance )
2554 snappingResultSegment.
layer =
this;
2555 snappingResults.
insert( sqrt( sqrDistSegmentSnap ), snappingResultSegment );
2570 QgsDebugMsg(
"----- Computing Coordinate System" );
2591 return mDisplayField;
2601 return mDisplayExpression;
2606 return ( mEditBuffer && mDataProvider );
2617 if ( readonly && mEditBuffer )
2620 mReadOnly = readonly;
2627 return mEditBuffer && mEditBuffer->
isModified();
2632 if ( idx < 0 || idx >= mUpdatedFields.
count() )
2642 if ( idx < 0 || idx >= mUpdatedFields.
count() )
2657 return mEditorLayout;
2667 if ( attrIdx < 0 || attrIdx >= mUpdatedFields.
count() )
2670 mEditorWidgetV2Types[ mUpdatedFields[ attrIdx ].name()] = widgetType;
2675 if ( attrIdx < 0 || attrIdx >= mUpdatedFields.
count() )
2678 mEditorWidgetV2Configs[ mUpdatedFields[ attrIdx ].name()] = config;
2701 mAnnotationForm = ui;
2706 return mEditFormInit;
2711 mEditFormInit =
function;
2737 return QSize( cfg.
value(
"Width" ).toInt(), cfg.
value(
"Height" ).toInt() );
2743 if ( idx >= 0 && idx < fields.
count() )
2748 return mFieldEditables.
value( fields[idx].
name(),
true );
2757 if ( idx >= 0 && idx < fields.
count() )
2758 return mLabelOnTop.
value( fields[idx].name(), false );
2766 if ( idx >= 0 && idx < fields.
count() )
2767 mFieldEditables[ fields[idx].
name()] = editable;
2773 if ( idx >= 0 && idx < fields.
count() )
2774 mLabelOnTop[ fields[idx].
name()] = onTop;
2787 if ( r != mRendererV2 )
2791 mSymbolFeatureCounted =
false;
2792 mSymbolFeatureCountMap.
clear();
2802 if ( !mDataProvider )
2809 mEditCommandActive =
true;
2816 if ( !mDataProvider )
2823 mEditCommandActive =
false;
2824 if ( mDeletedFids.
count() )
2827 mDeletedFids.
clear();
2835 if ( !mDataProvider )
2843 mEditCommandActive =
false;
2844 mDeletedFids.
clear();
2853 cfg[
"CheckedState"] = checked;
2854 cfg[
"UncheckedState"] = unchecked;
2865 return mJoinBuffer && mJoinBuffer->
addJoin( joinInfo );
2907 return mExpressionFieldBuffer->
expressions().value( oi ).expression;
2918 if ( !mDataProvider )
2923 mUpdatedFields = mDataProvider->
fields();
2933 if ( mExpressionFieldBuffer )
2934 mExpressionFieldBuffer->
updateFields( mUpdatedFields );
2936 if ( oldFields != mUpdatedFields )
2951 uniqueValues.
clear();
2952 if ( !mDataProvider )
2965 mDataProvider->
uniqueValues( index, uniqueValues, limit );
2970 Q_FOREACH (
const QVariant& v, uniqueValues )
2976 while ( it.hasNext() && ( limit < 0 || uniqueValues.
count() < limit ) )
2996 int sourceLayerIndex;
3012 mDataProvider->
uniqueValues( index, uniqueValues, limit );
3022 .setSubsetOfAttributes( attList ) );
3031 if ( limit >= 0 && val.
size() >= limit )
3037 uniqueValues = val.
values();
3041 Q_ASSERT_X(
false,
"QgsVectorLayer::uniqueValues()",
"Unknown source of the field!" );
3046 if ( !mDataProvider )
3063 int sourceLayerIndex;
3090 .setSubsetOfAttributes( attList ) );
3094 double currentValue = 0;
3098 if ( currentValue < minimumValue )
3100 minimumValue = currentValue;
3106 Q_ASSERT_X(
false,
"QgsVectorLayer::minimumValue()",
"Unknown source of the field!" );
3112 if ( !mDataProvider )
3129 int sourceLayerIndex;
3156 .setSubsetOfAttributes( attList ) );
3160 double currentValue = 0;
3164 if ( currentValue > maximumValue )
3166 maximumValue = currentValue;
3172 Q_ASSERT_X(
false,
"QgsVectorLayer::maximumValue()",
"Unknown source of the field!" );
3183 if ( attrNum == -1 )
3187 if ( expression->hasParserError() || !expression->prepare(
pendingFields() ) )
3196 if ( expression.
isNull() )
3197 lst.
append( fieldOrExpression );
3199 lst = expression->referencedColumns();
3202 .
setFlags(( expression && expression->needsGeometry() ) ?
3208 if ( !selectedOnly )
3239 foreach (
QVariant value, variantValues )
3241 double val = value.
toDouble( &convertOk );
3244 else if ( value.
isNull() )
3265 return mFeatureBlendMode;
3278 return mLayerTransparency;
3283 void QgsVectorLayer::readSldLabeling(
const QDomNode& node )
3290 if ( userStyleElem.
isNull() )
3292 QgsDebugMsg(
"Info: UserStyle element not found." );
3297 if ( featureTypeStyleElem.
isNull() )
3299 QgsDebugMsg(
"Info: FeatureTypeStyle element not found." );
3313 if ( textSymbolizerElem.
isNull() )
3315 QgsDebugMsg(
"Info: TextSymbolizer element not found." );
3322 if ( !labelElem.
isNull() )
3325 if ( !propertyNameElem.
isNull() )
3361 if ( fieldIndex == -1 )
3365 if ( !exp.hasEvalError() )
3371 QgsDebugMsg(
"SLD label attribute error: " + exp.evalErrorString() );
3377 QgsDebugMsg(
"Info: PropertyName element not found." );
3389 if ( !fontElem.
isNull() )
3394 while ( !cssElem.
isNull() )
3396 cssName = cssElem.
attribute(
"name",
"not_found" );
3397 if ( cssName !=
"not_found" )
3399 elemText = cssElem.
text();
3400 if ( cssName ==
"font-family" )
3404 else if ( cssName ==
"font-style" )
3406 setCustomProperty(
"labeling/fontItalic", ( elemText ==
"italic" ) || ( elemText ==
"Italic" ) );
3408 else if ( cssName ==
"font-size" )
3411 int fontSize = elemText.
toInt( &ok );
3417 else if ( cssName ==
"font-weight" )
3419 setCustomProperty(
"labeling/fontBold", ( elemText ==
"bold" ) || ( elemText ==
"Bold" ) );
3421 else if ( cssName ==
"font-underline" )
3423 setCustomProperty(
"labeling/fontUnderline", ( elemText ==
"underline" ) || ( elemText ==
"Underline" ) );
3443 if ( !haloElem.
isNull() )
3449 if ( !radiusElem.
isNull() )
3471 if ( !labelPlacementElem.
isNull() )
3475 if ( !pointPlacementElem.
isNull() )
3480 if ( !displacementElem.
isNull() )
3483 if ( !displacementXElem.
isNull() )
3486 double xOffset = displacementXElem.
text().
toDouble( &ok );
3493 if ( !displacementYElem.
isNull() )
3496 double yOffset = displacementYElem.
text().
toDouble( &ok );
3505 if ( !rotationElem.
isNull() )
3520 if ( !mDiagramLayerSettings )
3522 *mDiagramLayerSettings = s;
3527 QString myMetadata =
"<html><body>";
3531 myMetadata +=
"<p class=\"subheaderglossy\">";
3532 myMetadata +=
tr(
"General" );
3533 myMetadata +=
"</p>\n";
3538 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Layer comment" ) +
"</p>\n";
3539 myMetadata +=
"<p>";
3541 myMetadata +=
"</p>\n";
3545 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Storage type of this layer" ) +
"</p>\n";
3546 myMetadata +=
"<p>";
3548 myMetadata +=
"</p>\n";
3553 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Description of this provider" ) +
"</p>\n";
3554 myMetadata +=
"<p>";
3556 myMetadata +=
"</p>\n";
3560 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Source for this layer" ) +
"</p>\n";
3561 myMetadata +=
"<p>";
3563 myMetadata +=
"</p>\n";
3577 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Geometry type of the features in this layer" ) +
"</p>\n";
3578 myMetadata +=
"<p>";
3579 myMetadata += typeString;
3580 myMetadata +=
"</p>\n";
3586 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Primary key attributes" ) +
"</p>\n";
3587 myMetadata +=
"<p>";
3588 foreach (
int idx, pkAttrList )
3592 myMetadata +=
"</p>\n";
3597 myMetadata +=
"<p class=\"glossy\">" +
tr(
"The number of features in this layer" ) +
"</p>\n";
3598 myMetadata +=
"<p>";
3600 myMetadata +=
"</p>\n";
3602 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Editing capabilities of this layer" ) +
"</p>\n";
3603 myMetadata +=
"<p>";
3605 myMetadata +=
"</p>\n";
3610 myMetadata +=
"<p class=\"subheaderglossy\">";
3611 myMetadata +=
tr(
"Extents" );
3612 myMetadata +=
"</p>\n";
3615 myMetadata +=
"<p class=\"glossy\">" +
tr(
"In layer spatial reference system units" ) +
"</p>\n";
3616 myMetadata +=
"<p>";
3629 QString xMin, yMin, xMax, yMax;
3630 double changeoverValue = 99999;
3631 if ( qAbs( myExtent.
xMinimum() ) > changeoverValue )
3639 if ( qAbs( myExtent.
yMinimum() ) > changeoverValue )
3647 if ( qAbs( myExtent.
xMaximum() ) > changeoverValue )
3655 if ( qAbs( myExtent.
yMaximum() ) > changeoverValue )
3664 myMetadata +=
tr(
"xMin,yMin %1,%2 : xMax,yMax %3,%4" )
3669 myMetadata +=
tr(
"unknown extent" );
3672 myMetadata +=
"</p>\n";
3680 QgsRectangle myProjectedExtent = coordinateTransform->transformBoundingBox(
extent() );
3681 myMetadata +=
"<p class=\"glossy\">" +
tr(
"In project spatial reference system units" ) +
"</p>\n";
3682 myMetadata +=
"<p>";
3683 myMetadata +=
tr(
"xMin,yMin %1,%2 : xMax,yMax %3,%4" )
3685 .arg( myProjectedExtent.
yMinimum() )
3686 .arg( myProjectedExtent.
xMaximum() )
3687 .arg( myProjectedExtent.
yMaximum() );
3688 myMetadata +=
"</p>\n";
3694 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Layer Spatial Reference System" ) +
"</p>\n";
3695 myMetadata +=
"<p>";
3697 myMetadata +=
"</p>\n";
3705 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Project (Output) Spatial Reference System" ) +
"</p>\n";
3706 myMetadata +=
"<p>";
3707 myMetadata += coordinateTransform->destCRS().toProj4().
replace(
QRegExp(
"\"" ),
" \"" );
3708 myMetadata +=
"</p>\n";
3716 myMetadata +=
"<p class=\"glossy\">" +
tr(
"In project spatial reference system units" ) +
"</p>\n";
3717 myMetadata +=
"<p>";
3718 myMetadata +=
tr(
"(Invalid transformation of layer extents)" );
3719 myMetadata +=
"</p>\n";
3727 myMetadata +=
"<p class=\"glossy\">" +
tr(
"Attribute field info" ) +
"</p>\n";
3728 myMetadata +=
"<p>";
3731 myMetadata +=
"<table width=\"100%\">";
3732 myMetadata +=
"<tr><th>";
3733 myMetadata +=
tr(
"Field" );
3734 myMetadata +=
"</th>";
3735 myMetadata +=
"<th>";
3736 myMetadata +=
tr(
"Type" );
3737 myMetadata +=
"</th>";
3738 myMetadata +=
"<th>";
3739 myMetadata +=
tr(
"Length" );
3740 myMetadata +=
"</th>";
3741 myMetadata +=
"<th>";
3742 myMetadata +=
tr(
"Precision" );
3743 myMetadata +=
"</th>";
3744 myMetadata +=
"<th>";
3745 myMetadata +=
tr(
"Comment" );
3746 myMetadata +=
"</th>";
3750 for (
int i = 0, n = myFields.
size(); i < n; ++i )
3752 const QgsField& myField = fields[i];
3754 myMetadata +=
"<tr><td>";
3755 myMetadata += myField.
name();
3756 myMetadata +=
"</td>";
3757 myMetadata +=
"<td>";
3759 myMetadata +=
"</td>";
3760 myMetadata +=
"<td>";
3762 myMetadata +=
"</td>";
3763 myMetadata +=
"<td>";
3765 myMetadata +=
"</td>";
3766 myMetadata +=
"<td>";
3768 myMetadata +=
"</td></tr>";
3772 myMetadata +=
"</table>";
3775 myMetadata +=
"</body></html>";
3781 mSymbolFeatureCounted =
false;
3784 void QgsVectorLayer::onRelationsLoaded()
3807 void QgsVectorLayer::onJoinedFieldsChanged()
3813 void QgsVectorLayer::onFeatureDeleted(
const QgsFeatureId& fid )
3815 if ( mEditCommandActive )
3816 mDeletedFids << fid;
3830 cfg.
value(
"Key" ).toString(),
3831 cfg.
value(
"Value" ).toString(),
3832 cfg.
value(
"AllowNull" ).toBool(),
3833 cfg.
value(
"OrderByValue" ).toBool(),
3834 cfg.
value(
"AllowMulti" ).toBool(),
3835 cfg.
value(
"FilterExpression" ).toString()
3851 return mAttributeEditorElements;
3856 mAttributeEditorElements.
clear();
3873 mChildren.
append( widget );
3917 msgError =
QObject::tr(
"Unable to load %1 provider" ).
arg( mProviderKey );
3922 if ( !listStylesExternalMethod )
3925 msgError =
QObject::tr(
"Provider %1 has no %2 method" ).
arg( mProviderKey ).
arg(
"listStyles" );
3929 return listStylesExternalMethod(
mDataSource, ids, names, descriptions, msgError );
3938 msgError =
QObject::tr(
"Unable to load %1 provider" ).
arg( mProviderKey );
3943 if ( !getStyleByIdMethod )
3946 msgError =
QObject::tr(
"Provider %1 has no %2 method" ).
arg( mProviderKey ).
arg(
"getStyleById" );
3950 return getStyleByIdMethod(
mDataSource, styleId, msgError );
3963 msgError =
QObject::tr(
"Unable to load %1 provider" ).
arg( mProviderKey );
3968 if ( !saveStyleExternalMethod )
3971 msgError =
QObject::tr(
"Provider %1 has no %2 method" ).
arg( mProviderKey ).
arg(
"saveStyle" );
3977 if ( !msgError.
isNull() )
3984 if ( !msgError.
isNull() )
3990 saveStyleExternalMethod(
mDataSource, qmlStyle, sldStyle, name,
3991 description, uiFileContent, useAsDefault, msgError );
4011 if ( loadStyleExternalMethod )
4014 qml = loadStyleExternalMethod(
mDataSource, errorMsg );
4046 mRelation = relationManager->
relation( mRelationId );
QgsFeatureId id() const
Get the feature ID for this feature.
bool deleteVertex(QgsFeatureId atFeatureId, int atVertex)
Deletes a vertex from a feature.
QObject * child(const char *objName, const char *inheritsClass, bool recursiveSearch) const
void setExtent(const QgsRectangle &rect) override
Set the extent.
bool draw(QgsRenderContext &rendererContext) override
Draws the layer.
virtual QString subsetString()
Get the string (typically sql) used to define a subset of the layer.
const QgsEditorWidgetConfig editorWidgetV2Config(int fieldIdx) const
Get the configuration for the editor widget used to represent the field at the given index...
Class for parsing and evaluation of expressions (formerly called "search strings").
void updateFields()
Assembles mUpdatedFields considering provider fields, joined fields and added fields.
const QString & name() const
Gets the name of the field.
Wrapper for iterator of features from vector data provider or vector layer.
bool isValid() const
Returns the validity of this relation.
void selectAll()
Select all the features.
QDomNodeList elementsByTagName(const QString &tagname) const
bool intersects(const QgsRectangle &rect) const
returns true when rectangle intersects with other rectangle
QgsFeatureRendererV2 * rendererV2()
Return renderer V2.
int indexOf(QChar ch, int from, Qt::CaseSensitivity cs) const
#define RENDERER_TAG_NAME
virtual QString subsetString()
Returns the subset definition string (typically sql) currently in use by the layer and used by the pr...
bool fieldEditable(int idx)
is edit widget editable
bool addJoin(const QgsVectorJoinInfo &joinInfo)
Joins another vector layer to this layer.
virtual QString getStyleFromDatabase(QString styleId, QString &msgError)
Will return the named style corresponding to style id provided.
virtual bool willRenderFeature(QgsFeature &feat)
return whether the renderer will render a feature or not.
A rectangle specified with double values.
Base class for all map layer types.
bool init(QgsRelationManager *relManager)
Initializes the relation from the id.
const QList< QgsVectorJoinInfo > vectorJoins() const
void setDiagramLayerSettings(const QgsDiagramLayerSettings &s)
bool isEmpty() const
test if rectangle is empty.
iterator insert(const Key &key, const T &value)
int insertSegmentVerticesForSnap(const QList< QgsSnappingResult > &snapResults)
Inserts vertices to the snapped segments.
bool readSymbology(const QDomNode &node, QString &errorMessage) override
Read the symbology for the current layer from the Dom node supplied.
field comes from a joined layer (originIndex / 1000 = index of the join, originIndex % 1000 = index w...
float threshold() const
Gets the simplification threshold of the vector layer managed.
void clearAttributeEditorWidgets()
Clears all the tabs for the attribute editor form.
QgsFeatureList selectedFeatures()
Get a copy of the user-selected features.
QgsMapLayer::LayerType type() const
Get the type of the layer.
virtual bool addAttribute(const QgsField &field)
add an attribute field (but does not commit it) returns true if the field was added ...
void setName(const QString &name)
Change the name of this container.
virtual bool writeXml(QDomNode &layer_node, QDomDocument &doc) override
write vector layer specific state to project file Dom node.
This is an abstract base class for any elements of a drag and drop form.
void setMinimal()
Set a rectangle so that min corner is at max and max corner is at min.
bool diagramsEnabled() const
Returns whether the layer contains diagrams which are enabled and should be drawn.
EditorLayout editorLayout()
get the active layout for the attribute editor for this layer
bool contains(const Key &key) const
virtual void saveStyleToDatabase(QString name, QString description, bool useAsDefault, QString uiFileContent, QString &msgError)
Save named and sld style of the layer to the style table in the db.
void createJoinCaches()
Calls cacheJoinLayer() for all vector joins.
virtual void updateExtents()
Update the extents of the layer.
void readCustomProperties(const QDomNode &layerNode, const QString &keyStartsWith="")
Read custom properties from project file.
void addExpression(const QString &exp, const QgsField &fld)
Add an expression to the buffer.
void removeJoin(const QString &joinLayerId)
Removes a vector layer join.
QString publicSource() const
QDomNode appendChild(const QDomNode &newChild)
void beforeRollBack()
Is emitted, before changes are rolled back.
virtual bool addFeatures(QgsFeatureList &features)
Insert a copy of the given features into the layer (but does not commit it)
EditorLayout
The different types to layout the attribute editor.
Use exact geometry intersection (slower) instead of bounding boxes.
static QgsFeatureRendererV2 * loadSld(const QDomNode &node, QGis::GeometryType geomType, QString &errorMessage)
create a new renderer according to the information contained in the UserStyle element of a SLD style ...
void setEditFormInit(QString function)
set python function for edit form initialization
void setMaximum(int maximum)
void push_back(const T &value)
int translateFeature(QgsFeatureId featureId, double dx, double dy)
Translates feature by dx, dy.
QVariant maximumValue(int index)
Returns maximum value for an attribute column or invalid variant in case of error.
Renders the diagrams for all features with the same settings.
QString capabilitiesString() const
Returns the above in friendly format.
QString attribute(const QString &name, const QString &defValue) const
Q_DECL_DEPRECATED int removePolygonIntersections(QgsGeometry *geom, QgsFeatureIds ignoreFeatures=QgsFeatureIds())
Changes the specified geometry such that it has no intersections with other polygon (or multipolygon)...
virtual bool addFeature(QgsFeature &f)
Adds a feature.
static QgsProviderRegistry * instance(QString pluginPath=QString::null)
means of accessing canonical single instance
field has been temporarily added in editing mode (originIndex = index in the list of added attributes...
int addTopologicalPoints(const QgsGeometry *geom)
Adds topological points for every vertex of the geometry.
void beginMacro(const QString &text)
void layerTransparencyChanged(int layerTransparency)
Signal emitted when setLayerTransparency() is called.
double yMaximum() const
Get the y maximum value (top side of rectangle)
bool deleteFeature(QgsFeatureId fid)
delete a feature from the layer (but does not commit it)
virtual QgsCoordinateReferenceSystem crs()=0
QSet< QgsFeatureId > QgsFeatureIds
void featuresDeleted(QgsFeatureIds fids)
Emitted when features have been deleted.
void uniqueValues(int index, QList< QVariant > &uniqueValues, int limit=-1)
Returns unique values for column.
QString toString(int indent) const
void beginEditCommand(QString text)
Create edit command for undo/redo operations.
const QgsVectorJoinList & vectorJoins() const
int fieldNameIndex(const QString &fieldName) const
Look up field's index from name - case insensitive TODO: sort out case sensitive (indexFromName()) vs...
void setDataSource(QString dataSource, QString baseName, QString provider, bool loadDefaultStyleFlag=false)
Update the data source of the layer.
double rendererScale() const
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest())
Query the provider for features specified in request.
virtual QDomElement save(QDomDocument &doc)
store renderer info to XML element
friend class QgsVectorLayerFeatureSource
void setForceLocalOptimization(bool localOptimization)
Sets where the simplification executes, after fetch the geometries from provider, or when supported...
virtual bool applyNamedStyle(QString namedStyle, QString &errorMsg)
Will load a named style from a provided QML string.
void invertSelectionInRectangle(QgsRectangle &rect)
Invert selection of features found within the search rectangle (in layer's coordinates) ...
bool commitChanges()
Attempts to commit any changes to disk.
void setRendererV2(QgsFeatureRendererV2 *r)
Set renderer V2.
virtual QgsTransaction * transaction() const
Returns the transaction this data provider is included in, if any.
void deleteCachedGeometries()
Deletes the geometries in mCachedGeometries.
Storage and management of actions associated with Qgis layer attributes.
virtual void setEncoding(const QString &e)
Set encoding used for accessing data from layer.
bool startEditing()
Make layer editable.
void setSimplifyHints(SimplifyHints simplifyHints)
Sets the simplification hints of the vector layer managed.
const_iterator constBegin() const
bool contains(const QgsRectangle &rect) const
return true when rectangle contains other rectangle
void setRendererScale(double scale)
const T & at(int i) const
void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for layer.
VertexMarkerType
Editing vertex markers.
void removeExpressionField(int index)
Remove an expression field.
const QgsChangedAttributesMap & changedAttributeValues()
Changed attributes values which are not commited.
void select(QgsRectangle &rect, bool addToSelection)
Select features found within the search rectangle (in layer's coordinates)
QgsVectorLayer::FeatureFormSuppress featureFormSuppress() const
Type of feature form pop-up suppression after feature creation (overrides app setting) ...
#define Q_NOWARN_DEPRECATED_PUSH
int precision() const
Gets the precision of the field.
QgsRectangle boundingBox() const
Returns the bounding box of this feature.
int makeDifference(const QgsGeometry *other)
Changes this geometry such that it does not intersect the other geometry.
virtual QList< QgsDiagramSettings > diagramSettings() const =0
Returns list with all diagram settings in the renderer.
void renderLabel(QgsRenderContext &renderContext, QgsFeature &feature, bool selected, QgsLabelAttributes *classAttributes=0)
render label
QgsFeatureRequest & setSubsetOfAttributes(const QgsAttributeList &attrs)
Set a subset of attributes that will be fetched.
virtual QgsLegendSymbolList legendSymbolItems(double scaleDenominator=-1, QString rule="")
return a list of item text / symbol
QGis::GeometryType type() const
Returns type of the geometry as a QGis::GeometryType.
Q_DECL_DEPRECATED QString dateFormat(int idx)
Access date format.
SimplifyHint
Simplification flags for fast rendering of features.
bool deleteAttributes(QList< int > attrs)
Deletes a list of attribute fields (but does not commit it)
void readCustomSymbology(const QDomElement &element, QString &errorMessage)
Signal emitted whenever the symbology (QML-file) for this layer is being read.
QDomElement nextSiblingElement(const QString &tagName) const
void addAttributeAlias(int attIndex, QString aliasString)
Sets an alias (a display name) for attributes to display in dialogs.
static const char * vectorGeometryType(GeometryType type)
description strings for geometry types
int insertSegmentVerticesForSnap(const QList< QgsSnappingResult > &snapResults)
Inserts vertices to the snapped segments.
Q_DECL_DEPRECATED QMap< QString, QVariant > valueMap(int idx)
Access value map.
void readXml(const QDomNode &layer_node)
Reads joins from project file.
virtual void uniqueValues(int index, QList< QVariant > &uniqueValues, int limit=-1)
Return unique values of an attribute.
Container of fields for a vector layer.
virtual void rollBack()
Stop editing and discard the edits.
const QgsRectangle & cachedGeometriesRect()
A geometry is the spatial representation of a feature.
void setDiagramRenderer(QgsDiagramRendererV2 *r)
Sets diagram rendering object (takes ownership)
void setLayerTransparency(int layerTransparency)
Set the transparency for the vector layer.
QSet< T > & subtract(const QSet< T > &other)
ValueRelationData valueRelation(int idx)
Access value relation widget data.
This element will load a field's widget onto the form.
QgsChangedAttributesMap mChangedAttributeValues
Changed attributes values which are not commited.
WkbType
Used for symbology operations.
const QgsRectangle & extent() const
void remAttributeAlias(int attIndex)
Removes an alias (a display name) for attributes to display in dialogs.
This element will load a relation editor onto the form.
The QGis class provides global constants for use throughout the application.
void setDisplayExpression(const QString &displayExpression)
Set the preview expression, used to create a human readable preview string.
bool addFeature(QgsFeature &f, bool alsoUpdateExtent=true)
Adds a feature.
virtual QList< QString > usedAttributes()=0
field comes from the underlying data provider of the vector layer (originIndex = index in provider's ...
QString join(const QString &separator) const
int addPart(const QList< QgsPoint > &ring, QgsFeatureId featureId)
Adds a new part polygon to a multipart feature.
const_iterator insert(const T &value)
The feature class encapsulates a single feature including its id, geometry and a list of field/values...
QList< QgsRelation > referencingRelations(int idx)
Get relations, where the foreign key is on this layer.
void drawLine(const QLineF &line)
static const int EditingCapabilities
bitmask of all provider's editing capabilities
virtual ~QgsVectorLayer()
Destructor.
virtual QgsAttributeList pkAttributeIndexes()
Return list of indexes of fields that make up the primary key.
const QString displayExpression()
Get the preview expression, used to create a human readable preview string.
bool deleteVertex(QgsFeatureId atFeatureId, int atVertex)
Deletes a vertex from a feature.
void beforeCommitChanges()
Is emitted, before changes are commited to the data provider.
void committedFeaturesRemoved(const QString &layerId, const QgsFeatureIds &deletedFeatureIds)
double toDouble(bool *ok) const
void committedAttributesDeleted(const QString &layerId, const QgsAttributeList &deletedAttributes)
Signals emitted after committing changes.
QDomNodeList childNodes() const
virtual bool isEditable() const override
Returns true if the provider is in editing mode.
QVariant minimumValue(int index)
Returns minimum value for an attribute column or invalid variant in case of error.
bool insertVertex(double x, double y, QgsFeatureId atFeatureId, int beforeVertex)
Insert a new vertex before the given vertex number, in the given ring, item (first number is index 0)...
QString tr(const char *sourceText, const char *disambiguation, int n)
void featureDeleted(QgsFeatureId fid)
Emitted when a feature has been deleted.
QString readPath(QString filename) const
turn filename read from the project file to an absolute path
void editCommandEnded()
Signal emitted, when an edit command successfully ended.
void setBlendMode(const QPainter::CompositionMode &blendMode)
Set the blending mode used for rendering a layer.
void writeCustomSymbology(QDomElement &element, QDomDocument &doc, QString &errorMessage) const
Signal emitted whenever the symbology (QML-file) for this layer is being written. ...
QString mLayerName
Name of the layer - used for display.
BlendMode
Blending modes enum defining the available composition modes that can be used when rendering a layer...
void invertSelection()
Select not selected features and deselect selected ones.
it has not been specified where the field comes from
int splitFeatures(const QList< QgsPoint > &splitLine, bool topologicalEditing=false)
Splits features cut by the given line.
virtual void startRender(QgsRenderContext &context, const QgsFields &fields)=0
static void logMessage(QString message, QString tag=QString::null, MessageLevel level=WARNING)
add a message to the instance (and create it if necessary)
virtual void updateExtents()
Update the extents for the layer.
Returns diagram settings for a feature.
QString name() const
Return the name of this element.
QGis::WkbType wkbType() const
Returns the WKBType or WKBUnknown in case of error.
void removeSelection()
Clear selection.
Manages joined fields for a vector layer.
const QgsVectorJoinInfo * joinForFieldIndex(int index, const QgsFields &fields, int &sourceFieldIndex) const
Finds the vector join for a layer field index.
QString editForm()
get edit form
void set(const QgsPoint &p1, const QgsPoint &p2)
Set the rectangle from two QgsPoints.
virtual void stopRender(QgsRenderContext &context)=0
void setEditorLayout(EditorLayout editorLayout)
set the active layout for the attribute editor for this layer
bool writeXML(QDomNode &layer_node, QDomDocument &doc) const
Writes the actions out in XML format.
QgsGeometryMap & cachedGeometries()
static QString capitaliseLayerName(const QString &name)
A convenience function to (un)capitalise the layer name.
QDomElement toElement() const
virtual QDomElement toDomElement(QDomDocument &doc) const override
Will serialize this containers information into a QDomElement for saving it in an XML file...
bool containsJoins() const
Quick way to test if there is any join at all.
const QString & name() const
Get the display name of the layer.
void checkJoinLayerRemove(QString theLayerId)
Check if there is a join with a layer that will be removed.
virtual QgsSymbolV2List originalSymbolsForFeature(QgsFeature &feat)
Equivalent of originalSymbolsForFeature() call extended to support renderers that may use more symbol...
void setData(const QString &v)
virtual int listStylesInDatabase(QStringList &ids, QStringList &names, QStringList &descriptions, QString &msgError)
Lists all the style in db split into related to the layer and not related to.
SnappingType
Snap to vertex, to segment or both.
QString encoding() const
Get encoding which is used for accessing data.
virtual void writeXML(QDomElement &layerElem, QDomDocument &doc, const QgsVectorLayer *layer) const =0
virtual QVariant maximumValue(int index)
Returns the maximum value of an attribute.
virtual QgsMapLayerRenderer * createMapRenderer(QgsRenderContext &rendererContext) override
Return new instance of QgsMapLayerRenderer that will be used for rendering of given context...
QgsFeatureRequest & setFilterFid(QgsFeatureId fid)
Set feature ID that should be fetched.
void setValue(int progress)
virtual QDomElement toDomElement(QDomDocument &doc) const override
Will serialize this elements information into a QDomElement for saving it in an XML file...
void geometryChanged(QgsFeatureId fid, QgsGeometry &geom)
QString number(int n, int base)
int count(const T &value) const
void combineExtentWith(QgsRectangle *rect)
expand the rectangle so that covers both the original rectangle and the given rectangle ...
bool addJoin(const QgsVectorJoinInfo &joinInfo)
Joins another vector layer to this layer.
QPainter::CompositionMode blendMode() const
Returns the current blending mode for a layer.
bool simplifyDrawingCanbeApplied(const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint) const
Returns whether the VectorLayer can apply the specified simplification hint.
void append(const T &value)
void deselect(const QgsFeatureId featureId)
Deselect feature by its ID.
QPainter::CompositionMode featureBlendMode() const
Returns the current blending mode for features.
QgsFeatureRequest & setFilterFids(QgsFeatureIds fids)
Set feature ID that should be fetched.
bool writeSld(QDomNode &node, QDomDocument &doc, QString &errorMessage) const
QgsRectangle extent() override
Return the extent of the layer as a QRect.
void readStyleManager(const QDomNode &layerNode)
Read style manager's configuration (if any).
bool rollBack(bool deleteBuffer=true)
Stop editing and discard the edits.
double yMinimum() const
Get the y minimum value (bottom side of rectangle)
virtual bool setSubsetString(QString subset, bool updateFeatureCount=true)
Set the subset string used to create a subset of features in the layer.
QgsDataProvider * provider(const QString &providerKey, const QString &dataSource)
Create an instance of the provider.
bool hasAttribute(const QString &name) const
double xMaximum() const
Get the x maximum value (right side of rectangle)
QString attributeDisplayName(int attributeIndex) const
Convenience function that returns the attribute alias if defined or the field name else...
const QgsFeatureIds & selectedFeaturesIds() const
Return reference to identifiers of selected features.
QString capabilitiesString() const
Capabilities for this layer in a friendly format.
QgsRelation relation(const QString &id) const
Get access to a relation by its id.
The attribute value should not be shown in the attribute form.
virtual QString dataComment() const
Return a short comment for the data that this provider is providing access to (e.g.
Represents the result of a snapping operation.
QgsAttributes attributes() const
Returns the feature's attributes.
void readXML(const QDomElement &elem, const QgsVectorLayer *layer)
void setCrs(const QgsCoordinateReferenceSystem &srs, bool emitSignal=true)
Sets layer's spatial reference system.
void setPen(const QColor &color)
void drawEllipse(const QRectF &rectangle)
void setAttribute(const QString &name, const QString &value)
int addTopologicalPoints(const QgsGeometry *geom)
Adds topological points for every vertex of the geometry.
Q_DECL_DEPRECATED EditType editType(int idx)
Get edit type.
virtual int capabilities() const
Returns a bitmask containing the supported capabilities Note, some capabilities may change depending ...
void writeStyleManager(QDomNode &layerNode, QDomDocument &doc) const
Write style manager's configuration (if exists).
int snapWithContext(const QgsPoint &startPoint, double snappingTolerance, QMultiMap< double, QgsSnappingResult > &snappingResults, QgsSnapper::SnappingType snap_to)
Snaps to segment or vertex within given tolerance.
const QString & id() const
The id.
const QString editorWidgetV2(int fieldIdx) const
Get the id for the editor widget used to represent the field at the given index.
static GeometryType geometryType(Type type)
int toInt(bool *ok, int base) const
virtual void setExtent(const QgsRectangle &rect)
Set the extent.
void setScaleBasedVisibility(bool theVisibilityFlag)
Accessor and mutator for the scale based visilibility flag.
void committedFeaturesAdded(const QString &layerId, const QgsFeatureList &addedFeatures)
int addPart(const QList< QgsPoint > &ring)
Adds a new part polygon to a multipart feature.
const_iterator constEnd() const
int fieldOriginIndex(int fieldIdx) const
Get field's origin index (its meaning is specific to each type of origin)
bool deleteAttribute(int attr)
delete an attribute field (but does not commit it)
void editingStopped()
Is emitted, when edited changes successfully have been written to the data provider.
void writeXml(QDomNode &layer_node, QDomDocument &document) const
Saves expressions to xml under the layer node.
QgsGeometryMap mChangedGeometries
Changed geometries which are not commited.
int translateFeature(QgsFeatureId featureId, double dx, double dy)
Translates feature by dx, dy.
QgsPoint closestVertex(const QgsPoint &point, int &atVertex, int &beforeVertex, int &afterVertex, double &sqrDist) const
Returns the vertex closest to the given point, the corresponding vertex index, squared distance snap ...
bool moveVertex(double x, double y, QgsFeatureId atFeatureId, int atVertex)
Moves the vertex at the given position number, ring and item (first number is index 0)...
virtual QString storageType() const
Returns the permanent storage type for this layer as a friendly name.
void triggerRepaint()
Will advice the map canvas (and any other interested party) that this layer requires to be repainted...
virtual long featureCount() const =0
Number of features in the layer.
QgsVectorLayer(QString path=QString::null, QString baseName=QString::null, QString providerLib=QString::null, bool loadDefaultStyleFlag=true)
Constructor - creates a vector layer.
This class wraps a request for features to a vector layer (or directly its vector data provider)...
int pendingFeatureCount()
returns feature count after commit
QList< int > QgsAttributeList
AttributeEditorType type() const
The type of this element.
void destroyEditCommand()
Destroy active command and reverts all changes in it.
Q_DECL_DEPRECATED bool changeAttributeValue(QgsFeatureId fid, int field, QVariant value, bool emitSignal)
Changes an attribute value (but does not commit it)
void setBrush(const QBrush &brush)
bool scaleBasedVisibility() const
void writeCustomProperties(QDomNode &layerNode, QDomDocument &doc) const
Write custom properties to project file.
const QString GEO_EPSG_CRS_AUTHID
Geographic coord sys from EPSG authority.
QMap< Key, T >::iterator insert(const Key &key, const T &value)
const QString displayField() const
Returns the primary display field name used in the identify results dialog.
const_iterator constEnd() const
int count() const
Return number of items.
bool setReadOnly(bool readonly=true)
Make layer read-only (editing disabled) or not.
bool changeGeometry(QgsFeatureId fid, QgsGeometry *geom)
change feature's geometry
virtual bool isModified() const
Returns true if the provider has been modified since the last commit.
QGis::GeometryType geometryType() const
Returns point, line or polygon.
double closestSegmentWithContext(const QgsPoint &point, QgsPoint &minDistPoint, int &afterVertex, double *leftOf=0, double epsilon=DEFAULT_SEGMENT_EPSILON) const
Searches for the closest segment of geometry to the given point.
QString labelField(int attr) const
label field
QgsFeatureIds mDeletedFeatureIds
Deleted feature IDs which are not commited.
int afterVertexNr
The index of the vertex after snappedVertex or -1 if no such vertex.
Encapsulate a field in an attribute table or data source.
virtual bool importNamedStyle(QDomDocument &doc, QString &errorMsg)
Import the properties of this layer from a QDomDocument.
void featureAdded(QgsFeatureId fid)
Emitted when a new feature has been added to the layer.
static QgsFeatureRendererV2 * defaultRenderer(QGis::GeometryType geomType)
return a new renderer - used by default in vector layers
const QString expressionField(int index)
Returns the expressoin used for a given expression field.
void setFeatureBlendMode(const QPainter::CompositionMode &blendMode)
Set the blending mode used for rendering each feature.
QVariant customProperty(const QString &value, const QVariant &defaultValue=QVariant()) const
Read a custom property from layer.
void rendererChanged()
Signal emitted when renderer is changed.
void updateFields(QgsFields &flds)
Adds fields with the expressions buffered in this object to a QgsFields object.
virtual QGis::WkbType geometryType() const =0
Get feature type.
QString attributeAlias(int attributeIndex) const
Returns the alias of an attribute name or an empty string if there is no alias.
fast access to features using their ID
void readXML(const QDomNode &node)
Reads the renderer configuration from an XML file.
QgsFeatureId snappedAtGeometry
Index of the snapped geometry.
bool mValid
Indicates if the layer is valid and can be drawn.
bool useRenderingOptimization() const
Returns true if the rendering optimization (geometry simplification) can be executed.
QList< QVariant > getValues(const QString &fieldOrExpression, bool &ok, bool selectedOnly=false)
Fetches all values from a specified field name or expression.
void editingStarted()
Is emitted, when editing on this layer has started.
static void drawVertexMarker(double x, double y, QPainter &p, QgsVectorLayer::VertexMarkerType type, int vertexSize)
Draws a vertex symbol at (screen) coordinates x, y.
bool addFeatures(QgsFeatureList features, bool makeSelected=true)
Insert a copy of the given features into the layer (but does not commit it)
A class to represent a point.
QList< QgsRelation > referencingRelations(QgsVectorLayer *layer=0, int fieldIdx=-2) const
Get all relations where the specified layer (and field) is the referencing part (i.e.
void writeXML(QDomNode &label_node, QDomDocument &document) const
Writes the contents of the renderer to a configuration file.
void removeJoin(const QString &joinLayerId)
Removes a vector layer join.
void endEditCommand()
Finish edit command and add it to undo/redo stack.
virtual bool commitChanges(QStringList &commitErrors)
Attempts to commit any changes to disk.
int addRing(const QList< QgsPoint > &ring)
Adds a ring to polygon/multipolygon features.
void committedAttributeValuesChanges(const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues)
QString right(int n) const
virtual bool deleteAttribute(int attr)
delete an attribute field (but does not commit it)
const QStringList & commitErrors()
int indexFromName(const QString &name) const
Look up field's index from name. Returns -1 on error.
bool labelOnTop(int idx)
label widget on top
QDomText createTextNode(const QString &value)
void invalidateSymbolCountedFlag()
bool deleteSelectedFeatures(int *deletedCount=0)
Deletes the selected features.
QByteArray toLocal8Bit() const
QgsPoint beforeVertex
The layer coordinates of the vertex before snappedVertex.
bool forceLocalOptimization() const
Gets where the simplification executes, after fetch the geometries from provider, or when supported...
Class for storing the component parts of a PostgreSQL/RDBMS datasource URI.
QgsPoint afterVertex
The layer coordinates of the vertex after snappedVertex.
QDomNode namedItem(const QString &name) const
bool contains(QChar ch, Qt::CaseSensitivity cs) const
void editCommandDestroyed()
Signal emitted, whan an edit command is destroyed.
QList< double > getDoubleValues(const QString &fieldOrExpression, bool &ok, bool selectedOnly=false, int *nullCount=0)
Fetches all double values from a specified field name or expression.
int addExpressionField(const QString &exp, const QgsField &fld)
Add a new field which is calculated by the expression specified.
void setMaximumScale(float maximumScale)
Sets the maximum scale at which the layer should be simplified.
virtual void reload() override
Synchronises with changes in the datasource.
void setEditorWidgetV2Config(int attrIdx, const QgsEditorWidgetConfig &config)
Set the editor widget config for a field.
bool contains(const T &value) const
bool countSymbolFeatures(bool showProgress=true)
Count features for symbols.
A class to render labels.
static QgsMapLayerLegend * defaultVectorLegend(QgsVectorLayer *vl)
Create new legend implementation for vector layer.
A registry / canonical manager of data providers.
void setProviderEncoding(const QString &encoding)
Sets the textencoding of the data provider.
virtual bool isReadOnly() const
Returns true if the provider is in read-only mode.
virtual QString loadNamedStyle(const QString &theURI, bool &theResultFlag, bool loadFromLocalDb)
Load a named style from file/local db/datasource db.
QgsGeometry * geometry()
Get the geometry object associated with this feature.
QgsAttributeEditorElement * attributeEditorElementFromDomElement(QDomElement &elem, QObject *parent)
convert a saved attribute editor element into a AttributeEditor structure as it's used internally...
Implementation of threaded rendering for vector layers.
const_iterator constBegin() const
bool contains(const T &value) const
int layerTransparency() const
Returns the current transparency for the vector layer.
QgsMapLayerLegend * legend() const
Can be null.
static QPainter::CompositionMode getCompositionMode(const QgsMapRenderer::BlendMode &blendMode)
Returns a QPainter::CompositionMode corresponding to a BlendMode.
QgsFeatureIterator selectedFeaturesIterator(QgsFeatureRequest request=QgsFeatureRequest())
Get an iterator of the selected features.
QLibrary * providerLibrary(const QString &providerKey) const
int snappedVertexNr
The vertex index of snappedVertex or -1 if no such vertex number (e.g.
#define Q_NOWARN_DEPRECATED_POP
const Key key(const T &value) const
bool isGeosEqual(const QgsGeometry &) const
Compares the geometry with another geometry using GEOS.
bool snapPoint(QgsPoint &point, double tolerance)
Snaps a point to the closest vertex if there is one within the snapping tolerance.
void setEditorWidgetV2(int attrIdx, const QString &widgetType)
Set the editor widget type for a field.
void addRequiredFields(QgsAttributeList &fields) const
add vector of required fields to existing list of fields
Q_DECL_DEPRECATED void setEditType(int idx, EditType edit)
Get edit type.
virtual void exportNamedStyle(QDomDocument &doc, QString &errorMsg)
Export the properties of this layer as named style in a QDomDocument.
bool updateFeature(QgsFeature &f)
Updates an existing feature.
void selectionChanged()
This signal is emitted when selection was changed.
bool insertVertex(double x, double y, QgsFeatureId atFeatureId, int beforeVertex)
Insert a new vertex before the given vertex number, in the given ring, item (first number is index 0)...
virtual bool render() override
Do the rendering (based on data stored in the class)
QString providerType() const
Return the provider type for this layer.
QString & replace(int position, int n, QChar after)
void featureBlendModeChanged(const QPainter::CompositionMode &blendMode)
Signal emitted when setFeatureBlendMode() is called.
bool hasGeometryType() const
Returns true if this is a geometry layer and false in case of NoGeometry (table only) or UnknownGeome...
QVariant value(const QString &key, const QVariant &defaultValue) const
void attributeAdded(int idx)
Will be emitted, when a new attribute has been added to this vector layer.
virtual long featureCount() const
Number of features in the layer.
Q_DECL_DEPRECATED QSize widgetSize(int idx)
Access widget size for photo and webview widget.
Contains information about the context of a rendering operation.
void setMaxScale(float theMaxScale)
Accessor and mutator for the maximum scale member.
int addRing(const QList< QgsPoint > &ring)
Adds a ring to polygon/multipolygon features.
Buffers information about expression fields for a vector layer.
QString getStyleById_t(const QString &uri, QString styleID, QString &errCause)
virtual QDomElement toDomElement(QDomDocument &doc) const =0
Is reimplemented in classes inheriting from this to serialize it.
virtual const QgsFields & fields() const =0
Return a map of indexes with field names for this layer.
void editCommandStarted(const QString &text)
Signal emitted when a new edit command has been started.
QString loadStyle_t(const QString &uri, QString &errCause)
static QgsMapLayerRegistry * instance()
Returns the instance pointer, creating the object on the first call.
QVariant attribute(const QString &name) const
Lookup attribute value from attribute name.
QgsAttributeList pendingAllAttributesList()
returns list of attributes
virtual QgsRectangle extent()=0
Get the extent of the layer.
bool remove(const T &value)
void setAnnotationForm(const QString &ui)
set annotation form for layer
QSet< T > & unite(const QSet< T > &other)
QString mDataSource
data source description string, varies by layer type
virtual QString loadDefaultStyle(bool &theResultFlag)
Retrieve the default style for this layer if one exists (either as a .qml file on disk or as a record...
void * resolve(const char *symbol)
static Q_DECL_DEPRECATED const QString convertEditType(QgsVectorLayer::EditType editType, QgsEditorWidgetConfig &cfg, QgsVectorLayer *vl, const QString &name, const QDomElement &editTypeElement=QDomElement())
void setSelectedFeatures(const QgsFeatureIds &ids)
Change selection to the new set of features.
void updateExpression(int index, const QString &exp)
Changes the expression at a given index.
void writeXml(QDomNode &layer_node, QDomDocument &document) const
Saves mVectorJoins to xml under the layer node.
This class manages a set of relations between layers.
static QgsFeatureRendererV2 * load(QDomElement &symbologyElem)
create a renderer from XML element
const QString & typeName() const
Gets the field type.
virtual bool setSubsetString(QString subset)
Set the string (typically sql) used to define a subset of the layer.
virtual void reloadData()
Reloads the data from the source.
void beforeModifiedCheck() const
Is emitted, when layer is checked for modifications.
virtual QVariant minimumValue(int index)
Returns the minimum value of an attribute.
void setEditForm(QString ui)
set edit form
Q_DECL_DEPRECATED RangeData range(int idx)
Access range widget config data.
virtual bool isValid()=0
Returns true if this is a valid layer.
float toFloat(bool *ok) const
bool moveVertex(double x, double y, QgsFeatureId atFeatureId, int atVertex)
Moves the vertex at the given position number, ring and item (first number is index 0)...
void updateFields(QgsFields &fields)
Updates field map with joined attributes.
void repaintRequested()
By emitting this signal the layer tells that either appearance or content have been changed and any v...
void committedAttributesAdded(const QString &layerId, const QList< QgsField > &addedAttributes)
void readXml(const QDomNode &layer_node)
Reads expressions from project file.
void attributeValueChanged(QgsFeatureId fid, int idx, const QVariant &)
static QgsProject * instance()
access to canonical QgsProject instance
QDomElement firstChildElement(const QString &tagName) const
QgsPoint snappedVertex
The coordinates of the snapping result.
QDomElement lastChildElement(const QString &tagName) const
Q_DECL_DEPRECATED void setCheckedState(int idx, QString checked, QString notChecked)
Set string representing 'true' for a checkbox.
void removeExpression(int index)
Remove an expression from the buffer.
Class for storing a coordinate reference system (CRS)
void writeXML(QDomElement &layerElem, QDomDocument &doc, const QgsVectorLayer *layer) const
int length() const
Gets the length of the field.
friend class QgsVectorLayerEditBuffer
int count(const T &value) const
QgsLabel * label()
Get the label object associated with this layer.
int size() const
Return number of items.
virtual QString description() const =0
return description
Q_DECL_DEPRECATED bool hasLabelsEnabled() const
Label is on.
QList< QgsAttributeEditorElement * > & attributeEditorElements()
Returns a list of tabs holding groups and fields.
virtual Q_DECL_DEPRECATED QDomElement writeSld(QDomDocument &doc, const QgsVectorLayer &layer) const
create the SLD UserStyle element following the SLD v1.1 specs
SimplifyHints simplifyHints() const
Gets the simplification hints of the vector layer managed.
const QgsGeometry * constGeometry() const
Gets a const pointer to the geometry object associated with this feature.
QList< T > values() const
QList< T > mid(int pos, int length) const
FieldOrigin fieldOrigin(int fieldIdx) const
Get field's origin (value from an enumeration)
virtual void readXML(const QDomElement &elem, const QgsVectorLayer *layer)=0
This is a container for attribute editors, used to group them visually in the attribute form if it is...
const QMap< QString, QgsMapLayer * > & mapLayers()
Retrieve the mapLayers collection (mainly intended for use by projection)
void recalculateExtents()
This is used to send a request that any mapcanvas using this layer update its extents.
virtual QDomElement toDomElement(QDomDocument &doc) const override
Will serialize this elements information into a QDomElement for saving it in an XML file...
const QString & comment() const
Returns the field comment.
void setFieldEditable(int idx, bool editable)
set edit widget editable
virtual bool deleteFeature(QgsFeatureId fid)
delete a feature from the layer (but does not commit it)
bool readSld(const QDomNode &node, QString &errorMessage) override
void dataChanged()
data of layer changed
static QColor colorFromOgcFill(const QDomElement &fillElement)
Parse XML with OGC fill into QColor.
virtual bool changeAttributeValue(QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue=QVariant())
changed an attribute value (but does not commit it)
Base class for utility classes that encapsulate information necessary for rendering of map layers...
void setLayerName(const QString &name)
Set the display name of the layer.
const QgsCoordinateReferenceSystem & crs() const
Returns layer's spatial reference system.
allows deletion of features
QgsMapLayer * mapLayer(QString theLayerId)
Retrieve a pointer to a loaded layer by id.
virtual QString loadNamedStyle(const QString &theURI, bool &theResultFlag)
Retrieve a named style for this layer if one exists (either as a .qml file on disk or as a record in ...
double toDouble(bool *ok) const
bool writeSymbology(QDomNode &node, QDomDocument &doc, QString &errorMessage) const override
Write the symbology for the layer into the docment provided.
virtual void addChildElement(QgsAttributeEditorElement *element)
Add a child element to this container.
iterator insert(const Key &key, const T &value)
void(*)() cast_to_fptr(void *p)
static QgsMapRenderer::BlendMode getBlendModeEnum(const QPainter::CompositionMode &blendMode)
Returns a BlendMode corresponding to a QPainter::CompositionMode.
QString dataComment() const
Returns a comment for the data in the layer.
void setMinScale(float theMinScale)
Accessor and mutator for the minimum scale member.
Custom exception class for Coordinate Reference System related exceptions.
QUndoStack * undoStack()
Return pointer to layer's undo stack.
const QgsFields & pendingFields() const
returns field list in the to-be-committed state
void setLabelOnTop(int idx, bool onTop)
label widget on top
QString metadata() override
Obtain Metadata for this layer.
QgsVectorDataProvider * dataProvider()
Returns the data provider.
int splitParts(const QList< QgsPoint > &splitLine, bool topologicalEditing=false)
Splits parts cut by the given line.
const_iterator constEnd() const
void normalize()
Normalize the rectangle so it has non-negative width/height.
QString editFormInit()
get python function for edit form initialization
float maximumScale() const
Gets the maximum scale at which the layer should be simplified.
QDomElement createElement(const QString &tagName)
bool nextFeature(QgsFeature &f)
FeatureFormSuppress
Types of feature form suppression after feature creation.
const_iterator constBegin() const
void setCoordinateSystem()
Setup the coordinate system transformation for the layer.
This is the base class for vector data providers.
bool labelsEnabled() const
Returns whether the layer contains labels which are enabled and should be drawn.
void attributeDeleted(int idx)
Will be emitted, when an attribute has been deleted from this vector layer.
Geometry is not required. It may still be returned if e.g. required for a filter condition.
virtual bool readXml(const QDomNode &layer_node) override
reads vector layer specific state from project file Dom node.
void setLegend(QgsMapLayerLegend *legend)
Assign a legend controller to the map layer.
QgsFeatureMap mAddedFeatures
New features which are not commited.
double width() const
Width of the rectangle.
void committedGeometriesChanges(const QString &layerId, const QgsGeometryMap &changedGeometries)
const QList< ExpressionField > & expressions() const
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QgsFeatureIds allFeatureIds()
Get all feature Ids.
QgsAttributeList pendingPkAttributesList()
returns list of attribute making up the primary key
static QgsFeatureRendererV2 * readOldRenderer(const QDomNode &layerNode, QGis::GeometryType geomType)
Read old renderer definition from XML and create matching new renderer.
void updateFields(QgsFields &fields)
virtual QgsRectangle extent()
Return the extent of the layer.
Represents a vector layer which manages a vector based data sets.
int fieldNameIndex(const QString &fieldName) const
Returns the index of a field name or -1 if the field does not exist.
bool addAttribute(const QgsField &field)
add an attribute field (but does not commit it) returns true if the field was added ...
virtual bool isModified() const
Returns true if the provider has been modified since the last commit.
QString toString(bool automaticPrecision=false) const
returns string representation of form xmin,ymin xmax,ymax
int splitParts(const QList< QgsPoint > &splitLine, bool topologicalEditing=false)
Splits parts cut by the given line.
void modifySelection(QgsFeatureIds selectIds, QgsFeatureIds deselectIds)
Modifies the current selection on this layer.
field is calculated from an expression
int selectedFeatureCount()
The number of features that are selected in this layer.
void updatedFields()
Is emitted, whenever the fields available from this layer have been changed.
QgsFeatureRequest & setFlags(Flags flags)
Set flags that affect how features will be fetched.
QgsRelationManager * relationManager() const
QString arg(qlonglong a, int fieldWidth, int base, const QChar &fillChar) const
double xMinimum() const
Get the x minimum value (left side of rectangle)
void updateExpressionField(int index, const QString &exp)
Changes the expression used to define an expression based (virtual) field.
const QgsVectorLayer * layer
Layer where the snap occured.
QString joinLayerId
Source layer.
void layerModified()
This signal is emitted when modifications has been done on layer.
QgsAttributeList mDeletedAttributeIds
deleted attributes fields which are not commited.
QgsAttributeList allAttributesList() const
Utility function to get list of attribute indexes.
Q_DECL_DEPRECATED void drawLabels(QgsRenderContext &rendererContext) override
Draws the layer labels using the old labeling engine.
QgsPoint vertexAt(int atVertex) const
Returns coordinates of a vertex.
bool readXML(const QDomNode &layer_node)
Reads the actions in in XML format.
virtual bool changeGeometry(QgsFeatureId fid, QgsGeometry *geom)
change feature's geometry
int beforeVertexNr
The index of the vertex before snappedVertex or -1 if no such vertex.
void createJoinCaches()
Caches joined attributes if required (and not already done)
virtual void exportSldStyle(QDomDocument &doc, QString &errorMsg)
Export the properties of this layer as SLD style in a QDomDocument.
virtual QString dataSourceUri() const
Get the data source specification.
int splitFeatures(const QList< QgsPoint > &splitLine, bool topologicalEditing=false)
Splits features cut by the given line.
void setDisplayField(QString fldName="")
Set the primary display field to be used in the identify results dialog.
virtual QList< QgsAttributeEditorElement * > findElements(AttributeEditorType type) const
Traverses the element tree to find any element of the specified type.
double height() const
Height of the rectangle.
bool setContent(const QByteArray &data, bool namespaceProcessing, QString *errorMsg, int *errorLine, int *errorColumn)
QDomNode at(int index) const
QString toProj4() const
Get the Proj Proj4 string representation of this srs.
const T value(const Key &key) const
Q_DECL_DEPRECATED void enableLabels(bool on)
Set labels on.
int remove(const Key &key)
void setThreshold(float threshold)
Sets the simplification threshold of the vector layer managed.
void addAttributeEditorWidget(QgsAttributeEditorElement *data)
Adds a tab (for the attribute editor form) holding groups and fields.
QgsRectangle boundingBoxOfSelected()
Returns the bounding box of the selected features.
bool saveStyle_t(const QString &uri, const QString &qmlStyle, const QString &sldStyle, const QString &styleName, const QString &styleDescription, const QString &uiFileContent, bool useAsDefault, QString &errCause)
QString storageType() const
Returns the permanent storage type for this layer as a friendly name.
int listStyles_t(const QString &uri, QStringList &ids, QStringList &names, QStringList &descriptions, QString &errCause)
QByteArray toUtf8() const