]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx
#3418 creaMaracasVisu Feature New Normal - ManualPaint_model with openmp
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMPRWidget.cxx
index e25d2c977938ce34759777acdf27fd25bb4de8b3..67606299255f14f666ae5337dec6a3314de33f35 100644 (file)
@@ -81,7 +81,7 @@
 
 
 #include "wxMPRWidget.h"
-#include "wxVTKRenderWindowInteractor.h"
+#include "creawxVTKRenderWindowInteractor.h"
 #include "UtilVtk3DGeometriSelection.h"
 #include "../kernel/marDicomBase.h"
 
@@ -118,7 +118,7 @@ END_EVENT_TABLE( );
 
 
 wxMPRWidget::wxMPRWidget( wxWindow* parent,
-                          marImageData *marimageData , double voxelSize)
+                          marImageData *marimageData )
 : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL)
 {
 
@@ -159,7 +159,6 @@ wxMPRWidget::wxMPRWidget( wxWindow* parent,
 
        if(marimageData!=NULL){
                _marImageData                                   = marimageData;
-               _voxelSize                                              = voxelSize;
                _vtkmprbasedata                                 = new vtkMPRBaseData(); 
                _vtkmprbasedata->SetMarImageData(_marImageData);
                
@@ -168,6 +167,8 @@ wxMPRWidget::wxMPRWidget( wxWindow* parent,
 
                wxSplitterWindow        *pnlSplitter            = new wxSplitterWindow( this , -1);
                pnlSplitter     -> SetMinimumPaneSize( 2 );
+               //RaC Nov2012 Correctly resize internal panels with the window resize event
+               pnlSplitter->SetSashGravity(0.5);
 
                wxPanel                         *MPRPanel       = CreateMPRPanel(pnlSplitter,_vtkmprbasedata);
                wxPanel                         *controlPanel   = CreateControlPanel(pnlSplitter);      
@@ -189,36 +190,36 @@ wxMPRWidget::wxMPRWidget( wxWindow* parent,
        _refreshBPage=0;
 
 }
-void wxMPRWidget::setImageData(vtkImageData * img, double voxelsize){
+
+//----------------------------------------------------------------------------
+void wxMPRWidget::setImageData(vtkImageData * img)
+{
 
        if(_marImageData!=NULL){
                _marImageData->removeImageData(0);
                _marImageData->AddImageData(img);               
        }else{
-               _marImageData = new marImageData(img);
+               _marImageData                                   = new marImageData(img);
        }
        
-       _voxelSize                                              = voxelsize;
-
        if(_vtkmprbasedata==NULL){
                _vtkmprbasedata                                 = new vtkMPRBaseData(); 
                _vtkmprbasedata->SetMarImageData(_marImageData);        
 
-               wxSplitterWindow        *pnlSplitter            = new wxSplitterWindow( this , -1);
+               wxSplitterWindow        *pnlSplitter= new wxSplitterWindow( this , -1);
                pnlSplitter     -> SetMinimumPaneSize( 2 );
+               //RaC Nov2012 Correctly resize internal panels with the window resize event
+                               pnlSplitter->SetSashGravity(0.5);
 
-               wxPanel                         *MPRPanel       = CreateMPRPanel(pnlSplitter,_vtkmprbasedata);
+               wxPanel                         *MPRPanel               = CreateMPRPanel(pnlSplitter,_vtkmprbasedata);
                wxPanel                         *controlPanel   = CreateControlPanel(pnlSplitter);      
                pnlSplitter     -> SplitVertically( MPRPanel, controlPanel, 550 );
 
                this->GetSizer()                -> Add( pnlSplitter ,1,wxGROW  ,0);
        }       
-       
-
-       
 }
-//----------------------------------------------------------------------------
 
+//----------------------------------------------------------------------------
 wxMPRWidget::~wxMPRWidget( )
 {
 //EEDxx2.4 DELETE
@@ -376,7 +377,7 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm
        if (type==3)
        {
                _widgetMesure_B         = new wxWidgetMesure2D_Plane_in_MPR(panel);
-               _vtkplane2Dview_B       = new vtkPlane2DView( _widgetMesure_B->GetWindow2());
+               _vtkplane2Dview_B               = new vtkPlane2DView( _widgetMesure_B->GetWindow2());
                _widgetMesure_B->SetVtkPlane2DView( _vtkplane2Dview_B );
                _vtkplane2Dview_B->SetImgSize( 200 );
                _vtkplane2Dview_B->SetVtkBaseData(vtkmprbasedata);
@@ -384,27 +385,31 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm
        }
        if (type==4)
        {
-               _wxsphereview_B         = new wxSphereView( panel , vtkmprbasedata, vtkmprbasedata->GetImageData() );
+//EED
+//             _wxsphereview_B         = new wxSphereView( panel , vtkmprbasedata, vtkmprbasedata->GetImageData() );
+               _wxsphereview_B         = new wxSphereView( panel , vtkmprbasedata  );
                wxwindow=_wxsphereview_B->GetWxVTKRenderWindowInteractor();
        }
 
        if (type==5)
        {
                wxSplitterWindow *panelMPR3D    = new wxSplitterWindow( panel , -1);
-               _wxvtk3Dbaseview_MPR3D_B                = new wxVtk3DBaseView( panelMPR3D );
+               _wxvtk3Dbaseview_MPR3D_B                = new wxVtk3DBaseView( panelMPR3D , vtkmprbasedata );
 
-               _wxvtkmpr3Dview_B                               = new wxVtkMPR3DView(_wxvtk3Dbaseview_MPR3D_B);
+               _wxvtkmpr3Dview_B                                       = new wxVtkMPR3DView(_wxvtk3Dbaseview_MPR3D_B);
                vtkMPR3DDataViewer *vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); 
                vtkmpr3Ddataviewer->SetVtkMPRBaseData(vtkmprbasedata);
                vtkmpr3Ddataviewer->Configure();
                _wxvtkmpr3Dview_B->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
 
-               wxWindow        *window3D                       = _wxvtk3Dbaseview_MPR3D_B->GetWxVTKRenderWindowInteractor();
-               wxPanel         *controlPanel3D         = _wxvtkmpr3Dview_B->CreateControlPanel(panelMPR3D, false);
+               wxWindow        *window3D                               = _wxvtk3Dbaseview_MPR3D_B->GetWxVTKRenderWindowInteractor();
+               wxPanel *controlPanel3D         = _wxvtkmpr3Dview_B->CreateControlPanel(panelMPR3D, false);
 
 //EEDxx2.4
                panelMPR3D      -> SetMinimumPaneSize( 5 );
                panelMPR3D      -> SplitHorizontally( controlPanel3D,window3D,600  );
+               //RaC Nov2012 Correctly resize internal panels with the window resize event
+               panelMPR3D->SetSashGravity(0.5);
 
                wxwindow=panelMPR3D;
        }
@@ -412,7 +417,7 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm
        if (type==6)
        {
                wxSplitterWindow        *panelClipping3D        = new wxSplitterWindow( panel , -1);
-               _wxvtk3Dbaseview_Clipping3D_BB                  = new wxVtk3DBaseView( panelClipping3D );
+               _wxvtk3Dbaseview_Clipping3D_BB          = new wxVtk3DBaseView( panelClipping3D , vtkmprbasedata );
 
                _wxvtkclipping3Dview_BB                                 = new wxVtkClipping3DView(_wxvtk3Dbaseview_Clipping3D_BB);
                vtkClipping3DDataViewer *vtkclipping3Ddataviewer = new vtkClipping3DDataViewer(); 
@@ -426,7 +431,7 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm
                vtkmpr3Ddataviewer->Configure();
                _wxvtkmpr3Dview_BB->SetVtkMPR3DDataViewer(vtkmpr3Ddataviewer);
 
-               wxWindow        *window3D                                       = _wxvtk3Dbaseview_Clipping3D_BB->GetWxVTKRenderWindowInteractor();
+               wxWindow        *window3D                                               = _wxvtk3Dbaseview_Clipping3D_BB->GetWxVTKRenderWindowInteractor();
 
                wxPanel                 *panelControl                   = new wxPanel(panelClipping3D,-1);      
                wxPanel                 *controlPanelMPR3D              = _wxvtkmpr3Dview_BB->CreateControlPanel(panelControl, false);
@@ -449,6 +454,8 @@ wxPanel* wxMPRWidget::CreateView(int type,wxWindow *parent, vtkMPRBaseData *vtkm
 //EEDxx2.4
                panelClipping3D -> SetMinimumPaneSize( 5 );
                panelClipping3D -> SplitHorizontally( panelControl , window3D , 10  );
+               //RaC Nov2012 Correctly resize internal panels with the window resize event
+               panelClipping3D->SetSashGravity(0.5);
                wxwindow=panelClipping3D;
        }
 
@@ -503,17 +510,17 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm
        // view 0
        _vtkmpr2Dview[0] = new wxVtkMPR2DView(panel,0);
        _vtkmpr2Dview[0]->SetVtkBaseData(vtkmprbasedata);
-       wxVTKRenderWindowInteractor *iren0 = _vtkmpr2Dview[0]->GetWxVTKRenderWindowInteractor();        
+       crea::wxVTKRenderWindowInteractor *iren0 = _vtkmpr2Dview[0]->GetWxVTKRenderWindowInteractor();  
 
        // view 1
        _vtkmpr2Dview[1] = new wxVtkMPR2DView(panel,1);
        _vtkmpr2Dview[1]->SetVtkBaseData(vtkmprbasedata);
-       wxVTKRenderWindowInteractor *iren1 = _vtkmpr2Dview[1]->GetWxVTKRenderWindowInteractor();        
+       crea::wxVTKRenderWindowInteractor *iren1 = _vtkmpr2Dview[1]->GetWxVTKRenderWindowInteractor();  
 
        // view 2
        _vtkmpr2Dview[2] = new wxVtkMPR2DView(panel,2);
        _vtkmpr2Dview[2]->SetVtkBaseData(vtkmprbasedata);
-       wxVTKRenderWindowInteractor *iren2 = _vtkmpr2Dview[2]->GetWxVTKRenderWindowInteractor();        
+       crea::wxVTKRenderWindowInteractor *iren2 = _vtkmpr2Dview[2]->GetWxVTKRenderWindowInteractor();  
 
        // view 3
        wxNotebook *notebook = new wxNotebook( panel, -1 );
@@ -529,14 +536,15 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm
        notebook->AddPage( _widgetMesure, _T("Plane") );
 
         // view 3.1
-       _wxsphereview = new wxSphereView( notebook , vtkmprbasedata, vtkmprbasedata->GetImageData());
-       wxVTKRenderWindowInteractor *iren3B = _wxsphereview->GetWxVTKRenderWindowInteractor();  
+// EED
+//     _wxsphereview = new wxSphereView( notebook , vtkmprbasedata, vtkmprbasedata->GetImageData());
+       _wxsphereview = new wxSphereView( notebook , vtkmprbasedata );
+       crea::wxVTKRenderWindowInteractor *iren3B = _wxsphereview->GetWxVTKRenderWindowInteractor();    
        notebook->AddPage( iren3B, _T("Sphere") );
 
-
         // view 3.2
        wxSplitterWindow *panelMPR3D    = new wxSplitterWindow( notebook , -1);
-       _wxvtk3Dbaseview_MPRClipping3D  = new wxVtk3DBaseView( panelMPR3D );
+       _wxvtk3Dbaseview_MPRClipping3D  = new wxVtk3DBaseView( panelMPR3D ,vtkmprbasedata );
 
        _wxvtkmpr3Dview = new wxVtkMPR3DView( _wxvtk3Dbaseview_MPRClipping3D );
        vtkMPR3DDataViewer *vtkmpr3Ddataviewer = new vtkMPR3DDataViewer(); 
@@ -552,21 +560,16 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm
        _wxvtkclipping3Dview->SetVtkClipping3DDataViewer(vtkclipping3Ddataviewer);
 
 
-       wxWindow        *window3D                               = _wxvtk3Dbaseview_MPRClipping3D->GetWxVTKRenderWindowInteractor();
-
+       wxWindow        *window3D                       = _wxvtk3Dbaseview_MPRClipping3D->GetWxVTKRenderWindowInteractor();
        wxPanel         *panelControl                   = new wxPanel(panelMPR3D,-1);
        wxPanel         *controlPanelMPR3D              = _wxvtkmpr3Dview->CreateControlPanel(panelControl, false);
        wxPanel         *controlPanelClipping3D = _wxvtkclipping3Dview->CreateSurfControlPanel(panelControl);
 
-
-
-
 //    wxBoxSizer        *sizerCtrol             = new wxBoxSizer(wxVERTICAL);
        wxFlexGridSizer  *sizerCtrol             = new wxFlexGridSizer(1);
        sizerCtrol->Add(controlPanelMPR3D               , 1, wxALL|wxEXPAND, 2);
        sizerCtrol->Add(controlPanelClipping3D  , 1, wxALL|wxEXPAND, 2);
 
-
        panelControl->SetAutoLayout(true);
        panelControl->SetSizer(sizerCtrol);
        panelControl->SetSize(400,150);
@@ -574,14 +577,11 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm
 
 //EEDxx2.4
        panelMPR3D      -> SetMinimumPaneSize( 5 );
-
+       //RaC Nov2012 Correctly resize internal panels with the window resize event
+       panelMPR3D->SetSashGravity(0.5);
        panelMPR3D      -> SplitHorizontally( panelControl,window3D,200  );
-
        notebook->AddPage( panelMPR3D, _T("MPR 3D - Clipping") );
-
-
        Connect(notebook->GetId()       , wxEVT_COMMAND_NOTEBOOK_PAGE_CHANGED  , (wxObjectEventFunction) &wxMPRWidget::OnPageBChanged   );
-
        wxBoxSizer *sizerV = new wxBoxSizer(wxVERTICAL);
        wxBoxSizer *sizerH1= new wxBoxSizer(wxHORIZONTAL);
        wxBoxSizer *sizerH2= new wxBoxSizer(wxHORIZONTAL);
@@ -646,42 +646,35 @@ void wxMPRWidget::ConfigureVTK(){
        if (_vtkmprbasedata!=NULL)
        {
                _vtkmprbasedata->Configure();
-               x=_vtkmprbasedata                       ->      GetMaxPositionX()/2;
-               y=_vtkmprbasedata                       ->      GetMaxPositionY()/2;
-               z=_vtkmprbasedata                       ->      GetMaxPositionZ()/2;    
+               x = _vtkmprbasedata->GetMaxPositionX()/2;
+               y = _vtkmprbasedata->GetMaxPositionY()/2;
+               z = _vtkmprbasedata->GetMaxPositionZ()/2;       
                _vtkmprbasedata->SetX( x );
                _vtkmprbasedata->SetY( y );
                _vtkmprbasedata->SetZ( z );
        
        }
 
-       if(_vtkmpr2Dview[0]!=NULL) {_vtkmpr2Dview[0]                            ->      Configure();}
-       if(_vtkmpr2Dview[1]!=NULL) {_vtkmpr2Dview[1]                            ->      Configure();}
-       if(_vtkmpr2Dview[2]!=NULL) {_vtkmpr2Dview[2]                            ->      Configure();}
-
+       if(_vtkmpr2Dview[0]!=NULL)              { _vtkmpr2Dview[0]->Configure();                                        }
+       if(_vtkmpr2Dview[1]!=NULL)              { _vtkmpr2Dview[1]->Configure();                                        }
+       if(_vtkmpr2Dview[2]!=NULL)              { _vtkmpr2Dview[2]->Configure();                                        }
 
-       if (_vtkmpr2Dview_B[0]!=NULL) { _vtkmpr2Dview_B[0]                              ->      Configure(); }
-       if (_vtkmpr2Dview_B[1]!=NULL) { _vtkmpr2Dview_B[1]                              ->      Configure(); }
-       if (_vtkmpr2Dview_B[2]!=NULL) { _vtkmpr2Dview_B[2]                              ->      Configure(); }
+       if (_vtkmpr2Dview_B[0]!=NULL)   { _vtkmpr2Dview_B[0]->Configure();                                      }
+       if (_vtkmpr2Dview_B[1]!=NULL)   { _vtkmpr2Dview_B[1]->Configure();                                      }
+       if (_vtkmpr2Dview_B[2]!=NULL)   { _vtkmpr2Dview_B[2]->Configure();                                      }
 
+       if (_vtkplane2Dview!=NULL)              { _vtkplane2Dview->Configure();                                         }
+       if (_widgetMesure!=NULL)                { _widgetMesure->ConfigureA(_vtkplane2Dview);           }
+       if (_widgetMesure!=NULL)                { _widgetMesure->SetActiveLink(true);                           }
+       if (_wxsphereview!=NULL)                { _wxsphereview->Configure();                                           }
 
-       
+       if (_wxvtk3Dbaseview_MPRClipping3D!=NULL){_wxvtk3Dbaseview_MPRClipping3D->Configure();}
+       if (_wxvtkmpr3Dview!=NULL)              { _wxvtkmpr3Dview->Configure();                                         }
+       if (_wxvtkclipping3Dview!=NULL) { _wxvtkclipping3Dview->Configure();                            }
 
-       if (_vtkplane2Dview!=NULL){_vtkplane2Dview                              ->      Configure();}
-       if (_widgetMesure!=NULL){_widgetMesure                                  ->      ConfigureA(_vtkplane2Dview);}
-       if (_widgetMesure!=NULL){_widgetMesure                                  ->      SetActiveLink(true);}
-       if (_widgetMesure!=NULL){_widgetMesure                                  ->      SetMesureScale( _voxelSize );}
-       if (_wxsphereview!=NULL){_wxsphereview                                  ->      Configure();}
-
-       if (_wxvtk3Dbaseview_MPRClipping3D!=NULL){_wxvtk3Dbaseview_MPRClipping3D        ->  Configure();}
-       if (_wxvtkmpr3Dview!=NULL){
-               _wxvtkmpr3Dview                                 ->      Configure();
-       }
-       if (_wxvtkclipping3Dview!=NULL){_wxvtkclipping3Dview            ->      Configure();}
-
-       if (_vtkplane2Dview_B!=NULL){   _vtkplane2Dview_B                       ->      Configure(); }
-       if (_widgetMesure_B!=NULL){             _widgetMesure_B                         ->      ConfigureA( _vtkplane2Dview_B ); }
-       if (_widgetMesure_B!=NULL){             _widgetMesure_B                         ->      SetActiveLink(true); }
+       if (_vtkplane2Dview_B!=NULL)    { _vtkplane2Dview_B->Configure();                                       }
+       if (_widgetMesure_B!=NULL)              { _widgetMesure_B->ConfigureA( _vtkplane2Dview_B ); }
+       if (_widgetMesure_B!=NULL)              { _widgetMesure_B->SetActiveLink(true);                         }
 
 //EEDx3
 //     double spc[3];
@@ -690,8 +683,6 @@ void wxMPRWidget::ConfigureVTK(){
 //     imageData->GetSpacing(spc);
 //     _widgetMesure_B->SetMesureScale(spc[0]);
 
-       if (_widgetMesure_B!=NULL)                                      {_widgetMesure_B->SetMesureScale( _voxelSize );}
-
 
        if (_wxsphereview_B!=NULL)                                      {_wxsphereview_B                                ->      Configure();}