X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=6f388143cbb376cd837b207f8aaf64acf33ab167;hb=c0627ed97baf80b6751379801fc4d5c377b45467;hp=b84ad3ed6dd956fd02b9895f39b66931859e8a71;hpb=dba64a6906e88d6023b2e6c9632da9fd41bfeb53;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index b84ad3e..6f38814 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -2,6 +2,10 @@ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #include + +#include +#include + #include #include #include @@ -10,7 +14,7 @@ #ifdef cpPlugins_Interface_QT4 class QWidget; #else -typedef char QWidget +typedef char QWidget; #endif // cpPlugins_Interface_QT4 #include @@ -18,10 +22,18 @@ typedef char QWidget #include #include +class vtkRenderWindowInteractor; + namespace cpPlugins { namespace Interface { +#ifdef cpPlugins_Interface_QT4 + class ParametersQtDialog; +#else + typedef char ParametersQtDialog; +#endif // cpPlugins_Interface_QT4 + /** */ class cpPlugins_Interface_EXPORT ProcessObject @@ -33,6 +45,15 @@ namespace cpPlugins typedef itk::SmartPointer< Self > Pointer; typedef itk::SmartPointer< const Self > ConstPointer; + typedef Parameters TParameters; + + enum DialogResult + { + DialogResult_NoModal = 0, + DialogResult_Modal, + DialogResult_Cancel + }; + public: itkTypeMacro( ProcessObject, Object ); cpPlugins_Id_Macro( @@ -40,21 +61,25 @@ namespace cpPlugins ); public: - virtual const Parameters& GetDefaultParameters( ) const; - virtual void SetParameters( const Parameters& params ); + // To impact pipeline + virtual void Modified( ) const; + + virtual TParameters* GetParameters( ); + virtual const TParameters* GetParameters( ) const; virtual unsigned int GetNumberOfInputs( ) const; virtual unsigned int GetNumberOfOutputs( ) const; - virtual void SetNumberOfInputs( unsigned int n ); - virtual void SetNumberOfOutputs( unsigned int n ); + virtual std::vector< std::string > GetInputsNames( ) const; + virtual std::vector< std::string > GetOutputsNames( ) const; - virtual void SetInput( unsigned int idx, DataObject* dobj ); + virtual void SetInput( const std::string& id, DataObject* dobj ); virtual std::string Update( ); virtual void DisconnectOutputs( ); - virtual bool ExecConfigurationDialog( QWidget* parent ); + virtual void AddInteractor( vtkRenderWindowInteractor* interactor ); + virtual DialogResult ExecConfigurationDialog( QWidget* parent ); template< class T > inline T* GetITK( ); @@ -69,21 +94,23 @@ namespace cpPlugins inline const T* GetVTK( ) const; 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 F > inline F* _CreateITK( ); @@ -91,7 +118,7 @@ namespace cpPlugins inline F* _CreateVTK( ); template< class O > - inline void _MakeOutput( unsigned int idx ); + inline void _MakeOutput( const std::string& id ); virtual std::string _GenerateData( ) = 0; @@ -104,11 +131,12 @@ namespace cpPlugins itk::ProcessObject::Pointer m_ITKObject; vtkSmartPointer< vtkAlgorithm > m_VTKObject; - 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; + typedef std::map< std::string, DataObject::Pointer > _TDataContainer; + _TDataContainer m_Inputs; + _TDataContainer m_Outputs; }; } // ecapseman