X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxTreeView.cpp;h=7f2826049c77f19aa56bf9a3290d51c32ddfa38f;hb=139340305dd41bfdfff00f02a8c8c59241d14cb1;hp=a258ce88c0b082165b888018ebbf76189b8493ea;hpb=befba590823a2a6d3800ac9d026ec0f3888ba0aa;p=creaImageIO.git diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index a258ce8..7f28260 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -24,7 +24,7 @@ namespace creaImageIO // Global sizer wxBoxSizer *sizer = new wxBoxSizer(wxHORIZONTAL); - int ctrl_style = wxLC_REPORT; + int ctrl_style = wxLC_REPORT | wxLC_VRULES; int col_style = wxLIST_FORMAT_LEFT; // Creating the ListCtrl for the levels > 0 (not for Root level) @@ -44,21 +44,35 @@ namespace creaImageIO // Create the columns : one for each attribute of the level int col = 0; + //ctrl->InsertItem(0, "1"); + tree::LevelDescriptor::AttributeDescriptorListType::const_iterator a; for (a = handler->GetTree().GetAttributeDescriptorList(i).begin(); a != handler->GetTree().GetAttributeDescriptorList(i).end(); ++a) { - GimmickDebugMessage(5,"Creating column "<InsertColumn(col, _("Children"), col_style); + //ctrl->InsertItem(0, "1"); + //level.key.push_back(_("Children")); + //level.key.push_back(handler->GetTree().GetChildrenList().size()); + col++; + } + + GimmickDebugMessage(5,"Creating column "<GetName() <InsertColumn(col, - crea::std2wx(a->GetName()), - col_style); - level.key.push_back(a->GetKey()); - // ctrl->SetColumnWidth(col, wxLIST_AUTOSIZE ); - col++; + ctrl->InsertColumn(col, + crea::std2wx(a->GetName()), + col_style); + level.key.push_back(a->GetKey()); + // ctrl->SetColumnWidth(col, wxLIST_AUTOSIZE ); + col++; + + } + mLevelList.push_back(level); sizer->Add( ctrl ,1, wxGROW ,0); } @@ -87,19 +101,14 @@ namespace creaImageIO { tree::Node* node; }; + //===================================================================== - - //===================================================================== - /// - void WxTreeView::UpdateLevel( int level ) + std::vector WxTreeView::GetSelected(int level) { - GimmickDebugMessage(1, - GetTreeHandler()->GetTree().GetLabel() - <<" view : updating level "< sel; + if (level == 1) { sel.push_back(GetTreeHandler()->GetTree().GetTree()); @@ -117,7 +126,59 @@ namespace creaImageIO } } } + + return sel; + } + + //===================================================================== + + ///Removes selected nodes on given level + void WxTreeView::RemoveSelected( int level ) + { + std::vector sel=GetSelected(level+1); + bool erase=false; + if (wxMessageBox(_T("Delete file(s) ?"), + _T("Remove Files"), + wxYES_NO,this ) == wxYES) + { + erase = true; + } + if(erase) + { + std::vector::iterator i; + for (i=sel.begin(); i!=sel.end(); ++i) + { + GimmickDebugMessage(2, + "deleting '" + <<(*i)->GetLabel() + <<"'"<Remove(*i); + } + UpdateLevel(level); + } + + } + + + //===================================================================== + + //===================================================================== + + /// + void WxTreeView::UpdateLevel( int level ) + { + GimmickDebugMessage(1, + GetTreeHandler()->GetTree().GetLabel() + <<" view : updating level "< sel=GetSelected(level); + + int l = level - 1; + // to speed up inserting we hide the control temporarily GetCtrl(l)->Hide(); GetCtrl(l)->DeleteAllItems(); @@ -131,6 +192,7 @@ namespace creaImageIO <<"'"<LoadChildren(*i,1); tree::Node::ChildrenListType::reverse_iterator j; for (j = (*i)->GetChildrenList().rbegin(); @@ -150,14 +212,26 @@ namespace creaImageIO data->node = *j; item.SetData(data); + long id = GetCtrl(l)->InsertItem(item); - for (int k=0; kGetColumnCount(); k++) + std::ostringstream oss; + + int n= GetTreeHandler()->GetNumberOfChildren(*j); + + oss << n; + std::string s(oss.str()); + + GetCtrl(l)->SetItem(id,0, crea::std2wx(s)); + GetCtrl(l)->SetColumnWidth(0, wxLIST_AUTOSIZE ); + + for (int k=1; kGetColumnCount(); k++) { - GetCtrl(l)->SetItem - (id,k, - crea::std2wx - ( (*j)->GetAttribute(mLevelList[l].key[k]) )); + std::string val = (*j)->GetAttribute(mLevelList[l].key[k-1]); + if (val.size()==0) val = "?"; + GetCtrl(l)->SetItem(id,k, crea::std2wx(val)); + GetCtrl(l)->SetColumnWidth(k, wxLIST_AUTOSIZE ); + } } @@ -179,7 +253,6 @@ namespace creaImageIO <<" view : item selected " <