public void RemoveSelectedTasks()
{
TreeModel model;
TreePath[] paths = this.m_tasksTreeView.Selection.GetSelectedRows (out model);
if (paths.Length < 1)
return;
// reverse the order of paths from last to first
// so that the id's will be valid when removing/adding
Array.Reverse (paths);
List<Task> tasks = new List<Task> ();
foreach (TreePath path in paths) {
TreeIter iter;
if (model.GetIter (out iter, path)) {
GLib.Value value = GLib.Value.Empty;
model.GetValue (iter, 0, ref value);
tasks.Add ((Task)value.Val);
}
}
var command = new RemoveTaskCommand (m_storage, tasks);
var commands = ServiceManager.Get<CommandService> ();
commands.Commands.Do (command);
m_tasksTreeView.Selection.SelectPath (paths[0]);
if (m_tasksTreeView.Selection.CountSelectedRows () == 0)
MoveLastTask ();
m_tasksTreeView.QueueDraw ();
}