Salome HOME
Update copyrights
[modules/shaper.git] / src / ParametersPlugin / ParametersPlugin_Parameter.h
index c348d0f733d257d7bb1820e2a167b668cd769249..649e46d2598f6056db45f31c84141f8a919c2254 100644 (file)
@@ -1,8 +1,21 @@
-// Copyright (C) 2014-20xx CEA/DEN, EDF R&D -->
-
-// File:        ParametersPlugin_Parameter.h
-// Created:     23 MArch 2015
-// Author:      sbh
+// Copyright (C) 2014-2019  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 PARAMETERSPLUGIN_PARAMETER_H_
 #define PARAMETERSPLUGIN_PARAMETER_H_
 
 #include <memory>
 
-class ParametersPlugin_PyInterp;
-
+/**
+ * \class ParametersPlugin_Parameter
+ * \ingroup Plugins
+ * \brief Feature for parameter.
+ */
 class ParametersPlugin_Parameter : public ModelAPI_Feature
 {
  public:
   virtual ~ParametersPlugin_Parameter();
 
-  /// Extrusion kind
+  /// Feature kind
   inline static const std::string& ID()
   {
     static const std::string MY_PARAMETER_ID("Parameter");
     return MY_PARAMETER_ID;
   }
-  /// attribute name of references sketch entities list, it should contain a sketch result or
-  /// a pair a sketch result to sketch face
+  /// attribute of parameter name
   inline static const std::string& VARIABLE_ID()
   {
     static const std::string MY_VARIABLE_ID("variable");
     return MY_VARIABLE_ID;
   }
-
-  /// attribute name of extrusion size
+  /// attribute of parameter expression
   inline static const std::string& EXPRESSION_ID()
   {
     static const std::string MY_EXPRESSION_ID("expression");
     return MY_EXPRESSION_ID;
   }
-
+  /// attribute of parameter expression error
+  inline static const std::string& EXPRESSION_ERROR_ID()
+  {
+    static const std::string MY_EXPRESSION_ERROR_ID("ExpressionError");
+    return MY_EXPRESSION_ERROR_ID;
+  }
   /// list of references to the arguments of this expression
   inline static const std::string& ARGUMENTS_ID()
   {
-    static const std::string MY_VARIABLE_ID("arguments");
-    return MY_VARIABLE_ID;
+    static const std::string MY_ARGUMENTS_ID("arguments");
+    return MY_ARGUMENTS_ID;
+  }
+
+  /// return comment attribute Id
+  inline static const std::string& COMMENT_ID()
+  {
+    static const std::string MY_COMMENT_ID("comment");
+    return MY_COMMENT_ID;
   }
 
   /// Returns the kind of a feature
@@ -57,24 +83,28 @@ class ParametersPlugin_Parameter : public ModelAPI_Feature
   /// Pre-execution is not needed for parameter
   PARAMETERSPLUGIN_EXPORT virtual bool isPreviewNeeded() const;
 
-  /// Creates a new part document if needed
+  /// Creates a parameter in document
   PARAMETERSPLUGIN_EXPORT virtual void execute();
 
   /// Request for initialization of data model of the feature: adding all attributes
   PARAMETERSPLUGIN_EXPORT virtual void initAttributes();
 
-  PARAMETERSPLUGIN_EXPORT virtual bool isInHistory(); //false
+  /// Reimplemented from ModelAPI_Feature::isInHistory(). Returns false.
+  PARAMETERSPLUGIN_EXPORT virtual bool isInHistory();
 
+  /// Reimplemented from ModelAPI_Feature::isInHistory().
   PARAMETERSPLUGIN_EXPORT virtual void attributeChanged(const std::string& theID);
 
   /// Use plugin manager for features creation
   ParametersPlugin_Parameter();
 
  protected:
+  /// Evaluates theExpression and returns its value.
   double evaluate(const std::string& theExpression, std::string& theError);
-
- private:
-  std::shared_ptr<ParametersPlugin_PyInterp> myInterp;
+  /// Updates name of the parameter
+  void updateName();
+  /// Updates expression of the parameter
+  bool updateExpression();
 };
 
 #endif