+ void wxMaracas_N_ViewersWidget::Refresh(bool eraseBackground, const wxRect* rect )
+ {
+ wxPanel::Refresh(false);
+ }
+
+ //-------------------------------------------------------------------------
+ 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);
+ //RaC Nov2012 Correctly resize internal panels with the window resize event
+ spliter->SetSashGravity(0.5);
+ wxwindow1 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[0], mvtkmprbasedata);
+ wxwindow2 = new wxMaracas_ViewerWidget(spliter, imagedata, (*nTypeView)[1], mvtkmprbasedata);
+ spliter -> SplitHorizontally( 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);
+ //RaC Nov2012 Correctly resize internal panels with the window resize event
+ spliter->SetSashGravity(0.5);
+ spliterA->SetSashGravity(0.5);
+ 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);
+ //RaC Nov2012 Correctly resize internal panels with the window resize event
+ spliter->SetSashGravity(0.5);
+ spliterA->SetSashGravity(0.5);
+ spliterB->SetSashGravity(0.5);
+
+ spliter -> SplitVertically( spliterA , spliterB );
+
+
+//EED 21 mars 2012 FLIP probleme ..PLOP..
+// wxwindow1 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[0], mvtkmprbasedata);
+// wxwindow2 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[1], mvtkmprbasedata);
+// wxwindow3 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[2], mvtkmprbasedata);
+// wxwindow4 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[3], mvtkmprbasedata);
+// spliterA-> SplitHorizontally( wxwindow1 , wxwindow2 );
+// spliterB-> SplitHorizontally( wxwindow3 , wxwindow4 );
+
+ wxwindow1 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[0], mvtkmprbasedata);
+ wxwindow2 = new wxMaracas_ViewerWidget(spliterB, imagedata, (*nTypeView)[1], mvtkmprbasedata);
+ wxwindow3 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[2], mvtkmprbasedata);
+ wxwindow4 = new wxMaracas_ViewerWidget(spliterA, imagedata, (*nTypeView)[3], mvtkmprbasedata);
+ spliterA-> SplitHorizontally( wxwindow3 , wxwindow4 );
+ spliterB-> SplitHorizontally( wxwindow2 , wxwindow1 );
+
+ 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(); }
+ }
+
+
+//-----------------------------------------------------------------------------------
+ void wxMaracas_N_ViewersWidget::SetType(std::vector<int>* type){
+ nTypeView = type;