/// <summary> /// Load state. /// </summary> /// <param name="state"></param> public void LoadState(SerializationInfoEx state) { if (state.ContainsValue("_stringFilter")) { StringTracerFilter stringFilter = state.GetValue <StringTracerFilter>("_stringFilter"); if (_stringFilter != null) { _stringFilter.CopyDataFrom(stringFilter); } } if (state.ContainsValue("_stringInputFilter")) { StringTracerFilter stringInputFilter = state.GetValue <StringTracerFilter>("_stringInputFilter"); if (_stringInputFilter != null) { _stringInputFilter.CopyDataFrom(stringInputFilter); } } WinFormsHelper.DirectOrManagedInvoke(this, UpdateFiltersUI); }
/// <summary> /// Obtain filtering data from other filter. /// </summary> public override void CopyDataFrom(TracerFilter otherFilter) { StringTracerFilter filter = otherFilter as StringTracerFilter; this._positiveFilterString = filter.PositiveFilterString; if (filter.NegativeFilterStrings == null) { this._negativeFilterStrings = null; } else { if (filter.NegativeFilterStrings != null) { this._negativeFilterStrings = new List <string>(filter.NegativeFilterStrings); } else { this._negativeFilterStrings = null; } } RaiseFilterUpdatedEvent(false); }
private void listView_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) { e.Item = new ListViewItem(); TracerItem tracerItem = null; // If we are in the last items, make sure to always leave them blank. if (e.ItemIndex <= listView.VirtualListSize - CleanVirtualItemsCount) { if (_itemKeeperSink != null) { tracerItem = _itemKeeperSink.GetFilteredItem(e.ItemIndex); } } if (tracerItem == null) { e.Item.SubItems.Clear(); for (int i = 0; i < listView.Columns.Count; i++) { e.Item.SubItems.Add(string.Empty); } return; } switch (tracerItem.FullType) { case TracerItem.TypeEnum.MethodEntry: e.Item.ImageIndex = 3; break; case TracerItem.TypeEnum.MethodExit: e.Item.ImageIndex = 4; break; case TracerItem.TypeEnum.Trace: e.Item.ImageIndex = 0; break; case TracerItem.TypeEnum.System: e.Item.ImageIndex = 6; break; case TracerItem.TypeEnum.Warning: case (TracerItem.TypeEnum.Warning | TracerItem.TypeEnum.Operation): e.Item.ImageIndex = 5; break; case (TracerItem.TypeEnum.Error | TracerItem.TypeEnum.Operation): case TracerItem.TypeEnum.Error: e.Item.ImageIndex = 2; break; default: // If there are only items with no images, the image column width gets // substraced from the Column.0 width and this causes a bug. e.Item.ImageIndex = 0; break; } if (e.Item.UseItemStyleForSubItems) { e.Item.UseItemStyleForSubItems = false; } Color color = GetPriorityColor(tracerItem.Priority); if (color != e.Item.SubItems[0].BackColor) { e.Item.SubItems[0].BackColor = color; } string day = tracerItem.DateTime.Day.ToString(); if (tracerItem.DateTime.Day == 1) { day += "st"; } else if (tracerItem.DateTime.Day == 2) { day += "nd"; } else if (tracerItem.DateTime.Day == 3) { day += "rd"; } else { day += "th"; } string time = string.Empty; Tracer tracer = _tracer; if (tracer != null) { if (tracer.TimeDisplayFormat == CommonSupport.Tracer.TimeDisplayFormatEnum.ApplicationTicks) {// Application time. time = Math.Round(((decimal)tracerItem.ApplicationTick / (decimal)Stopwatch.Frequency), 6).ToString(); } else if (tracer.TimeDisplayFormat == CommonSupport.Tracer.TimeDisplayFormatEnum.DateTime) {// Date time conventional. time = day + tracerItem.DateTime.ToString(", HH:mm:ss:ffff"); } else {// Combined. time = day + tracerItem.DateTime.ToString(", HH:mm:ss:ffff"); time += " | " + Math.Round(((decimal)tracerItem.ApplicationTick / (decimal)Stopwatch.Frequency), 6).ToString(); } } e.Item.Text = tracerItem.Index + ", " + time; e.Item.SubItems.Add(tracerItem.PrintMessage()); if (string.IsNullOrEmpty(_markingMatch) == false) { if (StringTracerFilter.FilterItem(tracerItem, _markingMatch, null)) { e.Item.BackColor = Color.PowderBlue; } } }
private void listView_RetrieveVirtualItem(object sender, RetrieveVirtualItemEventArgs e) { e.Item = new ListViewItem(); TracerItem tracerItem = null; // If we are in the last items, make sure to always leave them blank. if (e.ItemIndex <= listView.VirtualListSize - CleanVirtualItemsCount) { lock (_itemKeeperSink) {// Hold the tracer not allowing it to modify its collection before we read it. if (_itemKeeperSink != null && _itemKeeperSink.FilteredItemsCount > e.ItemIndex) { tracerItem = _itemKeeperSink.FilteredItemsUnsafe[e.ItemIndex]; } } } if (tracerItem == null) { e.Item.SubItems.Clear(); for (int i = 0; i < listView.Columns.Count; i++) { e.Item.SubItems.Add(string.Empty); } return; } switch (tracerItem.FullType) { case TracerItem.TypeEnum.MethodEntry: e.Item.ImageIndex = 3; break; case TracerItem.TypeEnum.MethodExit: e.Item.ImageIndex = 4; break; case TracerItem.TypeEnum.Trace: e.Item.ImageIndex = 0; break; case TracerItem.TypeEnum.System: e.Item.ImageIndex = 6; break; case TracerItem.TypeEnum.Warning: case (TracerItem.TypeEnum.Warning | TracerItem.TypeEnum.Operation): e.Item.ImageIndex = 5; break; case (TracerItem.TypeEnum.Error | TracerItem.TypeEnum.Operation): case TracerItem.TypeEnum.Error: e.Item.ImageIndex = 2; break; } if (e.Item.UseItemStyleForSubItems) { e.Item.UseItemStyleForSubItems = false; } Color color = GetPriorityColor(tracerItem.Priority); if (color != e.Item.SubItems[0].BackColor) { e.Item.SubItems[0].BackColor = color; } string day = tracerItem.DateTime.Day.ToString(); if (tracerItem.DateTime.Day == 1) { day += "st"; } else if (tracerItem.DateTime.Day == 2) { day += "nd"; } else if (tracerItem.DateTime.Day == 3) { day += "rd"; } else { day += "th"; } string time = day + tracerItem.DateTime.ToString(", HH:mm:ss:ffff"); e.Item.Text = tracerItem.Index /*(Tracer.TotalItemsCount - (Tracer.FilteredItemsCount - e.ItemIndex)).ToString()*/ + ", " + time; e.Item.SubItems.Add(tracerItem.PrintMessage()); if (string.IsNullOrEmpty(_markingMatch) == false) { if (StringTracerFilter.FilterItem(tracerItem, _markingMatch, null)) { e.Item.BackColor = Color.MistyRose; } } }