]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Interface/Workspace.h
More on graph editor
[cpPlugins.git] / lib / cpPlugins / Interface / Workspace.h
1 #ifndef __CPPLUGINS__INTERFACE__WORKSPACE__H__
2 #define __CPPLUGINS__INTERFACE__WORKSPACE__H__
3
4 #include <cpExtensions/DataStructures/Graph.h>
5 #include <cpPlugins/Interface/Interface.h>
6 #include <cpPlugins/Interface/DataObject.h>
7 #include <cpPlugins/Interface/ProcessObject.h>
8
9 #include <set>
10 #include <string>
11
12 // Some forward declarations
13 class QWidget;
14
15 namespace cpPlugins
16 {
17   namespace Interface
18   {
19     /**
20      */
21     class cpPlugins_Interface_EXPORT Workspace
22     {
23     public:
24       typedef cpPlugins::Interface::Interface     TInterface;
25       typedef cpPlugins::Interface::Object        TObject;
26       typedef cpPlugins::Interface::ProcessObject TFilter;
27       typedef cpPlugins::Interface::DataObject    TData;
28       typedef TFilter::TParameters                TParameters;
29
30       // Various types
31       typedef std::set< std::string > TStringContainer;
32
33       // Graph type
34       typedef std::pair< std::string, std::string > TConnection;
35       typedef
36         cpExtensions::DataStructures::
37         Graph< TObject::Pointer, TConnection, std::string > TGraph;
38
39     public:
40       Workspace( );
41       virtual ~Workspace( );
42
43       // Plugins management
44       TInterface* GetInterface( );
45       void SetInterface( TInterface* i );
46
47       // Workspace IO
48       std::string LoadWorkspace( const std::string& fname );
49       std::string SaveWorkspace( const std::string& fname ) const;
50
51       // Graph management
52       void Clear( );
53       TGraph* GetGraph( );
54       const TGraph* GetGraph( ) const;
55       bool CreateFilter( const std::string& filter, const std::string& name );
56       bool Connect(
57         const std::string& orig_filter, const std::string& dest_filter,
58         const std::string& output_name,
59         const std::string& input_name
60         );
61       TParameters* GetParameters( const std::string& name );
62       const TParameters* GetParameters( const std::string& name ) const;
63       TFilter* GetFilter( const std::string& name );
64       const TFilter* GetFilter( const std::string& name ) const;
65       bool HasFilter( const std::string& name ) const;
66
67       // Graph reduction
68       bool Reduce( const std::string& name );
69
70       // Pipeline execution
71       std::string Execute( );
72       std::string Execute( const std::string& name, QWidget* p = NULL );
73
74     protected:
75       void _UpdateLoadedPluginsInformation( );
76
77     protected:
78       // Plugins interface
79       TInterface* m_Interface;
80
81       // Processing graph
82       typename TGraph::Pointer m_Graph;
83     };
84
85   } // ecapseman
86
87 } // ecapseman
88
89 #endif // __CPPLUGINS__INTERFACE__WORKSPACE__H__
90
91 // eof - $RCSfile$