1 #include "SalomeApp_VTKSelector.h"
2 #include "SalomeApp_DataOwner.h"
4 #include "SVTK_ViewModel.h"
5 #include "SVTK_Selector.h"
6 #include "SVTK_ViewWindow.h"
7 #include "SALOME_Actor.h"
9 #include "SALOME_ListIteratorOfListIO.hxx"
11 #include "utilities.h"
14 static int MYDEBUG = 0;
16 static int MYDEBUG = 0;
19 SalomeApp_SVTKDataOwner
20 ::SalomeApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO,
21 const TColStd_IndexedMapOfInteger& theIds,
22 Selection_Mode theMode,
23 SALOME_Actor* theActor):
24 SalomeApp_DataOwner(theIO->getEntry()),
26 mySelectionMode(theMode),
29 myIds = theIds; // workaround - there is no constructor copy for the container
32 SalomeApp_SVTKDataOwner
33 ::~SalomeApp_SVTKDataOwner()
38 SalomeApp_SVTKDataOwner
41 return myActor.GetPointer();
46 ::SalomeApp_VTKSelector( SVTK_Viewer* viewer,
47 SUIT_SelectionMgr* mgr ):
53 connect( myViewer, SIGNAL( selectionChanged() ), this, SLOT( onSelectionChanged() ) );
57 ::~SalomeApp_VTKSelector()
72 return SVTK_Viewer::Type();
77 ::onSelectionChanged()
84 ::getSelection( SUIT_DataOwnerPtrList& aList ) const
87 if(SUIT_ViewManager* aViewMgr = myViewer->getViewManager()){
88 if(SVTK_ViewWindow* aView = dynamic_cast<SVTK_ViewWindow*>(aViewMgr->getActiveView())){
89 if(SVTK_Selector* aSelector = aView->GetSelector()){
90 Selection_Mode aMode = aSelector->SelectionMode();
91 const SALOME_ListIO& aListIO = aSelector->StoredIObjects();
92 SALOME_ListIteratorOfListIO anIter(aListIO);
93 for(; anIter.More(); anIter.Next()){
94 Handle(SALOME_InteractiveObject) anIO = anIter.Value();
96 TColStd_IndexedMapOfInteger anIds;
97 aSelector->GetIndex(anIO,anIds);
98 SALOME_Actor* anActor = aSelector->GetActor(anIO);
99 aList.append(new SalomeApp_SVTKDataOwner(anIO,anIds,aMode,anActor));
100 if(MYDEBUG) MESSAGE("VTKSelector::getSelection - "<<anIO->getEntry());
110 SalomeApp_VTKSelector
111 ::setSelection( const SUIT_DataOwnerPtrList& theList )
114 if(SUIT_ViewManager* aViewMgr = myViewer->getViewManager()){
115 if(SVTK_ViewWindow* aView = dynamic_cast<SVTK_ViewWindow*>(aViewMgr->getActiveView())){
116 if(SVTK_Selector* aSelector = aView->GetSelector()){
117 aSelector->ClearIObjects();
118 SUIT_DataOwnerPtrList::const_iterator anIter = theList.begin();
119 for(; anIter != theList.end(); ++anIter){
120 const SUIT_DataOwner* aDataOwner = (*anIter).get();
121 if(const SalomeApp_SVTKDataOwner* anOwner = dynamic_cast<const SalomeApp_SVTKDataOwner*>(aDataOwner)){
122 aSelector->SetSelectionMode(anOwner->GetMode());
123 Handle(SALOME_InteractiveObject) anIO = anOwner->GetIO();
124 aSelector->AddIObject(anIO);
125 aSelector->AddOrRemoveIndex(anIO,anOwner->GetIds(),false);
126 if(MYDEBUG) MESSAGE("VTKSelector::setSelection - SVTKDataOwner - "<<anIO->getEntry());
127 }else if(const SalomeApp_DataOwner* anOwner = dynamic_cast<const SalomeApp_DataOwner*>(aDataOwner)){
128 Handle(SALOME_InteractiveObject) anIO =
129 new SALOME_InteractiveObject(anOwner->entry().latin1(),"");
130 aSelector->AddIObject(anIO);
131 if(MYDEBUG) MESSAGE("VTKSelector::setSelection - DataOwner - "<<anIO->getEntry());
134 aView->onSelectionChanged();