Salome HOME
Image positioning by two points.
[modules/hydro.git] / src / HYDROGUI / HYDROGUI_VisualStateOp.cxx
index 326b5ab8fe7dfa64148906ebabec7f2cb432dc00..0cb4447b63fa29a2659a6730fdc3ec4b7b23793f 100644 (file)
@@ -41,7 +41,7 @@
 #include <SUIT_ViewManager.h>
 #include <SUIT_ViewWindow.h>
 
-#include <QApplication.h>
+#include <QApplication>
 
 HYDROGUI_VisualStateOp::HYDROGUI_VisualStateOp( HYDROGUI_Module* theModule,
                                                 const bool theIsLoad )
@@ -59,6 +59,9 @@ void HYDROGUI_VisualStateOp::startOperation()
 {
   HYDROGUI_Operation::startOperation();
 
+  if( !myIsLoad )
+    startDocOperation();
+
   bool aResult = false;
   if( myIsLoad )
     aResult = loadVisualState();
@@ -66,9 +69,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()
@@ -109,7 +120,7 @@ bool HYDROGUI_VisualStateOp::saveVisualState()
   {
     if( SUIT_ViewManager* aViewManager = anIter.next() )
     {
-      int aViewId = (int)aViewManager->getViewModel();
+      size_t aViewId = (size_t)aViewManager->getViewModel();
       if( SUIT_ViewWindow* aViewWindow = aViewManager->getActiveView() )
       {
         QString aType = aViewManager->getType();
@@ -126,13 +137,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 );
@@ -198,7 +209,7 @@ bool HYDROGUI_VisualStateOp::loadVisualState()
     QString aViewerId = aViewerEntry.section( '_', -1 ); // unused
     if( SUIT_ViewManager* aViewManager = anApp->createViewManager( aType ) )
     {
-      int aViewId = (int)aViewManager->getViewModel();
+      size_t aViewId = (size_t)aViewManager->getViewModel();
       if( SUIT_ViewWindow* aViewWindow = aViewManager->getActiveView() )
       {
         // Wait until the window is really shown. This step fixes MANY bugs.
@@ -232,7 +243,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 +258,7 @@ bool HYDROGUI_VisualStateOp::loadVisualState()
               {
                 bool anIsVisible = aParameters[ aParamIndex ].toInt( &anIsOk[ ++aParamIndex ] );
                 if( anIsOk[ 0 ] )
-                  anObject->SetVisible( aViewId, anIsVisible );
+                  module()->setObjectVisible( aViewId, anObject, anIsVisible );
               }
             }
           }