Persist filters. Add context menu options

This commit is contained in:
Latif Khalifa
2013-12-21 23:15:03 +01:00
parent a7c3e18cd8
commit 099b58414e
4 changed files with 341 additions and 122 deletions

View File

@@ -11,9 +11,11 @@ namespace GridProxyGUI
public ListStore Messages;
public bool AutoScroll = true;
MainWindow Main;
public MessageScroller()
public MessageScroller(MainWindow main)
{
this.Main = main;
for (int i = 0; i < ColumnLabels.Length; i++)
{
@@ -54,13 +56,77 @@ namespace GridProxyGUI
};
context.Add(item);
item = new MenuItem("Remove All");
item.Activated += (sender, e) =>
if (selected.Length == 1)
{
Selection.UnselectAll();
Messages.Clear();
};
context.Add(item);
TreeIter iter;
Messages.GetIter(out iter, selected[0]);
var session = Messages.GetValue(iter, 0) as Session;
if (session != null)
{
item = new MenuItem("Remove All " + session.Name);
item.Activated += (sender, e) =>
{
TreeIter delIter;
Messages.GetIterFirst(out delIter);
while (Messages.IterIsValid(delIter))
{
var delSession = Messages.GetValue(delIter, 0) as Session;
if (delSession != null && delSession.GetType() == session.GetType() && delSession.Name == session.Name)
{
Messages.Remove(ref delIter);
}
else
{
Messages.IterNext(ref delIter);
}
}
};
context.Add(item);
item = new MenuItem("Remove and Filter Out All " + session.Name);
item.Activated += (sender, e) =>
{
TreeIter delIter;
Messages.GetIterFirst(out delIter);
FilterItem filterOut = Main.GetFilter(session);
if (filterOut != null)
{
filterOut.Enabled = false;
}
Main.RedrawFilters();
while (Messages.IterIsValid(delIter))
{
var delSession = Messages.GetValue(delIter, 0) as Session;
if (delSession != null && delSession.GetType() == session.GetType() && delSession.Name == session.Name)
{
Messages.Remove(ref delIter);
}
else
{
Messages.IterNext(ref delIter);
}
}
};
context.Add(item);
FilterItem filter = Main.GetFilter(session);
if (filter != null)
{
var citem = new CheckMenuItem("Receive " + session.Name);
citem.Active = filter.Enabled;
citem.Toggled += (sender, e) =>
{
filter.Enabled = !filter.Enabled;
Main.RedrawFilters();
};
context.Add(citem);
}
}
}
context.Add(new SeparatorMenuItem());
@@ -101,6 +167,14 @@ namespace GridProxyGUI
};
context.Add(item);
item = new MenuItem("Clear");
item.Activated += (sender, e) =>
{
Selection.UnselectAll();
Messages.Clear();
};
context.Add(item);
context.ShowAll();
context.Popup();
}