Salome HOME
Merge remote-tracking branch 'origin/BR_LAND_COVER' into BR_v14_rc
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_PolylineOp.cxx
index 2c299e2f778c38e300cb5ce9f59c7df6891d07a3..745cf67dc6259e75a94b3978857d41d895e8e577 100755 (executable)
@@ -1,12 +1,8 @@
-// Copyright (C) 2007-2013  CEA/DEN, EDF R&D, OPEN CASCADE
-//
-// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
-//
+// Copyright (C) 2014-2015  EDF-R&D
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 // License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
 //
 // This library is distributed in the hope that it will be useful,
 // but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -23,6 +19,7 @@
 #include "HYDROGUI_PolylineOp.h"
 
 #include "HYDROGUI_Module.h"
+#include "HYDROGUI_DataObject.h"
 #include "HYDROGUI_PolylineDlg.h"
 #include "HYDROGUI_Tool.h"
 #include "HYDROGUI_UpdateFlags.h"
@@ -30,7 +27,7 @@
 #include <HYDROData_Document.h>
 
 #include <CurveCreator_Curve.hxx>
-#include <CurveCreator_Displayer.h>
+#include <CurveCreator_Displayer.hxx>
 
 #include <LightApp_Application.h>
 #include <LightApp_SelectionMgr.h>
@@ -86,7 +83,7 @@ bool HYDROGUI_PolylineOp::deleteEnabled()
  */
 void HYDROGUI_PolylineOp::updatePreviewZLayer( int theLayer )
 {
-  setPreviewZLayer( theLayer );
+  HYDROGUI_Operation::updatePreviewZLayer( theLayer );
 
   int aZLayer = getPreviewZLayer();
   if ( aZLayer >= 0 )
@@ -110,7 +107,8 @@ void HYDROGUI_PolylineOp::startOperation()
 {
   if( myIsEdit )
   {
-    myEditedObject = Handle(HYDROData_PolylineXY)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
+    if ( isApplyAndClose() )
+         myEditedObject = Handle(HYDROData_PolylineXY)::DownCast( HYDROGUI_Tool::GetSelectedObject( module() ) );
     if ( !myEditedObject.IsNull() && !myEditedObject->IsEditable() )
     {
       // Polyline is imported from GEOM module an is not recognized as
@@ -139,6 +137,9 @@ void HYDROGUI_PolylineOp::startOperation()
   aPanel->setOCCViewer( aViewManager ? aViewManager->getOCCViewer() : 0 );
   setPreviewManager( aViewManager );
 
+  if ( isApplyAndClose() )
+    setCursor();
+
   QString aPolylineName;
   if( !myEditedObject.IsNull() )
   {
@@ -185,6 +186,8 @@ void HYDROGUI_PolylineOp::startOperation()
 
 void HYDROGUI_PolylineOp::abortOperation()
 {
+  restoreCursor();
+
   HYDROGUI_PolylineDlg* aPanel = (HYDROGUI_PolylineDlg*)inputPanel();
   if ( aPanel )
     aPanel->setOCCViewer( 0 );
@@ -195,9 +198,15 @@ void HYDROGUI_PolylineOp::abortOperation()
 
 void HYDROGUI_PolylineOp::commitOperation()
 {
-  HYDROGUI_PolylineDlg* aPanel = (HYDROGUI_PolylineDlg*)inputPanel();
-  if ( aPanel )
-    aPanel->setOCCViewer( 0 );
+  if ( isApplyAndClose() )
+  {
+    restoreCursor();
+
+    HYDROGUI_PolylineDlg* aPanel = (HYDROGUI_PolylineDlg*)inputPanel();
+    if ( aPanel )
+      aPanel->setOCCViewer( 0 );
+  }
+
   erasePreview();
 
   HYDROGUI_Operation::commitOperation();
@@ -211,7 +220,8 @@ HYDROGUI_InputPanel* HYDROGUI_PolylineOp::createInputPanel() const
 }
 
 bool HYDROGUI_PolylineOp::processApply( int& theUpdateFlags,
-                                        QString& theErrorMsg )
+                                        QString& theErrorMsg,
+                                        QStringList& theBrowseObjectsEntries )
 {
   HYDROGUI_PolylineDlg* aPanel = ::qobject_cast<HYDROGUI_PolylineDlg*>( inputPanel() );
   if ( !aPanel )
@@ -321,6 +331,8 @@ bool HYDROGUI_PolylineOp::processApply( int& theUpdateFlags,
   if( !myIsEdit )
   {
     module()->setObjectVisible( anActiveViewId, aPolylineObj, true );
+    QString anEntry = HYDROGUI_DataObject::dataObjectEntry( aPolylineObj );
+    theBrowseObjectsEntries.append( anEntry );
   }  
 
   return true;