X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSHAPERGUI%2FSHAPERGUI_DataModel.cpp;h=efb30f936765a43c170cefea155ee697679e16a2;hb=97c06c5cd9fc736f9b5a1dacde369a9d7b5be703;hp=f3d8fe4b80e52e84994a69c359c49b3ab3a24358;hpb=cb2081082dd8af1ca47eeaa1a0ba6841130a84d6;p=modules%2Fshaper.git diff --git a/src/SHAPERGUI/SHAPERGUI_DataModel.cpp b/src/SHAPERGUI/SHAPERGUI_DataModel.cpp index f3d8fe4b8..efb30f936 100644 --- a/src/SHAPERGUI/SHAPERGUI_DataModel.cpp +++ b/src/SHAPERGUI/SHAPERGUI_DataModel.cpp @@ -1,4 +1,4 @@ -// Copyright (C) 2014-2017 CEA/DEN, EDF R&D +// Copyright (C) 2014-2019 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 @@ -12,10 +12,9 @@ // // You should have received a copy of the GNU Lesser General Public // License along with this library; if not, write to the Free Software -// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ or -// email : webmaster.salome@opencascade.com +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "SHAPERGUI_DataModel.h" @@ -76,20 +75,10 @@ bool SHAPERGUI_DataModel::open(const QString& thePath, CAM_Study* theStudy, QStr QString aFileName = *anIt; QString aCurrentFile = SUIT_Tools::addSlash(aTmpDir) + aFileName; - QString aNewFile = SUIT_Tools::addSlash(aNewTmpDir) + aFileName; - if (!QFile::copy(aCurrentFile, aNewFile)) - isDone = false; - } - if (isDone) { - myTmpDirectory = aNewTmpDir; - } - else { - removeDirectory(aNewTmpDir); - myTmpDirectory = ""; + XGUI_Workshop* aWorkShop = myModule->workshop(); + aWorkShop->openFile(aCurrentFile); } - SessionPtr aMgr = ModelAPI_Session::get(); - aMgr->load(qPrintable(aNewTmpDir)); myModule->setIsOpened(true); return true; } @@ -110,21 +99,21 @@ bool SHAPERGUI_DataModel::save(QStringList& theFiles) bool isMultiFile = aResMgr ? aResMgr->booleanValue("Study", "multi_file", false) : false; std::string aTmpDir = aStudy->GetTmpDir(qPrintable(myStudyPath), isMultiFile); - //std::string aTmpDir = aStudy->GetTmpDir("", false);//true ); - theFiles.append(QString(aTmpDir.c_str())); + QString aTmp = QString(aTmpDir.c_str()); + theFiles.append(aTmp); SessionPtr aMgr = ModelAPI_Session::get(); if (aMgr->isAutoUpdateBlocked()) aMgr->blockAutoUpdate(false); - aWorkShop->saveDocument(QString(aTmpDir.c_str()), aFileNames); - std::list::iterator aIt; - for (aIt = aFileNames.begin(); aIt != aFileNames.end(); ++aIt) { - QString aName((*aIt).c_str()); - aName.replace(QChar('\\'), QChar('/')); - int aN = aName.lastIndexOf('/'); - theFiles.append(aName.right(aName.length() - aN - 1)); - } + //aWorkShop->saveDocument(QString(aTmpDir.c_str()), aFileNames); + aWorkShop->setCurrentDataFile(aTmp + "shaper.shaper"); + aWorkShop->onSave(); + QString aName = aWorkShop->currentDataFile(); + aName.replace(QChar('\\'), QChar('/')); + int aN = aName.lastIndexOf('/'); + theFiles.append(aName.right(aName.length() - aN - 1)); + return true; } @@ -137,8 +126,6 @@ bool SHAPERGUI_DataModel::saveAs(const QString& thePath, CAM_Study* theStudy, QS bool SHAPERGUI_DataModel::close() { myModule->workshop()->closeDocument(); - removeDirectory(myTmpDirectory); - myTmpDirectory = ""; return LightApp_DataModel::close(); } @@ -207,39 +194,37 @@ bool SHAPERGUI_DataModel::dumpPython(const QString& thePath, CAM_Study* theStudy if (aAttr.get()) aAttr->setValue(".py"); - AttributeStringPtr aTypeAttr = aFeature->string(ExchangePlugin_Dump::SELECTION_TYPE_ID()); - if (aTypeAttr.get()) - aTypeAttr->setValue(ExchangePlugin_Dump::TOPOLOGICAL_NAMING_DUMP_ID()); - ModelAPI_Session::get()->finishOperation(); if (QFile::exists(aFileName.c_str())) { - if (isMultiFile) { QFile aInFile(aFileName.c_str()); - if (!aInFile.open(QIODevice::ReadOnly | QIODevice::Text)) - return false; - QTextStream aText(&aInFile); - QString aTrace(aText.readAll()); - aInFile.close(); + if (!aInFile.open(QIODevice::ReadOnly | QIODevice::Text)) + return false; + QTextStream aText(&aInFile); + QString aTrace(aText.readAll()); + aInFile.close(); + if (isMultiFile) { QStringList aBuffer; - aBuffer.push_back(QString("def RebuildData( theStudy ):")); + aBuffer.push_back(QString("def RebuildData():")); QStringList aList(aTrace.split("\n")); foreach(QString aStr, aList) { QString s = " " + aStr; aBuffer.push_back(s); } aTrace = aBuffer.join("\n"); + } - QFile aOutFile(aFileName.c_str()); - if (!aOutFile.open(QIODevice::WriteOnly | QIODevice::Text | QIODevice::Truncate)) - return false; + QFile aOutFile(aFileName.c_str()); + // binary for SALOME, issue 16931 + if (!aOutFile.open(QIODevice::WriteOnly | QIODevice::Truncate)) + return false; + + QTextStream aOut(&aOutFile); + aOut << aTrace.toStdString().c_str() << "\n"; + aOut.flush(); + aOutFile.close(); - QTextStream aOut(&aOutFile); - aOut << aTrace.toStdString().c_str() << "\n"; - aOut.flush(); - aOutFile.close(); - } theListOfFiles.append(aTmpDir.c_str()); theListOfFiles.append(DUMP_NAME); return true;