X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=sidebyside;f=src2%2FcreaImageIOWxTreeView.cpp;h=e7a004214a3a6614301162d506401c1fc8bc0edb;hb=bfe6b2a61bb41b040fb6d49718f1d3558baec84d;hp=47123b8e96e06b50193a4ad9689b11dedbb4f4fd;hpb=8d73d5f58d80abb928a7f60037837c2933b16bbd;p=creaImageIO.git diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index 47123b8..e7a0042 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -178,6 +178,7 @@ namespace creaImageIO sizer->Add( mLevelList[0].wxSplitter ,1, wxGROW ,0); mColumnSelected=1; mLastSelected=0; + mLastLevel=0; mDirection=true; mSelectionMade=false; mProcess=true; @@ -247,12 +248,26 @@ namespace creaImageIO //===================================================================== - ///Removes selected nodes on given level - void WxTreeView::RemoveSelected( int level ) + ///Removes selected nodes on last selected level + void WxTreeView::RemoveSelected() { - std::vector sel=GetSelected(level+1); + mLastLevel+=1; + std::vector sel=GetSelected(mLastLevel+1); bool erase=false; - if (wxMessageBox(_T("Delete file(s) ?"), + std::stringstream out; + std::string levelName=GetTreeHandler()->GetTree().GetLevelDescriptor(mLastLevel).GetName(); + out<<"Delete "; + out<1&&levelName.at(levelName.size()-1)!='s') + { + out<<" "<GetTree().GetLevelDescriptor(mLastLevel).GetName()<<"?"; + } + if (wxMessageBox(crea::std2wx(out.str()), _T("Remove Files"), wxYES_NO,this ) == wxYES) { @@ -260,18 +275,34 @@ namespace creaImageIO } if(erase) { + bool needRefresh=false; std::vector::iterator i; for (i=sel.begin(); i!=sel.end(); ++i) { - GimmickDebugMessage(2, + GimmickMessage(1, "deleting '" <<(*i)->GetLabel() - <<"'"<GetParent()->GetNumberOfChildren()<2) + { + needRefresh=true; + } GetTreeHandler()->Remove(*i); } - UpdateLevel(level); + if(needRefresh && mLastLevel>1) + { + UpdateLevel(mLastLevel-2); + } + else if(mLastLevel>1) + { + UpdateLevel(mLastLevel-1); + } + else + { + UpdateLevel(mLastLevel); + } } } @@ -398,6 +429,7 @@ namespace creaImageIO { if ( GetCtrl(level) == obj ) break; } + mLastLevel=level; GimmickDebugMessage(1, " Level "<ClearSelection(); @@ -615,9 +648,6 @@ namespace creaImageIO } //Resets original data - - std::vector::iterator selection; - std::vector change; long it = -1; for ( ;; ) { @@ -629,7 +659,7 @@ namespace creaImageIO //Gets current item data, extracts the node and resets it long item = GetCtrl(level)->GetItemData(it); GetCtrl(level)->SetItemData(it,((long*)item)[0]); - tree::Node* n= ((ItemData*)((long*)item)[0])->node; + //tree::Node* n= ((ItemData*)((long*)item)[0])->node; } @@ -669,11 +699,11 @@ namespace creaImageIO item = GetCtrl(level)->GetNextItem(item, wxLIST_NEXT_BELOW); } - if ( item == -1 ) + if ( item == -1 || item==0 ) { break; } - if(GetCtrl(level)->GetItemState(item, wxLIST_STATE_SELECTED)==0 /*&& item!=0*/) + if(GetCtrl(level)->GetItemState(item, wxLIST_STATE_SELECTED)==0 ) { adr = GetCtrl(level)->GetItemData(item); nod = ((ItemData*)adr)->node;