- std::vector<tree::Node*> 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<tree::Node*>::iterator i;
- for (i=sel.begin(); i!=sel.end(); ++i)
- {
- GimmickDebugMessage(2,
- "deleting '"
- <<(*i)->GetLabel()
- <<"'"<<level
- <<std::endl);
- GetTreeHandler()->Remove(*i);
- }
-
- UpdateLevel(level);
- }
-
- }
+ unsigned int tempLevel = mLastLevel;
+ mLastLevel+=1;
+ const std::vector<tree::Node*>& sel=GetSelected(mLastLevel+1);
+ // if no selection, no remove action.
+ if(sel.size() != 0)
+ {
+ bool erase=false;
+ std::stringstream out;
+ std::string levelName=GetTreeHandler()->GetTree().GetLevelDescriptor(mLastLevel).GetName();
+ out<<"Delete ";
+ out<<sel.size();
+ if(sel.size()>1&&levelName.at(levelName.size()-1)!='s')
+ {
+ out<<" "<<levelName;
+ out<<"s?";
+ }
+ else
+ {
+ out<<" "<<GetTreeHandler()->GetTree().GetLevelDescriptor(mLastLevel).GetName()<<"?";
+ }
+ if (wxMessageBox(crea::std2wx(out.str()),
+ _T("Remove Files"),
+ wxYES_NO,this ) == wxYES)
+ {
+ erase = true;
+ }
+ if(erase)
+ {
+ GetGimmickView()->modifyValidationSignal(false);
+ bool needRefresh=false;
+ std::vector<tree::Node*>::const_iterator i;
+ for (i=sel.begin(); i!=sel.end(); ++i)
+ {
+ GimmickMessage(1,
+ "deleting '"
+ <<(*i)->GetLabel()
+ <<"'"<<mLastLevel
+ <<std::endl);
+ if((*i)->GetParent()->GetNumberOfChildren()<2)
+ {
+ needRefresh=true;
+ }
+ tree::Node* n= (tree::Node*)(*i);
+ GetTreeHandler()->LoadChildren((*i),4);
+ GetGimmickView()->AddIgnoreFile(n);
+ GetTreeHandler()->Remove(*i);
+ }
+
+ if(needRefresh && mLastLevel>1)
+ {
+ UpdateLevel(mLastLevel-2);
+ }
+ else if(mLastLevel>1)
+ {
+ UpdateLevel(mLastLevel-1);
+ }
+ else
+ {
+ UpdateLevel(mLastLevel);
+ }
+ }
+ }
+ else
+ {
+ // no need to incremente level
+ mLastLevel = tempLevel;
+ }