Salome HOME
Remove obsolete code
[modules/gui.git] / src / SalomeApp / SalomeApp_OBSelector.cxx
1 #include "SalomeApp_OBSelector.h"
2
3 #include "SalomeApp_DataOwner.h"
4 #include "SalomeApp_DataObject.h"
5
6 #include <OB_Browser.h>
7
8 #include <SUIT_DataObjectIterator.h>
9
10 SalomeApp_OBSelector::SalomeApp_OBSelector( OB_Browser* ob, SUIT_SelectionMgr* mgr )
11 : SUIT_Selector( mgr, ob ),
12   myBrowser( ob )
13 {
14   if ( myBrowser ) {
15     connect( myBrowser, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) );
16   }    
17 }
18
19 SalomeApp_OBSelector::~SalomeApp_OBSelector()
20 {
21 }
22
23 OB_Browser* SalomeApp_OBSelector::browser() const
24 {
25   return myBrowser;
26 }
27
28
29 void SalomeApp_OBSelector::getSelection( SUIT_DataOwnerPtrList& list ) const
30 {
31   if ( !myBrowser )
32     return;
33
34   DataObjectList objlist;
35   myBrowser->getSelected( objlist );
36   for ( DataObjectListIterator it( objlist ); it.current(); ++it )
37   {
38     SalomeApp_DataObject* obj = dynamic_cast<SalomeApp_DataObject*>( it.current() );
39     if ( obj )
40     {
41       Handle( SALOME_InteractiveObject ) aSObj = new SALOME_InteractiveObject
42         ( obj->entry(), obj->componentDataType(), obj->name() );
43       list.append( SUIT_DataOwnerPtr( new SalomeApp_DataOwner( aSObj  ) ) );
44     }
45   }
46 }
47
48 void SalomeApp_OBSelector::setSelection( const SUIT_DataOwnerPtrList& list )
49 {
50   if ( !myBrowser )
51     return;
52
53   QMap<QString, SalomeApp_DataObject*> map;
54   fillEntries( map );
55
56   DataObjectList objList;
57   for ( SUIT_DataOwnerPtrList::const_iterator it = list.begin(); it != list.end(); ++it )
58   {
59     const SalomeApp_DataOwner* owner = dynamic_cast<const SalomeApp_DataOwner*>( (*it).operator->() );
60     if ( owner && map.contains( owner->entry() ) )
61       objList.append( map[owner->entry()] );
62   }
63
64   myBrowser->setSelected( objList );
65 }
66
67 void SalomeApp_OBSelector::onSelectionChanged()
68 {
69   selectionChanged();
70 }
71
72 void SalomeApp_OBSelector::fillEntries( QMap<QString, SalomeApp_DataObject*>& entires )
73 {
74   entires.clear();
75
76   if ( !myBrowser )
77     return;
78
79   for ( SUIT_DataObjectIterator it( myBrowser->getRootObject(),
80                                     SUIT_DataObjectIterator::DepthLeft ); it.current(); ++it )
81   {
82     SalomeApp_DataObject* obj = dynamic_cast<SalomeApp_DataObject*>( it.current() );
83     if ( obj )
84       entires.insert( obj->entry(), obj );
85   }
86 }