X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Feature.h;h=6d7955f4b1dee713b9149faa581656770c1f5155;hb=7f5d3b6de3d879b6a11389c06a6f183b2fa5a1b2;hp=ffa5448c4a899f614c2ca3cb28d863f503f7bcac;hpb=263d0f7bef75e1979c33f0d5a3d3fbc3b71d76a1;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Feature.h b/src/ModelAPI/ModelAPI_Feature.h index ffa5448c4..6d7955f4b 100644 --- a/src/ModelAPI/ModelAPI_Feature.h +++ b/src/ModelAPI/ModelAPI_Feature.h @@ -6,27 +6,80 @@ #define ModelAPI_Feature_HeaderFile #include "ModelAPI.h" +#include "ModelAPI_PluginManager.h" + #include +#include -class ModelAPI_Feature; +class ModelAPI_Data; +class ModelAPI_Document; /**\class ModelAPI_Feature * \ingroup DataModel - * \brief General object of the application that allows - * to get/set attributes from the document and compute result of an operation. + * \brief Functionality of the model object: to update result, + * to initialize attributes, etc. */ - -class MODELAPI_EXPORT ModelAPI_Feature +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") - virtual std::string GetKind() = 0; + MODELAPI_EXPORT virtual const std::string& getKind() = 0; + + /// Returns to which group in the document must be added feature + MODELAPI_EXPORT virtual const std::string& getGroup() = 0; + + /// Request for initialization of data model of the feature: adding all attributes + MODELAPI_EXPORT virtual void initAttributes() = 0; + + /// 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;} + /// Must return document where the new feature must be added to + /// By default it is current document + 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() {} + +protected: /// Use plugin manager for features creation: this method is /// defined here only for SWIG-wrapping ModelAPI_Feature() - { - } + {} + + /// Sets the data manager of an object (document does) + 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