Salome HOME
bos #26449: SHAPER: save imported images
[modules/shaper.git] / src / SHAPERGUI / SHAPERGUI_DataModel.cpp
index 5a2effdc7fa16695843f6e1806feadc4aac9dffe..17bbb19a96f44462287d56477622a868ac862830 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2014-2019  CEA/DEN, EDF R&D
+// Copyright (C) 2014-2021  CEA/DEN, EDF R&D
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -68,7 +68,6 @@ bool SHAPERGUI_DataModel::open(const QString& thePath, CAM_Study* theStudy, QStr
   LightApp_Study* aStudy = dynamic_cast<LightApp_Study*>( myModule->application()->activeStudy() );
   QString aNewTmpDir = aStudy->GetTmpDir("", false).c_str();
 
-  bool isDone = true;
   QDir aDir(aTmpDir);
   QStringList aFiles = aDir.entryList(QDir::Files);
   QStringList::const_iterator anIt = aFiles.begin(), aLast = aFiles.end();
@@ -185,6 +184,14 @@ bool SHAPERGUI_DataModel::dumpPython(const QString& thePath, CAM_Study* theStudy
   ModelAPI_Session::get()->startOperation(ExchangePlugin_Dump::ID());
   FeaturePtr aFeature = aDoc->addFeature(ExchangePlugin_Dump::ID());
   if (aFeature.get()) {
+    // keep path to the true dumping directory for external files dumping
+    AttributeStringPtr aAttr = aFeature->string(ExchangePlugin_Dump::DUMP_DIR_ID());
+    if (aAttr.get()) {
+      QString aDirPath = QFileInfo(thePath).path();
+      aAttr->setValue(aDirPath.toStdString());
+    }
+
+    // tmp path to write the script
     std::string aTmpDir = aStudy->GetTmpDir(thePath.toStdString().c_str(), isMultiFile);
     std::string aFileName = aTmpDir + DUMP_NAME;
 
@@ -192,7 +199,7 @@ bool SHAPERGUI_DataModel::dumpPython(const QString& thePath, CAM_Study* theStudy
       QFile::remove(aFileName.c_str());
     }
 
-    AttributeStringPtr aAttr = aFeature->string(ExchangePlugin_Dump::FILE_PATH_ID());
+    aAttr = aFeature->string(ExchangePlugin_Dump::FILE_PATH_ID());
     if (aAttr.get())
       aAttr->setValue(aFileName);
 
@@ -207,7 +214,7 @@ bool SHAPERGUI_DataModel::dumpPython(const QString& thePath, CAM_Study* theStudy
     ModelAPI_Session::get()->finishOperation();
 
     if (QFile::exists(aFileName.c_str())) {
-        QFile aInFile(aFileName.c_str());
+      QFile aInFile(aFileName.c_str());
       if (!aInFile.open(QIODevice::ReadOnly | QIODevice::Text))
         return false;
       QTextStream aText(&aInFile);
@@ -231,7 +238,7 @@ bool SHAPERGUI_DataModel::dumpPython(const QString& thePath, CAM_Study* theStudy
         return false;
 
       QTextStream aOut(&aOutFile);
-      aOut << aTrace.toStdString().c_str() << "\n";
+      aOut << aTrace << "\n";
       aOut.flush();
       aOutFile.close();