X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;ds=inline;f=src2%2FcreaImageIOWxTreeView.cpp;h=4b1e5cd0b097cf4e87b5bff40606c27949c54cbe;hb=f4171ab3f5bff76f21258d8b2cb7a7da5c94a591;hp=4413f1589a7a92705e4f11ced7cfc94810551d73;hpb=60d1bdc76ff73fcf80ebb88377da78b8971bbc7b;p=creaImageIO.git diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index 4413f15..4b1e5cd 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -112,7 +112,8 @@ namespace creaImageIO level.wxSplitter->Initialize(ctrl); // Create the first column : number of children - + if(iGetTree().GetNumberOfLevels()-1) + { std::string title = "#"; if (iGetTree().GetNumberOfLevels()-1) { @@ -121,7 +122,7 @@ namespace creaImageIO title += "s"; } ctrl->InsertColumn(0,crea::std2wx(title),col_style); - + } // Create the columns : one for each attribute of the level int col = 1; @@ -324,7 +325,7 @@ namespace creaImageIO int _id=1; //Adds items (other than the first) and sets their attributes - GetCtrl(l)->InsertItem(0, _T("hELLO")); + GetCtrl(l)->InsertItem(0, _T("")); GetTreeHandler()->LoadChildren(*i,1); tree::Node::ChildrenListType::reverse_iterator j; for (j = (*i)->GetChildrenList().rbegin(); @@ -363,16 +364,30 @@ namespace creaImageIO //GetCtrl(l)->SetItem(item); //Setting other attributes - for (int k=1; kGetColumnCount(); k++) + if(levelGetColumnCount(); k++) { - - std::string val = (*j)->GetAttribute(mLevelList[l].key[k-1]); - if (val.size()==0) val = "?"; - item->SetText( crea::std2wx(val)); - item->SetColumn(k); - GetCtrl(l)->SetItem(*item); - GetCtrl(l)->RefreshItem(*item); + std::string val = (*j)->GetAttribute(mLevelList[l].key[k-1]); + if (val.size()==0) val = "?"; + item->SetText( crea::std2wx(val)); + item->SetColumn(k); + GetCtrl(l)->SetItem(*item); + GetCtrl(l)->RefreshItem(*item); + } + } + else + { + for (int k=0; kGetColumnCount(); k++) + { + std::string val = (*j)->GetAttribute(mLevelList[l].key[k]); + if (val.size()==0) val = "?"; + item->SetText( crea::std2wx(val)); + item->SetColumn(k); + GetCtrl(l)->SetItem(*item); + GetCtrl(l)->RefreshItem(*item); } + } } GetCtrl(l)->DeleteItem(0); @@ -407,10 +422,6 @@ namespace creaImageIO GimmickDebugMessage(1, " Level "<GetColumnWidth(mColumnSelected)); - clientpt.x+=level*105; - clientpt.y+=level*2; - wxPoint screenpt = ClientToScreen(clientpt); - if(mColumnSelected!=0) + for(int i=0;iGetColumnWidth(i); + } + for(int i=0;iGetSashPosition(); + } + clientpt.y+=level*2; + if(level==mLevelList.size()-1) + { + mColumnSelected+=1; + PopupMenu(menu, clientpt); + } + else if(mColumnSelected!=0) { - PopupMenu(menu, clientpt); + PopupMenu(menu, clientpt); } } @@ -530,16 +551,18 @@ namespace creaImageIO { if ( GetCtrl(level) == senderCtrl ) break; } - std::string filter = wxGetTextFromUser(_T("Enter the filter to apply"), _T("Filter On Column")); + std::string filter = crea::wx2std(wxGetTextFromUser(_T("Enter the filter to apply"), _T("Filter On Column"))); std::string att; long it = -1; UpdateLevel(level+1); + std::vector items; + bool in=false; + int del=0; for ( ;; ) { - bool contains=false; it = GetCtrl(level)->GetNextItem(it, wxLIST_NEXT_ALL); if ( it == -1 ) @@ -549,12 +572,28 @@ namespace creaImageIO tree::Node* nod = ((ItemData*)adr)->node; att=(*nod).GetAttribute(mLevelList[level].key[mColumnSelected-1]); + if(att.find(filter)>900) { - GetCtrl(level)->DeleteItem(it); + + if(!in) + { + in=true; + } + else + { + del+=1; + } + + items.push_back(it-del); } } + std::vector::iterator iter; + for(iter=items.begin();iter!=items.end();++iter) + { + GetCtrl(level)->DeleteItem(*iter); + } GetGimmickView()->ClearSelection(); } //================================================================ @@ -584,7 +623,7 @@ namespace creaImageIO { //Obtain the column name and the level that needs to be organized - if(mColumnSelected!=0) + if(level==mLevelList.size()-1||mColumnSelected!=0) { int l = level - 1; //GetCtrl(level)->DeleteItem(0); @@ -693,68 +732,7 @@ namespace creaImageIO } } - //================================================================ - void WxTreeView::OnBeginLabelEdit(wxListEvent& event) - { - GimmickDebugMessage(7, - "WxTreeView::OnBeginLabelEdit" - <GetNextItem(it, - wxLIST_NEXT_ALL); - if ( it == -1 ) - break; - if(it!=0) - { - long adr = GetCtrl(level)->GetItemData(it); - for (int j=1;jGetColumnCount()-1&&!contains;j++) - { - tree::Node* nod = ((ItemData*)adr)->node; - att=(*nod).GetAttribute(mLevelList[level].key[j-1]); - - if(att.find(filter)<900) - { - contains=true; - } - } - if(!contains) - { - GetCtrl(level)->DeleteItem(it); - } - } - } - GetGimmickView()->ClearSelection(); - //GetCtrl(level)->DeleteAllItems(); - - } + //================================================================ void WxTreeView::ValidateSelectedImages(bool isSelection) { @@ -968,10 +946,10 @@ END_EVENT_TABLE() BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) EVT_LIST_BEGIN_DRAG(LIST_CTRL, MyListCtrl::OnBeginDrag) EVT_LIST_BEGIN_RDRAG(LIST_CTRL, MyListCtrl::OnBeginRDrag) - */ + EVT_LIST_BEGIN_LABEL_EDIT(-1, WxTreeView::OnBeginLabelEdit) EVT_LIST_END_LABEL_EDIT(-1, WxTreeView::OnEndLabelEdit) - /* + EVT_LIST_DELETE_ITEM(LIST_CTRL, MyListCtrl::OnDeleteItem) EVT_LIST_DELETE_ALL_ITEMS(LIST_CTRL, MyListCtrl::OnDeleteAllItems) #if WXWIN_COMPATIBILITY_2_4