]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Fix for the bug #135: It is impossible to rename bathymetry:
authorrkv <rkv@opencascade.com>
Tue, 3 Dec 2013 12:51:52 +0000 (12:51 +0000)
committerrkv <rkv@opencascade.com>
Tue, 3 Dec 2013 12:51:52 +0000 (12:51 +0000)
- "Edit imported bathymetry" operation is added.
- Created/edited bathymetry is shown in VTK viewer on apply.

src/HYDROGUI/HYDROGUI_ImportBathymetryOp.cxx
src/HYDROGUI/HYDROGUI_ImportBathymetryOp.h
src/HYDROGUI/HYDROGUI_Module.cxx
src/HYDROGUI/HYDROGUI_Operations.cxx
src/HYDROGUI/resources/HYDROGUI_msg_en.ts

index f42373395f25308d26a74225173c7585104af3c3..8fb9c815ab706ad2d6ba76311fe57dc763f5ca54 100644 (file)
 
 #include <LightApp_Application.h>
 #include <LightApp_UpdateFlags.h>
+#include <SUIT_ViewManager.h>
+#include <SVTK_ViewModel.h>
 
 #include <QFileInfo>
 
-HYDROGUI_ImportBathymetryOp::HYDROGUI_ImportBathymetryOp( HYDROGUI_Module* theModule )
-: HYDROGUI_Operation( theModule )
+HYDROGUI_ImportBathymetryOp::HYDROGUI_ImportBathymetryOp( HYDROGUI_Module* theModule, 
+                                                         const bool theIsEdit  )
+: HYDROGUI_Operation( theModule ),
+  myIsEdit( theIsEdit )
 {
-  setName( tr( "IMPORT_BATHYMETRY" ) );
+  setName( theIsEdit ? tr( "EDIT_IMPORTED_BATHYMETRY" ) : tr( "IMPORT_BATHYMETRY" ) );
 }
 
 HYDROGUI_ImportBathymetryOp::~HYDROGUI_ImportBathymetryOp()
@@ -55,6 +59,18 @@ void HYDROGUI_ImportBathymetryOp::startOperation()
     return;
 
   aPanel->reset();
+
+  if( myIsEdit )
+  {
+    myEditedObject = Handle(HYDROData_Bathymetry)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+    if( !myEditedObject.IsNull() )
+    {
+      QString aName = myEditedObject->GetName();
+      QString aFileName = myEditedObject->GetFilePath();
+      aPanel->setObjectName( aName );
+      aPanel->setFileName( aFileName );
+    }
+  }
 }
 
 void HYDROGUI_ImportBathymetryOp::abortOperation()
@@ -107,14 +123,22 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
 
   // 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() )
+  if ( ( !myIsEdit ) && ( !anObject.IsNull() ) )
   {
     theErrorMsg = tr( "OBJECT_EXISTS_IN_DOCUMENT" ).arg( anObjectName );
     return false;
   }
 
-  Handle(HYDROData_Bathymetry) aBathymetryObj = 
-    Handle(HYDROData_Bathymetry)::DownCast( doc()->CreateObject( KIND_BATHYMETRY ) );
+  Handle(HYDROData_Bathymetry) aBathymetryObj;
+  if ( myIsEdit )
+  {
+    aBathymetryObj = myEditedObject;
+  }
+  else
+  {
+    aBathymetryObj = 
+      Handle(HYDROData_Bathymetry)::DownCast( doc()->CreateObject( KIND_BATHYMETRY ) );
+  }
   if ( aBathymetryObj.IsNull() )
     return false;
 
@@ -126,7 +150,33 @@ bool HYDROGUI_ImportBathymetryOp::processApply( int& theUpdateFlags,
 
   aBathymetryObj->SetName( anObjectName );
 
-  theUpdateFlags = UF_Model;
+  // Activate VTK viewer and show the bathymetry
+  SUIT_ViewManager* aVTKMgr = 0;
+  SUIT_ViewManager* aViewMgr = module()->getApp()->activeViewManager();
+  // Try to get a VTK viewer as an active or existing one
+  if ( aViewMgr )
+  {
+    if ( aViewMgr->getType() == SVTK_Viewer::Type() )
+    {
+      aVTKMgr = aViewMgr;
+    }
+    else
+    {
+      aVTKMgr = module()->getApp()->viewManager( SVTK_Viewer::Type() );
+    }
+  }
+  // If there is no VTK viewer yet then create a new one
+  if ( !aVTKMgr )
+  {
+    aVTKMgr = module()->getApp()->createViewManager( SVTK_Viewer::Type() );
+  }
+  // Set the bathymetry visible in the VTK viewer
+  if ( aVTKMgr )
+  {
+    module()->setObjectVisible( (size_t)aVTKMgr->getViewModel(), aBathymetryObj, true );
+  }
+
+  theUpdateFlags = UF_Model | UF_VTKViewer | UF_VTK_Forced;
   return true;
 }
 
