X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Feature.h;h=af55636cb58e7b573d2f5cf1235e16d5bff53f22;hb=34afe547352180006fee9600173c4dc93dc1f6c3;hp=b80583544021bd7afc1f74b9129df94f246166f5;hpb=df901d4270af49bacb374dcb862596e2f88b0c0f;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Feature.h b/src/ModelAPI/ModelAPI_Feature.h index b80583544..af55636cb 100644 --- a/src/ModelAPI/ModelAPI_Feature.h +++ b/src/ModelAPI/ModelAPI_Feature.h @@ -26,6 +26,11 @@ class ModelAPI_Feature : public ModelAPI_Object { ///< list of current results of this feature std::list > myResults; + ///< is feature disabled or not + bool myIsDisabled; + ///< is feature is stable (not editing) + bool myIsStable; + public: /// Returns the unique kind of a feature (like "Point") virtual const std::string& getKind() = 0; @@ -70,7 +75,7 @@ class ModelAPI_Feature : public ModelAPI_Object /// returns the current results of the feature MODELAPI_EXPORT const std::list >& results(); /// returns the first result in the list or NULL reference - MODELAPI_EXPORT std::shared_ptr firstResult(); + MODELAPI_EXPORT std::shared_ptr firstResult() const; /// returns the last result in the list or NULL reference MODELAPI_EXPORT std::shared_ptr lastResult(); /// sets the alone result @@ -81,11 +86,16 @@ class ModelAPI_Feature : public ModelAPI_Object /// removes the result from the feature MODELAPI_EXPORT void removeResult(const std::shared_ptr& theResult); /// removes all results starting from the gived index (zero-based) - MODELAPI_EXPORT void removeResults(const int theSinceIndex); + /// \param theSinceIndex - index of the deleted result and all after also will be deleted + /// \param theFlush - if it is false, REDISPLAY message is not flushed + MODELAPI_EXPORT void removeResults(const int theSinceIndex, const bool theFlush = true); /// removes all results from the feature MODELAPI_EXPORT void eraseResults(); /// removes all fields from this feature: results, data, etc MODELAPI_EXPORT virtual void erase(); + /// removes the result from the list of feature (not doing in disabled): normally this + /// method is not used from features. only internally + MODELAPI_EXPORT void eraseResultFromList(const std::shared_ptr& theResult); /// Returns true if result is persistent (stored in document) and on undo-redo, save-open /// it is not needed to recompute it. @@ -98,9 +108,26 @@ class ModelAPI_Feature : public ModelAPI_Object return false; } + /// Returns true if this feature is used as macro: creates other features and then removed. + /// \returns false by default + MODELAPI_EXPORT virtual bool isMacro() const; + + /// Returns true if preview update during the edition needed. Otherwise the update-mechanism + /// calls the \a execute function only on "apply" of the operation + /// \returns true by default + MODELAPI_EXPORT virtual bool isPreviewNeeded() const; + /// Must return document where the new feature must be added to - /// By default it is null document: it is added to the document this method is called to - MODELAPI_EXPORT virtual std::shared_ptr documentToAdd(); + /// By default it is empty: it is added to the document this method is called to + MODELAPI_EXPORT virtual const std::string& documentToAdd(); + + /// Enables/disables the feature. The disabled feature has no results and does not participate in + /// any calculation. + /// \returns true if state is really changed + MODELAPI_EXPORT virtual bool setDisabled(const bool theFlag); + + /// Returns the feature is disabled or not. + MODELAPI_EXPORT virtual bool isDisabled(); /// To virtually destroy the fields of successors MODELAPI_EXPORT virtual ~ModelAPI_Feature(); @@ -108,6 +135,13 @@ class ModelAPI_Feature : public ModelAPI_Object /// Returns the feature by the object (result). MODELAPI_EXPORT static std::shared_ptr feature(ObjectPtr theObject); + /// Set the stable feature flag. If feature is currently editing then it is not stable. + /// \returns true if state is really changed + MODELAPI_EXPORT virtual bool setStable(const bool theFlag); + + /// Returns the feature is stable or not. + MODELAPI_EXPORT virtual bool isStable(); + // // Helper methods, aliases for data()->method() // ----------------------------------------------------------------------------------------------- @@ -171,7 +205,13 @@ class ModelAPI_Feature : public ModelAPI_Object { return data()->attribute(theID); } - // ----------------------------------------------------------------------------------------------- + protected: + /// This method is called just after creation of the object: it must initialize + /// all fields, normally initialized in the constructor + MODELAPI_EXPORT virtual void init(); + + friend class Model_Document; + friend class Model_Objects; }; //! Pointer on feature object