X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=src2%2FcreaImageIOWxTreeView.cpp;h=58ddc631421d889b5a5c0a89466056af3a4007a9;hb=e88bcb692a9d4bcc2ce1618a27d4fcb275a32a70;hp=e644d5e1ba1420449c1d64564e440eb016b7216c;hpb=7ae1412df3d682f639683e751f46a3f07be16d0b;p=creaImageIO.git diff --git a/src2/creaImageIOWxTreeView.cpp b/src2/creaImageIOWxTreeView.cpp index e644d5e..58ddc63 100644 --- a/src2/creaImageIOWxTreeView.cpp +++ b/src2/creaImageIOWxTreeView.cpp @@ -132,7 +132,6 @@ namespace creaImageIO i < handler->GetTree().GetNumberOfLevels() -1; ++i) { - GimmickDebugMessage(5,"Creating view for level "<Append(wxID_ANY, _T("&Sort ascending")); wxMenuItem* m2=menu->Append(wxID_ANY, _T("&Sort descending")); @@ -219,10 +219,24 @@ namespace creaImageIO Connect( mAscendingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnPopupSort) ); Connect( mDescendingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnPopupSort) ); Connect( mFilterID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnPopupFilter) ); - -#endif // wxUSE_MENUS + + //ItemMenu + menuItem =new wxMenu; + wxMenuItem* m1Item=menuItem->Append(wxID_ANY, _T("&Anonymize")); + wxMenuItem* m2Item=menuItem->Append(wxID_ANY, _T("&Local Copy")); + wxMenuItem* m3Item=menuItem->Append(wxID_ANY, _T("&Edit Fields")); + + mAnonymizingID=m1Item->GetId(); + mLocalCopyID=m2Item->GetId(); + mEditFieldID=m3Item->GetId(); + //Connect( mAnonymizingID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnAnonymize) ); + Connect( mLocalCopyID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnLocalCopy) ); + Connect( mEditFieldID, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler(WxTreeView::OnEditField) ); + + +#endif // wxUSE_MENUS /// Initialize the first level splitter sizer->Add( mLevelList[0].wxSplitter ,1, wxGROW ,0); @@ -255,24 +269,46 @@ namespace creaImageIO //===================================================================== - const std::vector& WxTreeView::GetSelected(int level) + const std::vector& WxTreeView::GetSelected(int level) { // if (GetSelectedUpToDate(level)) - int l = level - 1; // the selection of upper level - std::vector& sel(mLevelList[level-1].Selected); + std::vector& sel(mLevelList[l].Selected); sel.clear(); - - if (level == 1) + if (level == 1) { sel.push_back(GetTreeHandler()->GetTree().GetTree()); } - else if (level < 5) + else if (level < mLevelList.size()+2 ) { - int n = GetCtrl(l-1)->GetItemCount(); - for (int i = 0; i < n; i++) + long item = -1; + for ( ;; ) + { + item = GetCtrl(l-1)->GetNextItem(item, + wxLIST_NEXT_ALL, + wxLIST_STATE_SELECTED); + if ( item == -1 ) + break; + long adr = GetCtrl(l-1)->GetItemData(item); + tree::Node* n = ((ItemData*)adr)->node; + if(mLastSelected==item) + { + std::vector::iterator it; + it = sel.begin(); + it = sel.insert ( it , n ); + } + else + { + + sel.push_back(n); + } + + } + /*int n = GetCtrl(l-1)->GetItemCount(); + for (int i = 0; iGetItemState(i,wxLIST_STATE_SELECTED)<GetItemState(i,wxLIST_STATE_SELECTED)) { long adr = GetCtrl(l-1)->GetItemData(i); @@ -285,17 +321,16 @@ namespace creaImageIO } else { + sel.push_back(n); } } - } + }*/ } else { // NOTHING - } - - + } // return mLevelList[level-1].Selected; return sel; @@ -472,8 +507,11 @@ namespace creaImageIO { std::string val; // Temporary correction : it works but no explanation about the problem FCY + if(k==0 && level <3) + { val = (*j)->GetAttribute("NumberOfChildren"); + } else val = (*j)->GetAttribute(mLevelList[l].key[k]); if(((*j)->GetAttributeDescriptor(mLevelList[l].key[k])).isDateEntry()) // Date @@ -541,6 +579,7 @@ namespace creaImageIO //================================================================ void WxTreeView::OnItemSelected(wxListEvent& event) { + GimmickDebugMessage(1, GetTreeHandler()->GetTree().GetLabel() <<" WxTreeView::OnItemSelected"<GetScreenPosition().x; + clientpt.y = wxGetMousePosition().y - this->GetScreenPosition().y; + senderCtrl = event.GetEventObject(); + unsigned int level = 0; + for (level = 0; levelHitTest(wxPoint(clientpt.x,clientpt.y-8),flag,ptr); + tree::Node* node=((ItemData*)GetCtrl(level)->GetItemData(itemId))->node; + std::cout<GetLabel()<& sel=GetSelected(mLastLevel+1); + + if(sel.size() != 0) + { + bool copy=false; + std::stringstream out; + std::string levelName=GetTreeHandler()->GetTree().GetLevelDescriptor(mLastLevel).GetName(); + out<<"Copy "; + out<1&&levelName.at(levelName.size()-1)!='s') + { + out<<" "<GetTree().GetLevelDescriptor(mLastLevel).GetName()<<" to .gimmick?"; + } + if (wxMessageBox(crea::std2wx(out.str()), + _T("Remove Files"), + wxYES_NO,this ) == wxYES) + { + copy = true; + } + if(copy) + { + std::vector s; + GetFilenamesAsString(sel,s); + GetGimmickView()->CopyFiles(s); + } + } + else + { + mLastLevel = tempLevel; + } + + + } + //================================================================ + + //================================================================ + void WxTreeView::OnEditField(wxCommandEvent& event) + { + + + } //================================================================ @@ -894,6 +1011,7 @@ namespace creaImageIO } if(GetCtrl(level)->GetItemState(item, wxLIST_STATE_SELECTED)==0 ) { + adr = GetCtrl(level)->GetItemData(item); nod = ((ItemData*)adr)->node; nodes.push_back(nod); @@ -931,6 +1049,26 @@ namespace creaImageIO } } + //================================================================ + void WxTreeView::GetFilenamesAsString(const std::vector& nodes, std::vector&s) + { + std::vector::const_iterator i; + + for (i=nodes.begin(); i!=nodes.end(); ++i) + { + if((*i)->GetLevel()LoadChildren(*i,0); + GetFilenamesAsString((*i)->GetChildrenList(),s); + } + else + { + std::string filename=(*i)->GetAttribute("FullFileName"); + s.push_back(filename); + } + } + } + //================================================================ void WxTreeView::SetColor(int l, int item) { @@ -1095,7 +1233,7 @@ BEGIN_EVENT_TABLE(MyListCtrl, wxListCtrl) */ EVT_LIST_KEY_DOWN(-1, WxTreeView::OnKeyDown) EVT_LIST_ITEM_SELECTED(-1, WxTreeView::OnItemSelected) - + EVT_LIST_ITEM_RIGHT_CLICK(-1, WxTreeView::OnItemMenu) EVT_LIST_ITEM_DESELECTED(-1, WxTreeView::OnItemDeSelected) /* EVT_LIST_KEY_DOWN(LIST_CTRL, MyListCtrl::OnListKeyDown)