]> Creatis software - creaImageIO.git/blobdiff - src2/creaImageIOWxGimmickView.cpp
*** empty log message ***
[creaImageIO.git] / src2 / creaImageIOWxGimmickView.cpp
index 572658b4f91752e9c8ff166ab7bed9d9e828e143..0c7229c08930a013711dd166c4d87de455be6e70 100644 (file)
@@ -97,24 +97,35 @@ namespace creaImageIO
     mNotebook = new wxNotebook(mSplitter,
                               -1,wxDefaultPosition, wxDefaultSize, 0);
 
-       //Gimmick
-       mGimmick=gimmick;
-       mViewer=new WxViewer(this, wxID_ANY, wxT("Gimmick! Viewer"),wxDefaultPosition, wxDefaultSize );
-
-       
-       mSelectionMaxDimension= max_dim;
-       mSelectionMinDimension= min_dim;
+    //Gimmick
+    mGimmick=gimmick;
 
+      
+    mSelectionMaxDimension= max_dim;
+    mSelectionMinDimension= min_dim;
+    
     // Create the views
     CreateTreeViews();
 
     // Bottom panel 
     mBottomPanel = new wxPanel(mSplitter,-1);
-       mText = new wxStaticText(mBottomPanel, wxID_ANY, wxT("Status: Welcome to Gimmick!"));
-       
+    
+    wxBoxSizer *bottom_sizer = new wxBoxSizer(wxHORIZONTAL);
+    
+    mText = new wxStaticText(mBottomPanel, wxID_ANY, wxT("Status: Welcome to Gimmick!"));
+    bottom_sizer->Add(mText,1,wxGROW,0);
+    
+    // Previewer
+    mViewer = new WxViewer(mBottomPanel, wxID_ANY, wxT("Gimmick! Viewer"),wxDefaultPosition, wxDefaultSize );
+
+    bottom_sizer->Add(mViewer,1,wxGROW,0);
+    //    mViewer->Show();
+
+    mBottomPanel->SetSizer(bottom_sizer);
+
     // Splitting
     int hsize = size.GetHeight();
-    int bottom_minsize = 15;
+    int bottom_minsize = 40;
 
     mSplitter->SetMinimumPaneSize( bottom_minsize );
     mSplitter->SplitHorizontally( mNotebook, mBottomPanel, 
@@ -373,7 +384,9 @@ namespace creaImageIO
       }
     else
       {
-       mViewer->Hide();
+       mViewer->SetMovieSize(1);
+       mViewer->SetImage(0,GetDefaultImage());
+       //      mViewer->Hide();
       }
 
     
@@ -390,23 +403,27 @@ namespace creaImageIO
                       <<std::endl);
    int maxprio = GetMaximalPriority();
    int prio = maxprio + 2000;
+
+   mViewer->SetMovieSize(sel.size());//ClearImages();
    
    //First load the selected images
    mCurImageItemToShow = sel.front();
+   int index = 0;
    std::vector<tree::Node*>::iterator selected;
    for(selected=sel.begin();selected!=sel.end();++selected)
-       {
-               GimmickDebugMessage(5,
-                               "Requesting image from selected "
-                               <<(*selected)->GetAttribute("FullFileName")
-                               <<std::endl);
-               RequestReading(*selected,prio);
-               AddEntryToMap(*selected);
-               prio--;
-       }
+     {
+       GimmickDebugMessage(5,
+                          "Requesting image from selected "
+                          <<(*selected)->GetAttribute("FullFileName")
+                          <<std::endl);
+       RequestReading(*selected,prio,index);
+       //       AddEntryToMap(*selected);
+       prio--;
+       index++;
+     }
        
        //Going up
-       prio = maxprio + 1000;
+       prio = maxprio + 20;
        std::vector<tree::Node*> up;
        GetTreeViewMap()["Local database"]->GetNodes(up,true);
        std::vector<tree::Node*>::iterator iterUp;
@@ -416,13 +433,14 @@ namespace creaImageIO
                                "Requesting image from neighbors up "
                                <<(*iterUp)->GetAttribute("FullFileName")
                                <<std::endl);
-               RequestReading(*iterUp,prio);
-               AddEntryToMap(*iterUp);
+               RequestReading(*iterUp,prio,-1);
+               //              AddEntryToMap(*iterUp);
                prio--;
+               if (prio == maxprio) break;
        }
 
        //Going down
-       prio = maxprio + 999;
+       prio = maxprio + 19;
        std::vector<tree::Node*> down;
        GetTreeViewMap()["Local database"]->GetNodes(down,false);
        std::vector<tree::Node*>::iterator iterDown;
@@ -432,9 +450,10 @@ namespace creaImageIO
                                "Requesting image from neighbors down "
                                <<(*iterDown)->GetAttribute("FullFileName")
                                <<std::endl);
-               RequestReading(*iterDown,prio);
-               AddEntryToMap(*iterDown);
+               RequestReading(*iterDown,prio,-1);
+               //              AddEntryToMap(*iterDown);
                prio--;
+               if (prio == maxprio) break;
        }       
   }
 
@@ -446,25 +465,34 @@ namespace creaImageIO
   {
     if (!mConstructed) return;
 
-    int level=GetTreeViewMap()["Local database"]->GetNumberOfLevels();
-    std::vector<tree::Node*> sel=GetTreeViewMap()["Local database"]->GetSelected(level+1);
+    //    int level=GetTreeViewMap()["Local database"]->GetNumberOfLevels();
+    //    std::vector<tree::Node*> sel=GetTreeViewMap()["Local database"]->GetSelected(level+1);
+    /*
     GimmickDebugMessage(5,
                        "Processing Images. Lock Started"
                        <<std::endl);
+    */
     MultiThreadImageReaderEventLock();
     
-    mViewer->ClearImages();
+
     while (!IsQueueEmpty())
       {
        GimmickDebugMessage(5,
                            "Queue not empty"
                            <<std::endl);
        
-       vtkImageData* image=GetNextImageQueued();
+       vtkImageData* image = GetNextImageQueued();
        if( image!=0 ) 
          {
+           int index =  GetNextSelectionIndexQueued();
+           if (index>=0) 
+             {
+               mViewer->SetImage(index,image);
+             }
+           /*
            tree::Node* node=GetNextNodeQueued();
            
+
            bool found=false;
            std::vector<tree::Node*>::iterator i;
            for(i=sel.begin();i!=sel.end()&&!found;++i)
@@ -475,24 +503,30 @@ namespace creaImageIO
                    found=true;
                  }
              }
+           */
+           
          }
        UnqueueNext();
       }
+    /*
     if(!(mViewer->ImagesEmpty()))
       {
        GimmickDebugMessage(5,
                            "Showing images"
                            <<std::endl);
-       mViewer->ShowImages();
-       mViewer->Show();
+       //      mViewer->ShowImages();
+       //      mViewer->Show();
       }
+    */
     ClearQueue();
        
 
     MultiThreadImageReaderEventUnlock();
+    /*
        GimmickDebugMessage(5,
                                "Processing Images. Lock Ended"
                                <<std::endl);
+    */
   }
  
   //==================================================
@@ -500,7 +534,16 @@ namespace creaImageIO
   //==================================================
    void  WxGimmickView::OnInternalIdle()
   {
-    ProcessImageEvents();
+   if (!mConstructed) return;
+   ProcessImageEvents();
+   static bool first_time = true;
+   if (false)
+     {
+       mViewer->SetMovieSize(1);
+       mViewer->SetImage(0,GetDefaultImage());
+       first_time = false;
+     }
+   //  mViewer->Refresh();
   }
   
   //=================================================