Salome HOME
PR: quadtree
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_ImportBathymetryOp.cxx
index ea5eb1e1b3bef3eecb7a8e84d03782eb0014d891..60ae9a44e734a48dcf163936b55d69b888d50318 100644 (file)
@@ -66,9 +66,12 @@ void HYDROGUI_ImportBathymetryOp::startOperation()
     if( !myEditedObject.IsNull() )
     {
       QString aName = myEditedObject->GetName();
-      QString aFileName = myEditedObject->GetFilePath();
+      QString aFileName = HYDROGUI_Tool::ToQString( myEditedObject->GetFilePath() );
+      bool anIsAltitudesInverted = myEditedObject->IsAltitudesInverted();
+
       aPanel->setObjectName( aName );
       aPanel->setFileName( aFileName );
+      aPanel->setInvertAltitudes( anIsAltitudesInverted );
     }
   }
 }
@@ -108,6 +111,8 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
   }
 
   QString aFileName = aPanel->getFileName().simplified();
+  bool anIsInvertAltitudes = aPanel->isInvertAltitudes();
+
   if ( aFileName.isEmpty() )
   {
     theErrorMsg = tr( "INCORRECT_FILE_NAME" );
@@ -121,12 +126,15 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
     return false;
   }
 
-  // check that there are no other objects with the same name in the document
-  Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::FindObjectByName( module(), anObjectName );
-  if ( ( !myIsEdit ) && ( !anObject.IsNull() ) )
+  if( !myIsEdit || ( !myEditedObject.IsNull() && myEditedObject->GetName() != anObjectName ) )
   {
-    theErrorMsg = tr( "OBJECT_EXISTS_IN_DOCUMENT" ).arg( anObjectName );
-    return false;
+    // check that there are no other objects with the same name in the document
+    Handle(HYDROData_Entity) anObject = HYDROGUI_Tool::FindObjectByName( module(), anObjectName );
+    if( !anObject.IsNull() )
+    {
+      theErrorMsg = tr( "OBJECT_EXISTS_IN_DOCUMENT" ).arg( anObjectName );
+      return false;
+    }
   }
 
   Handle(HYDROData_Bathymetry) aBathymetryObj;
@@ -142,10 +150,19 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
   if ( aBathymetryObj.IsNull() )
     return false;
 
-  if ( !aBathymetryObj->ImportFromFile( aFileName ) )
+  QString anOldFileName = HYDROGUI_Tool::ToQString( aBathymetryObj->GetFilePath() );
+  if ( aFileName != anOldFileName )
   {
-    theErrorMsg = tr( "BAD_IMPORTED_BATHYMETRY_FILE" ).arg( aFileName );
-    return false;
+    aBathymetryObj->SetAltitudesInverted( anIsInvertAltitudes, false );
+    if ( !aBathymetryObj->ImportFromFile( HYDROGUI_Tool::ToAsciiString( aFileName ) ) )
+    {
+      theErrorMsg = tr( "BAD_IMPORTED_BATHYMETRY_FILE" ).arg( aFileName );
+      return false;
+    }
+  }
+  else if ( anIsInvertAltitudes != aBathymetryObj->IsAltitudesInverted() )
+  {
+    aBathymetryObj->SetAltitudesInverted( anIsInvertAltitudes );
   }
 
   aBathymetryObj->SetName( anObjectName );
@@ -190,7 +207,7 @@ void HYDROGUI_ImportBathymetryOp::onFileSelected()
     return;
 
   QString anObjectName = aPanel->getObjectName().simplified();
-  if ( anObjectName.isEmpty() )
+  //if ( anObjectName.isEmpty() )
   {
     anObjectName = aPanel->getFileName();
     if ( !anObjectName.isEmpty() ) {