X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=appli%2FInteractiveDeformableMeshSegmentation%2FMainWnd.h;fp=appli%2FInteractiveDeformableMeshSegmentation%2FMainWnd.h;h=45860bb3e171118fd1f5ae1f4987b444f6fe00ce;hb=bece008148f4a08cff5daaa3c9b2824462b94319;hp=3576ac576b44732f6ccdfc235f6d57e878379f82;hpb=93ddd2fe04d05b28dff31448032fd3af93ffe750;p=cpMesh.git diff --git a/appli/InteractiveDeformableMeshSegmentation/MainWnd.h b/appli/InteractiveDeformableMeshSegmentation/MainWnd.h index 3576ac5..45860bb 100644 --- a/appli/InteractiveDeformableMeshSegmentation/MainWnd.h +++ b/appli/InteractiveDeformableMeshSegmentation/MainWnd.h @@ -10,6 +10,7 @@ #include // vtk stuff +#include #include #include #include @@ -21,6 +22,37 @@ #include #include +// ------------------------------------------------------------------------- +class MainWnd; + +class DoubleClickCommand + : public vtkCommand +{ +public: + typedef DoubleClickCommand Self; + +public: + vtkTypeMacro( DoubleClickCommand, vtkCommand ); + +public: + static DoubleClickCommand* New( ); + + void SetMainWnd( MainWnd* wnd ); + void Execute( vtkObject* caller, unsigned long eid, void* data ); + +protected: + DoubleClickCommand( ); + virtual ~DoubleClickCommand( ); + +private: + // Purposely not implemented + DoubleClickCommand( const Self& ); + Self& operator=( const Self& ); + +protected: + MainWnd* m_MainWnd; +}; + // ------------------------------------------------------------------------- namespace Ui { @@ -36,17 +68,38 @@ class MainWnd Q_OBJECT; public: + friend class DoubleClickCommand; + + typedef MainWnd Self; + // Plugins types typedef cpPlugins::Interface::Interface TPluginsInterface; typedef cpPlugins::Interface::Object TPluginObject; typedef cpPlugins::Interface::DataObject TPluginData; typedef cpPlugins::Interface::Image TPluginImage; typedef cpPlugins::Interface::ProcessObject TPlugin; + typedef TPlugin::TParameter TParameter; typedef TPlugin::TParameters TParameters; typedef cpPlugins::Extensions::Visualization::MPRWithDifferentWindows TMPR; typedef std::map< std::string, std::string > TStringMap; + enum PluginType + { + GlobalPluginType = 0, + DoubleClickPluginType, + SpherePluginType, + NonePluginType + }; + + enum PluginCategory + { + SegmentationPluginCategory = 0, + SegmentationFilteringPluginCategory, + MeshProcessingPluginCategory, + NonePluginCategory + }; + public: explicit MainWnd( QWidget* parent = 0 ); virtual ~MainWnd( ); @@ -64,6 +117,10 @@ protected: void _UpdateEnabledFlags( ); bool _ParametersDialog( const TParameters& parameters ); + void _ExecuteDoubleClickPlugin( const double* pnt ); + + template< class P > + void _JoinSegmentations( ); /* TODO template< class I > @@ -125,6 +182,10 @@ private: // Active plugin TPlugin* m_ActivePlugin; QWidget* m_ActiveParameters; + Self::PluginType m_ActivePluginType; + Self::PluginCategory m_ActivePluginCategory; + + vtkSmartPointer< DoubleClickCommand > m_DoubleClickCommand; }; #endif // __MAINWND__H__