-// LIGHT : sample (no-corba-engine) SALOME module
-//
-// Copyright (C) 2003 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
-// 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
-// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-//
-// See http://www.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org
-//
-// Author : Julia DOROVSKIKH
-// Date : 01/01/2005
-// $Header$
-
-#include "LIGHTGUI_OBSelector.h"
-#include "LIGHTGUI_DataOwner.h"
-#include "LIGHTGUI_DataObject.h"
-
-#include <OB_Browser.h>
-
-#include <SUIT_DataObjectIterator.h>
-
-//=================================================================================
-// function : LIGHTGUI_OBSelector()
-// purpose : constructor
-//=================================================================================
-LIGHTGUI_OBSelector::LIGHTGUI_OBSelector ( OB_Browser* ob, SUIT_SelectionMgr* mgr )
- : SUIT_Selector( mgr, ob ),
- myBrowser( ob )
-{
- if ( myBrowser ) {
- connect( myBrowser, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) );
- }
-}
-
-//=================================================================================
-// function : ~LIGHTGUI_OBSelector()
-// purpose : destructor
-//=================================================================================
-LIGHTGUI_OBSelector::~LIGHTGUI_OBSelector()
-{
-}
-
-//=================================================================================
-// function : browser()
-// purpose : gets object browser
-//=================================================================================
-OB_Browser* LIGHTGUI_OBSelector::browser() const
-{
- return myBrowser;
-}
-
-//=================================================================================
-// function : getSelection()
-// purpose : gets selection
-//=================================================================================
-void LIGHTGUI_OBSelector::getSelection ( SUIT_DataOwnerPtrList& aList ) const
-{
- if ( !myBrowser )
- return;
-
- DataObjectList objlist;
- myBrowser->getSelected( objlist );
- for ( DataObjectListIterator it ( objlist ); it.current(); ++it )
- {
- LIGHTGUI_DataObject* obj = dynamic_cast<LIGHTGUI_DataObject*>( it.current() );
- if ( obj )
- aList.append( SUIT_DataOwnerPtr( new LIGHTGUI_DataOwner( obj->lineNb() ) ) );
- }
-}
-
-//=================================================================================
-// function : setSelection()
-// purpose : sets selection
-//=================================================================================
-void LIGHTGUI_OBSelector::setSelection ( const SUIT_DataOwnerPtrList& aList )
-{
- if ( !myBrowser )
- return;
-
- // Fill map of all data objects
- QMap<int, LIGHTGUI_DataObject*> aMap;
-
- SUIT_DataObjectIterator objit ( myBrowser->getRootObject(),
- SUIT_DataObjectIterator::DepthLeft );
- for ( ; objit.current(); ++objit )
- {
- LIGHTGUI_DataObject* obj = dynamic_cast<LIGHTGUI_DataObject*>( objit.current() );
- if ( obj )
- aMap.insert( obj->lineNb(), obj );
- }
-
- // Fill list with all selected data objects
- DataObjectList objList;
- SUIT_DataOwnerPtrList::const_iterator ownit = aList.begin();
- for ( ; ownit != aList.end(); ++ownit )
- {
- const LIGHTGUI_DataOwner* owner =
- dynamic_cast<const LIGHTGUI_DataOwner*>( (*ownit).get() );
- if ( owner && aMap.contains( owner->lineNb() ) )
- objList.append( aMap[owner->lineNb()] );
- }
-
- myBrowser->setSelected( objList );
-}
-
-//=================================================================================
-// function : onSelectionChanged()
-// purpose : called when selection is changed in the Object Browser
-//=================================================================================
-void LIGHTGUI_OBSelector::onSelectionChanged()
-{
- selectionChanged();
-}