QGIS API Documentation  master-6227475
QgsVectorLayerEditBuffer Class Reference

#include <qgsvectorlayereditbuffer.h>

+ Collaboration diagram for QgsVectorLayerEditBuffer:

List of all members.

Signals

void attributeAdded (int idx)
void attributeDeleted (int idx)
void attributeValueChanged (QgsFeatureId fid, int idx, const QVariant &)
void committedAttributesAdded (const QString &layerId, const QList< QgsField > &addedAttributes)
void committedAttributesDeleted (const QString &layerId, const QgsAttributeList &deletedAttributes)
 Signals emitted after committing changes.
void committedAttributeValuesChanges (const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues)
void committedFeaturesAdded (const QString &layerId, const QgsFeatureList &addedFeatures)
void committedFeaturesRemoved (const QString &layerId, const QgsFeatureIds &deletedFeatureIds)
void committedGeometriesChanges (const QString &layerId, const QgsGeometryMap &changedGeometries)
void featureAdded (QgsFeatureId fid)
void featureDeleted (QgsFeatureId fid)
void geometryChanged (QgsFeatureId fid, QgsGeometry &geom)
void layerModified ()
 This signal is emitted when modifications has been done on layer.

Public Member Functions

 QgsVectorLayerEditBuffer (QgsVectorLayer *layer)
 ~QgsVectorLayerEditBuffer ()
bool addAttribute (const QgsField &field)
 add an attribute field (but does not commit it) returns true if the field was added
const QList< QgsField > & addedAttributes ()
 added attributes fields which are not commited
const QgsFeatureMapaddedFeatures ()
 New features which are not commited.
bool addFeature (QgsFeature &f)
 Adds a feature.
bool addFeatures (QgsFeatureList &features)
 Insert a copy of the given features into the layer (but does not commit it)
bool changeAttributeValue (QgsFeatureId fid, int field, QVariant value)
 changed an attribute value (but does not commit it)
const QgsChangedAttributesMapchangedAttributeValues ()
 Changed attributes values which are not commited.
const QgsGeometryMapchangedGeometries ()
 Changed geometries which are not commited.
bool changeGeometry (QgsFeatureId fid, QgsGeometry *geom)
 change feature's geometry
bool commitChanges (QStringList &commitErrors)
 Attempts to commit any changes to disk.
bool deleteAttribute (int attr)
 delete an attribute field (but does not commit it)
const QgsAttributeListdeletedAttributeIds ()
 deleted attributes fields which are not commited.
bool deleteFeature (QgsFeatureId fid)
 delete a feature from the layer (but does not commit it)
bool isModified () const
 Returns true if the provider has been modified since the last commit.
void rollBack ()
 Stop editing and discard the edits.

Protected Slots

void undoIndexChanged (int index)

Protected Member Functions

void handleAttributeAdded (int index)
 update added and changed features after addition of an attribute
void handleAttributeDeleted (int index)
 update added and changed features after removal of an attribute
void updateAttributeMapIndex (QgsAttributeMap &attrs, int index, int offset) const
 Updates an index in an attribute map to a new value (for updates of changed attributes)
void updateChangedAttributes (QgsFeature &f)
 Update feature with uncommited attribute updates.
void updateFeatureGeometry (QgsFeature &f)
 Update feature with uncommited geometry updates.
void updateFields (QgsFields &fields)
void updateLayerFields ()

Protected Attributes

QgsVectorLayerL
QList< QgsFieldmAddedAttributes
 added attributes fields which are not commited
QgsFeatureMap mAddedFeatures
 New features which are not commited.
QgsChangedAttributesMap mChangedAttributeValues
 Changed attributes values which are not commited.
QgsGeometryMap mChangedGeometries
 Changed geometries which are not commited.
QgsAttributeList mDeletedAttributeIds
 deleted attributes fields which are not commited.
QgsFeatureIds mDeletedFeatureIds
 Deleted feature IDs which are not commited.

Friends

