X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FLightApp%2FLightApp_ShowHideOp.cxx;h=60828a5841834fe6ccafcd032365aa9ce715ac58;hb=53ecba1f9588efa0af0b9d3eee0ccec374888cf0;hp=4cf18982dd5d82d638cc020863ba236d5dd02d80;hpb=232b55569765049c7d1cceb5096a45f8584c9369;p=modules%2Fgui.git diff --git a/src/LightApp/LightApp_ShowHideOp.cxx b/src/LightApp/LightApp_ShowHideOp.cxx index 4cf18982d..60828a584 100644 --- a/src/LightApp/LightApp_ShowHideOp.cxx +++ b/src/LightApp/LightApp_ShowHideOp.cxx @@ -1,46 +1,58 @@ -// Copyright (C) 2005 OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D -// +// Copyright (C) 2007-2014 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 +// // 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. -// -// This library is distributed in the hope that it will be useful -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// License as published by the Free Software Foundation; either +// 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 +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU // Lesser General Public License for more details. // -// You should have received a copy of the GNU Lesser General Public -// License along with this library; if not, write to the Free Software +// You should have received a copy of the GNU Lesser General Public +// License along with this library; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA // -// See http://www.salome-platform.org/ +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // #include "LightApp_ShowHideOp.h" #include "LightApp_Application.h" -#include "LightApp_DataOwner.h" #include "LightApp_Module.h" #include "LightApp_Study.h" #include "LightApp_Displayer.h" -#include "CAM_Study.h" #include "LightApp_SelectionMgr.h" #include "LightApp_Selection.h" -#include -#include +#ifndef DISABLE_SALOMEOBJECT + #include + #include +#endif +/*! + Constructor +*/ LightApp_ShowHideOp::LightApp_ShowHideOp( ActionType type ) : LightApp_Operation(), myActionType( type ) { } +/*! + Destructor +*/ LightApp_ShowHideOp::~LightApp_ShowHideOp() { } +/*! + Makes show/hide operation +*/ void LightApp_ShowHideOp::startOperation() { LightApp_Application* app = dynamic_cast( application() ); @@ -52,14 +64,30 @@ void LightApp_ShowHideOp::startOperation() } LightApp_SelectionMgr* mgr = app->selectionMgr(); - LightApp_Selection sel; sel.init( "", mgr ); - if( sel.count()==0 && myActionType!=ERASE_ALL ) + LightApp_Module* mod = dynamic_cast( app->activeModule() ); + if( !mod ) + return; + + LightApp_Selection* sel = mod->createSelection(); + if( !sel ) + return; + + sel->init( "", mgr ); + if( sel->count()==0 && myActionType!=ERASE_ALL ) { abort(); return; } - QString aStr = sel.param( 0, "component" ).toString(); - QString mod_name = app->moduleTitle( aStr );//sel.param( 0, "component" ).toString() ); + + 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 ) { @@ -75,9 +103,9 @@ 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 ), true ); + LightApp_Displayer* disp = LightApp_Displayer::FindDisplayer( app->moduleTitle( *anIt ), false ); if( disp ) - disp->EraseAll( false, false, 0 ); + disp->EraseAll( false, false, 0 ); } if( myActionType==ERASE_ALL ) { @@ -87,30 +115,48 @@ void LightApp_ShowHideOp::startOperation() } } + QStringList entries; + +#ifndef DISABLE_SALOMEOBJECT SALOME_ListIO selObjs; mgr->selectedObjects( selObjs ); - - QStringList entries; SALOME_ListIteratorOfListIO anIt( selObjs ); for( ; anIt.More(); anIt.Next() ) - { - if( anIt.Value().IsNull() ) - continue; + if( !anIt.Value().IsNull() ) +#else + QStringList selObjs; + mgr->selectedObjects( selObjs ); + QStringList::const_iterator anIt = selObjs.begin(), aLast = selObjs.end(); + for( ; ; anIt!=aLast ) +#endif + { + QString entry = +#ifndef DISABLE_SALOMEOBJECT + anIt.Value()->getEntry(); +#else + *anIt; +#endif - if( study->isComponent( anIt.Value()->getEntry() ) ) - study->children( anIt.Value()->getEntry(), entries ); - else - entries.append( anIt.Value()->getEntry() ); - } + if( study->isComponent( entry ) ) + study->children( entry, entries ); + else + entries.append( entry ); + } - for( QStringList::const_iterator it = entries.begin(), last = entries.end(); it!=last; it++ ) - { - QString e = study->referencedToEntry( *it ); - if( myActionType==DISPLAY || myActionType==DISPLAY_ONLY ) - d->Display( e, false, 0 ); - else if( myActionType==ERASE ) - d->Erase( e, false, false, 0 ); + // 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 ) { + d->Display( objEntries, false, 0 ); + mgr->setSelectedObjects(selObjs); + } + else if( myActionType==ERASE ) { + d->Erase( objEntries, false, false, 0 ); } + d->UpdateViewer(); commit(); }