Quantum GIS API Documentation
1.7.4
|
00001 00002 #ifndef QGSVECTORLAYERUNDOCOMMAND_H 00003 #define QGSVECTORLAYERUNDOCOMMAND_H 00004 00005 #include <QUndoCommand> 00006 00007 #include <QVariant> 00008 #include <QSet> 00009 #include <QList> 00010 00011 #include "qgsfield.h" 00012 #include "qgsfeature.h" 00013 00014 class QgsGeometry; 00015 class QgsVectorLayer; 00016 00017 00018 // TODO: copied from qgsvectorlayer.h 00019 typedef QList<int> QgsAttributeList; 00020 typedef QSet<int> QgsFeatureIds; 00021 typedef QSet<int> QgsAttributeIds; 00022 00023 00024 00028 class QgsUndoCommand : public QUndoCommand 00029 { 00030 public: 00031 00033 class AttributeChangeEntry 00034 { 00035 public: 00036 bool isFirstChange; 00037 QVariant original; 00038 QVariant target; 00039 }; 00040 00041 typedef QMap<int, AttributeChangeEntry> AttributeChanges; 00042 00044 class GeometryChangeEntry 00045 { 00046 public: 00047 GeometryChangeEntry(); 00048 ~GeometryChangeEntry(); 00049 00050 void setOriginalGeometry( QgsGeometry& orig ); 00051 void setTargetGeometry( QgsGeometry& target ); 00052 00053 QgsGeometry* original; 00054 QgsGeometry* target; 00055 }; 00056 00057 00058 QgsUndoCommand( QgsVectorLayer* layer, QString text ); 00059 00063 void undo(); 00064 00068 void redo(); 00069 00076 void storeGeometryChange( int featureId, QgsGeometry& original, QgsGeometry& target ); 00077 00086 void storeAttributeChange( int featureId, int field, QVariant original, QVariant target, bool isFirstChange ); 00087 00092 void storeFeatureDelete( int featureId ); 00093 00098 void storeFeatureAdd( QgsFeature& feature ); 00099 00105 void storeAttributeAdd( int index, const QgsField & value ); 00106 00112 void storeAttributeDelete( int index, const QgsField & orig ); 00113 00114 private: 00116 bool mFirstRun; 00117 00119 QgsVectorLayer* mLayer; 00120 00122 QMap<int, GeometryChangeEntry> mGeometryChange; 00123 00125 QMap<int, AttributeChanges> mAttributeChange; 00126 00131 QgsFeatureIds mDeletedFeatureIdChange; 00132 00134 QgsFieldMap mAddedAttributes; 00135 00137 QgsFieldMap mDeletedAttributes; 00138 00142 QgsFeatureList mAddedFeatures; 00143 00144 friend class QgsVectorLayer; 00145 }; 00146 00147 #endif