]> Creatis software - bbtk.git/blobdiff - packages/wxvtk/src/bbwxvtkViewer2D.cxx
*** empty log message ***
[bbtk.git] / packages / wxvtk / src / bbwxvtkViewer2D.cxx
index 18882c41f787e5f0069f810776e2ffd671b280b7..43a20b31793a42e8af7f6969589afb46bbd1244c 100644 (file)
@@ -3,8 +3,8 @@
   Program:   bbtk
   Module:    $RCSfile: bbwxvtkViewer2D.cxx,v $
   Language:  C++
-  Date:      $Date: 2008/03/03 13:14:27 $
-  Version:   $Revision: 1.1 $
+  Date:      $Date: 2008/03/10 12:28:44 $
+  Version:   $Revision: 1.2 $
                                                                                 
   Copyright (c) CREATIS (Centre de Recherche et d'Applications en Traitement de
   l'Image). All rights reserved. See Doc/License.txt or
@@ -75,7 +75,7 @@ namespace bbwxvtk
 
 
 
-  void Viewer2DWidget::Update()
+  void Viewer2DWidget::UpdateView()
   {
 
     if (imageViewer==NULL){
@@ -116,14 +116,22 @@ namespace bbwxvtk
        //              imageViewer->GetRenderer()->ResetCamera(x1,x2,y1,y2,z1,z2);
       }
   
-  
-    if (backImageData!=NULL)
+    //    std::cout << "update"<<std::endl;   
+    //    std::cout << "OW = "<< mBox->bbGetWindow() << std::endl;
+    //    std::cout << "CW = "<< mBox->bbGetContainingWindow() << std::endl;
+    //    std::cout << "Sh = "<< mBox->bbIsShown() << std::endl;
+
+    // mBox->bbIsShown() is necessary to be sure that the wxWindow is already 
+    // created and displayed. 
+    // Else when slice != 0 we get an X Window System error with wxGTK
+    if ((backImageData!=NULL)&&(mBox->bbIsShown()))
       {
        int z = mBox->bbGetInputSlice();
-
+       //      std::cout << "slice = "<<z<<std::endl;
        int ext[6];
        backImageData->GetWholeExtent(ext);
 
+       //      std::cout << "ext = "<<ext[4]<<" - "<<ext[5]<<std::endl;
 
        if (z<ext[4]) { z=ext[4]; }
        if (z>=ext[5]) { z=ext[5]-1; }
@@ -135,12 +143,14 @@ namespace bbwxvtk
        imageViewer->SetZSlice( z );
 #endif
 
+
       }
     
     wxvtkrenderwindowinteractor->Render();
     //    wxvtkrenderwindowinteractor->Refresh();
     
-    //    Refresh();
+
+    //Refresh();
   }
 
 
@@ -157,7 +167,7 @@ namespace bbwxvtk
 
   void Viewer2D::Process() 
   { 
-    ((Viewer2DWidget*)bbGetOutputWidget())->Update();
+    ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView();
     bbSetOutputOut( bbGetInputSlice() );
   }
   
@@ -172,13 +182,20 @@ namespace bbwxvtk
     bbtkDebugMessageInc("Core",9,"Viewer2D::CreateWidget()"<<std::endl);
 
     Viewer2DWidget* w = new Viewer2DWidget(this,bbGetWxParent());
-    w->Update();
     bbSetOutputWidget(w);
 
     bbtkDebugDecTab("Core",9);
   }
 
 
+  // This callback is necessary to get actual processing of the view 
+  // when window is shown
+  void  Viewer2D::bbUserOnShow()
+  {
+    ((Viewer2DWidget*)bbGetOutputWidget())->UpdateView();
+  }
+  
+
 }//namespace bbtk
 
 #endif