using System; using System.Collections.Generic; using Gtk; namespace GridProxyGUI { internal class MessageScroller : TreeView { public static string[] ColumnLabels = { "Counter", "Timestamp", "Protocol", "Type", "Size", "URL", "Content Type" }; Dictionary ColumnMap = new Dictionary(); public ListStore Messages; public MessageScroller() { for (int i = 0; i < ColumnLabels.Length; i++) { CellRendererText cell = new CellRendererText(); AppendColumn(ColumnLabels[i], cell, "text", 0); GetColumn(i).SetCellDataFunc(cell, CellDataFunc); ColumnMap[ColumnLabels[i]] = i; } Model = Messages = new ListStore(typeof(Session)); HeadersVisible = true; ShowAll(); } void CellDataFunc(TreeViewColumn column, CellRenderer cell, TreeModel model, TreeIter iter) { var item = model.GetValue(iter, 0) as Session; if (item != null) { if (ColumnMap.ContainsKey(column.Title)) { int pos =ColumnMap[column.Title]; if (pos < item.Columns.Length) { ((CellRendererText)cell).Text = item.Columns[pos]; } } } } public void AddSession(Session s) { Messages.AppendValues(s); } } }