X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxTreeView.cpp;h=7f2826049c77f19aa56bf9a3290d51c32ddfa38f;hb=139340305dd41bfdfff00f02a8c8c59241d14cb1;hp=a1d9142d5fd7276fb7938a7dc6035066e5587982;hpb=0489e5c255bda4eff3b6e8df2c04ab12b8efd293;p=creaImageIO.git diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index a1d9142..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,20 +212,35 @@ 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 ); + } } } GetCtrl(l)->Show(); + + + if (level