Exemplo n.º 1
0
        public void AddEvents(bool onlyPlot = false)
        {
            richTextBox1.Text = "";
            if (Entries == null)
            {
                return;
            }
            if (MForm.GetCurrentMode() != MainMode.Events) //TODO Merge this with else for no repeated code
            {
                RefreshEvents = true;
            }
            else
            {
                RefreshEvents = false;
                listViewEvents.BeginUpdate();
                listViewEvents.ListViewItemSorter = null;
                lastIndexSelectedEvents           = -1;
                listViewEvents.Items.Clear();
            }


            GraphView.ClearMessages();

            var dupDict = new Dictionary <string, DateTime>(StringComparer.OrdinalIgnoreCase);

            EventsDict = new Dictionary <double, List <string> >();
            foreach (var entry in Entries.Where(e => e.Data.Contains(Filter, StringComparison.OrdinalIgnoreCase)))
            {
                DataPoint po = new DataPoint(entry.Time.ToOADate(), 15);
                po.MarkerSize = 6;
                ListViewItem item = new ListViewItem();
                item.UseItemStyleForSubItems = false;
                if (GraphView.CanUseMatchTime && GraphView.UseMatchTime)
                {
                    item.Text = ((entry.Time - GraphView.MatchTime).TotalMilliseconds / 1000.0).ToString("0.###");
                }
                else
                {
                    item.Text = entry.Time.ToString("h:mm:ss.fff tt");
                }

                string entryText = entry.Data;
                if (FilterImportant && !IsMessageImportant(entryText))
                {
                    continue;
                }
                if (RemoveJoystick)
                {
                    var NoJoyText = RemoveJoyStickMessages(entryText);
                    if (!NoJoyText.Contains(Filter, StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }
                    if (string.IsNullOrWhiteSpace(NoJoyText))
                    {
                        continue;
                    }
                    entryText = Regex.Replace(NoJoyText, @"\s+", " ", RegexOptions.Compiled);
                }
                if (FilterCodeOutput)
                {
                    entryText = CodeFilterRegex.Replace(entryText, "").Trim();
                    if (!entryText.Contains(Filter, StringComparison.OrdinalIgnoreCase))
                    {
                        continue;
                    }
                    if (string.IsNullOrWhiteSpace(entryText))
                    {
                        continue;
                    }
                }
                if (FilterRepeated && (dupDict.ContainsKey(entryText) && (dupDict[entryText] - entry.Time).Duration().TotalSeconds < 4.0))
                {
                    continue;
                }
                else
                {
                    dupDict[entryText] = entry.Time;
                }



                item.SubItems.Add(entryText);

                if (entry.Data.Contains("ERROR") || entry.Data.Contains("<flags> 1"))
                {
                    item.SubItems[1].BackColor = Color.Red;
                    po.Color      = Color.Red;
                    po.YValues[0] = 14.7;
                }
                else if (entry.Data.Contains("<Code> 44004 "))
                {
                    item.SubItems[1].BackColor = Color.SandyBrown;
                    po.Color       = Color.SandyBrown;
                    po.MarkerStyle = MarkerStyle.Square;
                    po.YValues[0]  = 14.7;
                }
                else if (entry.Data.Contains("<Code> 44008 "))
                {
                    AddRadioEvents(entry);
                    item.SubItems[1].BackColor = Color.Khaki;
                    po.Color      = Color.Khaki;
                    po.YValues[0] = 14.7;
                }
                else if (entry.Data.Contains("Warning") || entry.Data.Contains("<flags> 2") || entry.Data.Contains("<Code> -44009 "))
                {
                    item.SubItems[1].BackColor = Color.Khaki;
                    po.Color      = Color.Khaki;
                    po.YValues[0] = 14.7;
                }
                item.SubItems.Add("" + entry.Time.ToOADate());
                var mode = GraphView.GetEntryAt(entry.Time.ToOADate());

                item.SubItems[0].BackColor = Color.DarkGray;
                if (mode != null)
                {
                    if (mode.DSAuto)
                    {
                        item.SubItems[0].BackColor = Color.Lime;
                    }
                    else if (mode.DSTele)
                    {
                        item.SubItems[0].BackColor = Color.Cyan;
                    }
                }

                if (MForm.GetCurrentMode() == MainMode.Events)
                {
                    listViewEvents.Items.Add(item);
                }
                GraphView.AddMessage(po);
                AddEntryToDict(entry.Time.ToOADate(), entryText);
            }

            if (MForm.GetCurrentMode() == MainMode.Events)
            {
                listViewEvents.Columns[0].Width = -2;
                listViewEvents.EndUpdate();
            }
        }