Salome HOME
lot 10 - warnings for DTM - untested
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_ChannelOp.cxx
index 99bf0cb70ca9fff56f3364274e98c3657bd11c72..a0a699c031317e49f3d01689bfac69bcaf74667a 100644 (file)
@@ -36,6 +36,7 @@
 
 #include <LightApp_Application.h>
 #include <LightApp_UpdateFlags.h>
+#include <HYDROData_ChannelAltitude.h>
 
 #include <TopoDS.hxx>
 
@@ -118,6 +119,23 @@ void HYDROGUI_ChannelOp::startOperation()
   aPanel->setGuideLineName( aSelectedGuideLine );
   aPanel->setProfileName( aSelectedProfile );
 
+  if( !myEditedObject.IsNull() )
+    aPanel->setEquiDistance( myEditedObject->GetEquiDistance() );
+  else
+    aPanel->setEquiDistance( 1.0 );
+
+  if( !myEditedObject.IsNull() )
+  {
+    bool invDirection = false;
+    Handle(HYDROData_IAltitudeObject) anObjAltitude = myEditedObject->GetAltitudeObject();
+    Handle(HYDROData_ChannelAltitude) aChannelAlt = Handle(HYDROData_ChannelAltitude)::DownCast(anObjAltitude);
+    if (!aChannelAlt.IsNull())
+      invDirection = aChannelAlt->GetInvertDirection();
+    aPanel->setInvertDirection( invDirection );
+  }
+  else
+    aPanel->setInvertDirection( false );
+
   aPanel->blockSignals( false );
 
   onCreatePreview();
@@ -210,6 +228,12 @@ bool HYDROGUI_ChannelOp::processApply( int& theUpdateFlags,
 
     myEditedObject->RemoveProfile();
     myEditedObject->SetProfile( aProfile );
+    myEditedObject->SetEquiDistance( aPanel->getEquiDistance() );
+    ///
+    Handle(HYDROData_IAltitudeObject) anObjAltitude = myEditedObject->GetAltitudeObject();
+    Handle(HYDROData_ChannelAltitude) aChannelAlt = Handle(HYDROData_ChannelAltitude)::DownCast(anObjAltitude);
+    if (!aChannelAlt.IsNull())
+      aChannelAlt->SetInvertDirection(aPanel->getInvertDirection());
   }
 
   if ( myEditedObject->IsMustBeUpdated( HYDROData_Entity::Geom_2d ) )
@@ -292,7 +316,7 @@ void HYDROGUI_ChannelOp::onCreatePreview()
     HYDROGUI_Tool::FindObjectByName( module(), aProfileName, KIND_PROFILE ) );
 
   HYDROData_Channel::PrsDefinition aPrsDef;
-  if ( !HYDROData_Channel::CreatePresentations( aGuideLine, aProfile, aPrsDef ) )
+  if ( !HYDROData_Channel::CreatePresentations( aGuideLine, aProfile, aPrsDef, aPanel->getEquiDistance() ) )
   {
     erasePreview();
     return;