private void headingCol_OnDeleteClick(object sender, EventArgs e) { VisualSession[] sessions = new VisualSession[selectedSessions.Keys.Count]; selectedSessions.Keys.CopyTo(sessions, 0); selectedSessions.Clear(); DeleteSessions(sessions); }
protected override void OnMouseDown(MouseEventArgs e) { base.OnMouseDown(e); if (e.Button != MouseButtons.Left) { return; } VisualSession session = GetVisualSessionAtCoordinates(e.X, e.Y); if (session == null) { return; } if (!selectedSessions.ContainsKey(session)) { selectedSessions[session] = true; } else { selectedSessions.Remove(session); } headingBitmap = GetHeadingBitmap(); Invalidate(); }
protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (e.Button != MouseButtons.Right) { return; } ctxMenuCurSession = GetVisualSessionAtCoordinates(e.X, e.Y); if (ctxMenuCurSession == null) { return; } ContextMenuStrip menu = new ContextMenuStrip(); ToolStripItem item = new ToolStripMenuItem("Delete selected", null, new EventHandler(headingCol_OnDeleteClick)); menu.Items.Add(item); item.Enabled = (selectedSessions.Count > 0); menu.Show(this, e.X, e.Y); }
private void VisualizeDump (Dump dump) { Dictionary<uint, VisualSession> sessions = new Dictionary<uint,VisualSession> (); foreach (KeyValuePair<uint, Event> pair in dump.Events) { Event ev = pair.Value; // HACK #1 //if (ev.ThreadId != 7028 && ev.ThreadId != 3152) // continue; //else if (ev.ThreadId == 7028 && ev.Id < 138) // continue; if (ev.Id > 2200) continue; VisualSession session; if (sessions.ContainsKey (ev.ThreadId)) session = sessions[ev.ThreadId]; else { session = new VisualSession (String.Format ("{0}", ev.ThreadId)); sessions[ev.ThreadId] = session; } VisualTransaction tr = null; XmlElement eventRoot = ev.Data; XmlNode node = eventRoot.SelectSingleNode ("/event/name"); if (node != null) { string[] tokens = node.InnerText.Trim ().Split (new string[] { "::" }, 2, StringSplitOptions.None); string funcNameShort = tokens[tokens.Length - 1]; if (funcNameShort == "DeviceIoControl") { tr = CreateTransactionFromDeviceIoControl (ev, eventRoot); } else if (funcNameShort == "GetOverlappedResult") { tr = CreateTransactionFromGetOverlappedResult (ev, eventRoot); } else if (funcNameShort == "KsCreatePin") { tr = CreateTransactionFromKsCreatePin (ev, eventRoot); } else if (funcNameShort == "KsOpenDefaultDevice") { tr = CreateTransactionFromKsOpenDefaultDevice (ev, eventRoot); } else if (funcNameShort == "CloseHandle") { tr = CreateTransactionFromCloseHandle (ev, eventRoot); } else { tr = new VisualTransaction (ev.Id, TransactionDirection.In, ev.Timestamp); tr.HeadlineText = funcNameShort; tr.AddHeaderField ("Id", ev.Id); } } else { tr = new VisualTransaction (ev.Id, ev.Timestamp); tr.HeadlineText = String.Format ("<{0}>", ev.Type); tr.AddHeaderField ("Id", ev.Id); if (ev.Type == DumpEventType.AsyncResult) { uint requestEventId = Convert.ToUInt32 (eventRoot.SelectSingleNode ("/event/requestId").InnerText); tr.AddHeaderField ("RequestId", requestEventId); if (pendingReadStreamRequests.ContainsKey (requestEventId)) { pendingReadStreamRequests.Remove (requestEventId); XmlNode dataNode = eventRoot.SelectSingleNode ("/event/data/value"); tr.BodyText = KsReadStreamDataToString (dataNode, "out"); } } } if (tr != null) session.Transactions.Add (tr); } VisualSession[] sessionsArray = new VisualSession[sessions.Count]; sessions.Values.CopyTo (sessionsArray, 0); view.Sessions = sessionsArray; pendingReadStreamRequests.Clear (); }
private void headingCol_OnDeleteClick(object sender, EventArgs e) { VisualSession[] sessions = new VisualSession[selectedSessions.Keys.Count]; selectedSessions.Keys.CopyTo(sessions, 0); selectedSessions.Clear(); DeleteSessions(sessions); }
protected override void OnMouseUp(MouseEventArgs e) { base.OnMouseUp(e); if (e.Button != MouseButtons.Right) return; ctxMenuCurSession = GetVisualSessionAtCoordinates(e.X, e.Y); if (ctxMenuCurSession == null) return; ContextMenuStrip menu = new ContextMenuStrip(); ToolStripItem item = new ToolStripMenuItem("Delete selected", null, new EventHandler(headingCol_OnDeleteClick)); menu.Items.Add(item); item.Enabled = (selectedSessions.Count > 0); menu.Show(this, e.X, e.Y); }
public void DeleteSessions(VisualSession[] sessions, bool update) { foreach (VisualSession session in sessions) { foreach (VisualTransaction transaction in session.Transactions) { transaction.Parent = null; //transaction.Left = 0; //transaction.Top = 0; //transaction.SizeChanged -= transactionSizeChangedHandler; //transaction.DoubleClick -= transactionDoubleClickHandler; } this.sessions.Remove(session); } if (update) { UpdateView(); EmitSessionsChanged(); } }
public void DeleteSessions(VisualSession[] sessions) { DeleteSessions(sessions, true); }
public void AddSessions(VisualSession[] sessions, bool update) { this.sessions.AddRange(sessions); EmitSessionsChanged(); foreach (VisualSession session in sessions) { foreach (VisualTransaction transaction in session.Transactions) { transaction.Parent = null; transaction.Left = 0; transaction.Top = 0; transaction.SizeChanged += transactionSizeChangedHandler; transaction.DoubleClick += transactionDoubleClickHandler; } } if (update) { UpdateView(); EmitSessionsChanged(); } }
public void AddSessions(VisualSession[] sessions) { AddSessions(sessions, true); }