]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Dump model to python.
authoradv <adv@opencascade.com>
Wed, 29 Jan 2014 09:08:50 +0000 (09:08 +0000)
committeradv <adv@opencascade.com>
Wed, 29 Jan 2014 09:08:50 +0000 (09:08 +0000)
src/HYDROData/HYDROData_Document.cxx
src/HYDROData/HYDROData_Document.h
src/HYDROData/HYDROData_Obstacle.cxx
src/HYDROGUI/HYDROGUI_DataModel.cxx

index c195b9d5d7150f94c93455cd49b826cfed559c20..89469757f5405e6daecd0945e8b45d3a1de4f9f8 100644 (file)
@@ -175,7 +175,8 @@ void HYDROData_Document::Close()
   HYDROData_Application::GetApplication()->RemoveDocument(this);
 }
 
-bool HYDROData_Document::DumpToPython( const QString& theFileName ) const
+bool HYDROData_Document::DumpToPython( const QString& theFileName,
+                                       const bool     theIsMultiFile ) const
 {
   // Try to open the file
   QFile aFile( theFileName );
@@ -185,7 +186,7 @@ bool HYDROData_Document::DumpToPython( const QString& theFileName ) const
   MapOfTreatedObjects aTreatedObjects;
 
   // Dump header for python script
-  QStringList aHeaderDump = DumpToPython( aTreatedObjects );
+  QStringList aHeaderDump = DumpToPython( aTreatedObjects, theIsMultiFile );
   if ( aHeaderDump.isEmpty() )
     return false;
 
@@ -194,17 +195,27 @@ bool HYDROData_Document::DumpToPython( const QString& theFileName ) const
   bool aRes = true;
 
   // Dump all model objects to Python script
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_IMAGE );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_POLYLINEXY );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_BATHYMETRY );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_PROFILE );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_POLYLINE );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_IMMERSIBLE_ZONE );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_STREAM );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_CHANNEL );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_DIGUE );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_OBSTACLE );
-  aRes = aRes && dumpPartitionToPython( aFile, aTreatedObjects, KIND_CALCULATION );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_IMAGE );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_POLYLINEXY );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_BATHYMETRY );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_PROFILE );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_POLYLINE );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_IMMERSIBLE_ZONE );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_STREAM );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_CHANNEL );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_DIGUE );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_OBSTACLE );
+  aRes = aRes && dumpPartitionToPython( aFile, theIsMultiFile, aTreatedObjects, KIND_CALCULATION );
+
+  // Dump code to close python fuction
+  if ( aRes && theIsMultiFile )
+  {
+    QStringList aFooterScript;
+    aFooterScript << QString( "" );
+    aFooterScript << QString( "  pass" );
+    HYDROData_Tool::WriteStringsToFile( aFile, aFooterScript );
+  }
+
   return aRes;
 }
 
@@ -221,7 +232,8 @@ QString HYDROData_Document::GetDocPyName() const
   return aDocName;
 }
 
-QStringList HYDROData_Document::DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const
+QStringList HYDROData_Document::DumpToPython( MapOfTreatedObjects& theTreatedObjects,
+                                              const bool           theIsMultiFile ) const
 {
   QString aDocName = GetDocPyName();
 
@@ -237,14 +249,24 @@ QStringList HYDROData_Document::DumpToPython( MapOfTreatedObjects& theTreatedObj
   aResScript << QString( "from HYDROPy import *" );
   aResScript << QString( "from PyQt4.QtCore import *" );
   aResScript << QString( "from PyQt4.QtGui import *" );
-  aResScript << QString( "import salome" );
-  aResScript << QString( "" );
-  aResScript << QString( "%1 = HYDROData_Document.Document( salome.sg.getActiveStudyId() );" ).arg( aDocName );
+
+  if ( theIsMultiFile )
+  {
+    aResScript << QString( "" );
+    aResScript << QString( "def RebuildData( theStudy ):" );
+    aResScript << QString( "  %1 = HYDROData_Document.Document( theStudy._get_StudyId() );" ).arg( aDocName );
+  }
+  else
+  {
+    aResScript << QString( "" );
+    aResScript << QString( "%1 = HYDROData_Document.Document( theStudy._get_StudyId() );" ).arg( aDocName );
+  }
 
   return aResScript;
 }
 
 bool HYDROData_Document::dumpPartitionToPython( QFile&               theFile,
+                                                const bool           theIsMultiFile,
                                                 MapOfTreatedObjects& theTreatedObjects,
                                                 const ObjectKind&    theObjectKind ) const
 {
@@ -269,6 +291,14 @@ bool HYDROData_Document::dumpPartitionToPython( QFile&               theFile,
     theTreatedObjects.insert( anObjName, anObject );
 
     QStringList anObjDump = anObject->DumpToPython( theTreatedObjects );
+
+    if ( theIsMultiFile )
+    {
+      // For multifile dump we use the function, see the document dump header
+      QStringList::iterator anIt = anObjDump.begin();
+      for ( ; anIt != anObjDump.end(); ++anIt )
+        anIt->prepend( "  " );
+    }
     
     HYDROData_Tool::WriteStringsToFile( theFile, anObjDump );
   }
index 1de23428a08d4be1d53b5148a2df943491a01bd7..b583787ddd8345584f8b24b339212bcc4ee3e663 100644 (file)
@@ -78,10 +78,12 @@ public:
   //! Dump study document to Python script representation.
   //! \param theFileName full name of the file to store
   //! \returns true if document has been successfuly dumped
-  HYDRODATA_EXPORT bool DumpToPython( const QString& theFileName ) const;
+  HYDRODATA_EXPORT bool DumpToPython( const QString& theFileName,
+                                      const bool     theIsMultiFile ) const;
 
   //! Dump model data to Python script representation.
-  HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects ) const;
+  HYDRODATA_EXPORT virtual QStringList DumpToPython( MapOfTreatedObjects& theTreatedObjects,
+                                                     const bool           theIsMultiFile ) const;
 
 public:
 
@@ -161,6 +163,7 @@ private:
 
   // Dump objects of type \c theObjectKind to file \c theFile
   bool dumpPartitionToPython( QFile&               theFile,
+                              const bool           theIsMultiFile,
                               MapOfTreatedObjects& theDumpedObjects,
                               const ObjectKind&    theObjectKind ) const;
 
index bde8f4fceef74eb78226e47e30e7035b7a4553b0..5a108d6ed36a968f714cbce20954af2ecf0390ba 100644 (file)
@@ -66,7 +66,7 @@ QStringList HYDROData_Obstacle::DumpToPython( MapOfTreatedObjects& theTreatedObj
   if ( !aGeomObjectEntry.IsEmpty() )
   {
     QString aSalomeObjName = HYDROData_Tool::GenerateNameForPython( theTreatedObjects, "obstacle_sobj" );
-    aResList << QString( "%1 = salome.myStudy.FindObjectID( \"%2\" );" )
+    aResList << QString( "%1 = theStudy.FindObjectID( \"%2\" );" )
                 .arg( aSalomeObjName ).arg( aGeomObjectEntry.ToCString() );
 
     aResList << QString( "%1.ImportFromGeomIOR( %2.GetIOR() );" )
index f4cb0c9a780bdb520e01518b3516f1db26470cac..0476f169f858ccd0fa007606415710c4e8c19888 100644 (file)
@@ -186,13 +186,13 @@ bool HYDROGUI_DataModel::dumpPython( const QString& theURL,
   if ( aDocument.IsNull() || !aStudy )
     return false;
 
-  QString aFileToExport = aStudy->GetTmpDir( theURL.toLatin1().constData(), isMultiFile ).c_str();
-  aFileToExport += QString( QDir::separator() ) + "HYDRO.py";
-
-  bool aRes = aDocument->DumpToPython( aFileToExport );
+  QString aDir = aStudy->GetTmpDir( theURL.toLatin1().constData(), isMultiFile ).c_str();
+  QString aFileToExport = aDir + QString( QDir::separator() ) + "HYDRO.py";
 
+  bool aRes = aDocument->DumpToPython( aFileToExport, isMultiFile );
   if ( aRes )
   {
+    theListOfFiles.append( aDir );
     theListOfFiles.append( aFileToExport );
   }
 
@@ -880,7 +880,7 @@ void HYDROGUI_DataModel::buildObjectTree( SUIT_DataObject* theParent,
     }
 
 #ifdef DEB_GROUPS
-    HYDROData_SequenceOfObjects aCalcGroups = aCaseObj->GetSplittedGroups();
+    HYDROData_SequenceOfObjects aCalcGroups = aCaseObj->GetGeometryGroups();
     buildObjectPartition( aGuiObj, aCalcGroups, tr( "OBJECT_GROUPS" ), false );
 
     HYDROData_SequenceOfObjects aCalcSplitGroups = aCaseObj->GetSplittedGroups();