]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Dump Python extension. TG_DumpPython_Extension_2
authorrnv <rnv@opencascade.com>
Fri, 14 Nov 2008 08:38:37 +0000 (08:38 +0000)
committerrnv <rnv@opencascade.com>
Fri, 14 Nov 2008 08:38:37 +0000 (08:38 +0000)
src/GEOM/GEOM_Engine.cxx
src/GEOM/GEOM_Engine.hxx
src/GEOM_I/GEOM_DumpPython.cc

index ba4976e0049a7111f18ce4f1675bb61f341e1bc6..73b3154143554b2e4f6cd8d3a6b50ed4aa3a14f9 100644 (file)
@@ -96,10 +96,12 @@ static Standard_Integer ExtractDocID(TCollection_AsciiString& theID)
 void ProcessFunction(Handle(GEOM_Function)& theFunction, 
                     TCollection_AsciiString& theScript,
                      Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
+                     TColStd_HSequenceOfAsciiString& theStudyVariables,
                     TColStd_MapOfTransient& theProcessed);
 
 void ReplaceVariables(TCollection_AsciiString& theCommand, 
-                      Resource_DataMapOfAsciiStringAsciiString& theVariableNames);
+                      Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
+                      TColStd_HSequenceOfAsciiString& theStudyVariables);
 
 
 
@@ -440,6 +442,7 @@ void GEOM_Engine::Close(int theDocID)
 TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
                                                Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
                                                Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
+                                                TColStd_HSequenceOfAsciiString& theStudyVariables,
                                                bool isPublished,
                                                bool& aValidScript)
 {
@@ -469,7 +472,7 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
        MESSAGE ( "Null function !!!!" );
        continue;
       }
-      ProcessFunction(aFunction, aScript,theVariableNames,aMap);
+      ProcessFunction(aFunction, aScript, theVariableNames, theStudyVariables ,aMap);
     }
   }
 
@@ -695,6 +698,7 @@ Handle(TColStd_HSequenceOfAsciiString) GEOM_Engine::GetAllDumpNames() const
 void ProcessFunction(Handle(GEOM_Function)& theFunction, 
                     TCollection_AsciiString& theScript,
                      Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
+                     TColStd_HSequenceOfAsciiString& theStudyVariables,
                     TColStd_MapOfTransient& theProcessed)
 {
   if(theFunction.IsNull() || theProcessed.Contains(theFunction)) return;
@@ -719,7 +723,7 @@ void ProcessFunction(Handle(GEOM_Function)& theFunction,
   if(aDescr == "None") return;
 
   //Replace parameter by notebook variables
-  ReplaceVariables(aDescr,theVariableNames);
+  ReplaceVariables(aDescr,theVariableNames,theStudyVariables);
   theScript += "\n\t";
   theScript += aDescr;
 
@@ -772,11 +776,12 @@ Handle(TColStd_HSequenceOfInteger) FindEntries(TCollection_AsciiString& theStrin
  */
 //=============================================================================
 void ReplaceVariables(TCollection_AsciiString& theCommand, 
-                      Resource_DataMapOfAsciiStringAsciiString& theVariableNames)
+                      Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
+                      TColStd_HSequenceOfAsciiString& theStudyVariables)
 {
   //Get Entry of the result object
   TCollection_AsciiString anEntry = theCommand.Token("=",1);
-  
+
   //Remove white spaces
   anEntry.RightAdjust();
   anEntry.LeftAdjust();
@@ -874,11 +879,6 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
         aEndPos = theCommand.Location(i, COMMA, 1, theCommand.Length());
       }
 
-    TCollection_AsciiString aParameter = theCommand.SubString(aStartPos, aStartPos);
-
-    if(MYDEBUG)
-      cout<<"Current parameter "<<aParameter<<endl;
-
     aVar = aVarSeq.Value(iVar);
     
     //If parameter is entry, skip it
@@ -892,9 +892,17 @@ void ReplaceVariables(TCollection_AsciiString& theCommand,
       iVar++;
       continue;
     }
-    
-    aVar.InsertBefore(1,"\"");
-    aVar.InsertAfter(aVar.Length(),"\"");
+
+    bool isVar = false;
+    for(Standard_Integer i = 1; i <= theStudyVariables.Length();i++)
+      if(theStudyVariables.Value(i).IsEqual(aVar)) {
+        isVar = true;
+        break;
+      }
+    if(isVar) {
+      aVar.InsertBefore(1,"\"");
+      aVar.InsertAfter(aVar.Length(),"\"");
+    }
 
     theCommand.Remove(aStartPos, aEndPos - aStartPos);
     theCommand.Insert(aStartPos,aVar);    
index f5f475cb580a0a477914620c8786d2b5f1d73016..79fc81f29e911c5418252bb36673442fb0ab1cff 100644 (file)
@@ -85,6 +85,7 @@ class GEOM_Engine
   Standard_EXPORT TCollection_AsciiString DumpPython(int theDocID, 
                                     Resource_DataMapOfAsciiStringAsciiString& theObjectNames,
                                      Resource_DataMapOfAsciiStringAsciiString& theVariableNames,
+                                     TColStd_HSequenceOfAsciiString&           theStudyVariables,
                                     bool isPublished, 
                                     bool& aValidScript);
 
@@ -94,7 +95,7 @@ class GEOM_Engine
 
  protected:
   Standard_EXPORT static void SetEngine(GEOM_Engine* theEngine);       
-
+  
  private:
 
   Handle(GEOM_Application)  _OCAFApp;
index c8fe6918a1c4fd854bb1ae31f8bfe730b86f554e..1bf4771099d81092600e1c24256612bb0505dc52 100644 (file)
@@ -59,7 +59,7 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy,
         CORBA::String_var aName = aValue->GetName();
         CORBA::String_var anEntry = GO->GetEntry();
        aMap.Bind( (char*)anEntry.in(), (char*)aName.in() );
-       
+
        //Find attribute with list of used notebook variables
        SALOMEDS::GenericAttribute_var anAttr;
        SALOMEDS::AttributeString_var anAttrStr;
@@ -73,10 +73,18 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy,
     }
   }
 
+  //Get Study variables
+  SALOMEDS::ListOfStrings_var aListOfVars = aStudy->GetVariableNames();
+  TColStd_HSequenceOfAsciiString aStudyVariables;
+  for(int i = 0;i < aListOfVars->length();i++)
+    {
+      aStudyVariables.Append(aListOfVars[i].in());
+    }
+  
   TCollection_AsciiString aScript =
     "### This file is generated by SALOME automatically by dump python functionality\n"
       "### of GEOM component\n\n";
-  aScript += _impl->DumpPython(aStudy->StudyId(), aMap, aVariableMap, isPublished, isValidScript);
+  aScript += _impl->DumpPython(aStudy->StudyId(), aMap, aVariableMap, aStudyVariables, isPublished, isValidScript);
 
   if (isPublished)
   {