X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ExportCalculationOp.cxx;h=c911f1d048da8969044b861af2f61cf6ea345897;hb=39a306b77b32044c89bf6cef4445d5bfdea43149;hp=77722af36d2ebeeeec1da79c503b4e80235b2e6e;hpb=aee8a946d0c86a5b3d8aa4cb40406189ac19b952;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ExportCalculationOp.cxx b/src/HYDROGUI/HYDROGUI_ExportCalculationOp.cxx index 77722af3..c911f1d0 100644 --- a/src/HYDROGUI/HYDROGUI_ExportCalculationOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ExportCalculationOp.cxx @@ -1,12 +1,8 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D, OPEN CASCADE -// -// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, -// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS -// +// Copyright (C) 2014-2015 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 // License as published by the Free Software Foundation; either -// version 2.1 of the License. +// version 2.1 of the License, or (at your option) any later version. // // This library is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -29,13 +25,9 @@ #include #include -#include #include -#include -#include - #include #include @@ -72,7 +64,8 @@ void HYDROGUI_ExportCalculationOp::commitOperation() } bool HYDROGUI_ExportCalculationOp::processApply( int& theUpdateFlags, - QString& theErrorMsg ) + QString& theErrorMsg, + QStringList& theBrowseObjectsEntries ) { // Get the selected calculation case Handle(HYDROData_CalculationCase) aCalculation = @@ -84,56 +77,25 @@ bool HYDROGUI_ExportCalculationOp::processApply( int& theUpdateFlags, return false; } - QString anErrorMsg; - bool anIsOk = false; - - TopoDS_Shell aShell = aCalculation->GetShell(); - - if ( !aShell.IsNull() ) { - // TODO move this code to anothe place? - std::ostringstream aStreamShape; - // Write TopoDS_Shape in ASCII format to the stream - BRepTools::Write( aShell, aStreamShape ); - // Returns the number of bytes that have been stored in the stream's buffer. - int aSize = aStreamShape.str().size(); - // Allocate octect buffer of required size - CORBA::Octet* anOctetBuf = SALOMEDS::TMPFile::allocbuf( aSize ); - // Copy ostrstream content to the octect buffer - memcpy( anOctetBuf, aStreamShape.str().c_str(), aSize ); - // Create TMPFile - SALOMEDS::TMPFile_var aSeqFile = new SALOMEDS::TMPFile( aSize, aSize, anOctetBuf, 1 ); - - // Get active study - SalomeApp_Study* aStudy = - dynamic_cast( module()->getApp()->activeStudy() ); - - // Restore shape from the stream and get the GEOM object - GEOM::GEOM_Gen_var aGeomEngine = GeometryGUI::GetGeomGen(); // TODO: get GEOM engine in another way? - GEOM::GEOM_IInsertOperations_var anInsOp = aGeomEngine->GetIInsertOperations( module()->getStudyId() ); - GEOM::GEOM_Object_var aGeomObj = anInsOp->RestoreShape( aSeqFile ); - - // Puplish the GEOM object - if ( !aGeomObj->_is_nil() ) { - QString aName = GEOMBase::GetDefaultName( tr( "OBJ_PREFIX" ) + aCalculation->GetName() ); - - SALOMEDS::Study_var aDSStudy = GeometryGUI::ClientStudyToStudy( aStudy->studyDS() ); - SALOMEDS::SObject_var aResultSO = - aGeomEngine->PublishInStudy( aDSStudy, SALOMEDS::SObject::_nil(), - aGeomObj, qPrintable( aName ) ); - if ( !aResultSO->_is_nil() ) { - theUpdateFlags = UF_ObjBrowser; - anIsOk = true; - } - } + bool isOk = false; - if ( !anIsOk ) - theErrorMsg = tr( "IMPOSSIBLE_TO_CREATE_GEOM_SHAPE" ); + // Get active study + SalomeApp_Study* aStudy = + dynamic_cast( module()->getApp()->activeStudy() ); - } else { - theErrorMsg = tr( "RESULT_SHAPE_NULL" ); + // Export + QString anErrorMsg; + if ( aStudy ) { + SALOMEDS::Study_var aDSStudy = GeometryGUI::ClientStudyToStudy( aStudy->studyDS() ); + GEOM::GEOM_Gen_var aGeomEngine = GeometryGUI::GetGeomGen(); + QString anEntry; + if ( aCalculation->Export( aGeomEngine, aDSStudy, anEntry, theErrorMsg ) ) { + theUpdateFlags = UF_ObjBrowser; + isOk = true; + } } - return anIsOk; + return isOk; } void HYDROGUI_ExportCalculationOp::onApply() @@ -144,9 +106,10 @@ void HYDROGUI_ExportCalculationOp::onApply() QString anErrorMsg; bool aResult = false; - + QStringList aBrowseObjectsEntries; + try { - aResult = processApply( anUpdateFlags, anErrorMsg ); + aResult = processApply( anUpdateFlags, anErrorMsg, aBrowseObjectsEntries ); } catch ( Standard_Failure ) { @@ -164,6 +127,7 @@ void HYDROGUI_ExportCalculationOp::onApply() if ( aResult ) { module()->update( anUpdateFlags ); commit(); + browseObjects( aBrowseObjectsEntries ); // Show message box SUIT_MessageBox::information( module()->getApp()->desktop(), @@ -182,4 +146,4 @@ void HYDROGUI_ExportCalculationOp::onApply() tr( "EXPORT_STATUS" ), anErrorMsg ); } -} \ No newline at end of file +}