Salome HOME
refs #525: autocolor of zones in a calculation case.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_Module.cxx
index d08d53b5aaa3f980bf9f84d5def5df83aec0635d..e0f4f8c8cb236158b8a3d832ec24e858e784d8c3 100644 (file)
 #include "HYDROGUI_ImportGeomObjectOp.h"
 #include "HYDROGUI_ShowHideOp.h"
 
+#include <HYDROData_Tool.h>
 #include <HYDROData_Image.h>
+#include <HYDROData_Stream.h>
 #include <HYDROData_Profile.h>
 #include <HYDROData_Lambert93.h>
-#include <HYDROData_Tool.h>
+#include <HYDROData_Polyline3D.h>
 
 #include <HYDROData_OperationsFactory.h>
 
@@ -339,6 +341,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
   bool anIsGroup = false;
   bool anIsObjectCanBeColored = false;
   bool isRoot = false;
+  bool isStreamHasBottom = false;
 
   SUIT_SelectionMgr* aSelectionMgr = getApp()->selectionMgr();
   SUIT_DataOwnerPtrList anOwners;
@@ -450,7 +453,13 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
       else if( anObjectKind == KIND_OBSTACLE )
         anIsObstacle = true;
       else if( anObjectKind == KIND_STREAM )
+      {
         anIsStream = true;
+        Handle(HYDROData_Stream) aStream = 
+          Handle(HYDROData_Stream)::DownCast( anObject );
+        if ( !aStream.IsNull() )
+            isStreamHasBottom = !aStream->GetBottomPolyline().IsNull();
+      }
       else if( anObjectKind == KIND_CHANNEL )
         anIsChannel = true;
       else if( anObjectKind == KIND_DIGUE )
@@ -599,6 +608,12 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
       else if( anIsStream )
       {
         theMenu->addAction( action( EditStreamId ) );
+        if ( action( RiverBottomContextId ) )
+        {
+            theMenu->addAction( action( RiverBottomContextId ) );
+            action( RiverBottomContextId )->setEnabled( !isStreamHasBottom );
+        }
+        theMenu->addAction( action( ProfileInterpolateId ) );
         theMenu->addSeparator();
       }
       else if( anIsChannel )