index 850ef425e66ca0553abddda48663ec70622c37bc..cdf6a39b455a07a6dfc3328ea7f4ccb95a4336bd 100644 (file)
 
 #include "HYDROGUI_Operation.h"
 
+#include <HYDROData_Bathymetry.h>
+
 
 class HYDROGUI_ImportBathymetryOp : public HYDROGUI_Operation
 {
   Q_OBJECT
 
 public:
-  HYDROGUI_ImportBathymetryOp( HYDROGUI_Module* theModule );
+  HYDROGUI_ImportBathymetryOp( HYDROGUI_Module* theModule, const bool theIsEdit  );
   virtual ~HYDROGUI_ImportBathymetryOp();
 
 protected:
@@ -48,6 +50,8 @@ protected slots:
   void                            onFileSelected();
 
 private:
+  bool                            myIsEdit;
+  Handle(HYDROData_Bathymetry)    myEditedObject;
 };
 
 #endif
index 8c8396d6624b33cc60e44e61f42c8f56f2aaec70..000ba16cc510a53ddeeddcf14dbe845ea2f36868 100644 (file)
@@ -447,6 +447,11 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
         theMenu->addAction( action( SplitImageId ) );
         theMenu->addSeparator();
       }
+      else if( anIsBathymetry )
+      {
+        theMenu->addAction( action( EditImportedBathymetryId ) );
+        theMenu->addSeparator();
+      }
       else if( anIsPolyline )
       {
         theMenu->addAction( action( EditPolylineId ) );
index de2587d5fd6a841012ccef2219de54a878c8412b..89e8ab2cb9a4c61b43827e02a90ecf8e659aa502 100644 (file)
@@ -122,6 +122,7 @@ void HYDROGUI_Module::createActions()
   createAction( SelectedGeoreferencementId, "GEOREFERENCEMENT" ); 
   
   createAction( ImportBathymetryId, "IMPORT_BATHYMETRY", "", Qt::CTRL + Qt::Key_B );
+  createAction( EditImportedBathymetryId, "EDIT_IMPORTED_BATHYMETRY" );
 
   createAction( CreateImmersibleZoneId, "CREATE_IMMERSIBLE_ZONE" );
   createAction( EditImmersibleZoneId, "EDIT_IMMERSIBLE_ZONE" );
@@ -374,7 +375,8 @@ LightApp_Operation* HYDROGUI_Module::createOperation( const int theId ) const
     anOp = new HYDROGUI_GeoreferencementOp( aModule, HYDROGUI_GeoreferencementOp::Selected ) ;
     break;
   case ImportBathymetryId:
-    anOp = new HYDROGUI_ImportBathymetryOp( aModule );
+  case EditImportedBathymetryId:
+    anOp = new HYDROGUI_ImportBathymetryOp( aModule, theId == EditImportedBathymetryId  );
     break;
   case CreateImmersibleZoneId:
   case EditImmersibleZoneId:
index c0538c9dd9326fc8aa32618b2dcfe9b0e1363a66..9911e68ade6f5294af677b63b6fb07b827e0ddc7 100644 (file)
@@ -343,6 +343,10 @@ Do you want to continue?</translation>
   
   <context>
     <name>HYDROGUI_ImportBathymetryOp</name>
+    <message>
+      <source>EDIT_IMPORTED_BATHYMETRY</source>
+      <translation>Edit imported bathymetry</translation>
+    </message>
     <message>
       <source>IMPORT_BATHYMETRY</source>
       <translation>Import bathymetry</translation>
@@ -588,6 +592,10 @@ file cannot be correctly imported for a Bathymetry definition.</translation>
       <source>DSK_IMPORT_BATHYMETRY</source>
       <translation>Import bathymetry</translation>
     </message>
+    <message>
+      <source>DSK_EDIT_IMPORTED_BATHYMETRY</source>
+      <translation>Edit imported bathymetry</translation>
+    </message>
     <message>
       <source>DSK_IMPORT_IMAGE</source>
       <translation>Import image</translation>
@@ -796,6 +804,10 @@ file cannot be correctly imported for a Bathymetry definition.</translation>
       <source>MEN_IMPORT_BATHYMETRY</source>
       <translation>Import bathymetry</translation>
     </message>
+    <message>
+      <source>MEN_EDIT_IMPORTED_BATHYMETRY</source>
+      <translation>Edit imported bathymetry</translation>
+    </message>
     <message>
       <source>MEN_IMPORT_IMAGE</source>
       <translation>Import image</translation>
@@ -980,6 +992,10 @@ file cannot be correctly imported for a Bathymetry definition.</translation>
       <source>STB_IMPORT_BATHYMETRY</source>
       <translation>Import bathymetry</translation>
     </message>
+    <message>
+      <source>STB_EDIT_IMPORTED_BATHYMETRY</source>
+      <translation>Edit imported bathymetry</translation>
+    </message>
     <message>
       <source>STB_IMPORT_IMAGE</source>
       <translation>Import image</translation>