Salome HOME
Issue #1093: Validator for parameter name duplication
authorspo <sergey.pokhodenko@opencascade.com>
Tue, 17 Nov 2015 13:02:22 +0000 (16:02 +0300)
committerspo <sergey.pokhodenko@opencascade.com>
Tue, 17 Nov 2015 13:02:38 +0000 (16:02 +0300)
src/ParametersPlugin/ParametersPlugin_Parameter.cpp
src/ParametersPlugin/ParametersPlugin_Parameter.h

index c51ae80de24f2d1496686ca301ec788664ed8c07..1dc9a13acbf116bae3228ac642fb554773a077e0 100644 (file)
@@ -65,7 +65,7 @@ void ParametersPlugin_Parameter::updateName()
   setResult(aParam);
 }
 
-void ParametersPlugin_Parameter::updateExpression()
+bool ParametersPlugin_Parameter::updateExpression()
 {
   std::string anExpression = string(EXPRESSION_ID())->value();
 
@@ -73,25 +73,21 @@ void ParametersPlugin_Parameter::updateExpression()
   double aValue = evaluate(anExpression, outErrorMessage);
 
   data()->string(EXPRESSION_ERROR_ID())->setValue(outErrorMessage);
-  if (!outErrorMessage.empty()) {
-    setError("Expression error.", false);
-    data()->execState(ModelAPI_StateExecFailed);
-    return;
-  }
+  if (!outErrorMessage.empty())
+    return false;
 
   ResultParameterPtr aParam = document()->createParameter(data());
   AttributeDoublePtr aValueAttribute = aParam->data()->real(ModelAPI_ResultParameter::VALUE());
   aValueAttribute->setValue(aValue);
   setResult(aParam);
-
-  setError("", false);
-  data()->execState(ModelAPI_StateDone);
+  return true;
 }
 
 void ParametersPlugin_Parameter::execute()
 {
   updateName();
-  updateExpression();
+  if (!updateExpression())
+    setError("Expression error.", false);
 }
 
 double ParametersPlugin_Parameter::evaluate(const std::string& theExpression, std::string& theError)
index 229f8f217192cb95b68fcc2ee18a9f377b490708..47a0d30721b693f78600e3be5bfc059212f4a92f 100644 (file)
@@ -86,7 +86,7 @@ class ParametersPlugin_Parameter : public ModelAPI_Feature
   /// Updates name of the parameter
   void updateName();
   /// Updates expression of the parameter
-  void updateExpression();
+  bool updateExpression();
 
  private:
   std::shared_ptr<ParametersPlugin_PyInterp> myInterp;