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::ProcessObject TFilter;
28 typedef cpPlugins::BaseObjects::Widget TWidget;
29 typedef cpPlugins::Interface::Plugins TPlugins;
31 typedef std::map< std::string, TFilter::Pointer > TFilters;
35 std::map< std::string, std::pair< std::string, std::string > >
41 itkTypeMacro( Workspace, itk::Object );
45 void Load( const std::string& fname );
46 void Save( const std::string& fname ) const;
52 std::vector< std::string > GetFiltersNames( ) const;
53 TFilter* GetFilter( const std::string& name );
54 const TFilter* GetFilter( const std::string& name ) const;
55 TWidget* GetWidget( const std::string& name );
56 const TWidget* GetWidget( const std::string& name ) const;
57 bool HasFilter( const std::string& name ) const;
58 bool HasWidget( const std::string& name ) const;
59 TFilter* CreateFilter(
60 const std::string& category, const std::string& filter
63 const std::string& old_name, const std::string& new_name
65 bool RemoveFilter( const std::string& name );
67 void SetPrintExecution( bool b );
68 void PrintExecutionOn( );
69 void PrintExecutionOff( );
72 void AddInteractor( vtkRenderWindowInteractor* iren );
76 const TExposedPorts& GetExposedInputs( ) const;
77 const TExposedPorts& GetExposedOutputs( ) const;
78 cpPlugins::BaseObjects::DataObject* GetExposedOutput(
79 const std::string& name
81 const cpPlugins::BaseObjects::DataObject* GetExposedOutput(
82 const std::string& name
85 const std::string& name,
86 const std::string& filter, const std::string& filter_input
89 const std::string& name,
90 const std::string& filter, const std::string& filter_output
92 void HideInput( const std::string& name );
93 void HideOutput( const std::string& name );
94 bool RenameExposedInput(
95 const std::string& old_name,
96 const std::string& new_name
98 bool RenameExposedOutput(
99 const std::string& old_name,
100 const std::string& new_name
104 // Connection management
106 const std::string& origin_filter,
107 const std::string& origin_output,
108 const std::string& destination_filter,
109 const std::string& destination_input
112 const std::string& origin_filter,
113 const std::string& origin_output,
114 const std::string& destination_filter,
115 const std::string& destination_input
119 std::vector< std::pair< std::string, std::string > > GetConnections(
120 const std::string& origin, const std::string& destination
123 const std::string& orig_filter, const std::string& dest_filter,
124 const std::string& output_name, const std::string& input_name
127 cpPlugins::BaseObjects::DataObject* output,
128 const std::string& dest_filter, const std::string& input_name
131 cpPlugins::BaseObjects::DataObject* output,
132 const std::string& exposed_input_name
135 const std::string& orig_filter, const std::string& dest_filter,
136 const std::string& output_name, const std::string& input_name
139 const std::string& dest_filter, const std::string& input_name
141 void Disconnect( const std::string& dest_filter );
144 // Pipeline execution
146 void Update( const std::string& name );
150 virtual ~Workspace( );
153 // Purposely not implemented
154 Workspace( const Self& other );
155 Self& operator=( const Self& other );
158 TPlugins::Pointer m_Plugins;
160 bool m_PrintExecution;
163 TExposedPorts m_ExposedInputs;
164 TExposedPorts m_ExposedOutputs;
167 std::set< vtkRenderWindowInteractor* > m_Interactors;
174 #endif // __cpPlugins__Interface__Workspace__h__