X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FModelAPI%2FModelAPI_Feature.h;h=1e44a2b9e434929e175269311d3a50c5b16c3210;hb=a55586483e5dccc5466d6ec241e2147e210d839f;hp=6cc9c8b50a5561ad1f0dbea3adb6648bb2fb22a0;hpb=06e20572d1a07d66dc7f906b5306e6174dad27ba;p=modules%2Fshaper.git diff --git a/src/ModelAPI/ModelAPI_Feature.h b/src/ModelAPI/ModelAPI_Feature.h index 6cc9c8b50..1e44a2b9e 100644 --- a/src/ModelAPI/ModelAPI_Feature.h +++ b/src/ModelAPI/ModelAPI_Feature.h @@ -1,8 +1,22 @@ -// Copyright (C) 2014-20xx CEA/DEN, EDF R&D - -// File: ModelAPI_Feature.hxx -// Created: 21 Mar 2014 -// Author: Mikhail PONIKAROV +// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// +// See http://www.salome-platform.org/ or +// email : webmaster.salome@opencascade.com +// #ifndef ModelAPI_Feature_H_ #define ModelAPI_Feature_H_ @@ -28,6 +42,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 +77,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 { @@ -84,10 +101,12 @@ class ModelAPI_Feature : public ModelAPI_Object MODELAPI_EXPORT void removeResult(const std::shared_ptr& theResult); /// 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 theForever - removes results for long period (not just because of feature disabling) /// \param theFlush - if it is false, REDISPLAY message is not flushed - MODELAPI_EXPORT void removeResults(const int theSinceIndex, const bool theFlush = true); + MODELAPI_EXPORT void removeResults(const int theSinceIndex, + const bool theForever = true, const bool theFlush = true); /// removes all results from the feature - MODELAPI_EXPORT void eraseResults(); + MODELAPI_EXPORT void eraseResults(const bool theForever = true); /// 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 @@ -132,6 +151,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() // ----------------------------------------------------------------------------------------------- @@ -160,6 +191,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) { @@ -190,6 +226,16 @@ 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) {