Salome HOME
Tests for Bathymetry object.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Module.cxx
index c436594d9192a536fec78d1c26fbd8b50dcebfe8..c355b51cc17d09b81ec638636f5c95c53e4c5e58 100644 (file)
 
 #include <HYDROData_Image.h>
 
+#include <HYDROOperations_Factory.h>
+
 #include <GraphicsView_ViewFrame.h>
 #include <GraphicsView_ViewManager.h>
 #include <GraphicsView_ViewPort.h>
 #include <GraphicsView_Viewer.h>
 
+#include <ImageComposer_CutOperator.h>
+#include <ImageComposer_CropOperator.h>
+#include <ImageComposer_FuseOperator.h>
+
 #include <LightApp_Application.h>
 #include <LightApp_GVSelector.h>
 #include <LightApp_SelectionMgr.h>
@@ -62,6 +68,11 @@ extern "C" HYDRO_EXPORT CAM_Module* createModule()
   return new HYDROGUI_Module();
 }
 
+extern "C" HYDRO_EXPORT char* getModuleVersion()
+{
+  return (char*)HYDRO_VERSION;
+}
+
 HYDROGUI_Module::HYDROGUI_Module()
 : LightApp_Module( "HYDRO" ),
   myDisplayer( 0 ),
@@ -150,7 +161,11 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
   bool anIsHiddenInSelection = false;
 
   bool anIsImage = false;
+  bool anIsImportedImage = false;
   bool anIsCompositeImage = false;
+  bool anIsFusedImage = false;
+  bool anIsCutImage = false;
+  bool anIsSplittedImage = false;
   bool anIsMustBeUpdatedImage = false;
   bool anIsPolyline = false;
   bool anIsVisualState = false;
@@ -173,7 +188,20 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
         Handle(HYDROData_Image) anImage = Handle(HYDROData_Image)::DownCast( anObject );
         if( !anImage.IsNull() )
         {
+          anIsImportedImage = anImage->HasTrsfPoints() && !anImage->IsSelfSplitted();
           anIsCompositeImage = anImage->NbReferences() > 0;
+          if( HYDROOperations_Factory* aFactory = HYDROOperations_Factory::Factory() )
+          {
+            if( ImageComposer_Operator* anOperator = aFactory->Operator( anImage ) )
+            {
+              if( dynamic_cast<ImageComposer_FuseOperator*>( anOperator ) )
+                anIsFusedImage = true;
+              else if( dynamic_cast<ImageComposer_CutOperator*>( anOperator ) )
+                anIsCutImage = true;
+              else if( dynamic_cast<ImageComposer_CropOperator*>( anOperator ) )
+                anIsSplittedImage = true;
+            }
+          }
           anIsMustBeUpdatedImage = anImage->MustBeUpdated();
         }
       }
@@ -200,7 +228,18 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
   {
     if( anIsImage )
     {
-      theMenu->addAction( action( anIsCompositeImage ? EditCompositeImageId : EditImportedImageId ) );
+      if( anIsImportedImage )
+        theMenu->addAction( action( EditImportedImageId ) );
+      else if( anIsCompositeImage )
+      {
+        if( anIsFusedImage )
+          theMenu->addAction( action( EditFusedImageId ) );
+        else if( anIsCutImage )
+          theMenu->addAction( action( EditCutImageId ) );
+        else if( anIsSplittedImage )
+          theMenu->addAction( action( EditSplittedImageId ) );
+      }
+
       theMenu->addAction( action( ObserveImageId ) );
       theMenu->addAction( action( ExportImageId ) );
       theMenu->addSeparator();