Salome HOME
Merge branch 'BR_LAND_COVER_MAP' into BR_quadtree
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_VisualStateOp.cxx
index dd0523aaaee3baed98c9a5aaf64b85901aa02f36..9c866b85cb0a16d9d9f8765223cbd9e18458b5b5 100644 (file)
@@ -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,7 +19,7 @@
 #include "HYDROGUI_VisualStateOp.h"
 
 #include "HYDROGUI_Module.h"
-#include "HYDROGUI_Tool.h"
+#include "HYDROGUI_Tool2.h"
 #include "HYDROGUI_UpdateFlags.h"
 
 #include <HYDROData_Document.h>
@@ -59,6 +55,9 @@ void HYDROGUI_VisualStateOp::startOperation()
 {
   HYDROGUI_Operation::startOperation();
 
+  if( !myIsLoad )
+    startDocOperation();
+
   bool aResult = false;
   if( myIsLoad )
     aResult = loadVisualState();
@@ -66,9 +65,17 @@ void HYDROGUI_VisualStateOp::startOperation()
     aResult = saveVisualState();
 
   if( aResult )
+  {
+    if( !myIsLoad )
+      commitDocOperation();
     commit();
+  }
   else
-    abort(); // do not commit the document command
+  {
+    if( !myIsLoad )
+      abortDocOperation();
+    abort();
+  }
 }
 
 bool HYDROGUI_VisualStateOp::saveVisualState()
@@ -84,7 +91,7 @@ bool HYDROGUI_VisualStateOp::saveVisualState()
     if( aVisualState.IsNull() )
       return false;
 
-    QString aName = HYDROGUI_Tool::GenerateObjectName( module(), "VisualState" );
+    QString aName = HYDROGUI_Tool::GenerateObjectName( module(), tr( "DEFAULT_VISUAL_STATE_NAME" ) );
     aVisualState->SetName( aName );
   }
 
@@ -126,13 +133,13 @@ bool HYDROGUI_VisualStateOp::saveVisualState()
 
         for( int anObjIndex = 1, aLength = aSeq.Length(); anObjIndex <= aLength; anObjIndex++ )
         {
-          Handle(HYDROData_Object) anObject = aSeq.Value( anObjIndex );
+          Handle(HYDROData_Entity) anObject = aSeq.Value( anObjIndex );
           if( !anObject.IsNull() )
           {
             // Format: "Name|Visibility[|CoordX|CoordY]"
             QString aParameters = anObject->GetName();
 
-            int aVisibility = (int)anObject->IsVisible( aViewId );
+            int aVisibility = (int)( module()->isObjectVisible( aViewId, anObject ) );
             aParameters.append( QString( "|%1" ).arg( aVisibility ) );
 
             setVisualProperty( aPropertyMap, aViewerEntry, aParameters, true );
@@ -158,7 +165,7 @@ bool HYDROGUI_VisualStateOp::saveVisualState()
   //printf( "--- SetState -----------\n" );
   //printf( "%s\n", qPrintable( aState ) );
   //printf( "------------------------\n" );
-  aVisualState->SetState( aState );
+  aVisualState->SetState( aState.toStdString() );
 
   module()->update( UF_Model );
 
@@ -174,7 +181,7 @@ bool HYDROGUI_VisualStateOp::loadVisualState()
   if( aVisualState.IsNull() )
     return false;
 
-  QString aState = aVisualState->GetState();
+  QString aState = QString::fromStdString( aVisualState->GetState() );
   //printf( "--- GetState -----------\n" );
   //printf( "%s\n", qPrintable( aState ) );
   //printf( "------------------------\n" );
@@ -232,7 +239,7 @@ bool HYDROGUI_VisualStateOp::loadVisualState()
 
         for( int anObjIndex = 1, aLength = aSeq.Length(); anObjIndex <= aLength; anObjIndex++ )
         {
-          Handle(HYDROData_Object) anObject = aSeq.Value( anObjIndex );
+          Handle(HYDROData_Entity) anObject = aSeq.Value( anObjIndex );
           if( !anObject.IsNull() )
           {
             QString aName = anObject->GetName();
@@ -247,7 +254,7 @@ bool HYDROGUI_VisualStateOp::loadVisualState()
               {
                 bool anIsVisible = aParameters[ aParamIndex ].toInt( &anIsOk[ ++aParamIndex ] );
                 if( anIsOk[ 0 ] )
-                  anObject->SetVisible( aViewId, anIsVisible );
+                  module()->setObjectVisible( aViewId, anObject, anIsVisible );
               }
             }
           }