X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2FmaracasVisuLib%2Fsrc%2Finterface%2FwxWindows%2Fwidgets%2FwxMaracas_N_ViewersWidget.cxx;h=44edc24afdf9294311ec037dd175205cf918dc2a;hb=1bf58cfa1758464b422d1d0cca808e528043e691;hp=c24788a7b53f6e7160c07c93da0ecd436617621b;hpb=a3c5b7933550c47e3f68d0a40c6cd59aa398f200;p=creaMaracasVisu.git diff --git a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx index c24788a..44edc24 100644 --- a/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx +++ b/lib/maracasVisuLib/src/interface/wxWindows/widgets/wxMaracas_N_ViewersWidget.cxx @@ -3,8 +3,8 @@ Program: wxMaracas Module: $RCSfile: wxMaracas_N_ViewersWidget.cxx,v $ Language: C++ - Date: $Date: 2008/12/03 11:42:54 $ - Version: $Revision: 1.2 $ + Date: $Date: 2009/05/04 07:35:42 $ + Version: $Revision: 1.8 $ Copyright: (c) 2002, 2003 License: @@ -45,78 +45,30 @@ wxMaracas_N_ViewersWidget::wxMaracas_N_ViewersWidget(wxWindow *parent, vtkImageData* imagedata, std::vector *nTypeView) : wxPanel( parent, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL) { - wxPanel *panel = this; - wxWindow *wxwindow = NULL; - wxwindow1 = NULL; - wxwindow2 = NULL; - wxwindow3 = NULL; - wxwindow4 = NULL; - - if (nTypeView->size()==1) - { - wxwindow1 = new wxMaracas_ViewerWidget(panel, imagedata, (*nTypeView)[0]); - wxwindow1->ConfigureVTK(); - wxwindow = wxwindow1; - } - - - if (nTypeView->size()==2) - { - wxSplitterWindow *spliter = new wxSplitterWindow( panel , -1); - wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0]); - wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1]); - wxwindow1->ConfigureVTK(); - wxwindow2->ConfigureVTK(); - spliter -> SplitVertically( wxwindow1 , wxwindow2 ); - wxwindow = spliter; - } - - - if (nTypeView->size()==3) - { - wxSplitterWindow *spliter = new wxSplitterWindow( panel , -1); - wxSplitterWindow *spliterA = new wxSplitterWindow( spliter , -1); - wxwindow1 = new wxMaracas_ViewerWidget(spliter , imagedata, (*nTypeView)[0]); - wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]); - wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2]); - wxwindow1->ConfigureVTK(); - wxwindow2->ConfigureVTK(); - wxwindow3->ConfigureVTK(); - spliter -> SplitVertically( wxwindow1 , spliterA ); - spliterA-> SplitHorizontally( wxwindow2 , wxwindow3 ); - wxwindow = spliter; - } - - if (nTypeView->size()>=4) - { - wxSplitterWindow *spliter = new wxSplitterWindow( panel , -1); - wxSplitterWindow *spliterA = new wxSplitterWindow( spliter , -1); - wxSplitterWindow *spliterB = new wxSplitterWindow( spliter , -1); - wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0]); - wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]); - wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2]); - wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3]); - wxwindow1->ConfigureVTK(); - wxwindow2->ConfigureVTK(); - wxwindow3->ConfigureVTK(); - wxwindow4->ConfigureVTK(); - spliter -> SplitVertically( spliterA , spliterB ); - spliterA-> SplitHorizontally( wxwindow1 , wxwindow2 ); - spliterB-> SplitHorizontally( wxwindow3 , wxwindow4 ); - wxwindow = spliter; + wxwindow1 = NULL; + wxwindow2 = NULL; + wxwindow3 = NULL; + wxwindow4 = NULL; + + _currentwxw = NULL; + + wxSizer *sizer = new wxBoxSizer(wxVERTICAL); + this->SetSizer(sizer); + this->SetAutoLayout(true); + + + if(imagedata!=NULL && nTypeView!=NULL ){ + this->SetType(nTypeView); + this->UpdateLayout(imagedata); } - - wxBoxSizer *sizer = new wxBoxSizer(wxVERTICAL); - sizer->Add( wxwindow , 1, wxEXPAND, 0); - panel->SetSizer(sizer); - panel->SetAutoLayout(true); - panel->Layout(); + } //------------------------------------------------------------------------- wxMaracas_N_ViewersWidget::~wxMaracas_N_ViewersWidget() { + } //------------------------------------------------------------------------------------------------------------ // Methods @@ -197,7 +149,79 @@ wxPanel::Refresh(false); } + void wxMaracas_N_ViewersWidget::UpdateLayout(vtkImageData* imagedata){ + + wxWindow *wxwindow = NULL; + wxSizer *sizer = this->GetSizer(); + + if(_currentwxw != NULL){ + _currentwxw->Show(false); + delete _currentwxw; + //sizer->Remove(currentwxwindow); + //delete currentwxwindow; + } + + //std::cout<<"size "<size()<size()==1) + { + wxwindow1 = new wxMaracas_ViewerWidget(this, imagedata, (*nTypeView)[0]); + + wxwindow1->ConfigureVTK(); + wxwindow = wxwindow1; + }else if (nTypeView->size()==2) { + + + wxSplitterWindow *spliter = new wxSplitterWindow( this , -1); + wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0]); + wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1]); + wxwindow1->ConfigureVTK(); + wxwindow2->ConfigureVTK(); + spliter -> SplitVertically( wxwindow1 , wxwindow2 ); + wxwindow = spliter; + }else if (nTypeView->size()==3) + { + wxSplitterWindow *spliter = new wxSplitterWindow( this , -1); + wxSplitterWindow *spliterA = new wxSplitterWindow( spliter , -1); + wxwindow1 = new wxMaracas_ViewerWidget(spliter , imagedata, (*nTypeView)[0]); + wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]); + wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2]); + wxwindow1->ConfigureVTK(); + wxwindow2->ConfigureVTK(); + wxwindow3->ConfigureVTK(); + spliter -> SplitVertically( wxwindow1 , spliterA ); + spliterA-> SplitHorizontally( wxwindow2 , wxwindow3 ); + wxwindow = spliter; + }else if (nTypeView->size()>=4){ + wxSplitterWindow *spliter = new wxSplitterWindow( this , -1); + wxSplitterWindow *spliterA = new wxSplitterWindow( spliter , -1); + wxSplitterWindow *spliterB = new wxSplitterWindow( spliter , -1); + wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0]); + wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1]); + wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2]); + wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3]); + wxwindow1->ConfigureVTK(); + wxwindow2->ConfigureVTK(); + wxwindow3->ConfigureVTK(); + wxwindow4->ConfigureVTK(); + spliter -> SplitVertically( spliterA , spliterB ); + spliterA-> SplitHorizontally( wxwindow1 , wxwindow2 ); + spliterB-> SplitHorizontally( wxwindow3 , wxwindow4 ); + wxwindow = spliter; + } + + //panel->SetDimension() + sizer->Add( wxwindow , 1, wxEXPAND); + sizer->Layout(); + _currentwxw = wxwindow; + _currentwxw->Show(true); + + this->Layout(); + this->Refresh(); + } + void wxMaracas_N_ViewersWidget::SetType(std::vector* type){ + nTypeView = type; + } void wxMaracas_N_ViewersWidget::SetImage( vtkImageData *image ) { if (wxwindow1!=NULL) {