Added stats and ability to turn off auto-scroll

This commit is contained in:
Latif Khalifa
2013-12-01 21:21:39 +01:00
parent 4192878ce7
commit daf8decdb1
4 changed files with 469 additions and 98 deletions

View File

@@ -50,6 +50,21 @@ public partial class MainWindow : Gtk.Window
ProxyManager.OnMessageLog += new ProxyManager.MessageLogHandler(ProxyManager_OnMessageLog);
}
void StatsTimer_Elapsed(object sender, ElapsedEventArgs e)
{
Application.Invoke((xsender, xe) =>
{
lblUDPIn.Text = string.Format("Packets In {0} ({1} bytes)", PacketsInCounter, PacketsInBytes);
lblUDPOut.Text = string.Format("Packets Out {0} ({1} bytes)", PacketsOutCounter, PacketsOutBytes);
lblUDPTotal.Text = string.Format("Packets Total {0} ({1} bytes)", PacketsInCounter + PacketsOutCounter, PacketsInBytes + PacketsOutBytes);
lblCapIn.Text = string.Format("Caps In {0} ({1} bytes)", CapsInCounter, CapsInBytes);
lblCapOut.Text = string.Format("Caps Out {0} ({1} bytes)", CapsOutCounter, CapsOutBytes);
lblCapTotal.Text = string.Format("Caps Total {0} ({1} bytes)", CapsInCounter + CapsOutCounter, CapsInBytes + CapsOutBytes);
});
}
void ProxyManager_OnPacketLog(Packet packet, GridProxy.Direction direction, System.Net.IPEndPoint endpoint)
{
Application.Invoke((xsender, xe) =>
@@ -75,14 +90,6 @@ public partial class MainWindow : Gtk.Window
});
}
void StatsTimer_Elapsed(object sender, ElapsedEventArgs e)
{
Application.Invoke((xsender, xe) =>
{
});
}
void ProxyManager_OnCapabilityAdded(GridProxy.CapInfo cap)
{
Application.Invoke((sender, e) =>
@@ -330,4 +337,9 @@ public partial class MainWindow : Gtk.Window
{
SetAllToggles(cbSelectAllCap.Active, capStore);
}
protected void OnCbAutoScrollToggled (object sender, EventArgs e)
{
messages.AutoScroll = cbAutoScroll.Active;
}
}

View File

@@ -7,9 +7,10 @@ namespace GridProxyGUI
internal class MessageScroller : TreeView
{
public static string[] ColumnLabels = { "Counter", "Timestamp", "Protocol", "Type", "Size", "URL", "Content Type" };
Dictionary<string, int> ColumnMap = new Dictionary<string,int>();
Dictionary<string, int> ColumnMap = new Dictionary<string, int>();
public ListStore Messages;
public bool AutoScroll = true;
public MessageScroller()
{
@@ -37,7 +38,7 @@ namespace GridProxyGUI
{
if (ColumnMap.ContainsKey(column.Title))
{
int pos =ColumnMap[column.Title];
int pos = ColumnMap[column.Title];
if (pos < item.Columns.Length)
{
((CellRendererText)cell).Text = item.Columns[pos];
@@ -49,7 +50,10 @@ namespace GridProxyGUI
public void AddSession(Session s)
{
TreeIter iter = Messages.AppendValues(s);
ScrollToCell(Messages.GetPath(iter), null, true, 0, 0);
if (AutoScroll)
{
ScrollToCell(Messages.GetPath(iter), null, true, 0, 0);
}
}
}
}

View File

@@ -31,22 +31,41 @@ public partial class MainWindow
private global::Gtk.ComboBoxEntry cbLoginURL;
private global::Gtk.Button btnStart;
private global::Gtk.HPaned mainSplit;
private global::Gtk.VBox vboxSessions;
private global::Gtk.ScrolledWindow sessionLogScroller;
private global::Gtk.HBox hboxSessionBottom;
private global::Gtk.CheckButton cbAutoScroll;
private global::Gtk.Notebook tabsMain;
private global::Gtk.VBox vboxLog;
private global::Gtk.HBox hbox5;
private global::Gtk.Frame frame1;
private global::Gtk.Alignment GtkAlignment2;
private global::Gtk.VBox vbox1;
private global::Gtk.Label lblUDPIn;
private global::Gtk.Label lblUDPOut;
private global::Gtk.Label lblUDPTotal;
private global::Gtk.Label GtkLabel5;
private global::Gtk.Frame frame2;
private global::Gtk.Alignment GtkAlignment3;
private global::Gtk.VBox vbox2;
private global::Gtk.Label lblCapIn;
private global::Gtk.Label lblCapOut;
private global::Gtk.Label lblCapTotal;
private global::Gtk.Label GtkLabel12;
private global::Gtk.ScrolledWindow logFileScroller;
private global::Gtk.TextView txtSummary;
private global::Gtk.Label label4;
private global::Gtk.VBox filterBox;
private global::Gtk.VBox hboxFilter;
private global::Gtk.HBox hbox2;
private global::Gtk.Button btnLoadFilters;
private global::Gtk.Button btnSaveFilters;
private global::Gtk.HBox hbox3;
private global::Gtk.Frame frameFilterUDP;
private global::Gtk.Alignment containerFilterUDP;
private global::Gtk.Label GtkLabel7;
private global::Gtk.Label GtkLabel8;
private global::Gtk.Frame frameFilterCap;
private global::Gtk.Alignment containerFilterCap;
private global::Gtk.Label GtkLabel8;
private global::Gtk.Label GtkLabel9;
private global::Gtk.HBox hbox4;
private global::Gtk.CheckButton cbSelectAllUDP;
private global::Gtk.CheckButton cbSelectAllCap;
@@ -224,20 +243,155 @@ public partial class MainWindow
this.mainSplit.Name = "mainSplit";
this.mainSplit.Position = 400;
// Container child mainSplit.Gtk.Paned+PanedChild
this.vboxSessions = new global::Gtk.VBox ();
this.vboxSessions.Name = "vboxSessions";
this.vboxSessions.Spacing = 6;
// Container child vboxSessions.Gtk.Box+BoxChild
this.sessionLogScroller = new global::Gtk.ScrolledWindow ();
this.sessionLogScroller.CanFocus = true;
this.sessionLogScroller.Name = "sessionLogScroller";
this.sessionLogScroller.ShadowType = ((global::Gtk.ShadowType)(1));
this.mainSplit.Add (this.sessionLogScroller);
global::Gtk.Paned.PanedChild w13 = ((global::Gtk.Paned.PanedChild)(this.mainSplit [this.sessionLogScroller]));
w13.Resize = false;
this.vboxSessions.Add (this.sessionLogScroller);
global::Gtk.Box.BoxChild w13 = ((global::Gtk.Box.BoxChild)(this.vboxSessions [this.sessionLogScroller]));
w13.Position = 0;
// Container child vboxSessions.Gtk.Box+BoxChild
this.hboxSessionBottom = new global::Gtk.HBox ();
this.hboxSessionBottom.Name = "hboxSessionBottom";
this.hboxSessionBottom.Spacing = 6;
// Container child hboxSessionBottom.Gtk.Box+BoxChild
this.cbAutoScroll = new global::Gtk.CheckButton ();
this.cbAutoScroll.CanFocus = true;
this.cbAutoScroll.Name = "cbAutoScroll";
this.cbAutoScroll.Label = global::Mono.Unix.Catalog.GetString ("Auto Scroll");
this.cbAutoScroll.Active = true;
this.cbAutoScroll.DrawIndicator = true;
this.cbAutoScroll.UseUnderline = true;
this.hboxSessionBottom.Add (this.cbAutoScroll);
global::Gtk.Box.BoxChild w14 = ((global::Gtk.Box.BoxChild)(this.hboxSessionBottom [this.cbAutoScroll]));
w14.Position = 0;
this.vboxSessions.Add (this.hboxSessionBottom);
global::Gtk.Box.BoxChild w15 = ((global::Gtk.Box.BoxChild)(this.vboxSessions [this.hboxSessionBottom]));
w15.Position = 1;
w15.Expand = false;
w15.Fill = false;
this.mainSplit.Add (this.vboxSessions);
global::Gtk.Paned.PanedChild w16 = ((global::Gtk.Paned.PanedChild)(this.mainSplit [this.vboxSessions]));
w16.Resize = false;
// Container child mainSplit.Gtk.Paned+PanedChild
this.tabsMain = new global::Gtk.Notebook ();
this.tabsMain.CanFocus = true;
this.tabsMain.Name = "tabsMain";
this.tabsMain.CurrentPage = 1;
this.tabsMain.CurrentPage = 0;
this.tabsMain.EnablePopup = true;
// Container child tabsMain.Gtk.Notebook+NotebookChild
this.vboxLog = new global::Gtk.VBox ();
this.vboxLog.Name = "vboxLog";
this.vboxLog.Spacing = 6;
// Container child vboxLog.Gtk.Box+BoxChild
this.hbox5 = new global::Gtk.HBox ();
this.hbox5.Name = "hbox5";
this.hbox5.Homogeneous = true;
this.hbox5.Spacing = 6;
// Container child hbox5.Gtk.Box+BoxChild
this.frame1 = new global::Gtk.Frame ();
this.frame1.Name = "frame1";
// Container child frame1.Gtk.Container+ContainerChild
this.GtkAlignment2 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
this.GtkAlignment2.Name = "GtkAlignment2";
this.GtkAlignment2.LeftPadding = ((uint)(12));
// Container child GtkAlignment2.Gtk.Container+ContainerChild
this.vbox1 = new global::Gtk.VBox ();
this.vbox1.Name = "vbox1";
this.vbox1.Spacing = 6;
// Container child vbox1.Gtk.Box+BoxChild
this.lblUDPIn = new global::Gtk.Label ();
this.lblUDPIn.Name = "lblUDPIn";
this.lblUDPIn.LabelProp = global::Mono.Unix.Catalog.GetString ("Packets In 0 (0 bytes)");
this.vbox1.Add (this.lblUDPIn);
global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.lblUDPIn]));
w17.Position = 0;
w17.Expand = false;
w17.Fill = false;
// Container child vbox1.Gtk.Box+BoxChild
this.lblUDPOut = new global::Gtk.Label ();
this.lblUDPOut.Name = "lblUDPOut";
this.lblUDPOut.LabelProp = global::Mono.Unix.Catalog.GetString ("Packets Out 0 (0 bytes)");
this.vbox1.Add (this.lblUDPOut);
global::Gtk.Box.BoxChild w18 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.lblUDPOut]));
w18.Position = 1;
w18.Expand = false;
w18.Fill = false;
// Container child vbox1.Gtk.Box+BoxChild
this.lblUDPTotal = new global::Gtk.Label ();
this.lblUDPTotal.Name = "lblUDPTotal";
this.lblUDPTotal.LabelProp = global::Mono.Unix.Catalog.GetString ("Packets Total 0 (0 bytes)");
this.vbox1.Add (this.lblUDPTotal);
global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.vbox1 [this.lblUDPTotal]));
w19.Position = 2;
w19.Expand = false;
w19.Fill = false;
this.GtkAlignment2.Add (this.vbox1);
this.frame1.Add (this.GtkAlignment2);
this.GtkLabel5 = new global::Gtk.Label ();
this.GtkLabel5.Name = "GtkLabel5";
this.GtkLabel5.LabelProp = global::Mono.Unix.Catalog.GetString ("UDP Packets");
this.frame1.LabelWidget = this.GtkLabel5;
this.hbox5.Add (this.frame1);
global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.frame1]));
w22.Position = 0;
// Container child hbox5.Gtk.Box+BoxChild
this.frame2 = new global::Gtk.Frame ();
this.frame2.Name = "frame2";
// Container child frame2.Gtk.Container+ContainerChild
this.GtkAlignment3 = new global::Gtk.Alignment (0F, 0F, 1F, 1F);
this.GtkAlignment3.Name = "GtkAlignment3";
this.GtkAlignment3.LeftPadding = ((uint)(12));
// Container child GtkAlignment3.Gtk.Container+ContainerChild
this.vbox2 = new global::Gtk.VBox ();
this.vbox2.Name = "vbox2";
this.vbox2.Spacing = 6;
// Container child vbox2.Gtk.Box+BoxChild
this.lblCapIn = new global::Gtk.Label ();
this.lblCapIn.Name = "lblCapIn";
this.lblCapIn.LabelProp = global::Mono.Unix.Catalog.GetString ("Caps In 0 (0 bytes)");
this.vbox2.Add (this.lblCapIn);
global::Gtk.Box.BoxChild w23 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.lblCapIn]));
w23.Position = 0;
w23.Expand = false;
w23.Fill = false;
// Container child vbox2.Gtk.Box+BoxChild
this.lblCapOut = new global::Gtk.Label ();
this.lblCapOut.Name = "lblCapOut";
this.lblCapOut.LabelProp = global::Mono.Unix.Catalog.GetString ("Caps Out 0 (0 bytes)");
this.vbox2.Add (this.lblCapOut);
global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.lblCapOut]));
w24.Position = 1;
w24.Expand = false;
w24.Fill = false;
// Container child vbox2.Gtk.Box+BoxChild
this.lblCapTotal = new global::Gtk.Label ();
this.lblCapTotal.Name = "lblCapTotal";
this.lblCapTotal.LabelProp = global::Mono.Unix.Catalog.GetString ("Caps Total 0 (0 bytes)");
this.vbox2.Add (this.lblCapTotal);
global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.vbox2 [this.lblCapTotal]));
w25.Position = 2;
w25.Expand = false;
w25.Fill = false;
this.GtkAlignment3.Add (this.vbox2);
this.frame2.Add (this.GtkAlignment3);
this.GtkLabel12 = new global::Gtk.Label ();
this.GtkLabel12.Name = "GtkLabel12";
this.GtkLabel12.LabelProp = global::Mono.Unix.Catalog.GetString ("Caps Messages");
this.frame2.LabelWidget = this.GtkLabel12;
this.hbox5.Add (this.frame2);
global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.hbox5 [this.frame2]));
w28.Position = 1;
this.vboxLog.Add (this.hbox5);
global::Gtk.Box.BoxChild w29 = ((global::Gtk.Box.BoxChild)(this.vboxLog [this.hbox5]));
w29.Position = 0;
w29.Expand = false;
w29.Fill = false;
// Container child vboxLog.Gtk.Box+BoxChild
this.logFileScroller = new global::Gtk.ScrolledWindow ();
this.logFileScroller.Name = "logFileScroller";
this.logFileScroller.ShadowType = ((global::Gtk.ShadowType)(1));
@@ -248,18 +402,21 @@ public partial class MainWindow
this.txtSummary.Editable = false;
this.txtSummary.WrapMode = ((global::Gtk.WrapMode)(2));
this.logFileScroller.Add (this.txtSummary);
this.tabsMain.Add (this.logFileScroller);
this.vboxLog.Add (this.logFileScroller);
global::Gtk.Box.BoxChild w31 = ((global::Gtk.Box.BoxChild)(this.vboxLog [this.logFileScroller]));
w31.Position = 1;
this.tabsMain.Add (this.vboxLog);
// Notebook tab
this.label4 = new global::Gtk.Label ();
this.label4.Name = "label4";
this.label4.LabelProp = global::Mono.Unix.Catalog.GetString ("Summary");
this.tabsMain.SetTabLabel (this.logFileScroller, this.label4);
this.tabsMain.SetTabLabel (this.vboxLog, this.label4);
this.label4.ShowAll ();
// Container child tabsMain.Gtk.Notebook+NotebookChild
this.filterBox = new global::Gtk.VBox ();
this.filterBox.Name = "filterBox";
this.filterBox.Spacing = 6;
// Container child filterBox.Gtk.Box+BoxChild
this.hboxFilter = new global::Gtk.VBox ();
this.hboxFilter.Name = "hboxFilter";
this.hboxFilter.Spacing = 6;
// Container child hboxFilter.Gtk.Box+BoxChild
this.hbox2 = new global::Gtk.HBox ();
this.hbox2.Name = "hbox2";
this.hbox2.Spacing = 6;
@@ -269,34 +426,34 @@ public partial class MainWindow
this.btnLoadFilters.Name = "btnLoadFilters";
this.btnLoadFilters.UseUnderline = true;
this.btnLoadFilters.Label = global::Mono.Unix.Catalog.GetString ("Load");
global::Gtk.Image w16 = new global::Gtk.Image ();
w16.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-open", global::Gtk.IconSize.Menu);
this.btnLoadFilters.Image = w16;
global::Gtk.Image w33 = new global::Gtk.Image ();
w33.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-open", global::Gtk.IconSize.Menu);
this.btnLoadFilters.Image = w33;
this.hbox2.Add (this.btnLoadFilters);
global::Gtk.Box.BoxChild w17 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.btnLoadFilters]));
w17.Position = 0;
w17.Expand = false;
w17.Fill = false;
global::Gtk.Box.BoxChild w34 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.btnLoadFilters]));
w34.Position = 0;
w34.Expand = false;
w34.Fill = false;
// Container child hbox2.Gtk.Box+BoxChild
this.btnSaveFilters = new global::Gtk.Button ();
this.btnSaveFilters.CanFocus = true;
this.btnSaveFilters.Name = "btnSaveFilters";
this.btnSaveFilters.UseUnderline = true;
this.btnSaveFilters.Label = global::Mono.Unix.Catalog.GetString ("Save");
global::Gtk.Image w18 = new global::Gtk.Image ();
w18.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-save", global::Gtk.IconSize.Menu);
this.btnSaveFilters.Image = w18;
global::Gtk.Image w35 = new global::Gtk.Image ();
w35.Pixbuf = global::Stetic.IconLoader.LoadIcon (this, "gtk-save", global::Gtk.IconSize.Menu);
this.btnSaveFilters.Image = w35;
this.hbox2.Add (this.btnSaveFilters);
global::Gtk.Box.BoxChild w19 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.btnSaveFilters]));
w19.Position = 1;
w19.Expand = false;
w19.Fill = false;
this.filterBox.Add (this.hbox2);
global::Gtk.Box.BoxChild w20 = ((global::Gtk.Box.BoxChild)(this.filterBox [this.hbox2]));
w20.Position = 0;
w20.Expand = false;
w20.Fill = false;
// Container child filterBox.Gtk.Box+BoxChild
global::Gtk.Box.BoxChild w36 = ((global::Gtk.Box.BoxChild)(this.hbox2 [this.btnSaveFilters]));
w36.Position = 1;
w36.Expand = false;
w36.Fill = false;
this.hboxFilter.Add (this.hbox2);
global::Gtk.Box.BoxChild w37 = ((global::Gtk.Box.BoxChild)(this.hboxFilter [this.hbox2]));
w37.Position = 0;
w37.Expand = false;
w37.Fill = false;
// Container child hboxFilter.Gtk.Box+BoxChild
this.hbox3 = new global::Gtk.HBox ();
this.hbox3.Name = "hbox3";
this.hbox3.Homogeneous = true;
@@ -311,13 +468,13 @@ public partial class MainWindow
this.containerFilterUDP.Name = "containerFilterUDP";
this.containerFilterUDP.LeftPadding = ((uint)(12));
this.frameFilterUDP.Add (this.containerFilterUDP);
this.GtkLabel7 = new global::Gtk.Label ();
this.GtkLabel7.Name = "GtkLabel7";
this.GtkLabel7.LabelProp = global::Mono.Unix.Catalog.GetString ("UDP Packets & Login");
this.frameFilterUDP.LabelWidget = this.GtkLabel7;
this.GtkLabel8 = new global::Gtk.Label ();
this.GtkLabel8.Name = "GtkLabel8";
this.GtkLabel8.LabelProp = global::Mono.Unix.Catalog.GetString ("UDP Packets & Login");
this.frameFilterUDP.LabelWidget = this.GtkLabel8;
this.hbox3.Add (this.frameFilterUDP);
global::Gtk.Box.BoxChild w22 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.frameFilterUDP]));
w22.Position = 0;
global::Gtk.Box.BoxChild w39 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.frameFilterUDP]));
w39.Position = 0;
// Container child hbox3.Gtk.Box+BoxChild
this.frameFilterCap = new global::Gtk.Frame ();
this.frameFilterCap.Name = "frameFilterCap";
@@ -328,17 +485,17 @@ public partial class MainWindow
this.containerFilterCap.Name = "containerFilterCap";
this.containerFilterCap.LeftPadding = ((uint)(12));
this.frameFilterCap.Add (this.containerFilterCap);
this.GtkLabel8 = new global::Gtk.Label ();
this.GtkLabel8.Name = "GtkLabel8";
this.GtkLabel8.LabelProp = global::Mono.Unix.Catalog.GetString ("Capabilities & EventQueue Messages");
this.frameFilterCap.LabelWidget = this.GtkLabel8;
this.GtkLabel9 = new global::Gtk.Label ();
this.GtkLabel9.Name = "GtkLabel9";
this.GtkLabel9.LabelProp = global::Mono.Unix.Catalog.GetString ("Capabilities & EventQueue Messages");
this.frameFilterCap.LabelWidget = this.GtkLabel9;
this.hbox3.Add (this.frameFilterCap);
global::Gtk.Box.BoxChild w24 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.frameFilterCap]));
w24.Position = 1;
this.filterBox.Add (this.hbox3);
global::Gtk.Box.BoxChild w25 = ((global::Gtk.Box.BoxChild)(this.filterBox [this.hbox3]));
w25.Position = 1;
// Container child filterBox.Gtk.Box+BoxChild
global::Gtk.Box.BoxChild w41 = ((global::Gtk.Box.BoxChild)(this.hbox3 [this.frameFilterCap]));
w41.Position = 1;
this.hboxFilter.Add (this.hbox3);
global::Gtk.Box.BoxChild w42 = ((global::Gtk.Box.BoxChild)(this.hboxFilter [this.hbox3]));
w42.Position = 1;
// Container child hboxFilter.Gtk.Box+BoxChild
this.hbox4 = new global::Gtk.HBox ();
this.hbox4.Name = "hbox4";
this.hbox4.Homogeneous = true;
@@ -351,8 +508,8 @@ public partial class MainWindow
this.cbSelectAllUDP.DrawIndicator = true;
this.cbSelectAllUDP.UseUnderline = true;
this.hbox4.Add (this.cbSelectAllUDP);
global::Gtk.Box.BoxChild w26 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.cbSelectAllUDP]));
w26.Position = 0;
global::Gtk.Box.BoxChild w43 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.cbSelectAllUDP]));
w43.Position = 0;
// Container child hbox4.Gtk.Box+BoxChild
this.cbSelectAllCap = new global::Gtk.CheckButton ();
this.cbSelectAllCap.CanFocus = true;
@@ -361,36 +518,36 @@ public partial class MainWindow
this.cbSelectAllCap.DrawIndicator = true;
this.cbSelectAllCap.UseUnderline = true;
this.hbox4.Add (this.cbSelectAllCap);
global::Gtk.Box.BoxChild w27 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.cbSelectAllCap]));
w27.Position = 1;
this.filterBox.Add (this.hbox4);
global::Gtk.Box.BoxChild w28 = ((global::Gtk.Box.BoxChild)(this.filterBox [this.hbox4]));
w28.PackType = ((global::Gtk.PackType)(1));
w28.Position = 2;
w28.Expand = false;
w28.Fill = false;
this.tabsMain.Add (this.filterBox);
global::Gtk.Notebook.NotebookChild w29 = ((global::Gtk.Notebook.NotebookChild)(this.tabsMain [this.filterBox]));
w29.Position = 1;
global::Gtk.Box.BoxChild w44 = ((global::Gtk.Box.BoxChild)(this.hbox4 [this.cbSelectAllCap]));
w44.Position = 1;
this.hboxFilter.Add (this.hbox4);
global::Gtk.Box.BoxChild w45 = ((global::Gtk.Box.BoxChild)(this.hboxFilter [this.hbox4]));
w45.PackType = ((global::Gtk.PackType)(1));
w45.Position = 2;
w45.Expand = false;
w45.Fill = false;
this.tabsMain.Add (this.hboxFilter);
global::Gtk.Notebook.NotebookChild w46 = ((global::Gtk.Notebook.NotebookChild)(this.tabsMain [this.hboxFilter]));
w46.Position = 1;
// Notebook tab
this.label5 = new global::Gtk.Label ();
this.label5.Name = "label5";
this.label5.LabelProp = global::Mono.Unix.Catalog.GetString ("Filters");
this.tabsMain.SetTabLabel (this.filterBox, this.label5);
this.tabsMain.SetTabLabel (this.hboxFilter, this.label5);
this.label5.ShowAll ();
// Notebook tab
global::Gtk.Label w30 = new global::Gtk.Label ();
w30.Visible = true;
this.tabsMain.Add (w30);
global::Gtk.Label w47 = new global::Gtk.Label ();
w47.Visible = true;
this.tabsMain.Add (w47);
this.label6 = new global::Gtk.Label ();
this.label6.Name = "label6";
this.label6.LabelProp = global::Mono.Unix.Catalog.GetString ("Inspector");
this.tabsMain.SetTabLabel (w30, this.label6);
this.tabsMain.SetTabLabel (w47, this.label6);
this.label6.ShowAll ();
this.mainSplit.Add (this.tabsMain);
this.vboxMenuMain.Add (this.mainSplit);
global::Gtk.Box.BoxChild w32 = ((global::Gtk.Box.BoxChild)(this.vboxMenuMain [this.mainSplit]));
w32.Position = 1;
global::Gtk.Box.BoxChild w49 = ((global::Gtk.Box.BoxChild)(this.vboxMenuMain [this.mainSplit]));
w49.Position = 1;
this.Add (this.vboxMenuMain);
if ((this.Child != null)) {
this.Child.ShowAll ();
@@ -401,6 +558,7 @@ public partial class MainWindow
this.DeleteEvent += new global::Gtk.DeleteEventHandler (this.OnDeleteEvent);
this.ExitAction.Activated += new global::System.EventHandler (this.OnExitActionActivated);
this.btnStart.Clicked += new global::System.EventHandler (this.OnBtnStartClicked);
this.cbAutoScroll.Toggled += new global::System.EventHandler (this.OnCbAutoScrollToggled);
this.cbSelectAllUDP.Toggled += new global::System.EventHandler (this.OnCbSelectAllUDPToggled);
this.cbSelectAllCap.Toggled += new global::System.EventHandler (this.OnCbSelectAllCapToggled);
}

