Salome HOME
Implementation notebook in the SMESH module.
[modules/smesh.git] / src / SMESH_I / SMESH_Gen_i_1.cxx
index e088deb942a9fe25068c4858b4cf226c7f9083f2..3846c2247e264ddb6107b554f5c1c30718f2dc80 100644 (file)
@@ -882,14 +882,27 @@ void SMESH_Gen_i::UpdateParameters(CORBA::Object_ptr theObject, const char* theP
 
   if ( !aHyp->_is_nil() ) {
     CORBA::String_var objStr = aHyp->GetParameters();
-    TCollection_AsciiString aParams(theParameters);
-    if(aParams.Length()) {
-      SALOMEDS::GenericAttribute_var anAttr;
-      anAttr = aStudyBuilder->FindOrCreateAttribute( aSObj, "AttributeString");
-      SALOMEDS::AttributeString::_narrow(anAttr)->SetValue( aParams.ToCString() );
+    TCollection_AsciiString aNewParams;
+    TCollection_AsciiString anInputParams;
+    SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(theParameters);
+    
+    SALOMEDS::GenericAttribute_var anAttr;
+    anAttr = aStudyBuilder->FindOrCreateAttribute( aSObj, "AttributeString");
+    SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
+    TCollection_AsciiString aOldParameters(aStringAttr->Value());
+    SALOMEDS::ListOfStrings aVars= aSections[0];
+    for(int i=0;i<aVars.length();i++ ) {
+      anInputParams += aStudy->IsVariable(aVars[i].in()) ? 
+        TCollection_AsciiString(aVars[i].in()) : TCollection_AsciiString("");
+      if(i != aVars.length()-1)
+        anInputParams+=":";
     }
-    else
-      aStudyBuilder->RemoveAttribute(aSObj,"AttributeString");
+    if(!aOldParameters.Length())
+      aNewParams = anInputParams;
+    else 
+      aNewParams = aOldParameters+"|"+anInputParams;
+
+    aStringAttr->SetValue( aNewParams.ToCString() );
   }
 }