X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FcpPlugins%2FInterface%2FPlugins.h;h=f93f3770c9fe809592d11c2605caf55dc22a5ceb;hb=00b54bc0344d74f31df8b93f7c28a07cfc8d6873;hp=8eb4d3c451945efd4ab43111cca74ba13a50ce9b;hpb=b099c70da465fb2066928a0977899a40bdfff8e3;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/Plugins.h b/lib/cpPlugins/Interface/Plugins.h index 8eb4d3c..f93f377 100644 --- a/lib/cpPlugins/Interface/Plugins.h +++ b/lib/cpPlugins/Interface/Plugins.h @@ -1,27 +1,29 @@ #ifndef __CPPLUGINS__INTERFACE__PLUGINS__H__ #define __CPPLUGINS__INTERFACE__PLUGINS__H__ -#include +#include +#include +#include #include #include #include +#include -#include -#include -#include -#include - -class QObject; -class QMenu; -class QWidget; +// Some forward declarations class vtkRenderWindowInteractor; +#ifdef cpPlugins_Interface_QT4 +class QWidget; +#else +typedef char QWidget; +#endif // cpPlugins_Interface_QT4 namespace cpPlugins { namespace Interface { - class BasePluginsApplication; + // Some forward declarations + class BaseApplication; /** */ @@ -31,36 +33,37 @@ namespace cpPlugins typedef cpPlugins::Interface::Interface TInterface; typedef cpPlugins::Interface::ProcessObject TProcessObject; typedef cpPlugins::Interface::DataObject TDataObject; - typedef cpPlugins::Interface::Image TImage; - typedef cpPlugins::Interface::Mesh TMesh; typedef TProcessObject::TParameters TParameters; - typedef std::set< std::string > TOrderedStringContainer; - typedef std::map< std::string, std::set< std::string > > TFilters; - typedef std::pair< std::string, TDataObject::Pointer > TTreeNode; - typedef std::map< std::string, TTreeNode > TTree; + typedef std::set< std::string > TStringContainer; public: - Plugins( QWidget* widget = NULL ); + Plugins( ); virtual ~Plugins( ); + // Qt oriented methods QWidget* GetWidget( ); const QWidget* GetWidget( ) const; void SetWidget( QWidget* widget ); void BlockWidget( ); void UnblockWidget( ); void DialogLoadPlugins( ); - void AssociatePluginsToMenu( - QMenu* menu, QObject* obj, const char* slot - ); - BasePluginsApplication* GetApplication( ); - const BasePluginsApplication* GetApplication( ) const; - void SetApplication( BasePluginsApplication* a ); + // Connection to main application + BaseApplication* GetApplication( ); + const BaseApplication* GetApplication( ) const; + void SetApplication( BaseApplication* a ); - bool LoadPlugins( ); + // Plugins management + bool LoadPluginsPath( const std::string& path, bool r = false ); bool LoadPlugins( const std::string& fname ); bool LoadPluginsConfigurationFile( const std::string& fname ); + const TStringContainer& GetLoadedPlugins( ) const; + void GetLoadedCategories( TStringContainer& categories ) const; + void GetLoadedFilters( TStringContainer& filters ) const; + const TStringContainer& GetLoadedFilters( + const std::string& category + ) const; // Interactors void AddInteractor( vtkRenderWindowInteractor* interactor ); @@ -87,66 +90,73 @@ namespace cpPlugins ); std::string ReadMesh( const std::string& parent ); - bool WriteImage( const std::string& fname, const std::string& name ); - bool WriteImage( const std::string& name ); - bool WriteMesh( const std::string& fname, const std::string& name ); - bool WriteMesh( const std::string& name ); + bool WriteDataObject( + const std::string& fname, const std::string& name + ); + bool WriteDataObject( const std::string& name ); // Data objects void ClearDataObjects( ); void DeleteDataObject( const std::string& name ); + void GetDataObjects( TStringContainer& names ); std::string GetParent( const std::string& name ) const; - const TTree& GetDataObjects( ) const; - TDataObject* GetDataObject( const std::string& name ); - const TDataObject* GetDataObject( const std::string& name ) const; - TImage* GetImage( const std::string& name ); - const TImage* GetImage( const std::string& name ) const; - TMesh* GetMesh( const std::string& name ); - const TMesh* GetMesh( const std::string& name ) const; + void GetChildren( + TStringContainer& names, const std::string& name + ) const; + void GetRoots( TStringContainer& names ) const; + + template< class T > + inline T* GetData( const std::string& name ); + + template< class T > + inline const T* GetData( const std::string& name ) const; // Filter acces bool ActivateFilter( const std::string& name ); void DeactivateFilter( ); bool HasActiveFilter( ) const; bool IsActiveFilterInteractive( ) const; - unsigned int GetNumberOfInputsInActiveFilter( ) const; - unsigned int GetNumberOfOutputsInActiveFilter( ) const; - std::vector< std::string > GetActiveFilterInputsNames( ) const; - std::vector< std::string > GetActiveFilterOutputsNames( ) const; - void ConnectInputInActiveFilter( - const std::string& object_name, const std::string& input + void GetActiveFilterInputsNames( TStringContainer& names ) const; + void GetActiveFilterOutputsNames( TStringContainer& names ) const; + bool ConnectInputInActiveFilter( + const std::string& object_name, const std::string& input_name ); - void SetOutputNameInActiveFilter( - const std::string& new_name, const std::string& output + bool SetOutputNameInActiveFilter( + const std::string& new_object_name, const std::string& output_name ); TParameters* GetActiveFilterParameters( ); const TParameters* GetActiveFilterParameters( ) const; TProcessObject::DialogResult ConfigureActiveFilter( ); - std::string UpdateActiveFilter( std::vector< std::string >& outputs ); + bool UpdateActiveFilter( + TStringContainer& outputs, + const std::string& parent + ); protected: void _UpdateLoadedPluginsInformation( ); + bool _ActivateIOFilter( const std::string& filter ); + std::string _ReadData( const std::string& parent ); + bool _WriteData( const std::string& name ); bool _InsertNewData( TDataObject* dobj, const std::string& parent ); protected: - QWidget* m_Widget; - BasePluginsApplication* m_Application; + // MVC objects + QWidget* m_Widget; + BaseApplication* m_Application; - TInterface m_Interface; - TOrderedStringContainer m_LoadedPlugins; - std::string m_LastLoadedPlugin; + // Plugins interface + TInterface m_Interface; + TStringContainer m_LoadedPlugins; + std::string m_LastLoadedPlugin; + std::map< std::string, TStringContainer > m_LoadedFilters; - TProcessObject::Pointer m_ImageReader; - TProcessObject::Pointer m_ImageWriter; - TProcessObject::Pointer m_MeshReader; - TProcessObject::Pointer m_MeshWriter; - TProcessObject::Pointer m_DicomSeriesReader; - TProcessObject::Pointer m_ActiveFilter; - std::map< std::string, std::string > m_ActiveFilterOutputs; - TFilters m_Filters; + // Loaded filters + std::map< std::string, TProcessObject::Pointer > m_IOFilters; + TProcessObject::Pointer m_ActiveFilter; - // Loaded objects - TTree m_Objects; + // Loaded data objects + typedef std::pair< std::string, TDataObject::Pointer > _TTreeNode; + std::map< std::string, _TTreeNode > m_DataObjects; // Associated interactors std::set< vtkRenderWindowInteractor* > m_Interactors; @@ -156,6 +166,8 @@ namespace cpPlugins } // ecapseman +#include + #endif // __CPPLUGINS__INTERFACE__PLUGINS__H__ // eof - $RCSfile$