Salome HOME
Dump python extension.
[modules/smesh.git] / src / SMESH_I / SMESH_Gen_i_1.cxx
index 55412b182693415bf8af2cdecec1e7a37571f8ce..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,44 +866,78 @@ 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;
 
-  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 aNewParams;
   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+=":";
-  }
-  if(!aOldParameters.Length())
+  TCollection_AsciiString anInputParams(ParseParameters(theParameters));
+  
+  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 : ParseParameters
+//purpose  : 
+//=======================================================================
+char* SMESH_Gen_i::ParseParameters(const char* theParameters)
+{
+  const char* aParameters = CORBA::string_dup(theParameters);
+  TCollection_AsciiString anInputParams;
+  SALOMEDS::Study_ptr aStudy = GetCurrentStudy();
+  if( !aStudy->_is_nil() ) {
+    SALOMEDS::ListOfListOfStrings_var aSections = aStudy->ParseVariables(aParameters);
+    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());
+}
 
 //=======================================================================
 //function : GetParameters