1 #ifndef __cpPlugins__Interface__Workspace__h__
2 #define __cpPlugins__Interface__Workspace__h__
4 #include <cpPlugins/Interface/Plugins.h>
5 #include <cpPlugins/BaseObjects/DataObject.h>
6 #include <cpPlugins/BaseObjects/ProcessObject.h>
7 #include <cpPlugins/BaseObjects/Widget.h>
10 class vtkRenderWindowInteractor;
16 /** \brief A complex pipeline
18 class cpPlugins_EXPORT Workspace
22 typedef Workspace Self;
23 typedef itk::Object Superclass;
24 typedef itk::SmartPointer< Self > Pointer;
25 typedef itk::SmartPointer< const Self > ConstPointer;
27 typedef cpPlugins::BaseObjects::DataObject TDataObject;
28 typedef cpPlugins::BaseObjects::ProcessObject TFilter;
29 typedef cpPlugins::BaseObjects::Widget TWidget;
30 typedef cpPlugins::Interface::Plugins TPlugins;
32 typedef std::map< std::string, TFilter::Pointer > TFilters;
36 std::map< std::string, std::pair< std::string, std::string > >
42 itkTypeMacro( Workspace, itk::Object );
46 void Load( const std::string& fname );
47 void Save( const std::string& fname ) const;
53 std::vector< std::string > GetFiltersNames( ) const;
54 TFilter* GetFilter( const std::string& name );
55 const TFilter* GetFilter( const std::string& name ) const;
56 TWidget* GetWidget( const std::string& name );
57 const TWidget* GetWidget( const std::string& name ) const;
58 bool HasFilter( const std::string& name ) const;
59 bool HasWidget( const std::string& name ) const;
60 TFilter* CreateFilter(
61 const std::string& category, const std::string& filter
64 const std::string& old_name, const std::string& new_name
66 bool RemoveFilter( const std::string& name );
68 void SetPrintExecution( bool b );
69 void PrintExecutionOn( );
70 void PrintExecutionOff( );
73 void AddInteractor( vtkRenderWindowInteractor* iren );
77 const TExposedPorts& GetExposedInputs( ) const;
78 const TExposedPorts& GetExposedOutputs( ) const;
79 cpPlugins::BaseObjects::DataObject* GetExposedOutput(
80 const std::string& name
82 const cpPlugins::BaseObjects::DataObject* GetExposedOutput(
83 const std::string& name
86 const std::string& name,
87 const std::string& filter, const std::string& filter_input
90 const std::string& name,
91 const std::string& filter, const std::string& filter_output
93 void HideInput( const std::string& name );
94 void HideOutput( const std::string& name );
95 bool RenameExposedInput(
96 const std::string& old_name,
97 const std::string& new_name
99 bool RenameExposedOutput(
100 const std::string& old_name,
101 const std::string& new_name
105 // Connection management
107 const std::string& origin_filter,
108 const std::string& origin_output,
109 const std::string& destination_filter,
110 const std::string& destination_input
114 const std::string& destination_filter,
115 const std::string& destination_input
118 const std::string& origin_filter,
119 const std::string& origin_output,
120 const std::string& destination_filter,
121 const std::string& destination_input
125 std::vector< std::pair< std::string, std::string > > GetConnections(
126 const std::string& origin, const std::string& destination
129 const std::string& orig_filter, const std::string& dest_filter,
130 const std::string& output_name, const std::string& input_name
133 cpPlugins::BaseObjects::DataObject* output,
134 const std::string& dest_filter, const std::string& input_name
137 cpPlugins::BaseObjects::DataObject* output,
138 const std::string& exposed_input_name
141 const std::string& orig_filter, const std::string& dest_filter,
142 const std::string& output_name, const std::string& input_name
145 const std::string& dest_filter, const std::string& input_name
147 void Disconnect( const std::string& dest_filter );
150 // Pipeline execution
152 void Update( const std::string& name );
156 virtual ~Workspace( );
159 // Purposely not implemented
160 Workspace( const Self& other );
161 Self& operator=( const Self& other );
164 TPlugins::Pointer m_Plugins;
166 bool m_PrintExecution;
169 TExposedPorts m_ExposedInputs;
170 TExposedPorts m_ExposedOutputs;
173 std::set< vtkRenderWindowInteractor* > m_Interactors;
180 #endif // __cpPlugins__Interface__Workspace__h__