X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FWorkspace.h;h=fd9847b20a81b58215082a795e32bf6d0a81d8bb;hb=61b3659afe961ed248f30e26f9ca8f28fcfafddc;hp=ec55470ae96d9927ba0ad7c8d0b6ccddf616dd21;hpb=1f5bfcecaf07f48e16ca55201faa50e597239042;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/Workspace.h b/lib/cpPlugins/Interface/Workspace.h index ec55470..fd9847b 100644 --- a/lib/cpPlugins/Interface/Workspace.h +++ b/lib/cpPlugins/Interface/Workspace.h @@ -1,153 +1,156 @@ -#ifndef __CPPLUGINS__INTERFACE__WORKSPACE__H__ -#define __CPPLUGINS__INTERFACE__WORKSPACE__H__ +#ifndef __cpPlugins__Interface__Workspace__h__ +#define __cpPlugins__Interface__Workspace__h__ -#include -#include -#include -#include +#include +#include +#include +#include +#include -#include -#include - -// Some forward declarations -class QWidget; class vtkRenderWindowInteractor; namespace cpPlugins { namespace Interface { - // Some forward declarations -#ifdef cpPlugins_Interface_QT4 - class SimpleMPRWidget; -#else // cpPlugins_Interface_QT4 - typedef char SimpleMPRWidget; -#endif // cpPlugins_Interface_QT4 - /** \brief A complex pipeline */ - class cpPlugins_Interface_EXPORT Workspace + class cpPlugins_EXPORT Workspace + : public itk::Object { public: - typedef cpPlugins::Interface::Interface TPlugins; - typedef cpPlugins::Interface::Object TObject; - typedef cpPlugins::Interface::ProcessObject TFilter; - typedef cpPlugins::Interface::DataObject TData; - typedef TFilter::TParameters TParameters; - - // Various types - typedef std::set< std::string > TStringContainer; - typedef std::pair< std::string, std::string > TExposedPort; - typedef std::map< std::string, TExposedPort > TExposedPorts; - - // Graph type - typedef std::pair< std::string, std::string > TConnection; - typedef - cpExtensions::DataStructures:: - Graph< TObject::Pointer, TConnection, std::string > TGraph; + typedef Workspace Self; + typedef itk::Object Superclass; + typedef itk::SmartPointer< Self > Pointer; + typedef itk::SmartPointer< const Self > ConstPointer; - public: - Workspace( ); - virtual ~Workspace( ); + typedef cpPlugins::Pipeline::DataObject TDataObject; + typedef cpPlugins::Pipeline::ProcessObject TFilter; + typedef cpPlugins::Pipeline::Widget TWidget; + typedef cpPlugins::Interface::Loader TLoader; - // Plugins management - TPlugins* GetPlugins( ); - const TPlugins* GetPlugins( ) const; - void SetPlugins( TPlugins* i ); + typedef std::map< std::string, TFilter::Pointer > TFilters; - // Workspace IO - std::string LoadWorkspace( const std::string& fname ); - std::string SaveWorkspace( const std::string& fname ) const; + /* TODO + typedef + std::map< std::string, std::pair< std::string, std::string > > + TExposedPorts; + */ - // Graph management - TGraph* GetGraph( ); - const TGraph* GetGraph( ) const; + public: + itkNewMacro( Self ); + itkTypeMacro( Workspace, itk::Object ); + public: + // Workspace IO + void Load( const std::string& fname ); + void Save( const std::string& fname ) const; + + // Memory management void Clear( ); - void ClearConnections( ); // Filter management + std::vector< std::string > GetFiltersNames( ) const; TFilter* GetFilter( const std::string& name ); const TFilter* GetFilter( const std::string& name ) const; + TWidget* GetWidget( const std::string& name ); + const TWidget* GetWidget( const std::string& name ) const; bool HasFilter( const std::string& name ) const; - bool CreateFilter( const std::string& filter, const std::string& name ); + bool HasWidget( const std::string& name ) const; + TFilter* CreateFilter( + const std::string& category, const std::string& filter, + const std::string& name + ); + TFilter* CreateFilter( + const std::string& category, const std::string& filter + ); bool RenameFilter( const std::string& old_name, const std::string& new_name ); - void RemoveFilter( const std::string& name ); + bool RemoveFilter( const std::string& name ); - // Widgets management - vtkRenderWindowInteractor* GetSingleInteractor( ); - const vtkRenderWindowInteractor* GetSingleInteractor( ) const; - void SetSingleInteractor( vtkRenderWindowInteractor* interactor ); + void SetPrintExecution( bool b ); + void PrintExecutionOn( ); + void PrintExecutionOff( ); - SimpleMPRWidget* GetMPRViewer( ); - const SimpleMPRWidget* GetMPRViewer( ) const; - void SetMPRViewer( SimpleMPRWidget* wdg ); + // Interactors + void AddInteractor( vtkRenderWindowInteractor* iren ); // Connection management bool Connect( - const std::string& orig_filter, const std::string& dest_filter, - const std::string& output_name, const std::string& input_name - ); - bool Connect( TData* input_object, const std::string& exposed_port ); - void RemoveConnection( - const std::string& dest_filter, const std::string& input_name + const std::string& origin_filter, + const std::string& origin_output, + const std::string& destination_filter, + const std::string& destination_input ); - void RemoveConnection( const std::string& exposed_port ); - void RemoveConnections( const std::string& dest_filter ); - - // Graph reduction - bool Reduce( const std::string& name ); - void ExposeInputPort( - const std::string& name, - const std::string& filter, const std::string& filter_input + bool Connect( + TDataObject* input, + const std::string& destination_filter, + const std::string& destination_input ); - void ExposeOutputPort( - const std::string& name, - const std::string& filter, const std::string& filter_output + bool Disconnect( + const std::string& origin_filter, + const std::string& origin_output, + const std::string& destination_filter, + const std::string& destination_input ); - void HideInputPort( const std::string& name ); - void HideOutputPort( const std::string& name ); - bool RenameExposedInputPort( - const std::string& old_name, - const std::string& new_name - ); - bool RenameExposedOutputPort( - const std::string& old_name, - const std::string& new_name - ); + /* TODO + std::vector< std::pair< std::string, std::string > > GetConnections( + const std::string& origin, const std::string& destination + ) const; + void Connect( + const std::string& orig_filter, const std::string& dest_filter, + const std::string& output_name, const std::string& input_name + ); + void Connect( + cpPlugins::Pipeline::DataObject* output, + const std::string& dest_filter, const std::string& input_name + ); + void Connect( + cpPlugins::Pipeline::DataObject* output, + const std::string& exposed_input_name + ); + void Disconnect( + const std::string& orig_filter, const std::string& dest_filter, + const std::string& output_name, const std::string& input_name + ); + void Disconnect( + const std::string& dest_filter, const std::string& input_name + ); + void Disconnect( const std::string& dest_filter ); + */ - const TExposedPorts& GetExposedInputPorts( ) const; - const TExposedPorts& GetExposedOutputPorts( ) const; + // Pipeline execution + void Update( ); + void Update( const std::string& name ); - TData* GetExposedInput( const std::string& name ); - const TData* GetExposedInput( const std::string& name ) const; - TData* GetExposedOutput( const std::string& name ); - const TData* GetExposedOutput( const std::string& name ) const; + protected: + Workspace( ); + virtual ~Workspace( ); - // Pipeline execution - std::string Execute( ); - std::string Execute( const std::string& name ); + private: + // Purposely not implemented + Workspace( const Self& other ); + Self& operator=( const Self& other ); protected: - // Plugins interface - TPlugins* m_Plugins; + TLoader m_Loader; + TFilters m_Filters; + bool m_PrintExecution; - // Processing graph - TGraph::Pointer m_Graph; - TExposedPorts m_ExposedInputPorts; - TExposedPorts m_ExposedOutputPorts; + /* TODO + TExposedPorts m_ExposedInputs; + TExposedPorts m_ExposedOutputs; + */ - vtkSmartPointer< vtkRenderWindowInteractor > m_SingleInteractor; - SimpleMPRWidget* m_MPRViewer; + std::set< vtkRenderWindowInteractor* > m_Interactors; }; } // ecapseman } // ecapseman -#endif // __CPPLUGINS__INTERFACE__WORKSPACE__H__ +#endif // __cpPlugins__Interface__Workspace__h__ // eof - $RCSfile$