class QgsVectorLayer
class QgsVectorLayerFeatureIterator
class QgsVectorLayerUndoCommand
class QgsVectorLayerUndoCommandAddAttribute
class QgsVectorLayerUndoCommandAddFeature
class QgsVectorLayerUndoCommandChangeAttribute
class QgsVectorLayerUndoCommandChangeGeometry
class QgsVectorLayerUndoCommandDeleteAttribute
class QgsVectorLayerUndoCommandDeleteFeature

Detailed Description

Definition at line 33 of file qgsvectorlayereditbuffer.h.


Constructor & Destructor Documentation


Member Function Documentation

added attributes fields which are not commited

Definition at line 104 of file qgsvectorlayereditbuffer.h.

New features which are not commited.

Definition at line 95 of file qgsvectorlayereditbuffer.h.

Referenced by QgsFeatureListModel::data(), and QgsAttributeTableFilterModel::filterAcceptsRow().

Changed attributes values which are not commited.

Definition at line 98 of file qgsvectorlayereditbuffer.h.

Referenced by QgsFeatureListModel::data(), and QgsAttributeTableFilterModel::filterAcceptsRow().

Changed geometries which are not commited.

Definition at line 107 of file qgsvectorlayereditbuffer.h.

bool QgsVectorLayerEditBuffer::commitChanges ( QStringList &  commitErrors)

Attempts to commit any changes to disk.

Returns the result of the attempt. If a commit fails, the in-memory changes are left alone.

This allows editing to continue if the commit failed on e.g. a disallowed value in a Postgres database - the user can re-edit and try again.

The commits occur in distinct stages, (add attributes, add features, change attribute values, change geometries, delete features, delete attributes) so if a stage fails, it's difficult to roll back cleanly. Therefore any error message also includes which stage failed so that the user has some chance of repairing the damage cleanly.

Definition at line 240 of file qgsvectorlayereditbuffer.cpp.

References QgsVectorDataProvider::AddAttributes, QgsVectorDataProvider::addAttributes(), QgsVectorDataProvider::AddFeatures, QgsVectorDataProvider::addFeatures(), QgsVectorDataProvider::capabilities(), QgsVectorDataProvider::ChangeAttributeValues, QgsVectorDataProvider::changeAttributeValues(), QgsVectorDataProvider::ChangeGeometries, QgsVectorDataProvider::changeGeometryValues(), QgsVectorDataProvider::clearErrors(), committedAttributesAdded(), committedAttributesDeleted(), committedAttributeValuesChanges(), committedFeaturesAdded(), committedFeaturesRemoved(), committedGeometriesChanges(), QgsFields::count(), QgsVectorLayer::dataProvider(), QgsVectorDataProvider::DeleteAttributes, QgsVectorDataProvider::deleteAttributes(), QgsVectorDataProvider::DeleteFeatures, QgsVectorDataProvider::deleteFeatures(), QgsVectorDataProvider::errors(), featureAdded(), featureDeleted(), QgsVectorDataProvider::hasErrors(), QgsMapLayer::id(), L, mAddedAttributes, mAddedFeatures, mChangedAttributeValues, mChangedGeometries, mDeletedAttributeIds, mDeletedFeatureIds, QgsVectorLayer::pendingFields(), tr, and QgsVectorLayer::updateFields().

Referenced by QgsVectorLayer::commitChanges().

void QgsVectorLayerEditBuffer::committedAttributesAdded ( const QString &  layerId,
const QList< QgsField > &  addedAttributes 
) [signal]

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedAttributesDeleted ( const QString &  layerId,
const QgsAttributeList deletedAttributes 
) [signal]

Signals emitted after committing changes.

Note:
added in v1.6

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedAttributeValuesChanges ( const QString &  layerId,
const QgsChangedAttributesMap changedAttributesValues 
) [signal]

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedFeaturesAdded ( const QString &  layerId,
const QgsFeatureList addedFeatures 
) [signal]

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedFeaturesRemoved ( const QString &  layerId,
const QgsFeatureIds deletedFeatureIds 
) [signal]

Referenced by commitChanges().

void QgsVectorLayerEditBuffer::committedGeometriesChanges ( const QString &  layerId,
const QgsGeometryMap changedGeometries 
) [signal]

Referenced by commitChanges().

deleted attributes fields which are not commited.

The list is kept sorted.

