]> Creatis software - cpPlugins.git/blob - lib/cpPlugins/Interface/BaseMPRWindow.h
More widgets added
[cpPlugins.git] / lib / cpPlugins / Interface / BaseMPRWindow.h
1 #ifndef __CPPLUGINS__INTERFACE__BASEMPRWINDOW__H__
2 #define __CPPLUGINS__INTERFACE__BASEMPRWINDOW__H__
3
4 #include <cpPlugins/Interface/cpPlugins_Interface_Export.h>
5 #include <cpPlugins/Interface/Config.h>
6
7 #ifdef cpPlugins_Interface_QT4
8
9 #include <map>
10 #include <set>
11 #include <string>
12
13 #include <QApplication>
14 #include <QMenu>
15 #include <QVTKWidget.h>
16
17 #include <vtkSmartPointer.h>
18
19 #include <cpExtensions/QT/QuadSplitter.h>
20 #include <cpExtensions/Visualization/MPRObjects.h>
21 #include <cpPlugins/Interface/Interface.h>
22 #include <cpPlugins/Interface/ProcessObject.h>
23 #include <cpPlugins/Interface/Image.h>
24 #include <cpPlugins/Interface/Mesh.h>
25
26 namespace cpPlugins
27 {
28   namespace Interface
29   {
30     /**
31      */
32     class cpPlugins_Interface_EXPORT BaseMPRWindow
33       : public cpExtensions::QT::QuadSplitter
34     {
35       Q_OBJECT;
36
37     public:
38       typedef cpPlugins::Interface::Interface     TInterface;
39       typedef cpPlugins::Interface::ProcessObject TProcessObject;
40       typedef cpPlugins::Interface::DataObject    TDataObject;
41       typedef cpPlugins::Interface::Image         TImage;
42       typedef cpPlugins::Interface::Mesh          TMesh;
43
44       typedef cpExtensions::Visualization::MPRObjects TMPRObjects;
45
46       typedef TMPRObjects::TBaseStyle          TBaseStyle;
47       typedef TMPRObjects::TStyle              TStyle;
48       typedef TMPRObjects::TSlicesCommand      TSlicesCommand;
49       typedef TMPRObjects::TWindowLevelCommand TWindowLevelCommand;
50       typedef TMPRObjects::TMouseCommand       TMouseCommand;
51       typedef TMPRObjects::TMouseWheelCommand  TMouseWheelCommand;
52       typedef TMPRObjects::TKeyCommand         TKeyCommand;
53       typedef TMPRObjects::TVoidCommand        TVoidCommand;
54
55       typedef std::map< std::string, TImage::Pointer >          TImages;
56       typedef std::map< std::string, TMesh::Pointer >           TMeshes;
57       typedef std::set< std::string >           TOrderedStringContainer;
58       typedef std::map< std::string, std::set< std::string > > TFilters;
59
60     public:
61       explicit BaseMPRWindow( QWidget* parent = 0 );
62       virtual ~BaseMPRWindow( );
63
64       void DialogLoadPlugins( );
65       void AssociatePluginsToMenu(
66         QMenu* menu, QObject* obj, const char* slot
67         );
68
69       inline void Block( )
70         {
71           QApplication::setOverrideCursor( Qt::WaitCursor );
72           this->setEnabled( false );
73         }
74       inline void Unblock( )
75         {
76           QApplication::restoreOverrideCursor( );
77           this->setEnabled( true );
78         }
79
80       bool LoadPlugins( const std::string& fname );
81       void LoadPlugins( );
82       std::string LoadImage( );
83       std::string LoadMesh( );
84
85       void ExecuteFilter(
86         const std::string& name,
87         const std::string& input_id,
88         const std::string& output_id
89         );
90
91       TProcessObject::Pointer CreateFilter( const std::string& name )
92       {
93         return( this->m_Interface.CreateProcessObject( name ) );
94       }
95
96       void AddImage( const std::string& name, TImage* image );
97       TImage* GetImage( std::string& name ) const
98       {
99         TImages::const_iterator i = this->m_Images.find( name );
100         if( i != this->m_Images.end( ) )
101           return( i->second );
102         else
103           return( NULL );
104       }
105
106       double GetWindow( ) const
107       {
108         return( this->m_MPRObjects->GetWindow( ) );
109       }
110       double GetLevel( ) const
111       {
112         return( this->m_MPRObjects->GetLevel( ) );
113       }
114
115       void ClearAll( );
116
117     protected:
118       void _UpdatePlugins( );
119
120     protected:
121       vtkSmartPointer< TMPRObjects > m_MPRObjects;
122
123       QVTKWidget* m_XVTK;
124       QVTKWidget* m_YVTK;
125       QVTKWidget* m_ZVTK;
126       QVTKWidget* m_WVTK;
127
128       TInterface m_Interface;
129       TOrderedStringContainer m_LoadedPlugins;
130       std::string m_LastLoadedPlugin;
131
132       TProcessObject::Pointer m_ImageReader;
133       TProcessObject::Pointer m_ImageWriter;
134       TProcessObject::Pointer m_MeshReader;
135       TProcessObject::Pointer m_MeshWriter;
136       TFilters m_Filters;
137
138       TImages m_Images;
139       TMeshes m_Meshes;
140     };
141
142   } // ecapseman
143
144 } // ecapseman
145
146 #endif // cpPlugins_Interface_QT4
147
148 #endif // __CPPLUGINS__INTERFACE__BASEMPRWINDOW__H__
149
150 // eof - $RCSfile$