]> Creatis software - cpPlugins.git/blobdiff - appli/ImageMPR/ImageMPR.h
Interactive filters synchronization debugged
[cpPlugins.git] / appli / ImageMPR / ImageMPR.h
index 69b883afeccdf9fe48b07fb4953b4500e5816755..1302006a7500b9d620a3e4a426b4ed7e08897be2 100644 (file)
@@ -1,22 +1,22 @@
 #ifndef __IMAGEMPR__H__
 #define __IMAGEMPR__H__
 
-// Standard stuff
 #include <map>
-#include <string>
+#include <vector>
 
 // Qt stuff
+#include <QApplication>
 #include <QMainWindow>
 
 // vtk stuff
 #include <vtkSmartPointer.h>
+#include <cpExtensions/Visualization/MPRObjects.h>
 
 // Plugins interface
-#include <cpPlugins/Interface/Interface.h>
-#include <cpPlugins/Interface/ProcessObject.h>
+#include <cpPlugins/Interface/BaseApplication.h>
+#include <cpPlugins/Interface/Plugins.h>
 #include <cpPlugins/Interface/Image.h>
-#include <cpPlugins/Interface/DataObject.h>
-#include <cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.h>
+#include <cpPlugins/Interface/Mesh.h>
 
 // -------------------------------------------------------------------------
 namespace Ui
@@ -24,48 +24,203 @@ namespace Ui
   class ImageMPR;
 }
 
+//==========================================================================
+// 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::ImplicitFunction TPluginImplicitFunction;
+//typedef cpPlugins::Interface::Mesh             TPluginMesh;
+//typedef cpPlugins::Interface::ProcessObject    TPluginFilter;
+//typedef cpPlugins::Interface::Parameters       TParameters;
+//
+//typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
+
+
+
+
+//class MementoState
+//{
+//private:
+//     long m_Id;
+//     
+//public:
+//     
+//     MementoState()
+//     {
+//             m_Id = 0;
+//     };
+//
+//     MementoState(long id, TPluginImage* _img)
+//     {
+//             char * base = "state";
+//             std::ostringstream oss;
+//             oss << id;
+//             std::string str = oss.str();
+//             auto complement = str.c_str();
+//
+//             std::string fileName(base);
+//             fileName.append(complement);
+//             fileName.append(".mhd");
+//
+//             std::string fileNameRaw(base);
+//             fileNameRaw.append(complement);
+//             fileNameRaw.append(".raw");
+//             save(fileName, fileNameRaw, _img);
+//     }
+//
+//     vtkSmartPointer<vtkMetaImageReader> getMemento(long id)
+//     {
+//             char * base = "state";
+//             std::ostringstream oss;
+//             oss << id;
+//             std::string str = oss.str();
+//             auto complement = str.c_str();
+//
+//             std::string fileName(base);
+//             fileName.append(complement);
+//             fileName.append(".mhd");
+//             return load(fileName);
+//     }
+//
+//     void save(const std::string& filename, const std::string& filenameRaw, TPluginImage* img) {
+//             vtkSmartPointer<vtkMetaImageWriter> writer =
+//                     vtkSmartPointer<vtkMetaImageWriter>::New();
+//             writer->SetInputData(img->GetVTK< vtkImageData >());
+//             writer->SetFileName(filename.c_str());
+//             writer->SetRAWFileName(filenameRaw.c_str());
+//             writer->Write();
+//     }
+//
+//     vtkSmartPointer<vtkMetaImageReader> load(const std::string& filename) {
+//             vtkSmartPointer<vtkMetaImageReader> reader =
+//             vtkSmartPointer<vtkMetaImageReader>::New();
+//             reader->SetFileName(filename.c_str());
+//             reader->Update();       
+//             return reader;
+//     }
+//
+//};
+
+//==========================================================================
+
 // -------------------------------------------------------------------------
 /**
  */
 class ImageMPR
-  : public QMainWindow
+  : public QMainWindow,
+    public cpPlugins::Interface::BaseApplication
 {
   Q_OBJECT;
 
 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 ImageMPR    Self;
+  typedef QMainWindow Superclass;
 
-  typedef std::map< std::string, std::string > TStringMap;
-  typedef cpPlugins::Extensions::Visualization::MPRWithDifferentWindows TMPR;
+  typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
+  typedef cpPlugins::Interface::Plugins           TPlugins;
+  typedef cpPlugins::Interface::DataObject        TDataObject;
+  typedef cpPlugins::Interface::Image             TImage;
+  typedef cpPlugins::Interface::Mesh              TMesh;
+
+  // Plugins types
+  /*
+    typedef cpPlugins::Interface::Interface        TPluginsInterface;
+    typedef cpPlugins::Interface::Object           TPluginObject;
+    typedef cpPlugins::Interface::Image            TPluginImage;
+    typedef cpPlugins::Interface::ImplicitFunction TPluginImplicitFunction;
+    typedef cpPlugins::Interface::Mesh             TPluginMesh;
+    typedef cpPlugins::Interface::ProcessObject    TPluginFilter;
+    typedef cpPlugins::Interface::Parameters       TParameters;
+    typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
+  */
 
 public:
   explicit ImageMPR( QWidget* parent = 0 );
   virtual ~ImageMPR( );
 
+  virtual void UpdateActualFilter( );
+
+  /* TODO
+     protected:
+     inline void _Block( )
+     {
+     QApplication::setOverrideCursor( Qt::WaitCursor );
+     this->setEnabled( false );
+     }
+     inline void _Unblock( )
+     {
+     QApplication::restoreOverrideCursor( );
+     this->setEnabled( true );
+     }
+  */
+
+protected:
+  void _AssociatePluginsToMenu( );
+  /*
+    bool _LoadPlugins( const std::string& filename );
+    std::string _LoadImage( TPluginImage::Pointer& image );
+    std::string _ConfigureMeshActors( );
+  */
+
 private slots:
-  void _triggered_actionOpenPlugins( );
-  void _triggered_actionOpenInputImage( );
+  void _aOpenImage( );
+  void _aOpenDICOMSeries( );
+  void _aOpenSegmentation( );
+  void _aOpenPolyData( );
+  void _aSaveImage( );
+  void _aSaveSegmentation( );
+  void _aSavePolyData( );
+  void _aUndo( );
+  void _aRedo( );
+  void _aLoadPlugins( );
+  void _aShowPlugins( );
+
+  void _execPlugin( );
 
 private:
   Ui::ImageMPR* m_UI;
+  TPlugins      m_Plugins;
+  std::string   m_ActiveFilterMainInput;
 
-  // Plugins objects
-  TPluginsInterface m_Plugins;
-
-  // Needed object from plugins
-  TStringMap m_BaseClasses;
+  // Objects
+  /*
+    typedef std::pair< std::string, TPlugins::TDataObject::Pointer > TTreeNode;
+    typedef std::map< std::string, TTreeNode > TTree;
+    TTree m_Objects;
 
-  // Real data
-  TPluginImage* m_InputImage;
+    // Active filter (for modal configuration)
+    TPlugins::TProcessObject::Pointer m_ActiveFilter;
+  */
 
-  // Visualization stuff
-  TMPR* m_MPR;
+  // Plugins objects
+  /*
+    TPluginsInterface m_Plugins;
+
+    // Needed object from plugins
+    std::string m_ImageReaderClass;
+    std::string m_ImageWriterClass;
+    std::string m_MeshReaderClass;
+    std::string m_MeshWriterClass;
+    std::string m_MeshCutterClass;
+
+    // Real data
+    TPluginImage::Pointer m_Image;
+    TPluginImage::Pointer m_Segmentation;
+    TPluginMesh::Pointer  m_Mesh;
+
+    // Cutters
+    TPluginFilter::Pointer m_Cutters[ 3 ];
+    TPluginImplicitFunction::Pointer m_Planes[ 3 ];
+
+    // Visualization stuff
+    vtkSmartPointer< TMPRObjects > m_MPRObjects;
+
+    // Memento stuff
+    unsigned long m_state;
+    unsigned long m_max_state;
+  */
 
   /* TODO
      vtkSmartPointer< vtkOrientationMarkerWidget > m_3DOrientationWidget;