Salome HOME
Merge branch 'BR_LAND_COVER' of ssh://git.salome-platform.org/modules/hydro into...
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_ChannelOp.cxx
index afeff419c4dd7ece745a854d3daf89b701c3282e..f00d5804c1d847b70661f8ba8f19570b55bd2550 100644 (file)
@@ -62,15 +62,17 @@ void HYDROGUI_ChannelOp::startOperation()
 
   aPanel->reset();
 
-  myEditedObject.Nullify();
+  if ( isApplyAndClose() )
+    myEditedObject.Nullify();
 
   QString aSelectedGuideLine, aSelectedProfile;
 
   QString anObjectName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_CHANNEL_NAME" ) );
   if ( myIsEdit )
   {
-    myEditedObject =
-      Handle(HYDROData_Channel)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+    if ( isApplyAndClose() )
+      myEditedObject =
+        Handle(HYDROData_Channel)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
     if ( !myEditedObject.IsNull() )
     {
       anObjectName = myEditedObject->GetName();
@@ -105,7 +107,7 @@ void HYDROGUI_ChannelOp::startOperation()
   }
 
   // collect information about existing profiles
-  QStringList aProfiles = HYDROGUI_Tool::FindExistingObjectsNames( doc(), KIND_PROFILE, true );
+  QStringList aProfiles = HYDROGUI_Tool::FindExistingObjectsNames( doc(), KIND_PROFILE, false );
 
   aPanel->setObjectName( anObjectName );
 
@@ -179,19 +181,33 @@ bool HYDROGUI_ChannelOp::processApply( int& theUpdateFlags,
 
   QString aGuideLineName = aPanel->getGuideLineName();
   QString aProfileName = aPanel->getProfileName();
-  if ( aGuideLineName.isEmpty() || aProfileName.isEmpty() )
+  /*if ( aGuideLineName.isEmpty() || aProfileName.isEmpty() )
   {
     myEditedObject->RemoveGuideLine();
     myEditedObject->RemoveProfile();
   }
-  else
+  else*/
   {
     Handle(HYDROData_Polyline3D) aGuideLine = Handle(HYDROData_Polyline3D)::DownCast(
       HYDROGUI_Tool::FindObjectByName( module(), aGuideLineName, KIND_POLYLINE ) );
+    if ( aGuideLine.IsNull() )
+    {
+      theErrorMsg = tr( "GUIDE_LINE_IS_NOT_SELECTED" );
+      return false;
+    }
+
+    myEditedObject->RemoveGuideLine();
     myEditedObject->SetGuideLine( aGuideLine );
 
     Handle(HYDROData_Profile) aProfile = Handle(HYDROData_Profile)::DownCast(
       HYDROGUI_Tool::FindObjectByName( module(), aProfileName, KIND_PROFILE ) );
+    if ( aProfile.IsNull() )
+    {
+      theErrorMsg = tr( "PROFILE_IS_NOT_SELECTED" );
+      return false;
+    }
+
+    myEditedObject->RemoveProfile();
     myEditedObject->SetProfile( aProfile );
   }