#ifndef IEDITPROPERTYCOMMAND_H #define IEDITPROPERTYCOMMAND_H #include "IUndoCommand.h" #include "EUndoCommand.h" #include "Editor/PropertyEdit/CPropertyModel.h" class IEditPropertyCommand : public IUndoCommand { protected: // Has to be std::vector for compatibility with CVectorOutStream std::vector mOldData; std::vector mNewData; IPropertyNew* mpProperty; bool mCommandEnded; bool mSavedOldData; bool mSavedNewData; /** Save the current state of the object properties to the given data buffer */ void SaveObjectStateToArray(std::vector& rVector); /** Restore the state of the object properties from the given data buffer */ void RestoreObjectStateFromArray(std::vector& rArray); public: IEditPropertyCommand( IPropertyNew* pProperty, const QString& rkCommandName = "Edit Property" ); virtual void SaveOldData(); virtual void SaveNewData(); bool IsNewDataDifferent(); void SetEditComplete(bool IsComplete); /** Interface */ virtual void GetObjectDataPointers(QVector& rOutPointers) const = 0; /** IUndoCommand/QUndoCommand interface */ int id() const; bool mergeWith(const QUndoCommand *pkOther); void undo(); void redo(); bool AffectsCleanState() const; }; #endif // IEDITPROPERTYCOMMAND_H