]> Creatis software - cpMesh.git/blobdiff - appli/InteractiveDeformableMeshSegmentation/MainWnd.h
New plugin added
[cpMesh.git] / appli / InteractiveDeformableMeshSegmentation / MainWnd.h
index d3bef88941c9b95640823a073623f54a67eddc1d..3576ac576b44732f6ccdfc235f6d57e878379f82 100644 (file)
@@ -7,6 +7,7 @@
 
 // Qt stuff
 #include <QMainWindow>
+#include <QWidget>
 
 // vtk stuff
 #include <vtkOrientationMarkerWidget.h>
 // Plugins interface
 #include <cpPlugins/Interface/Interface.h>
 #include <cpPlugins/Interface/ProcessObject.h>
+#include <cpPlugins/Interface/Image.h>
 #include <cpPlugins/Interface/DataObject.h>
-
-// Local stuff
-#include "InteractorStyleImage.h"
-#include "VolumeActors.h"
-
-
-/*
-  #include <itkImage.h>
-  #include <itkImageToVTKImageFilter.h>
-
-  #include <cpm/DataStructures/QuadEdgeMesh.h>
-
-  #include <cpm/VTK/MeshMapper.h>
-  #include <cpm/Algorithms/QuadEdge/MeshPlaneCutterFilter.h>
-*/
+#include <cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.h>
 
 // -------------------------------------------------------------------------
 namespace Ui
@@ -50,9 +38,14 @@ class MainWnd
 public:
   // 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::TParameters                TParameters;
+  typedef cpPlugins::Extensions::Visualization::MPRWithDifferentWindows TMPR;
+
+  typedef std::map< std::string, std::string > TStringMap;
 
 public:
   explicit MainWnd( QWidget* parent = 0 );
@@ -60,16 +53,21 @@ public:
 
 protected:
   void _LoadApplicationPreferences( );
-  TPluginData* _LoadImage(
+  bool _LoadPlugins( );
+  bool _CheckClassesInPlugins( const TStringMap& classes );
+  void _AddPluginActions(
+    const TStringMap& classes, QMenu* menu, const char* method
+    );
+  TPluginImage* _LoadImage(
     const std::string& image_type, const std::string& image_dim
     );
   void _UpdateEnabledFlags( );
 
+  bool _ParametersDialog( const TParameters& parameters );
+
   /* TODO
-     bool _ParametersDialog( TParameters& parameters );
      template< class I >
   */
-
   /*
     void _SliceMesh( int axis );
     static void _SliceEventCallback(
@@ -85,6 +83,10 @@ private slots:
   void _triggered_actionOpenSegmentedImage( );
   void _triggered_actionSwitchMode( );
   
+  void _triggered_actionSegmentImage( );
+  void _triggered_actionFilterSegmentation( );
+  void _triggered_actionProcessMesh( );
+
   /* TODO
      void triggered_aOpenSegmentedImage( );
      void triggered_aFilterSegmentedImage( );
@@ -98,51 +100,31 @@ private:
 
   // Application preferences
   std::string m_ApplicationPreferencesFile;
-  std::map< std::string, std::string > m_ApplicationPreferences;
+  TStringMap m_ApplicationPreferences;
 
   // Plugins objects
   std::string       m_PluginsConfigurationFile;
   TPluginsInterface m_Plugins;
 
   // Needed object from plugins
-  std::string m_ImageReaderClassName;
-  std::string m_ImageSeriesReaderClassName;
-  std::string m_ImageWriterClassName;
+  TStringMap m_BaseClasses;
+  TStringMap m_SegmentationClasses;
+  TStringMap m_SegmentationFilterClasses;
+  TStringMap m_MeshFilterClasses;
 
   // Historic objects
   std::string m_LastOpenedFile;
 
   // Real data
-  TPluginData* m_InputImage;
-  TPluginData* m_SegmentedImage;
-
-  /* TODO
-     // Inputs
-     TImage::Pointer    m_Image;
-     TImage::Pointer    m_Segmentation;
-     TMesh::Pointer     m_Mesh;
-     TVTKImage::Pointer m_VTKImage;
-     TVTKImage::Pointer m_VTKSegmentation;
-  */
+  TPluginImage* m_InputImage;
+  TPluginImage* m_SegmentedImage;
 
   // Visualization stuff
-  vtkSmartPointer< vtkRenderer >        m_3DRenderer;
-  vtkSmartPointer< vtkRenderer >        m_XPlaneRenderer;
-  vtkSmartPointer< vtkRenderer >        m_YPlaneRenderer;
-  vtkSmartPointer< vtkRenderer >        m_ZPlaneRenderer;
-  vtkSmartPointer< vtkRenderer >        m_AuxRenderer;
-  vtkSmartPointer< idms::VolumeActors > m_ImageActors;
-  vtkSmartPointer< idms::InteractorStyleImage > m_XStyle;
-  vtkSmartPointer< idms::InteractorStyleImage > m_YStyle;
-  vtkSmartPointer< idms::InteractorStyleImage > m_ZStyle;
-  vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;
+  TMPR* m_MPR;
 
-  /*
-    TTriangulation::Pointer                 m_Mesh;
-    vtkSmartPointer< TTriangulationMapper > m_MeshMapper;
-    vtkSmartPointer< vtkActor >             m_MeshActor;
-    TCutter::Pointer m_ZCutter;
-  */
+  // Active plugin
+  TPlugin* m_ActivePlugin;
+  QWidget* m_ActiveParameters;
 };
 
 #endif // __MAINWND__H__