sizer->Add( mLevelList[0].wxSplitter ,1, wxGROW ,0);
mColumnSelected=1;
mLastSelected=0;
+ mLastLevel=0;
mDirection=true;
mSelectionMade=false;
mProcess=true;
//=====================================================================
- ///Removes selected nodes on given level
- void WxTreeView::RemoveSelected( int level )
+ ///Removes selected nodes on last selected level
+ void WxTreeView::RemoveSelected()
{
- std::vector<tree::Node*> sel=GetSelected(level+1);
+ mLastLevel+=1;
+ std::vector<tree::Node*> sel=GetSelected(mLastLevel+1);
bool erase=false;
- if (wxMessageBox(_T("Delete file(s) ?"),
+ 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)
{
}
if(erase)
{
+ bool needRefresh=false;
std::vector<tree::Node*>::iterator i;
for (i=sel.begin(); i!=sel.end(); ++i)
{
- GimmickDebugMessage(2,
+ GimmickMessage(1,
"deleting '"
<<(*i)->GetLabel()
- <<"'"<<level
+ <<"'"<<mLastLevel
<<std::endl);
+ if((*i)->GetParent()->GetNumberOfChildren()<2)
+ {
+ needRefresh=true;
+ }
GetTreeHandler()->Remove(*i);
}
- UpdateLevel(level);
+ if(needRefresh && mLastLevel>1)
+ {
+ UpdateLevel(mLastLevel-2);
+ }
+ else if(mLastLevel>1)
+ {
+ UpdateLevel(mLastLevel-1);
+ }
+ else
+ {
+ UpdateLevel(mLastLevel);
+ }
}
}
{
if ( GetCtrl(level) == obj ) break;
}
+ mLastLevel=level;
GimmickDebugMessage(1,
" Level "<<level+1
<<std::endl);
// Update the children level (if selection not at last level)
if (level<mLevelList.size()-1)
{
+
UpdateLevel( level + 2 );
// Reset the viewer setting the default image
GetGimmickView()->ClearSelection();
}
//Resets original data
-
- std::vector<tree::Node*>::iterator selection;
- std::vector<long> change;
long it = -1;
for ( ;; )
{
//Gets current item data, extracts the node and resets it
long item = GetCtrl(level)->GetItemData(it);
GetCtrl(level)->SetItemData(it,((long*)item)[0]);
- tree::Node* n= ((ItemData*)((long*)item)[0])->node;
+ //tree::Node* n= ((ItemData*)((long*)item)[0])->node;
}
item = GetCtrl(level)->GetNextItem(item,
wxLIST_NEXT_BELOW);
}
- if ( item == -1 )
+ if ( item == -1 || item==0 )
{
break;
}
- if(GetCtrl(level)->GetItemState(item, wxLIST_STATE_SELECTED)==0 /*&& item!=0*/)
+ if(GetCtrl(level)->GetItemState(item, wxLIST_STATE_SELECTED)==0 )
{
adr = GetCtrl(level)->GetItemData(item);
nod = ((ItemData*)adr)->node;