Definition at line 101 of file qgsvectorlayereditbuffer.h.

void QgsVectorLayerEditBuffer::handleAttributeAdded ( int  index) [protected]

update added and changed features after addition of an attribute

Definition at line 481 of file qgsvectorlayereditbuffer.cpp.

References mAddedFeatures, mChangedAttributeValues, and updateAttributeMapIndex().

Referenced by QgsVectorLayerUndoCommandAddAttribute::redo(), and QgsVectorLayerUndoCommandDeleteAttribute::undo().

void QgsVectorLayerEditBuffer::handleAttributeDeleted ( int  index) [protected]

update added and changed features after removal of an attribute

Definition at line 498 of file qgsvectorlayereditbuffer.cpp.

References mAddedFeatures, mChangedAttributeValues, and updateAttributeMapIndex().

Referenced by QgsVectorLayerUndoCommandDeleteAttribute::redo(), and QgsVectorLayerUndoCommandAddAttribute::undo().

Returns true if the provider has been modified since the last commit.

Definition at line 35 of file qgsvectorlayereditbuffer.cpp.

References L, and QgsMapLayer::undoStack().

Referenced by QgsVectorLayer::isModified(), and rollBack().

This signal is emitted when modifications has been done on layer.

Referenced by undoIndexChanged().

void QgsVectorLayerEditBuffer::undoIndexChanged ( int  index) [protected, slot]

Definition at line 41 of file qgsvectorlayereditbuffer.cpp.

References layerModified().

Referenced by QgsVectorLayerEditBuffer().

void QgsVectorLayerEditBuffer::updateAttributeMapIndex ( QgsAttributeMap attrs,
int  index,
int  offset 
) const [protected]

Updates an index in an attribute map to a new value (for updates of changed attributes)

Definition at line 523 of file qgsvectorlayereditbuffer.cpp.

Referenced by handleAttributeAdded(), and handleAttributeDeleted().

Update feature with uncommited geometry updates.

Definition at line 64 of file qgsvectorlayereditbuffer.cpp.

References QgsFeature::id(), mChangedGeometries, and QgsFeature::setGeometry().

Referenced by QgsVectorLayerFeatureIterator::nextFeature().


Friends And Related Function Documentation

friend class QgsVectorLayer [friend]

Definition at line 159 of file qgsvectorlayereditbuffer.h.

friend class QgsVectorLayerFeatureIterator [friend]

Definition at line 160 of file qgsvectorlayereditbuffer.h.

friend class QgsVectorLayerUndoCommand [friend]

Definition at line 162 of file qgsvectorlayereditbuffer.h.

Definition at line 167 of file qgsvectorlayereditbuffer.h.

Referenced by addAttribute().

friend class QgsVectorLayerUndoCommandAddFeature [friend]

Definition at line 163 of file qgsvectorlayereditbuffer.h.

Referenced by addFeature().

Definition at line 166 of file qgsvectorlayereditbuffer.h.

Referenced by changeAttributeValue().

Definition at line 165 of file qgsvectorlayereditbuffer.h.

Referenced by changeGeometry().

Definition at line 168 of file qgsvectorlayereditbuffer.h.

Referenced by deleteAttribute().

Definition at line 164 of file qgsvectorlayereditbuffer.h.

Referenced by deleteFeature().


Member Data Documentation

Deleted feature IDs which are not commited.

Note a feature can be added and then deleted again before the change is committed - in that case the added feature would be removed from mAddedFeatures only and *not* entered here.

Definition at line 174 of file qgsvectorlayereditbuffer.h.

Referenced by commitChanges(), deleteFeature(), QgsVectorLayer::extent(), QgsVectorLayer::maximumValue(), QgsVectorLayer::minimumValue(), QgsVectorLayerFeatureIterator::nextFeatureFid(), QgsVectorLayer::pendingFeatureCount(), QgsVectorLayerUndoCommandDeleteFeature::redo(), QgsVectorLayerFeatureIterator::rewindEditBuffer(), QgsVectorLayerUndoCommandDeleteFeature::undo(), and QgsVectorLayer::uniqueValues().


The documentation for this class was generated from the following files:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines