]> Creatis software - cpMesh.git/blob - appli/InteractiveDeformableMeshSegmentation/MainWnd.h
New plugin added
[cpMesh.git] / appli / InteractiveDeformableMeshSegmentation / MainWnd.h
1 #ifndef __MAINWND__H__
2 #define __MAINWND__H__
3
4 // Standard stuff
5 #include <map>
6 #include <string>
7
8 // Qt stuff
9 #include <QMainWindow>
10 #include <QWidget>
11
12 // vtk stuff
13 #include <vtkOrientationMarkerWidget.h>
14 #include <vtkRenderer.h>
15 #include <vtkSmartPointer.h>
16
17 // Plugins interface
18 #include <cpPlugins/Interface/Interface.h>
19 #include <cpPlugins/Interface/ProcessObject.h>
20 #include <cpPlugins/Interface/Image.h>
21 #include <cpPlugins/Interface/DataObject.h>
22 #include <cpPlugins/Extensions/Visualization/MPRWithDifferentWindows.h>
23
24 // -------------------------------------------------------------------------
25 namespace Ui
26 {
27   class MainWnd;
28 }
29
30 // -------------------------------------------------------------------------
31 /**
32  */
33 class MainWnd
34   : public QMainWindow
35 {
36   Q_OBJECT;
37
38 public:
39   // Plugins types
40   typedef cpPlugins::Interface::Interface     TPluginsInterface;
41   typedef cpPlugins::Interface::Object        TPluginObject;
42   typedef cpPlugins::Interface::DataObject    TPluginData;
43   typedef cpPlugins::Interface::Image         TPluginImage;
44   typedef cpPlugins::Interface::ProcessObject TPlugin;
45   typedef TPlugin::TParameters                TParameters;
46   typedef cpPlugins::Extensions::Visualization::MPRWithDifferentWindows TMPR;
47
48   typedef std::map< std::string, std::string > TStringMap;
49
50 public:
51   explicit MainWnd( QWidget* parent = 0 );
52   virtual ~MainWnd( );
53
54 protected:
55   void _LoadApplicationPreferences( );
56   bool _LoadPlugins( );
57   bool _CheckClassesInPlugins( const TStringMap& classes );
58   void _AddPluginActions(
59     const TStringMap& classes, QMenu* menu, const char* method
60     );
61   TPluginImage* _LoadImage(
62     const std::string& image_type, const std::string& image_dim
63     );
64   void _UpdateEnabledFlags( );
65
66   bool _ParametersDialog( const TParameters& parameters );
67
68   /* TODO
69      template< class I >
70   */
71   /*
72     void _SliceMesh( int axis );
73     static void _SliceEventCallback(
74     vtkObject* caller,
75     long unsigned int eventId,
76     void* clientData, void* callData
77     );
78   */
79
80 private slots:
81   void _triggered_actionReloadPlugins( );
82   void _triggered_actionOpenInputImage( );
83   void _triggered_actionOpenSegmentedImage( );
84   void _triggered_actionSwitchMode( );
85   
86   void _triggered_actionSegmentImage( );
87   void _triggered_actionFilterSegmentation( );
88   void _triggered_actionProcessMesh( );
89
90   /* TODO
91      void triggered_aOpenSegmentedImage( );
92      void triggered_aFilterSegmentedImage( );
93      void triggered_aSegmentedImageToMesh( );
94      void triggered_aLoadInputImage( );
95      void triggered_aLoadSegmentedImage( );
96   */
97
98 private:
99   Ui::MainWnd* m_UI;
100
101   // Application preferences
102   std::string m_ApplicationPreferencesFile;
103   TStringMap m_ApplicationPreferences;
104
105   // Plugins objects
106   std::string       m_PluginsConfigurationFile;
107   TPluginsInterface m_Plugins;
108
109   // Needed object from plugins
110   TStringMap m_BaseClasses;
111   TStringMap m_SegmentationClasses;
112   TStringMap m_SegmentationFilterClasses;
113   TStringMap m_MeshFilterClasses;
114
115   // Historic objects
116   std::string m_LastOpenedFile;
117
118   // Real data
119   TPluginImage* m_InputImage;
120   TPluginImage* m_SegmentedImage;
121
122   // Visualization stuff
123   TMPR* m_MPR;
124
125   // Active plugin
126   TPlugin* m_ActivePlugin;
127   QWidget* m_ActiveParameters;
128 };
129
130 #endif // __MAINWND__H__
131
132 // eof - $RCSfile$