#ifndef __CPPLUGINS__INTERFACE__WORKSPACE__H__
#define __CPPLUGINS__INTERFACE__WORKSPACE__H__
+#include <cpExtensions/DataStructures/Graph.h>
#include <cpPlugins/Interface/Interface.h>
#include <cpPlugins/Interface/DataObject.h>
#include <cpPlugins/Interface/ProcessObject.h>
-#include <map>
#include <set>
#include <string>
+// Some forward declarations
+class QWidget;
+
namespace cpPlugins
{
namespace Interface
typedef TFilter::TParameters TParameters;
// Various types
- typedef std::set< std::string > TStringContainer;
+ typedef std::set< std::string > TStringContainer;
+ typedef std::pair< std::string, std::string > TGlobalPort;
+ typedef std::map< std::string, TGlobalPort > TGlobalPorts;
- // Graph types
- typedef std::map< std::string, TObject::Pointer > TVertices;
- typedef std::pair< std::string, std::string > TConnection;
- typedef std::vector< TConnection > TConnections;
- typedef std::map< std::string, TConnections > TAdjMatrixRow;
- typedef std::map< std::string, TAdjMatrixRow > TAdjMatrix;
+ // Graph type
+ typedef std::pair< std::string, std::string > TConnection;
+ typedef
+ cpExtensions::DataStructures::
+ Graph< TObject::Pointer, TConnection, std::string > TGraph;
public:
Workspace( );
virtual ~Workspace( );
// Plugins management
- bool LoadPluginsPath( const std::string& path, bool r = false );
- bool LoadPlugins( const std::string& fname );
- const TStringContainer& GetLoadedPlugins( ) const;
- void GetLoadedPluginCategories( TStringContainer& categories ) const;
- void GetLoadedPluginFilters( TStringContainer& filters ) const;
- const TStringContainer& GetLoadedPluginFilters(
- const std::string& category
- ) const;
+ TInterface* GetInterface( );
+ void SetInterface( TInterface* i );
// Workspace IO
std::string LoadWorkspace( const std::string& fname );
std::string SaveWorkspace( const std::string& fname ) const;
// Graph management
+ void Clear( );
+ TGraph* GetGraph( );
+ const TGraph* GetGraph( ) const;
bool CreateFilter( const std::string& filter, const std::string& name );
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& input_name );
TParameters* GetParameters( const std::string& name );
const TParameters* GetParameters( const std::string& name ) const;
+ TFilter* GetFilter( const std::string& name );
+ const TFilter* GetFilter( const std::string& name ) const;
+ bool HasFilter( const std::string& name ) const;
// Graph reduction
bool Reduce( const std::string& name );
+ void AddInputPort(
+ const std::string& name,
+ const std::string& filter, const std::string& filter_input
+ );
+ void AddOutputPort(
+ const std::string& name,
+ const std::string& filter, const std::string& filter_output
+ );
+ TData* GetOutput( const std::string& name );
+ const TData* GetOutput( const std::string& name ) const;
+ void ClearInputPorts( );
+ void ClearOutputPorts( );
// Pipeline execution
std::string Execute( );
- std::string Execute( const std::string& name );
-
- protected:
- void _UpdateLoadedPluginsInformation( );
+ std::string Execute( const std::string& name, QWidget* p = NULL );
protected:
// Plugins interface
- TInterface m_Interface;
- std::string m_LastLoadedPlugin;
- TStringContainer m_LoadedPlugins;
- std::map< std::string, TStringContainer > m_LoadedFilters;
+ TInterface* m_Interface;
// Processing graph
- TVertices m_Vertices;
- TAdjMatrix m_AdjMatrix;
+ typename TGraph::Pointer m_Graph;
+ TGlobalPorts m_InputPorts;
+ TGlobalPorts m_OutputPorts;
};
} // ecapseman