X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Feature.h;h=71bd251d8802d78f6717193f34659fa367ddac7a;hb=38dd97c8f7a3605ec6c362c3aefdefa3ee2675be;hp=72d58660dadb2ccbd6cfca172c189d0e70afa59a;hpb=5ee0ac732ede71b1a7784be6870c5f21f6782565;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Feature.h b/src/ModelAPI/ModelAPI_Feature.h index 72d58660d..71bd251d8 100644 --- a/src/ModelAPI/ModelAPI_Feature.h +++ b/src/ModelAPI/ModelAPI_Feature.h @@ -28,6 +28,9 @@ class ModelAPI_Feature : public ModelAPI_Object 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; @@ -60,9 +63,9 @@ class ModelAPI_Feature : public ModelAPI_Object virtual bool compute(const std::string& theAttributeId) { return false; }; /// Registers error during the execution, causes the ExecutionFailed state - virtual void setError(const std::string& theError, bool isSend = true) { - data()->setError(theError, isSend); - } + MODELAPI_EXPORT virtual void setError(const std::string& theError, + bool isSend = true, + bool isTranslate = true); /// Returns error, arose during the execution virtual std::string error() const { @@ -72,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 @@ -82,12 +85,17 @@ class ModelAPI_Feature : public ModelAPI_Object const int theIndex); /// 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); + /// removes all results starting from the given index (zero-based) + /// \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. @@ -119,7 +127,7 @@ class ModelAPI_Feature : public ModelAPI_Object MODELAPI_EXPORT virtual bool setDisabled(const bool theFlag); /// Returns the feature is disabled or not. - MODELAPI_EXPORT virtual bool isDisabled() const; + MODELAPI_EXPORT virtual bool isDisabled(); /// To virtually destroy the fields of successors MODELAPI_EXPORT virtual ~ModelAPI_Feature(); @@ -127,6 +135,18 @@ 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(); + + /// Performs some custom feature specific functionality (normally called by some GUI button) + /// \param theActionId an action key + /// \return a boolean value about it is performed + MODELAPI_EXPORT virtual bool customAction(const std::string& theActionId); + // // Helper methods, aliases for data()->method() // ----------------------------------------------------------------------------------------------- @@ -155,6 +175,11 @@ class ModelAPI_Feature : public ModelAPI_Object { return data()->integer(theID); } + /// Returns the integer array attribute by the identifier + inline std::shared_ptr intArray(const std::string& theID) + { + return data()->intArray(theID); + } /// Returns the reference attribute by the identifier inline std::shared_ptr refattr(const std::string& theID) { @@ -185,12 +210,28 @@ class ModelAPI_Feature : public ModelAPI_Object { return data()->string(theID); } + /// Returns the string array attribute by the identifier + inline std::shared_ptr stringArray(const std::string& theID) + { + return data()->stringArray(theID); + } + /// Returns the tables attribute by the identifier + inline std::shared_ptr tables(const std::string& theID) + { + return data()->tables(theID); + } /// Returns the attribute by the identifier inline std::shared_ptr attribute(const std::string& theID) { 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