Salome HOME
bos #19960: [CEA 19958] Show/Hide SHAPERSTUDY objects
[modules/gui.git] / src / LightApp / LightApp_ShowHideOp.cxx
index 67103afde534eed7f06b0ba091eec48c589d72d6..a940de8fca5a58e48d25826c9a26ccf00b783c67 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2012  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  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
@@ -6,7 +6,7 @@
 // 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
 #include "LightApp_SelectionMgr.h"
 #include "LightApp_Selection.h"
 
+#include "SUIT_OverrideCursor.h"
+
 #ifndef DISABLE_SALOMEOBJECT
   #include <SALOME_ListIO.hxx>
-  #include <SALOME_ListIteratorOfListIO.hxx>
 #endif
 
 /*!
@@ -79,22 +80,6 @@ void LightApp_ShowHideOp::startOperation()
     return;
   }
 
-  QString mod_name;
-  if( sel->count()>0 )
-  {
-    QString aStr =  sel->parameter( 0, "displayer" ).toString();
-    mod_name = app->moduleTitle( aStr );
-  }
-  else if( app->activeModule() )
-    mod_name = app->moduleTitle( app->activeModule()->name() );
-
-  LightApp_Displayer* d = LightApp_Displayer::FindDisplayer( mod_name, true );
-  if( !d )
-  {
-    abort();
-    return;
-  }
-
   if( myActionType==DISPLAY_ONLY || myActionType==ERASE_ALL )
   {
     //ERASE ALL
@@ -103,18 +88,36 @@ void LightApp_ShowHideOp::startOperation()
     QStringList::const_iterator anIt = comps.begin(), aLast = comps.end();
     for( ; anIt!=aLast; anIt++ )
     {
-      LightApp_Displayer* disp = LightApp_Displayer::FindDisplayer( app->moduleTitle( *anIt ), false );
+      LightApp_Displayer* disp = LightApp_Displayer::FindDisplayer( *anIt, false );
       if( disp )
         disp->EraseAll( false, false, 0 );
     }
     if( myActionType==ERASE_ALL )
     {
-      d->UpdateViewer();
+      // Temporary displayer just to update viewer!
+      LightApp_Displayer ld;
+      ld.UpdateViewer();
       commit();
       return;
     }
   }
 
+  QString mod_name;
+  if( sel->count()>0 )
+  {
+    QString aStr = sel->parameter( 0, "displayer" ).toString();
+    mod_name = aStr;
+  }
+  else if( app->activeModule() )
+    mod_name = app->activeModule()->name();
+
+  LightApp_Displayer* d = LightApp_Displayer::FindDisplayer( mod_name, true );
+  if( !d )
+  {
+    abort();
+    return;
+  }
+
   QStringList entries;
 
 #ifndef DISABLE_SALOMEOBJECT
@@ -143,13 +146,14 @@ void LightApp_ShowHideOp::startOperation()
         entries.append( entry );
     }
 
-  // be sure to use real obejct entries
+  // be sure to use real object entries
   QStringList objEntries;
   QStringList::const_iterator it = entries.begin(), last = entries.end();
   for ( ; it!=last; ++it )
     objEntries.append( study->referencedToEntry( *it ) ); 
   
   if( myActionType==DISPLAY || myActionType==DISPLAY_ONLY ) {
+    SUIT_OverrideCursor wc;
     d->Display( objEntries, false, 0 );
     mgr->setSelectedObjects(selObjs);
   }