Mercurial > pub > ImplabNet
view Implab.Diagnostics.Interactive/TraceForm.cs @ 47:b181f7bcb259 interactive logger
refactoring, interactive tarce log almost complete
author | cin |
---|---|
date | Thu, 17 Apr 2014 18:49:36 +0400 |
parents | d10034588e38 |
children | d9d794b61bb9 |
line wrap: on
line source
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 { readonly Dictionary<int, Color> m_threadColors = new Dictionary<int,Color>(); readonly Random m_rand = new Random(); public TraceForm() { InitializeComponent(); } protected override void OnFormClosing(FormClosingEventArgs e) { base.OnFormClosing(e); if (!e.Cancel && e.CloseReason == CloseReason.UserClosing) { e.Cancel = true; Hide(); } } public void AddTraceEvent(int indent, int thread, string message) { traceViewItemBindingSource.Add(new TraceViewItem { Indent = indent, Thread = thread, Message = message, Timestamp = Environment.TickCount }); } public void AddTraceEvent(TraceViewItem item) { traceViewItemBindingSource.Add(item); } 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]; e.CellStyle.Padding = new Padding(data.Indent * 10,0,0,0); e.CellStyle.ForeColor = GetThreadColor(data.Thread); } } }