]> SALOME platform Git repositories - modules/smesh.git/blobdiff - src/SMESH_I/SMESH_Gen_i_1.cxx
Salome HOME
Dump python extension.
[modules/smesh.git] / src / SMESH_I / SMESH_Gen_i_1.cxx
index 556d7e7c1580e4b99b0c1900c7101f4cd4cfa09b..03b6ac9683fbbb27699ea0721d13c6ad237183d1 100644 (file)
 
 #ifdef _DEBUG_
 static int MYDEBUG = 0;
+static int VARIABLE_DEBUG = 0;
 #else
 static int MYDEBUG = 0;
+static int VARIABLE_DEBUG = 0;
 #endif
 
 //=============================================================================
@@ -864,20 +866,29 @@ bool SMESH_Gen_i::RemoveHypothesisFromShape(SALOMEDS::Study_ptr         theStudy
 }
 
 //=======================================================================
-//function : UpdateSObject
+//function : UpdateParameters
 //purpose  : 
 //=======================================================================
 void SMESH_Gen_i::UpdateParameters(CORBA::Object_ptr theObject, const char* theParameters)
 {
+
+  if(VARIABLE_DEBUG)
+    cout<<"UpdateParameters : "<<theParameters<<endl;
   SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
   if(aStudy->_is_nil() || CORBA::is_nil(theObject)) 
     return;
 
   SALOMEDS::SObject_var aSObj =  ObjectToSObject(aStudy,theObject);
-  if(aSObj->_is_nil())
+  if(aSObj->_is_nil())  
     return;
   
   SALOMEDS::StudyBuilder_var aStudyBuilder = aStudy->NewBuilder();
+  
+  SALOMEDS::GenericAttribute_var aFindAttr;
+  bool hasAttr = aSObj->FindAttribute(aFindAttr, "AttributeString");
+  if(VARIABLE_DEBUG)
+    cout<<"Find Attribute "<<hasAttr<<endl;
+
   SALOMEDS::GenericAttribute_var anAttr;
   anAttr = aStudyBuilder->FindOrCreateAttribute( aSObj, "AttributeString");
   SALOMEDS::AttributeString_var aStringAttr = SALOMEDS::AttributeString::_narrow(anAttr);
@@ -886,16 +897,24 @@ void SMESH_Gen_i::UpdateParameters(CORBA::Object_ptr theObject, const char* theP
   TCollection_AsciiString aOldParameters(aStringAttr->Value());
   TCollection_AsciiString anInputParams(ParseParameters(theParameters));
   
-  if(!aOldParameters.Length())
+  if(!hasAttr)
     aNewParams = anInputParams;
   else 
     aNewParams = aOldParameters+"|"+anInputParams;
+
+  if(VARIABLE_DEBUG)
+    {
+      cout<<"Input Parameters : "<<anInputParams<<endl;
+      cout<<"Old Parameters : "<<aOldParameters<<endl;
+      cout<<"New Parameters : "<<aNewParams<<endl;
+    }
+  
   
   aStringAttr->SetValue( aNewParams.ToCString() );
 }
 
 //=======================================================================
-//function : GetParameters
+//function : ParseParameters
 //purpose  : 
 //=======================================================================
 char* SMESH_Gen_i::ParseParameters(const char* theParameters)
@@ -905,14 +924,16 @@ char* SMESH_Gen_i::ParseParameters(const char* theParameters)
   SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
   if( !aStudy->_is_nil() ) {
     SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters);
-    if(aSections->length() > 0) {
-      SALOMEDS::ListOfStrings aVars= aSections[0];
+    for(int j=0;j<aSections->length();j++) {
+      SALOMEDS::ListOfStrings aVars= aSections[j];
       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+=":";
       }
+      if(j!=aSections->length()-1)
+        anInputParams+="|";
     }
   }
   return CORBA::string_dup(anInputParams.ToCString());