]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Issue 0013373: EDF PAL 273 : Option Single/Multi file dump
authorouv <ouv@opencascade.com>
Tue, 29 Mar 2011 07:36:50 +0000 (07:36 +0000)
committerouv <ouv@opencascade.com>
Tue, 29 Mar 2011 07:36:50 +0000 (07:36 +0000)
src/GEOM/GEOM_Engine.cxx
src/GEOM/GEOM_Engine.hxx
src/GEOM_I/GEOM_DumpPython.cc
src/GEOM_I/GEOM_Gen_i.hh

index 6f830e15e7711b76985b00651f198194f675a7a8..368323d2230410b2bccd47673ea925ca0f4a7b11 100644 (file)
@@ -561,6 +561,7 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
                                                 std::vector<TObjectData>& theObjectData,
                                                 TVariablesList theVariables,
                                                 bool isPublished,
+                                                bool isMultiFile, 
                                                 bool& aValidScript)
 {
   // Set "C" numeric locale to save numbers correctly
@@ -569,13 +570,22 @@ TCollection_AsciiString GEOM_Engine::DumpPython(int theDocID,
   TCollection_AsciiString aScript;
   Handle(TDocStd_Document) aDoc = GetDocument(theDocID);
 
-  if (aDoc.IsNull()) return TCollection_AsciiString("def RebuildData(theStudy): pass\n");
+  if (aDoc.IsNull())
+  {
+    TCollection_AsciiString anEmptyScript;
+    if( isMultiFile )
+      anEmptyScript = "def RebuildData(theStudy): pass\n";
+    return anEmptyScript;
+  }
 
   aScript  = "import GEOM\n";
   aScript += "import geompy\n";
   aScript += "import math\n";
   aScript += "import SALOMEDS\n\n";
-  aScript += "def RebuildData(theStudy):";
+  if( isMultiFile )
+    aScript += "def RebuildData(theStudy):";
+  else
+    aScript += "theStudy = salome.myStudy";
   aScript += "\n\tgeompy.init_geom(theStudy)\n";
 
   AddTextures(theDocID, aScript);
index 865e8b8fd3c3fb93795476eda3eba684afa8750f..4e8158a78190cb526fdbfef67bdaa65fa09fb48f 100644 (file)
@@ -139,6 +139,7 @@ class GEOM_Engine
                                                      std::vector<TObjectData>& theObjectData,
                                                      TVariablesList theVariables,
                                                      bool isPublished, 
+                                                     bool isMultiFile, 
                                                      bool& aValidScript);
 
   Standard_EXPORT const char* GetDumpName (const char* theStudyEntry) const;
index a38ccc58d6c996546fbf8fc0b89a2c2c53ac8fcd..07c58fb70238cb47c75ee4f906953eac69d5199a 100644 (file)
 #include <vector>
 #include <string>
 
+//=======================================================================
+//function : RemoveTabulation
+//purpose  : 
+//=======================================================================
+void RemoveTabulation( TCollection_AsciiString& theScript )
+{
+  std::string aString( theScript.ToCString() );
+  std::string::size_type aPos = 0;
+  while( aPos < aString.length() )
+  {
+    aPos = aString.find( "\n\t", aPos );
+    if( aPos == std::string::npos )
+      break;
+    aString.replace( aPos, 2, "\n" );
+    aPos++;
+  }
+  theScript = aString.c_str();
+}
+
 //=======================================================================
 //function : DumpPython
 //purpose  : 
@@ -43,7 +62,8 @@
 
 Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy, 
                                         CORBA::Boolean isPublished, 
-                                        CORBA::Boolean& isValidScript)
+                                        CORBA::Boolean isMultiFile,
+                                         CORBA::Boolean& isValidScript)
 {
   SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(theStudy);
   if(CORBA::is_nil(aStudy))
@@ -98,7 +118,7 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy,
   }
   
   TCollection_AsciiString aScript;
-  aScript += _impl->DumpPython(aStudy->StudyId(), objectDataVec, aVariableMap, isPublished, isValidScript);
+  aScript += _impl->DumpPython(aStudy->StudyId(), objectDataVec, aVariableMap, isPublished, isMultiFile, isValidScript);
 
   if (isPublished)
   {
@@ -111,7 +131,12 @@ Engines::TMPFile* GEOM_Gen_i::DumpPython(CORBA::Object_ptr theStudy,
     }
   }
 
-  aScript += "\n\tpass\n";
+  if( isMultiFile )
+    aScript += "\n\tpass";
+  aScript += "\n";
+
+  if( !isMultiFile ) // remove unnecessary tabulation
+    RemoveTabulation( aScript );
 
   int aLen = aScript.Length(); 
   unsigned char* aBuffer = new unsigned char[aLen+1];
index 9f24703c3f635bfc3e96bda43c30c5ad7e5a1ea6..cc80963576c5a0b0f374114d51e830f0f67ce8fe 100644 (file)
@@ -252,6 +252,7 @@ class GEOM_I_EXPORT GEOM_Gen_i: virtual public POA_GEOM::GEOM_Gen, virtual publi
 
   virtual Engines::TMPFile* DumpPython(CORBA::Object_ptr theStudy,
                                        CORBA::Boolean isPublished,
+                                       CORBA::Boolean isMultiFile,
                                        CORBA::Boolean& isValidScript);
 
   char* GetDumpName (const char* theStudyEntry);