X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Feature.h;h=6d7955f4b1dee713b9149faa581656770c1f5155;hb=7f5d3b6de3d879b6a11389c06a6f183b2fa5a1b2;hp=8c1a82e75e2a3a22380065e42dab13463cba0662;hpb=9fb117423f35d7271d96badbe4b8ec320641bc6e;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Feature.h b/src/ModelAPI/ModelAPI_Feature.h index 8c1a82e75..6d7955f4b 100644 --- a/src/ModelAPI/ModelAPI_Feature.h +++ b/src/ModelAPI/ModelAPI_Feature.h @@ -22,6 +22,7 @@ class ModelAPI_Document; class ModelAPI_Feature { boost::shared_ptr myData; ///< manager of the data model of a feature + boost::shared_ptr myDoc; ///< document this feature belongs to public: /// Returns the kind of a feature (like "Point") @@ -36,6 +37,13 @@ public: /// Computes or recomputes the result MODELAPI_EXPORT virtual void execute() = 0; + /// Returns true if this feature must be displayed in the history (top level of Part tree) + MODELAPI_EXPORT virtual bool isInHistory() {return true;} + + /// Returns true if this feature must not be created: this is just an action + /// that is not stored in the features history (like delete part). + MODELAPI_EXPORT virtual bool isAction() {return false;} + /// Returns the data manager of this feature MODELAPI_EXPORT virtual boost::shared_ptr data() {return myData;} @@ -44,6 +52,14 @@ public: MODELAPI_EXPORT virtual boost::shared_ptr documentToAdd() {return ModelAPI_PluginManager::get()->currentDocument();} + /// Returns document this feature belongs to + MODELAPI_EXPORT virtual boost::shared_ptr document() + {return myDoc;} + + /// Returns true if feature refers to the same model data instance + MODELAPI_EXPORT virtual bool isSame(const boost::shared_ptr& theFeature) + {return theFeature.get() == this;} + /// To virtually destroy the fields of successors virtual ~ModelAPI_Feature() {} @@ -54,8 +70,16 @@ protected: {} /// Sets the data manager of an object (document does) - MODELAPI_EXPORT void setData(boost::shared_ptr theData) {myData = theData;} + MODELAPI_EXPORT virtual void setData(boost::shared_ptr theData) + {myData = theData;} + /// Sets the data manager of an object (document does) + MODELAPI_EXPORT void setDoc(boost::shared_ptr theDoc) {myDoc = theDoc;} + friend class Model_Document; }; +//! Pointer on feature object +typedef boost::shared_ptr FeaturePtr; + + #endif