X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FProcessObject.h;h=6578beb35e0b533d51d508dbbb88b934d818dda2;hb=f654620df52b811be7bd263a1775c93d29c69a65;hp=9548d48167c19fda02e1fdb2fa897c0afdb6c348;hpb=91f750d8a54e87cdd626566aad3d80940ae041fd;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/ProcessObject.h b/lib/cpPlugins/Interface/ProcessObject.h index 9548d48..6578beb 100644 --- a/lib/cpPlugins/Interface/ProcessObject.h +++ b/lib/cpPlugins/Interface/ProcessObject.h @@ -1,30 +1,35 @@ #ifndef __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ #define __CPPLUGINS__INTERFACE__PROCESSOBJECT__H__ -#include +#include -#include - -#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 - -#include -#include - namespace cpPlugins { namespace Interface { + // Some forward declarations + class Plugins; +#ifdef cpPlugins_Interface_QT4 + class ParametersQtDialog; +#else + typedef char ParametersQtDialog; +#endif // cpPlugins_Interface_QT4 + /** */ class cpPlugins_Interface_EXPORT ProcessObject @@ -37,29 +42,49 @@ namespace cpPlugins typedef itk::SmartPointer< const Self > ConstPointer; typedef Parameters TParameters; + typedef std::set< vtkRenderWindowInteractor* > TInteractors; + + enum DialogResult + { + DialogResult_NoModal = 0, + DialogResult_Modal, + DialogResult_Cancel + }; public: itkTypeMacro( ProcessObject, Object ); - cpPlugins_Id_Macro( - cpPlugins::Interface::ProcessObject, "BaseObject" - ); + cpPlugins_Id_Macro( ProcessObject, "BaseObject" ); + + itkBooleanMacro( Interactive ); + + itkGetConstObjectMacro( Parameters, TParameters ); + itkGetObjectMacro( Parameters, TParameters ); + itkGetConstMacro( Plugins, const Plugins* ); + itkGetMacro( Plugins, Plugins* ); + itkGetConstMacro( Interactive, bool ); + + itkSetObjectMacro( Plugins, Plugins ); + itkSetMacro( Interactive, bool ); public: // To impact pipeline virtual void Modified( ) const; - virtual TParameters* GetParameters( ); - virtual const TParameters* GetParameters( ) const; + virtual void GetInputsNames( std::set< std::string >& names ) const; + virtual void GetOutputsNames( std::set< std::string >& names ) const; - virtual unsigned int GetNumberOfInputs( ) const; - virtual unsigned int GetNumberOfOutputs( ) const; + virtual bool SetOutputObjectName( + const std::string& new_object_name, + const std::string& output_name + ); 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( ); @@ -112,12 +137,22 @@ namespace cpPlugins vtkSmartPointer< vtkAlgorithm > m_VTKObject; Parameters::Pointer m_Parameters; + ParametersQtDialog* m_ParametersDialog; + TInteractors m_Interactors; + Plugins* m_Plugins; + bool m_Interactive; typedef std::map< std::string, DataObject::Pointer > _TDataContainer; _TDataContainer m_Inputs; _TDataContainer m_Outputs; + std::map< std::string, std::string > m_OutputObjectsNames; }; + /** + * Plugin provider + */ + CPPLUGINS_PROVIDER_HEADER( ProcessObject ); + } // ecapseman } // ecapseman