+ 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);
+
+ wxwindow1->ConfigureVTK();
+ 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);
+ 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);
+ 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);
+ 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);
+ spliter->SetMinimumPaneSize(1);
+ spliterA->SetMinimumPaneSize(1);
+ spliterB->SetMinimumPaneSize(1);
+ 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);
+ 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();