#include "SVTK_ViewModel.h"
#include "SVTK_Selector.h"
#include "SVTK_ViewWindow.h"
-#include "SALOME_Actor.h"
+#include "SVTK_Functor.h"
+#include "SALOME_Actor.h"
#include "SALOME_ListIteratorOfListIO.hxx"
+#include "VTKViewer_Algorithm.h"
+
+#include <vtkRenderer.h>
+
#include "utilities.h"
-//#ifdef _DEBUG_
+#ifdef _DEBUG_
static int MYDEBUG = 1;
-/*#else
+#else
static int MYDEBUG = 0;
-#endif*/
+#endif
SalomeApp_SVTKDataOwner
::SalomeApp_SVTKDataOwner( const Handle(SALOME_InteractiveObject)& theIO,
SalomeApp_VTKSelector
::SalomeApp_VTKSelector( SVTK_Viewer* viewer,
SUIT_SelectionMgr* mgr ):
- QObject( 0 ),
- SUIT_Selector( mgr ),
+ SUIT_Selector( mgr, viewer ),
myViewer( viewer )
{
if ( myViewer )
TColStd_IndexedMapOfInteger anIds;
aSelector->GetIndex(anIO,anIds);
SALOME_Actor* anActor = aSelector->GetActor(anIO);
+ if( !anActor )
+ anActor = VTK::Find<SALOME_Actor>(aView->getRenderer()->GetActors(),VTK::TIsSameIObject<SALOME_Actor>(anIO));
+
aList.append(new SalomeApp_SVTKDataOwner(anIO,anIds,aMode,anActor));
if(MYDEBUG) MESSAGE("VTKSelector::getSelection - "<<anIO->getEntry());
}
if(const SalomeApp_SVTKDataOwner* anOwner = dynamic_cast<const SalomeApp_SVTKDataOwner*>(aDataOwner)){
aSelector->SetSelectionMode(anOwner->GetMode());
Handle(SALOME_InteractiveObject) anIO = anOwner->IO();
- aSelector->AddIObject(anIO);
+
+ if( anOwner->GetActor() )
+ aSelector->AddIObject( anOwner->GetActor() );
+ else
+ aSelector->AddIObject(anIO);
+
anAppendList.Append(anIO);
aSelector->AddOrRemoveIndex(anIO,anOwner->GetIds(),false);
if(MYDEBUG) MESSAGE("VTKSelector::setSelection - SVTKDataOwner - "<<anIO->getEntry());
for( ; anIt.More(); anIt.Next() )
toRemove.remove( anIt.Value()->getEntry() );
-
-/* SALOME_ListIO aRemoveList;
- SALOME_ListIteratorOfListIO anAppendListIter(anAppendList);
- for(; anAppendListIter.More(); anAppendListIter.Next()){
- Handle(SALOME_InteractiveObject) anIO = anAppendListIter.Value();
- SALOME_ListIteratorOfListIO aStoredListIter(aStoredList);
- for(; aStoredListIter.More(); aStoredListIter.Next()){
- if(anIO->isSame(aStoredListIter.Value())){
- aRemoveList.Append(anIO);
- }
- }
- }
- SALOME_ListIteratorOfListIO aRemoveListIter(aRemoveList);*/
-
QMap< QString, Handle( SALOME_InteractiveObject )>::const_iterator RIt = toRemove.begin(),
REnd = toRemove.end();
for( ; RIt!=REnd; RIt++ )