+// -------------------------------------------------------------------------
+#include <cpPlugins/Interface/ProcessObject.h>
+#include <cpPlugins/Interface/Plugins.h>
+#include <cpPlugins/Interface/BaseApplication.h>
+
+class SingleSeedCommand
+ : public vtkCommand
+{
+public:
+ static SingleSeedCommand* New( )
+ { return( new SingleSeedCommand ); }
+ virtual void Execute( vtkObject* caller, unsigned long eid, void* data )
+ {
+ // Get seed, avoiding segfaults!!!
+ if( eid != vtkCommand::PlacePointEvent || this->Dialog == NULL )
+ return;
+ vtkSeedWidget* widget = dynamic_cast< vtkSeedWidget* >( caller );
+ if( widget == NULL )
+ return;
+ vtkSeedRepresentation* rep = widget->GetSeedRepresentation( );
+ if( rep == NULL )
+ return;
+ if( rep->GetNumberOfSeeds( ) == 0 )
+ return;
+ double seed[ 3 ];
+ rep->GetSeedWorldPosition( 0, seed );
+
+ // Delete all seeds (remember that this command is just for one seed)
+ while( rep->GetNumberOfSeeds( ) > 0 )
+ widget->DeleteSeed( 0 );
+
+ if( this->Dialog->getParameters( )->HasIndex( this->Name ) )
+ {
+ }
+ else if( this->Dialog->getParameters( )->HasPoint( this->Name ) )
+ {
+ this->Dialog->getParameters( )->SetPoint( this->Name, 3, seed );
+ this->Dialog->syncParameters( );
+ auto filter = this->Dialog->getParameters( )->GetProcessObject( );
+ if( filter != NULL )
+ {
+ auto plugins = filter->GetPlugins( );
+ if( plugins != NULL )
+ {
+ auto app = plugins->GetApplication( );
+ if( app != NULL )
+ app->UpdateActualFilter( );
+
+ } // fi
+
+ } // fi
+
+ } // fi
+ }
+protected:
+ SingleSeedCommand( )
+ : vtkCommand( ),
+ Dialog( NULL )
+ {
+ }
+ virtual ~SingleSeedCommand( )
+ {
+ }
+
+public:
+ cpPlugins::Interface::ParametersQtDialog* Dialog;
+ std::string Name;
+};
+