X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=ddd1c21aa150ad2cd38987e82ad1bfb4f76d3677;hb=35d769c683c10f5c18d17a3e423d89f5b30a5b77;hp=82492db180639484e977f5fae5659c371b90781c;hpb=9db1bda2d32466d92fcf87f263baed3b987dfde6;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index 82492db..ddd1c21 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -1,24 +1,34 @@ #ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ -#include -#include -#include +#include + +#include + #include #include +// Some forward declarations +class vtkRenderWindowInteractor; #ifdef cpPlugins_Interface_QT4 class QWidget; #else -typedef char QWidget +typedef char QWidget; #endif // cpPlugins_Interface_QT4 -#include - namespace cpPlugins { namespace Interface { + // Some forward declarations +#ifdef cpPlugins_Interface_QT4 + class ParametersQtDialog; + class SimpleMPRWidget; +#else + typedef char ParametersQtDialog; + typedef char SimpleMPRWidget; +#endif // cpPlugins_Interface_QT4 + /** */ class cpPlugins_Interface_EXPORT ProcessObject @@ -30,44 +40,67 @@ namespace cpPlugins typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; + typedef Parameters TParameters; + typedef std::set< vtkRenderWindowInteractor* > TInteractors; + typedef bool DialogResult; + public: itkTypeMacro( ProcessObject, Object ); + cpPlugins_Id_Macro( ProcessObject, BaseObject ); - public: - virtual const Parameters& GetDefaultParameters( ) const; - virtual void SetParameters( const Parameters& params ); + itkBooleanMacro( Interactive ); + itkGetConstMacro( Interactive, bool ); + itkSetMacro( Interactive, bool ); - virtual unsigned int GetNumberOfInputs( ) const; - virtual unsigned int GetNumberOfOutputs( ) const; + itkGetConstObjectMacro( Parameters, TParameters ); + itkGetObjectMacro( Parameters, TParameters ); - virtual void SetNumberOfInputs( unsigned int n ); - virtual void SetNumberOfOutputs( unsigned int n ); + public: + virtual std::set< std::string > GetInputsNames( ) const; + virtual std::set< std::string > GetOutputsNames( ) const; + unsigned int GetNumberOfInputs( ) const; + unsigned int GetNumberOfOutputs( ) const; - virtual void SetInput( unsigned int idx, DataObject* dobj ); + virtual bool SetInput( const std::string& id, DataObject* dobj ); virtual std::string Update( ); virtual void DisconnectOutputs( ); + // Widgets management + vtkRenderWindowInteractor* GetSingleInteractor( ); + const vtkRenderWindowInteractor* GetSingleInteractor( ) const; + void SetSingleInteractor( vtkRenderWindowInteractor* interactor ); + SimpleMPRWidget* GetMPRViewer( ); + const SimpleMPRWidget* GetMPRViewer( ) const; + void SetMPRViewer( SimpleMPRWidget* wdg ); virtual bool ExecConfigurationDialog( QWidget* parent ); template< class T > - inline T* GetInput( unsigned int idx ); + inline T* GetInput( const std::string& id ); template< class T > - inline const T* GetInput( unsigned int idx ) const; + inline const T* GetInput( const std::string& id ) const; template< class T > - inline T* GetOutput( unsigned int idx ); + inline T* GetOutput( const std::string& id ); template< class T > - inline const T* GetOutput( unsigned int idx ) const; + inline const T* GetOutput( const std::string& id ) const; protected: ProcessObject( ); virtual ~ProcessObject( ); + virtual void _AddInput( const std::string& name ); + template< class O > - inline void _MakeOutput( unsigned int idx ); + inline void _AddOutput( const std::string& id ); + + template< class F > + inline F* _CreateITK( ); + + template< class F > + inline F* _CreateVTK( ); virtual std::string _GenerateData( ) = 0; @@ -77,14 +110,23 @@ namespace cpPlugins Self& operator=( const Self& ); protected: - itk::ProcessObject::Pointer m_RealProcessObject; - Parameters m_DefaultParameters; - Parameters m_Parameters; + Parameters::Pointer m_Parameters; + ParametersQtDialog* m_ParametersDialog; - std::vector< DataObject::Pointer > m_Inputs; - std::vector< DataObject::Pointer > m_Outputs; + vtkSmartPointer< vtkRenderWindowInteractor > m_SingleInteractor; + SimpleMPRWidget* m_MPRViewer; + bool m_Interactive; + + typedef std::map< std::string, DataObject::Pointer > _TDataContainer; + _TDataContainer m_Inputs; + _TDataContainer m_Outputs; }; + /** + * Plugin provider + */ + CPPLUGINS_PROVIDER_HEADER( ProcessObject ); + } // ecapseman } // ecapseman