]> Creatis software - cpPlugins.git/blobdiff - lib/cpPlugins/Pipeline/Widget.h
yet another refactoring
[cpPlugins.git] / lib / cpPlugins / Pipeline / Widget.h
diff --git a/lib/cpPlugins/Pipeline/Widget.h b/lib/cpPlugins/Pipeline/Widget.h
new file mode 100644 (file)
index 0000000..91ef571
--- /dev/null
@@ -0,0 +1,65 @@
+#ifndef __cpPlugins__Pipeline__Widget__h__
+#define __cpPlugins__Pipeline__Widget__h__
+
+#include <cpPlugins/Pipeline/ProcessObject.h>
+#include <vtkRenderWindowInteractor.h>
+
+// -------------------------------------------------------------------------
+namespace cpPlugins
+{
+  namespace Pipeline
+  {
+    /**
+     */
+    class cpPlugins_EXPORT Widget
+      : public ProcessObject
+    {
+    public:
+      typedef Widget                          Self;
+      typedef ProcessObject                   Superclass;
+      typedef itk::SmartPointer< Self >       Pointer;
+      typedef itk::SmartPointer< const Self > ConstPointer;
+
+    public:
+      itkTypeMacro( Widget, ProcessObject );
+      cpPlugins_Id_Macro( Widget, Object );
+
+    public:
+      virtual void AddInteractor( vtkRenderWindowInteractor* i ) cpPlugins_OVERRIDE;
+      virtual bool IsInteractive( ) cpPlugins_OVERRIDE;
+
+      virtual void EnabledOn( );
+      virtual void EnabledOff( );
+      virtual void Clear( ) = 0;
+      virtual void SetEnabled( bool v ) = 0;
+      virtual bool GetEnabled( ) const = 0;
+
+    protected:
+      Widget( );
+      virtual ~Widget( );
+
+    private:
+      // Purposely not implemented
+      Widget( const Self& );
+      Self& operator=( const Self& );
+
+    protected:
+      typedef vtkSmartPointer< vtkRenderWindowInteractor > _TInteractor;
+      struct _TInteractorCmp
+      {
+        bool operator()(
+          const _TInteractor& a, const _TInteractor& b
+          ) const
+          { return( a.GetPointer( ) < b.GetPointer( ) ); }
+      };
+      std::set< _TInteractor, _TInteractorCmp > m_Interactors;
+
+    };
+
+  } // ecapseman
+
+} // ecapseman
+
+#endif // __cpPlugins__Pipeline__Widget__h__
+
+// eof - $RCSfile$