+ void wxMaracas_N_ViewersWidget::UpdateLayout(vtkImageData* imagedata)
+ {
+ wxWindow *wxwindow = NULL;
+ wxSizer *sizer = this->GetSizer();
+
+ if (mvtkmprbasedata!=NULL)
+ {
+ delete mvtkmprbasedata;
+ }
+
+ marImageData *marimagedata = new marImageData( imagedata );
+ mvtkmprbasedata = new vtkMPRBaseData();
+ mvtkmprbasedata->SetMarImageData(marimagedata);
+
+ if(_currentwxw != NULL){
+ _currentwxw->Show(false);
+ delete _currentwxw;
+ //sizer->Remove(currentwxwindow);
+ //delete currentwxwindow;
+ }
+
+ //std::cout<<"size "<<nTypeView->size()<<std::endl;
+ if (nTypeView->size()==1)
+ {
+ wxwindow1 = new wxMaracas_ViewerWidget(this, imagedata, (*nTypeView)[0], mvtkmprbasedata);
+ wxwindow = wxwindow1;
+ }else if (nTypeView->size()==2) {
+ wxSplitterWindow *spliter = new wxSplitterWindow( this , -1);
+ spliter->SetMinimumPaneSize(1);
+ wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0], mvtkmprbasedata);
+ wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1], mvtkmprbasedata);
+ spliter -> SplitVertically( wxwindow1 , wxwindow2 );
+ wxwindow = spliter;
+ }else if (nTypeView->size()==3)
+ {
+ wxSplitterWindow *spliter = new wxSplitterWindow( this , -1);
+ wxSplitterWindow *spliterA = new wxSplitterWindow( spliter , -1);
+ spliter->SetMinimumPaneSize(1);
+ spliterA->SetMinimumPaneSize(1);
+ wxwindow1 = new wxMaracas_ViewerWidget(spliter , imagedata, (*nTypeView)[0], mvtkmprbasedata);
+ wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1], mvtkmprbasedata);
+ wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2], mvtkmprbasedata);
+ 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);
+ spliter->SetMinimumPaneSize(1);
+ spliterA->SetMinimumPaneSize(1);
+ spliterB->SetMinimumPaneSize(1);
+
+ spliter -> SplitVertically( spliterA , spliterB );
+ wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0], mvtkmprbasedata);
+ wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1], mvtkmprbasedata);
+ spliterA-> SplitHorizontally( wxwindow1 , wxwindow2 );
+ wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2], mvtkmprbasedata);
+ wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3], mvtkmprbasedata);
+ spliterB-> SplitHorizontally( wxwindow3 , wxwindow4 );
+ wxwindow = spliter;
+ }
+
+
+ //panel->SetDimension()
+ sizer->Add( wxwindow , 1, wxGROW);
+ sizer->Layout();
+ //_currentwxw = wxwindow;
+ //_currentwxw->Show(true);
+
+ //this->Layout();
+ //this->Refresh();
+
+
+// I don't undestand how this works and not the opposite ...
+ if (wxwindow4!=NULL) {wxwindow4->ConfigureVTK(); }
+ if (wxwindow3!=NULL) {wxwindow3->ConfigureVTK(); }
+ if (wxwindow2!=NULL) {wxwindow2->ConfigureVTK(); }
+ if (wxwindow1!=NULL) {wxwindow1->ConfigureVTK(); }