]> SALOME platform Git repositories - modules/hydro.git/commitdiff
Salome HOME
Implement show/hide for profiles.
authormzn <mzn@opencascade.com>
Fri, 29 Nov 2013 14:49:27 +0000 (14:49 +0000)
committermzn <mzn@opencascade.com>
Fri, 29 Nov 2013 14:49:27 +0000 (14:49 +0000)
src/HYDROGUI/HYDROGUI_Module.cxx
src/HYDROGUI/HYDROGUI_OCCDisplayer.cxx
src/HYDROGUI/HYDROGUI_Shape.cxx
src/HYDROGUI/HYDROGUI_Tool.cxx

index 36b56ec1efd0c3c04888c8acfbbea805c2481bc8..9357c85f6918dd34a5cce0e6d3ebbcc4a98ac118 100644 (file)
@@ -41,6 +41,7 @@
 #include "HYDROGUI_PolylineOp.h"
 
 #include <HYDROData_Image.h>
+#include <HYDROData_Profile.h>
 #include <HYDROData_Lambert93.h>
 #include <HYDROData_Tool.h>
 
@@ -229,6 +230,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
   bool anIsMustBeUpdatedImage = false;
   bool anIsPolyline = false;
   bool anIsProfile = false;
+  bool anIsValidProfile = false;
   bool anAllAreProfiles = false;
   bool anIsBathymetry = false;
   bool anIsCalculation = false;
@@ -291,6 +293,12 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
       else if( anObject->GetKind() == KIND_PROFILE ) {
         anIsProfile = true;
         aNbOfSelectedProfiles++;
+
+        Handle(HYDROData_Profile) aProfile = 
+          Handle(HYDROData_Profile)::DownCast( anObject );
+        if( !aProfile.IsNull() && aProfile->IsValid() ) {
+          anIsValidProfile = true;
+        }
       }
       else if( anObject->GetKind() == KIND_CALCULATION )
         anIsCalculation = true;
@@ -430,9 +438,7 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
         theMenu->addAction( action( SetColorId ) );
         theMenu->addSeparator();
       }
-    }
-
-    if ( anAllAreProfiles ) {
+    } else if ( anAllAreProfiles ) {
       theMenu->addAction( action( SelectedGeoreferencementId ) );
       theMenu->addSeparator();
     }
@@ -440,7 +446,8 @@ void HYDROGUI_Module::contextMenuPopup( const QString& theClient,
     theMenu->addAction( action( DeleteId ) );
     theMenu->addSeparator();
 
-    if( anIsImage || anIsPolyline || anIsImmersibleZone || anIsZone || anIsRegion || anIsBathymetry || anIsObstacle )
+    if( anIsImage || anIsPolyline || anIsImmersibleZone || anIsZone || 
+        anIsRegion || anIsBathymetry || anIsObstacle || anIsValidProfile )
     {
       if( anIsHiddenInSelection )
         theMenu->addAction( action( ShowId ) );
index faf46892d0e4c70af36683fa1f5e0b3a5d43fd6e..51dfa2f38e6a04d08a3132b10cae89a69c08e8d2 100644 (file)
@@ -105,7 +105,8 @@ HYDROGUI_Shape* HYDROGUI_OCCDisplayer::createShape( const int
        anObjectKind != KIND_IMMERSIBLE_ZONE &&
        anObjectKind != KIND_REGION &&
        anObjectKind != KIND_ZONE &&
-       anObjectKind != KIND_OBSTACLE  )
+       anObjectKind != KIND_OBSTACLE &&
+       anObjectKind != KIND_PROFILE )
     return aResShape;
 
   aResShape = new HYDROGUI_Shape( theContext, theObject );
index 799c09f2b36eb4763ae8c2cba2d89e94ff5971fe..f37fe90051c061ca6b1765bd183b3482b294862b 100644 (file)
@@ -44,6 +44,7 @@
 #include <HYDROData_Region.h>
 #include <HYDROData_Zone.h>
 #include <HYDROData_Obstacle.h>
+#include <HYDROData_Profile.h>
 
 #include <TopoDS.hxx>
 #include <TopoDS_Wire.hxx>
@@ -285,6 +286,28 @@ void HYDROGUI_Shape::update( const bool theIsUpdateViewer )
       updateShape( false, false );
       //TODO END of the block of code to be reimplemented
     }
+    else if ( myObject->IsKind( STANDARD_TYPE(HYDROData_Profile) ) )
+    {
+      Handle(HYDROData_Profile) aProfile =
+        Handle(HYDROData_Profile)::DownCast( myObject );
+
+      if ( aProfile->IsValid() ) {
+        TopoDS_Shape aProfileShape = aProfile->GetShape3D();
+
+        if ( !aProfileShape.IsNull() ) {
+          if ( aProfileShape.ShapeType() == TopAbs_WIRE ) {
+            TopoDS_Wire aProfileWire = TopoDS::Wire( aProfileShape );
+            setWire( aProfileWire, false, false );  
+          } else {
+            myTopoShape = aProfileShape;
+            myDisplayMode = AIS_WireFrame;
+
+            buildShape();
+            updateShape( false, false );
+          }
+        }
+      }
+    }
   }
  
   if ( myShape.IsNull() || !isVisible() )
index 0f2b7c2c8d93f3c07917c6cb8121ca3ee5cf4730..bb9da6793499fe2edde551c0a4f1138e9af0a965 100644 (file)
@@ -221,7 +221,8 @@ void HYDROGUI_Tool::GetPrsSubObjects( HYDROGUI_Module* theModule,
         ( anObject->GetKind() == KIND_REGION ) ||
         ( anObject->GetKind() == KIND_BATHYMETRY ) ||
         ( anObject->GetKind() == KIND_ZONE ) ||
-        ( anObject->GetKind() == KIND_OBSTACLE ) ) )
+        ( anObject->GetKind() == KIND_OBSTACLE ) ||
+        ( anObject->GetKind() == KIND_PROFILE ) ) )
       {
         theSeq.Append( anObject );
       }