View File

@@ -265,18 +265,56 @@ http://login.orgrid.org/</property>
<property name="CanFocus">True</property>
<property name="Position">400</property>
<child>
<widget class="Gtk.ScrolledWindow" id="sessionLogScroller">
<widget class="Gtk.VBox" id="vboxSessions">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="ShadowType">In</property>
<property name="Spacing">6</property>
<child>
<widget class="Gtk.Viewport" id="GtkViewport">
<widget class="Gtk.ScrolledWindow" id="sessionLogScroller">
<property name="MemberName" />
<property name="ShadowType">None</property>
<property name="CanFocus">True</property>
<property name="ShadowType">In</property>
<child>
<placeholder />
<widget class="Gtk.Viewport" id="GtkViewport">
<property name="MemberName" />
<property name="ShadowType">None</property>
<child>
<placeholder />
</child>
</widget>
</child>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
</packing>
</child>
<child>
<widget class="Gtk.HBox" id="hboxSessionBottom">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
<widget class="Gtk.CheckButton" id="cbAutoScroll">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="Label" translatable="yes">Auto Scroll</property>
<property name="Active">True</property>
<property name="DrawIndicator">True</property>
<property name="HasLabel">True</property>
<property name="UseUnderline">True</property>
<signal name="Toggled" handler="OnCbAutoScrollToggled" />
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
</packing>
</child>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
</widget>
<packing>
@@ -287,21 +325,180 @@ http://login.orgrid.org/</property>
<widget class="Gtk.Notebook" id="tabsMain">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="CurrentPage">1</property>
<property name="CurrentPage">0</property>
<property name="EnablePopup">True</property>
<child>
<widget class="Gtk.ScrolledWindow" id="logFileScroller">
<widget class="Gtk.VBox" id="vboxLog">
<property name="MemberName" />
<property name="ShadowType">In</property>
<property name="Spacing">6</property>
<child>
<widget class="Gtk.TextView" id="txtSummary">
<widget class="Gtk.HBox" id="hbox5">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="ShowScrollbars">True</property>
<property name="Editable">False</property>
<property name="Text" translatable="yes" />
<property name="WrapMode">Word</property>
<property name="Homogeneous">True</property>
<property name="Spacing">6</property>
<child>
<widget class="Gtk.Frame" id="frame1">
<property name="MemberName" />
<child>
<widget class="Gtk.Alignment" id="GtkAlignment2">
<property name="MemberName" />
<property name="Xalign">0</property>
<property name="Yalign">0</property>
<property name="LeftPadding">12</property>
<child>
<widget class="Gtk.VBox" id="vbox1">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
<widget class="Gtk.Label" id="lblUDPIn">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Packets In 0 (0 bytes)</property>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Label" id="lblUDPOut">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Packets Out 0 (0 bytes)</property>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Label" id="lblUDPTotal">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Packets Total 0 (0 bytes)</property>
</widget>
<packing>
<property name="Position">2</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="Gtk.Label" id="GtkLabel5">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">UDP Packets</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Frame" id="frame2">
<property name="MemberName" />
<child>
<widget class="Gtk.Alignment" id="GtkAlignment3">
<property name="MemberName" />
<property name="Xalign">0</property>
<property name="Yalign">0</property>
<property name="LeftPadding">12</property>
<child>
<widget class="Gtk.VBox" id="vbox2">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
<widget class="Gtk.Label" id="lblCapIn">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Caps In 0 (0 bytes)</property>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Label" id="lblCapOut">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Caps Out 0 (0 bytes)</property>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.Label" id="lblCapTotal">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Caps Total 0 (0 bytes)</property>
</widget>
<packing>
<property name="Position">2</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
</widget>
</child>
</widget>
</child>
<child>
<widget class="Gtk.Label" id="GtkLabel12">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Caps Messages</property>
</widget>
<packing>
<property name="type">label_item</property>
</packing>
</child>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">False</property>
</packing>
</child>
</widget>
<packing>
<property name="Position">0</property>
<property name="AutoSize">True</property>
<property name="Expand">False</property>
<property name="Fill">False</property>
</packing>
</child>
<child>
<widget class="Gtk.ScrolledWindow" id="logFileScroller">
<property name="MemberName" />
<property name="ShadowType">In</property>
<child>
<widget class="Gtk.TextView" id="txtSummary">
<property name="MemberName" />
<property name="CanFocus">True</property>
<property name="ShowScrollbars">True</property>
<property name="Editable">False</property>
<property name="Text" translatable="yes" />
<property name="WrapMode">Word</property>
</widget>
</child>
</widget>
<packing>
<property name="Position">1</property>
<property name="AutoSize">True</property>
</packing>
</child>
</widget>
</child>
@@ -315,7 +512,7 @@ http://login.orgrid.org/</property>
</packing>
</child>
<child>
<widget class="Gtk.VBox" id="filterBox">
<widget class="Gtk.VBox" id="hboxFilter">
<property name="MemberName" />
<property name="Spacing">6</property>
<child>
@@ -387,7 +584,7 @@ http://login.orgrid.org/</property>
</widget>
</child>
<child>
<widget class="Gtk.Label" id="GtkLabel7">
<widget class="Gtk.Label" id="GtkLabel8">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">UDP Packets &amp; Login</property>
</widget>
@@ -418,7 +615,7 @@ http://login.orgrid.org/</property>
</widget>
</child>
<child>
<widget class="Gtk.Label" id="GtkLabel8">
<widget class="Gtk.Label" id="GtkLabel9">
<property name="MemberName" />
<property name="LabelProp" translatable="yes">Capabilities &amp; EventQueue Messages</property>
</widget>