]> Creatis software - creaMaracasVisu.git/blobdiff - lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMPRWidget.cxx
#3012 creaMaracasVisu Bug New Normal - Update Image in ViewerNV
[creaMaracasVisu.git] / lib / maracasVisuLib / src / interface / wxWindows / widgets / wxMPRWidget.cxx
index 61063ce9c6e61efef087362f5def7d229cf9d7f7..218e4240f18ea96af58c714ae036269456e88e3a 100644 (file)
@@ -1,10 +1,35 @@
+/*# ---------------------------------------------------------------------
+#
+# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image
+#                        pour la Sant�)
+# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton
+# Previous Authors : Laurent Guigues, Jean-Pierre Roux
+# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil
+#
+#  This software is governed by the CeCILL-B license under French law and
+#  abiding by the rules of distribution of free software. You can  use,
+#  modify and/ or redistribute the software under the terms of the CeCILL-B
+#  license as circulated by CEA, CNRS and INRIA at the following URL
+#  http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html
+#  or in the file LICENSE.txt.
+#
+#  As a counterpart to the access to the source code and  rights to copy,
+#  modify and redistribute granted by the license, users are provided only
+#  with a limited warranty  and the software's author,  the holder of the
+#  economic rights,  and the successive licensors  have only  limited
+#  liability.
+#
+#  The fact that you are presently reading this means that you have had
+#  knowledge of the CeCILL-B license and that you accept its terms.
+# ------------------------------------------------------------------------ */
+
 /*=========================================================================
 
   Program:   wxMaracas
   Module:    $RCSfile: wxMPRWidget.cxx,v $
   Language:  C++
-  Date:      $Date: 2009/11/30 20:52:50 $
-  Version:   $Revision: 1.15 $
+  Date:      $Date: 2012/11/15 14:14:35 $
+  Version:   $Revision: 1.17 $
 
   Copyright: (c) 2002, 2003
   License:
@@ -143,6 +168,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);      
@@ -164,36 +191,38 @@ wxMPRWidget::wxMPRWidget( wxWindow* parent,
        _refreshBPage=0;
 
 }
-void wxMPRWidget::setImageData(vtkImageData * img, double voxelsize){
+
+//----------------------------------------------------------------------------
+void wxMPRWidget::setImageData(vtkImageData * img, double voxelsize)
+{
 
        if(_marImageData!=NULL){
                _marImageData->removeImageData(0);
                _marImageData->AddImageData(img);               
        }else{
-               _marImageData = new marImageData(img);
+               _marImageData                                   = new marImageData(img);
        }
        
-       _voxelSize                                              = voxelsize;
+       _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
@@ -351,7 +380,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);
@@ -359,27 +388,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;
        }
@@ -387,7 +420,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(); 
@@ -401,11 +434,11 @@ 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);
-               wxPanel                 *controlPanelClipping3D = _wxvtkclipping3Dview_BB->CreateControlPanel(panelControl);
+               wxPanel                 *controlPanelClipping3D = _wxvtkclipping3Dview_BB->CreateSurfControlPanel(panelControl);
                                 _btnCutImageData               = new wxCheckBox(panelControl,-1,_T("Cut Module"));
                Connect(_btnCutImageData->GetId() , wxEVT_COMMAND_CHECKBOX_CLICKED  , (wxObjectEventFunction) &wxMPRWidget::OnCutImagaData );
 
@@ -424,6 +457,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;
        }
 
@@ -504,14 +539,15 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm
        notebook->AddPage( _widgetMesure, _T("Plane") );
 
         // view 3.1
-       _wxsphereview = new wxSphereView( notebook , vtkmprbasedata, vtkmprbasedata->GetImageData());
+// EED
+//     _wxsphereview = new wxSphereView( notebook , vtkmprbasedata, vtkmprbasedata->GetImageData());
+       _wxsphereview = new wxSphereView( notebook , vtkmprbasedata );
        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(); 
@@ -531,7 +567,7 @@ wxPanel* wxMPRWidget::CreateMPRPanel4View(wxWindow *parent, vtkMPRBaseData *vtkm
 
        wxPanel         *panelControl                   = new wxPanel(panelMPR3D,-1);
        wxPanel         *controlPanelMPR3D              = _wxvtkmpr3Dview->CreateControlPanel(panelControl, false);
-       wxPanel         *controlPanelClipping3D = _wxvtkclipping3Dview->CreateControlPanel(panelControl);
+       wxPanel         *controlPanelClipping3D = _wxvtkclipping3Dview->CreateSurfControlPanel(panelControl);
 
 
 
@@ -549,7 +585,8 @@ 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") );