예제 #1
0
        /// <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);
        }
예제 #3
0
        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;
                }
            }
        }
예제 #4
0
        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;
                }
            }
        }