X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=lib%2FcpPlugins%2FInterface%2FPlugins.h;h=6ce634424f25231679ab3885f7e1db244b9de91a;hb=f1747c7248d5eead5ea9d7e57bda0b081bcef065;hp=8eb4d3c451945efd4ab43111cca74ba13a50ce9b;hpb=24dc7fa44ff75dc9336d703b8243ce1e52ff3429;p=cpPlugins.git diff --git a/lib/cpPlugins/Interface/Plugins.h b/lib/cpPlugins/Interface/Plugins.h index 8eb4d3c..6ce6344 100644 --- a/lib/cpPlugins/Interface/Plugins.h +++ b/lib/cpPlugins/Interface/Plugins.h @@ -1,161 +1,90 @@ -#ifndef __CPPLUGINS__INTERFACE__PLUGINS__H__ -#define __CPPLUGINS__INTERFACE__PLUGINS__H__ +#ifndef __cpPlugins__Interface__Plugins__h__ +#define __cpPlugins__Interface__Plugins__h__ -#include - -#include -#include -#include - -#include -#include -#include -#include - -class QObject; -class QMenu; -class QWidget; -class vtkRenderWindowInteractor; +#include +#include +#include namespace cpPlugins { namespace Interface { - class BasePluginsApplication; - /** */ - class cpPlugins_Interface_EXPORT Plugins + class cpPlugins_EXPORT Plugins + : public itk::Object { public: - 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 Plugins Self; + typedef itk::Object Superclass; + typedef itk::SmartPointer< Self > Pointer; + typedef itk::SmartPointer< const Self > ConstPointer; + + typedef void* ( *TCreator )( ); + typedef std::map< std::string, void* > TLibraries; + struct TCreatorData + { + std::string PluginName; + void* LibraryHandle; + TCreator Creator; + }; + typedef std::map< std::string, TCreatorData > TFilterData; + typedef std::map< std::string, TFilterData > TFilters; + typedef std::set< std::string > TStrings; + + typedef cpPlugins::BaseObjects::ProcessObject TProcess; public: - Plugins( QWidget* widget = NULL ); - virtual ~Plugins( ); - - 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 ); - - bool LoadPlugins( ); - bool LoadPlugins( const std::string& fname ); - bool LoadPluginsConfigurationFile( const std::string& fname ); + itkTypeMacro( Plugins, itk::Object ); + itkGetConstMacro( Paths, TStrings ); - // Interactors - void AddInteractor( vtkRenderWindowInteractor* interactor ); - void RemoveInteractor( vtkRenderWindowInteractor* interactor ); - void ClearInteractors( ); - - // Data IO - bool HasImageReader( ) const; - bool HasDicomSeriesReader( ) const; - bool HasMeshReader( ) const; - bool HasImageWriter( ) const; - bool HasMeshWriter( ) const; - - std::string ReadImage( - const std::string& fname, const std::string& parent - ); - std::string ReadImage( - const std::vector< std::string >& fnames, const std::string& parent - ); - std::string ReadImage( const std::string& parent ); - std::string ReadDicomSeries( const std::string& parent ); - std::string ReadMesh( - const std::string& fname, const std::string& parent - ); - 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 ); - - // Data objects - void ClearDataObjects( ); - void DeleteDataObject( const std::string& name ); - 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; - - // 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 SetOutputNameInActiveFilter( - const std::string& new_name, const std::string& output + public: + static Pointer New( ); + virtual itk::LightObject::Pointer CreateAnother( ) const cpPlugins_OVERRIDE; + Pointer Clone( ) const; + + TStrings GetLibraries( ) const; + TStrings GetPlugins( ) const; + TStrings GetCategories( ) const; + TStrings GetFilters( const std::string& category ) const; + + void AddEnvironments( const std::string& env ); + void LoadEnvironments( ); + void LoadPaths( const std::string& dir ); + void SavePaths( const std::string& dir ) const; + + void LoadFile( const std::string& fname ); + void LoadPlugin( const std::string& pname ); + void LoadDirectory( const std::string& dirname ); + void GuessPlugins( ); + + TProcess::Pointer CreateProcessObject( + const std::string& category, const std::string& name ); - TParameters* GetActiveFilterParameters( ); - const TParameters* GetActiveFilterParameters( ) const; - TProcessObject::DialogResult ConfigureActiveFilter( ); - std::string UpdateActiveFilter( std::vector< std::string >& outputs ); protected: - void _UpdateLoadedPluginsInformation( ); - bool _InsertNewData( TDataObject* dobj, const std::string& parent ); + Plugins( ); + virtual ~Plugins( ); + virtual void PrintSelf( + std::ostream& os, itk::Indent indent + ) const cpPlugins_OVERRIDE; + + private: + // Purposely not implemented + Plugins( const Self& other ); + Self& operator=( const Self& other ); protected: - QWidget* m_Widget; - BasePluginsApplication* m_Application; - - TInterface m_Interface; - TOrderedStringContainer m_LoadedPlugins; - std::string m_LastLoadedPlugin; - - 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 objects - TTree m_Objects; - - // Associated interactors - std::set< vtkRenderWindowInteractor* > m_Interactors; + TStrings m_Paths; + TLibraries m_Libraries; + TLibraries m_Plugins; + TFilters m_Filters; }; } // ecapseman } // ecapseman -#endif // __CPPLUGINS__INTERFACE__PLUGINS__H__ +#endif // __cpPlugins__Interface__Plugins__h__ // eof - $RCSfile$