X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxGimmickView.cpp;h=e5c6574ee6a28156b93325c1e241dc387e218812;hb=1bc65575c477b90bac7c4b02869e40a0d9fb11b0;hp=a21617c744a831daa3727994dcbd2338e9e60a93;hpb=6cac83c30fb8c3cd89c41685078eccff6e952a50;p=creaImageIO.git diff --git a/src2/creaImageIOWxGimmickView.cpp b/src2/creaImageIOWxGimmickView.cpp index a21617c..e5c6574 100644 --- a/src2/creaImageIOWxGimmickView.cpp +++ b/src2/creaImageIOWxGimmickView.cpp @@ -66,7 +66,8 @@ namespace creaImageIO int number_of_threads) : wxPanel(parent,id,pos,size), GimmickView(gimmick, number_of_threads), - mProgressDialog(0) + mProgressDialog(0), + mConstructed(false) { GimmickDebugMessage(1,"WxGimmickView::WxGimmickView" <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; @@ -125,7 +137,8 @@ namespace creaImageIO SetSizer( sizer ); SetAutoLayout(true); Layout(); - + + mConstructed = true; } //====================================================================== @@ -186,7 +199,7 @@ namespace creaImageIO GimmickMessage(2,"Creating the tree view for '"<< name<<"'"<& sel) { + GimmickDebugMessage(5, + "WxGimmickView::OnSelectionChange" + < sel=* (std::vector *) s; - bool valid=ValidateSelected(sel,mSelectionMinDimension,mSelectionMaxDimension ); - mText->SetLabel(_T("Status: ")+GetMessage()); - if(valid) - { - ReadImageThreaded(sel); - } - else - { - mViewer->Hide(); - } - return valid; + bool valid = ValidateSelected(sel, + mSelectionMinDimension, + mSelectionMaxDimension ); + mText->SetLabel(_T("Status: ")+crea::std2wx(GetMessage())); + if(valid) + { + ReadImageThreaded(sel); + } + else + { + mViewer->SetMovieSize(1); + mViewer->SetImage(0,GetDefaultImage()); + // mViewer->Hide(); + } + } @@ -379,25 +398,32 @@ namespace creaImageIO ///Reads Images (Threaded) void WxGimmickView::ReadImageThreaded(std::vector sel) { - int maxprio = GetMaximalPriority(); - int prio = maxprio + 2000; + GimmickDebugMessage(5, + "ReadImageThreaded" + <::iterator selected; - for(selected=sel.begin();selected!=sel.end();++selected) - { - GimmickDebugMessage(5, - "Requesting image from selected " - <<(*selected)->GetAttribute("FullFileName") - <SetMovieSize(sel.size());//ClearImages(); + + //First load the selected images + mCurImageItemToShow = sel.front(); + int index = 0; + std::vector::iterator selected; + for(selected=sel.begin();selected!=sel.end();++selected) + { + GimmickDebugMessage(5, + "Requesting image from selected " + <<(*selected)->GetAttribute("FullFileName") + < up; GetTreeViewMap()["Local database"]->GetNodes(up,true); std::vector::iterator iterUp; @@ -407,13 +433,14 @@ namespace creaImageIO "Requesting image from neighbors up " <<(*iterUp)->GetAttribute("FullFileName") < down; GetTreeViewMap()["Local database"]->GetNodes(down,false); std::vector::iterator iterDown; @@ -423,9 +450,10 @@ namespace creaImageIO "Requesting image from neighbors down " <<(*iterDown)->GetAttribute("FullFileName") <GetNumberOfLevels(); - std::vector sel=GetTreeViewMap()["Local database"]->GetSelected(level+1); - GimmickDebugMessage(5, - "Processing Images. Lock Started" - <GetNumberOfLevels(); + // std::vector sel=GetTreeViewMap()["Local database"]->GetSelected(level+1); + /* + GimmickDebugMessage(5, + "Processing Images. Lock Started" + <ClearImages(); while (!IsQueueEmpty()) { - vtkImageData* image=GetNextImageQueued(); - tree::Node* node=GetNextNodeQueued(); - if( image!=0 ) - { - bool found=false; - std::vector::iterator i; - for(i=sel.begin();i!=sel.end()&&!found;++i) - { - if((*i)==node) - { - mViewer->AddImage(image); - found=true; - } - } - UnqueueNext(); - } - } - if(!(mViewer->ImagesEmpty())) + GimmickDebugMessage(5, + "Queue not empty" + <ShowImages(); - mViewer->Show(); + int index = GetNextSelectionIndexQueued(); + if (index>=0) + { + mViewer->SetImage(index,image); + } + /* + tree::Node* node=GetNextNodeQueued(); + + + bool found=false; + std::vector::iterator i; + for(i=sel.begin();i!=sel.end()&&!found;++i) + { + if((*i)==node) + { + mViewer->AddImage(image); + found=true; + } + } + */ + } + UnqueueNext(); + } + /* + if(!(mViewer->ImagesEmpty())) + { + GimmickDebugMessage(5, + "Showing images" + <ShowImages(); + // mViewer->Show(); + } + */ ClearQueue(); MultiThreadImageReaderEventUnlock(); + /* GimmickDebugMessage(5, "Processing Images. Lock Ended" <Refresh(); } //=================================================