X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpExtensions%2FInteraction%2FSeedWidget.cxx;h=1dcf2233bd28a4a94d3f2efc3270fa9fa9e49049;hb=4e55e875e42fe56e3fb92a38015ffa035ac9d0bb;hp=73d13a5b1853320d213bd374f276933946856994;hpb=326eb23859accf9fb1327966eba4dba475b4616f;p=cpPlugins.git diff --git a/lib/cpExtensions/Interaction/SeedWidget.cxx b/lib/cpExtensions/Interaction/SeedWidget.cxx index 73d13a5..1dcf223 100644 --- a/lib/cpExtensions/Interaction/SeedWidget.cxx +++ b/lib/cpExtensions/Interaction/SeedWidget.cxx @@ -1,11 +1,8 @@ #include -#include -#include -#include -#include -#include -#include +#include +#include +#include // ------------------------------------------------------------------------- cpExtensions::Interaction::SeedWidget:: @@ -20,18 +17,20 @@ void cpExtensions::Interaction::SeedWidget:: SetInteractor( vtkRenderWindowInteractor* rwi ) { this->Superclass::SetInteractor( rwi ); - if( rwi != NULL ) - { - TBaseStyle* s = - dynamic_cast< TBaseStyle* >( rwi->GetInteractorStyle( ) ); - if( s != NULL ) - { - s->AddMouseClickCommand( Self::_Click, this ); - s->AddMouseDoubleClickCommand( Self::_DoubleClick, this ); - - } // fi - - } // fi + /* TODO + if( rwi != NULL ) + { + TBaseStyle* s = + dynamic_cast< TBaseStyle* >( rwi->GetInteractorStyle( ) ); + if( s != NULL ) + { + s->AddMouseClickCommand( Self::_Click, this ); + s->AddMouseDoubleClickCommand( Self::_DoubleClick, this ); + + } // fi + + } // fi + */ } // ------------------------------------------------------------------------- @@ -39,11 +38,33 @@ cpExtensions::Interaction::SeedWidget:: SeedWidget( ) : Superclass( ) { - // Remove default translations - vtkWidgetEventTranslator* t = this->GetEventTranslator( ); - t->RemoveTranslation( vtkCommand::LeftButtonPressEvent ); - t->RemoveTranslation( vtkCommand::MiddleButtonPressEvent ); - t->RemoveTranslation( vtkCommand::RightButtonPressEvent ); + // These are the event callbacks supported by this widget + this->CallbackMapper->SetCallbackMethod( + vtkCommand::LeftButtonPressEvent, + vtkWidgetEvent::AddPoint, + this, Self::_AddPointAction + ); + this->CallbackMapper->SetCallbackMethod( + vtkCommand::RightButtonPressEvent, + vtkWidgetEvent::Completed, + this, Self::_CompletedAction + ); + this->CallbackMapper->SetCallbackMethod( + vtkCommand::MouseMoveEvent, + vtkWidgetEvent::Move, + this, Self::_MoveAction + ); + this->CallbackMapper->SetCallbackMethod( + vtkCommand::LeftButtonReleaseEvent, + vtkWidgetEvent::EndSelect, + this, Self::_EndSelectAction + ); + this->CallbackMapper->SetCallbackMethod( + vtkCommand::KeyPressEvent, + vtkEvent::NoModifier, 127, 1, "Delete", + vtkWidgetEvent::Delete, + this, Self::_DeleteAction + ); } // ------------------------------------------------------------------------- @@ -54,40 +75,85 @@ cpExtensions::Interaction::SeedWidget:: // ------------------------------------------------------------------------- void cpExtensions::Interaction::SeedWidget:: -_Click( - void* data, const TBaseStyle::ButtonID& button, - int* idx, double* pos, bool alt, bool ctr, bool sft - ) +_AddPointAction( vtkAbstractWidget* wdg ) { - SeedWidget* self = reinterpret_cast< SeedWidget* >( data ); + Self* self = dynamic_cast< Self* >( wdg ); if( self == NULL ) return; - if( self->WidgetState == vtkSeedWidget::MovingSeed ) + auto iren = self->GetInteractor( ); + if( iren == NULL ) return; + int shift = iren->GetShiftKey( ); + if( shift == 1 ) + Self::AddPointAction( wdg ); +} - int st = self->WidgetRep->ComputeInteractionState( idx[ 0 ], idx[ 1 ] ); - if( st == vtkSeedRepresentation::NearSeed ) - { - self->WidgetState = vtkSeedWidget::MovingSeed; +// ------------------------------------------------------------------------- +void cpExtensions::Interaction::SeedWidget:: +_CompletedAction( vtkAbstractWidget* wdg ) +{ + // Do nothing +} - // Invoke an event on ourself for the handles - self->InvokeEvent( vtkCommand::LeftButtonPressEvent, NULL ); - self->Superclass::StartInteraction( ); - self->InvokeEvent( vtkCommand::StartInteractionEvent, NULL ); - self->EventCallbackCommand->SetAbortFlag( 1 ); - self->Render( ); +// ------------------------------------------------------------------------- +void cpExtensions::Interaction::SeedWidget:: +_MoveAction( vtkAbstractWidget* wdg ) +{ + // Do nothing +} - } // fi +// ------------------------------------------------------------------------- +void cpExtensions::Interaction::SeedWidget:: +_EndSelectAction( vtkAbstractWidget* wdg ) +{ + // Do nothing } // ------------------------------------------------------------------------- void cpExtensions::Interaction::SeedWidget:: -_DoubleClick( - void* data, const TBaseStyle::ButtonID& button, - int* idx, double* pos, bool alt, bool ctr, bool sft - ) +_DeleteAction( vtkAbstractWidget* wdg ) { - Self::AddPointAction( reinterpret_cast< vtkAbstractWidget* >( data ) ); + // Do nothing } +// ------------------------------------------------------------------------- +/* TODO + void cpExtensions::Interaction::SeedWidget:: + _Click( + void* data, const TBaseStyle::ButtonID& button, + int* idx, double* pos, bool alt, bool ctr, bool sft + ) + { + SeedWidget* self = reinterpret_cast< SeedWidget* >( data ); + if( self == NULL ) + return; + if( self->WidgetState == vtkSeedWidget::MovingSeed ) + return; + + int st = self->WidgetRep->ComputeInteractionState( idx[ 0 ], idx[ 1 ] ); + if( st == vtkSeedRepresentation::NearSeed ) + { + self->WidgetState = vtkSeedWidget::MovingSeed; + + // Invoke an event on ourself for the handles + self->InvokeEvent( vtkCommand::LeftButtonPressEvent, NULL ); + self->Superclass::StartInteraction( ); + self->InvokeEvent( vtkCommand::StartInteractionEvent, NULL ); + self->EventCallbackCommand->SetAbortFlag( 1 ); + self->Render( ); + + } // fi + } + + // ------------------------------------------------------------------------- + void cpExtensions::Interaction::SeedWidget:: + _DoubleClick( + void* data, const TBaseStyle::ButtonID& button, + int* idx, double* pos, bool alt, bool ctr, bool sft + ) + { + Self::AddPointAction( reinterpret_cast< vtkAbstractWidget* >( data ) ); + } +*/ + // eof - $RCSfile$