X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FHYDROGUI%2FHYDROGUI_ImportObstacleFromFileOp.cxx;h=301e826d7e3088d3bf0baaf83ffec34057e64f55;hb=f34b90e9e4e02ba65419134d5d37a2e42aecfabf;hp=85320817fb01f4db895905c97e60d42ee37730a1;hpb=7e825ec456c9331ef0df1cb59865cc55f0d8516a;p=modules%2Fhydro.git diff --git a/src/HYDROGUI/HYDROGUI_ImportObstacleFromFileOp.cxx b/src/HYDROGUI/HYDROGUI_ImportObstacleFromFileOp.cxx index 85320817..301e826d 100644 --- a/src/HYDROGUI/HYDROGUI_ImportObstacleFromFileOp.cxx +++ b/src/HYDROGUI/HYDROGUI_ImportObstacleFromFileOp.cxx @@ -22,11 +22,12 @@ #include "HYDROGUI_ImportObstacleFromFileOp.h" -#include "HYDROGUI_ObstacleDlg.h" +#include "HYDROGUI_GeomObjectDlg.h" #include "HYDROGUI_DataModel.h" #include "HYDROGUI_Module.h" #include "HYDROGUI_Tool.h" +#include "HYDROGUI_UpdateFlags.h" #include @@ -60,19 +61,19 @@ void HYDROGUI_ImportObstacleFromFileOp::startOperation() HYDROGUI_Operation::startOperation(); // Get panel - HYDROGUI_ObstacleDlg* aPanel = ::qobject_cast( inputPanel() ); + HYDROGUI_GeomObjectDlg* aPanel = ::qobject_cast( inputPanel() ); if ( aPanel ) { // Reset the panel state aPanel->reset(); // Pass the existing obstacle names to the panel - QStringList anObstacles = + QStringList anObstacleNames = HYDROGUI_Tool::FindExistingObjectsNames( doc(), KIND_OBSTACLE ); - aPanel->setObstacleNames( anObstacles ); + aPanel->setObjectNames( anObstacleNames ); } else { - myFileDlg = new SUIT_FileDlg( module()->application()->desktop(), true ); + myFileDlg = new SUIT_FileDlg( module()->getApp()->desktop(), true ); myFileDlg->setWindowTitle( getName() ); myFileDlg->setFilter( tr("OBSTACLE_FILTER") ); if ( !lastUsedFilter.isEmpty() ) { @@ -104,20 +105,18 @@ bool HYDROGUI_ImportObstacleFromFileOp::processApply( int& theUpdateFlags, Handle(HYDROData_Obstacle) anObstacle; // Get panel - HYDROGUI_ObstacleDlg* aPanel = ::qobject_cast( inputPanel() ); + HYDROGUI_GeomObjectDlg* aPanel = ::qobject_cast( inputPanel() ); if ( aPanel ) { // Get file name and obstacle name defined by the user aFileName = aPanel->getFileName(); - QString anEditedName = aPanel->getEditedObstacleName().simplified(); + QString anEditedName = aPanel->getEditedObjectName().simplified(); // Get obstacle to edit if ( !anEditedName.isEmpty() ) { anObstacle = Handle(HYDROData_Obstacle)::DownCast( HYDROGUI_Tool::FindObjectByName( module(), anEditedName, KIND_OBSTACLE ) ); } - - anObstacleName = anEditedName; //TODO: aPanel->getObstacleName(); } else if ( myFileDlg ) { // Get file name and file filter defined by the user aFileName = myFileDlg->selectedFile(); @@ -125,32 +124,58 @@ bool HYDROGUI_ImportObstacleFromFileOp::processApply( int& theUpdateFlags, } // Check the file name + if ( aFileName.isEmpty() ) { + return false; + } QFileInfo aFileInfo( aFileName ); if ( !aFileInfo.exists() || !aFileInfo.isReadable() ) { theErrorMsg = tr( "FILE_NOT_EXISTS_OR_CANT_BE_READ" ).arg( aFileName ); return false; } + // Check obstacle name + anObstacleName = aPanel->getObjectName().simplified(); + if ( anObstacleName.isEmpty() ) { + theErrorMsg = tr( "INCORRECT_OBJECT_NAME" ); + return false; + } + + if( anObstacle.IsNull() || anObstacle->GetName() != anObstacleName ) { + // check that there are no other objects with the same name in the document + Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::FindObjectByName( module(), anObstacleName ); + if( !anObject.IsNull() ) { + theErrorMsg = tr( "OBJECT_EXISTS_IN_DOCUMENT" ).arg( anObstacleName ); + return false; + } + } + bool anIsOk = false; // If the obstacle for edit is null - create new obstacle object if ( anObstacle.IsNull() ) { anObstacle = Handle(HYDROData_Obstacle)::DownCast( doc()->CreateObject(KIND_OBSTACLE) ); + + anObstacle->SetFillingColor( HYDROData_Obstacle::DefaultFillingColor() ); + anObstacle->SetBorderColor( HYDROData_Obstacle::DefaultBorderColor() ); } if ( !anObstacle.IsNull() ) { if ( anObstacle->ImportFromFile( aFileName ) ) { // Set name if ( anObstacleName.isEmpty() ) { - anObstacleName = HYDROGUI_Tool::GenerateObjectName( module(), aFileInfo.baseName() ); + anObstacleName = HYDROGUI_Tool::GenerateObjectName( + module(), aFileInfo.baseName(), QStringList(), true ); } if ( anObstacle->GetName() != anObstacleName ) { anObstacle->SetName( anObstacleName ); } + anObstacle->Update(); + // Set operation status anIsOk = true; - theUpdateFlags = UF_Model; + module()->setIsToUpdate( anObstacle ); + theUpdateFlags = UF_Model | UF_OCCViewer | UF_OCC_Forced | UF_VTKViewer; } else { theErrorMsg = tr( "BAD_IMPORTED_OBSTACLE_FILE" ).arg( aFileName ); } @@ -163,7 +188,8 @@ HYDROGUI_InputPanel* HYDROGUI_ImportObstacleFromFileOp::createInputPanel() const { HYDROGUI_InputPanel* aPanel = 0; if ( myIsToShowPanel ) { - aPanel = new HYDROGUI_ObstacleDlg( module(), getName(), true ); + aPanel = new HYDROGUI_GeomObjectDlg( module(), getName(), + tr( "DEFAULT_OBSTACLE_NAME" ), true ); } return aPanel;