Salome HOME
Python console has been added for HYDRO module (Bug #22).
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Module.cxx
index c436594d9192a536fec78d1c26fbd8b50dcebfe8..f011cfe9ae6b6bbf4013079be6da1f18d03294f2 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>
@@ -47,6 +53,7 @@
 
 #include <SALOME_Event.h>
 
+#include <SUIT_Desktop.h>
 #include <SUIT_Study.h>
 #include <SUIT_ViewManager.h>
 
@@ -62,6 +69,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 ),
@@ -99,9 +111,17 @@ bool HYDROGUI_Module::activateModule( SUIT_Study* theStudy )
 {
   bool aRes = LightApp_Module::activateModule( theStudy );
 
+  LightApp_Application* anApp = getApp();
+  SUIT_Desktop* aDesktop = anApp->desktop();
+
   setMenuShown( true );
   setToolShown( true );
 
+#ifndef DISABLE_PYCONSOLE
+  aDesktop->tabifyDockWidget( HYDROGUI_Tool::WindowDock( anApp->getWindow( LightApp_Application::WT_PyConsole ) ), 
+                              HYDROGUI_Tool::WindowDock( anApp->getWindow( LightApp_Application::WT_LogWindow ) ) );
+#endif
+
   update( UF_All );
 
   updateCommandsStatus();
@@ -129,6 +149,9 @@ void HYDROGUI_Module::windows( QMap<int, int>& theMap ) const
 {
   theMap.clear();
   theMap.insert( LightApp_Application::WT_LogWindow,     Qt::BottomDockWidgetArea );
+#ifndef DISABLE_PYCONSOLE
+  theMap.insert( LightApp_Application::WT_PyConsole,     Qt::BottomDockWidgetArea );
+#endif
   theMap.insert( LightApp_Application::WT_ObjectBrowser, Qt::LeftDockWidgetArea   );
 }
 
@@ -150,9 +173,14 @@ 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 anIsCalculation = false;
   bool anIsVisualState = false;
 
   HYDROData_SequenceOfObjects aSeq = HYDROGUI_Tool::GetSelectedObjects( this );
@@ -173,12 +201,27 @@ 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();
         }
       }
       else if( anObject->GetKind() == KIND_POLYLINE )
         anIsPolyline = true;
+      else if( anObject->GetKind() == KIND_CALCULATION )
+        anIsCalculation = true;
       else if( anObject->GetKind() == KIND_VISUAL_STATE )
         anIsVisualState = true;
     }
@@ -200,7 +243,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();
@@ -210,6 +264,11 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
       theMenu->addAction( action( EditPolylineId ) );
       theMenu->addSeparator();
     }
+    else if( anIsCalculation )
+    {
+      theMenu->addAction( action( EditCalculationId ) );
+      theMenu->addSeparator();
+    }
     else if( anIsVisualState )
     {
       theMenu->addAction( action( SaveVisualStateId ) );