TraceForm.cs
53 lines
| 1.8 KiB
| text/x-csharp
|
CSharpLexer
/ Implab.Diagnostics.Interactive / TraceForm.cs
|
|
r45 | using System; | ||
| using System.Collections.Generic; | ||||
| using System.ComponentModel; | ||||
| using System.Data; | ||||
| using System.Drawing; | ||||
| using System.Linq; | ||||
| using System.Text; | ||||
| using System.Threading.Tasks; | ||||
| using System.Windows.Forms; | ||||
| namespace Implab.Diagnostics.Interactive { | ||||
| public partial class TraceForm : Form { | ||||
|
|
r47 | readonly Dictionary<int, Color> m_threadColors = new Dictionary<int,Color>(); | ||
| readonly Random m_rand = new Random(); | ||||
|
|
r48 | public event EventHandler PauseEvents; | ||
| public event EventHandler ResumeEvents; | ||||
|
|
r45 | public TraceForm() { | ||
| InitializeComponent(); | ||||
| } | ||||
| protected override void OnFormClosing(FormClosingEventArgs e) { | ||||
| base.OnFormClosing(e); | ||||
| if (!e.Cancel && e.CloseReason == CloseReason.UserClosing) { | ||||
| e.Cancel = true; | ||||
| Hide(); | ||||
| } | ||||
| } | ||||
|
|
r47 | |||
| public void AddTraceEvent(TraceViewItem item) { | ||||
| traceViewItemBindingSource.Add(item); | ||||
|
|
r48 | eventsDataGrid.FirstDisplayedScrollingRowIndex = eventsDataGrid.RowCount - 1; | ||
|
|
r47 | } | ||
| Color GetThreadColor(int thread) { | ||||
| Color result; | ||||
| if (!m_threadColors.TryGetValue(thread, out result)) { | ||||
| result = Color.FromArgb(m_rand.Next(4)*64, m_rand.Next(4)*64, m_rand.Next(4)*64); | ||||
| m_threadColors[thread] = result; | ||||
| } | ||||
| return result; | ||||
| } | ||||
| private void eventsDataGrid_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e) { | ||||
| var data = (TraceViewItem)traceViewItemBindingSource[e.RowIndex]; | ||||
|
|
r48 | if (e.ColumnIndex == messageDataGridViewTextBoxColumn.Index) | ||
| e.CellStyle.Padding = new Padding(data.Indent * 10,0,0,0); | ||||
|
|
r47 | e.CellStyle.ForeColor = GetThreadColor(data.Thread); | ||
| } | ||||
|
|
r45 | } | ||
| } | ||||
