]> Creatis software - cpPlugins.git/commitdiff
...
authorLeonardo Florez-Valencia <florez-l@javeriana.edu.co>
Fri, 22 Apr 2016 01:12:48 +0000 (20:12 -0500)
committerLeonardo Florez-Valencia <florez-l@javeriana.edu.co>
Fri, 22 Apr 2016 01:12:48 +0000 (20:12 -0500)
plugins/cpPluginsWidgets/SeedWidget.cxx
plugins/cpPluginsWidgets/SeedWidget.h

index 64069e4ce4602c971cde376a7600b3a23b5c411f..0d4c57d4f3546e8cf4b8476f012dbb5ef03e629e 100644 (file)
@@ -1,12 +1,41 @@
 #include "SeedWidget.h"
 
+#include <vtkCommand.h>
 #include <vtkProperty.h>
 #include <vtkRenderWindowInteractor.h>
 #include <cpExtensions/QT/SimpleMPRWidget.h>
 
+// -------------------------------------------------------------------------
+// This callback is responsible for changing update time
+namespace cpPluginsWidgets
+{
+  /**
+   */
+  class SeedWidgetCallback
+    : public vtkCommand
+  {
+  public:
+    static SeedWidgetCallback* New( )
+      { return( new SeedWidgetCallback ); }
+    virtual void Execute( vtkObject* caller, unsigned long id, void* data )
+      {
+        if(
+          id == vtkCommand::CursorChangedEvent ||
+          id == vtkCommand::PlacePointEvent
+          )
+          this->Widget->Modified( );
+      }
+    SeedWidget* Widget;
+  };
+
+} // ecapseman
+
 // -------------------------------------------------------------------------
 void cpPluginsWidgets::SeedWidget::WidgetData::
-Configure( vtkRenderWindowInteractor* interactor, vtkImageActor* actor )
+Configure(
+  cpPluginsWidgets::SeedWidget* parent,
+  vtkRenderWindowInteractor* interactor, vtkImageActor* actor
+  )
 {
   this->Placer = vtkSmartPointer< vtkImageActorPointPlacer >::New( );
   this->Handle = vtkSmartPointer< vtkPointHandleRepresentation3D >::New( );
@@ -20,6 +49,12 @@ Configure( vtkRenderWindowInteractor* interactor, vtkImageActor* actor )
   this->Seed->SetHandleRepresentation( this->Handle );
   this->Widget->SetRepresentation( this->Seed );
   this->Widget->SetInteractor( interactor );
+
+  vtkSmartPointer< SeedWidgetCallback > cb =
+    vtkSmartPointer< SeedWidgetCallback >::New( );
+  cb->Widget = parent;
+  this->Widget->AddObserver( vtkCommand::PlacePointEvent, cb );
+  this->Widget->AddObserver( vtkCommand::CursorChangedEvent, cb );
 }
 
 // -------------------------------------------------------------------------
@@ -36,14 +71,6 @@ Off( )
   this->Widget->Off( );
 }
 
-// -------------------------------------------------------------------------
-itk::ModifiedTimeType cpPluginsWidgets::SeedWidget::
-GetMTime( ) const
-{
-  this->Modified( );
-  return( this->Superclass::GetMTime( ) );
-}
-
 // -------------------------------------------------------------------------
 cpPluginsWidgets::SeedWidget::
 SeedWidget( )
@@ -63,8 +90,10 @@ cpPluginsWidgets::SeedWidget::
 void cpPluginsWidgets::SeedWidget::
 _GenerateData( )
 {
+  std::cout << "seeds" << std::endl;
   if( this->m_Configured )
   {
+    std::cout << "ok" << std::endl;
     auto points = this->_CreateVTK< vtkPoints >( );
     for(
       auto wIt = this->m_Widgets.begin( );
@@ -112,7 +141,7 @@ _GenerateData( )
             if( actor != NULL )
             {
               WidgetData d;
-              d.Configure( *iIt, actor );
+              d.Configure( this, *iIt, actor );
               d.On( );
               this->m_Widgets.push_back( d );
               this->m_Configured = true;
@@ -128,7 +157,9 @@ _GenerateData( )
     } // rof
 
   } // fi
-  if( !( this->m_Configured ) )
+  if( this->m_Configured )
+    this->Modified( );
+  else
     this->_Error(
       "Could not create valid widget: are there any valid actors?"
       );
index 74dfc0b40b476a05e6ad463a5184adbeca31cbcc..40813ef1a0dbbf118528280f108a2cbfc61108a2 100644 (file)
@@ -36,15 +36,13 @@ namespace cpPluginsWidgets
       vtkSmartPointer< vtkSeedRepresentation >                 Seed;
 
       void Configure(
+        cpPluginsWidgets::SeedWidget* parent,
         vtkRenderWindowInteractor* interactor, vtkImageActor* actor
         );
       void On( );
       void Off( );
     };
 
-  public:
-    virtual itk::ModifiedTimeType GetMTime( ) const ITK_OVERRIDE;
-
   protected:
     SeedWidget( );
     virtual ~SeedWidget( );