Esempio n. 1
0
        /// <summary>
        /// Handles the RunWorkerCompleted event of the LineOffsetArrayBuilder control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.ComponentModel.RunWorkerCompletedEventArgs"/> instance containing the event data.</param>
        private void LineOffsetDicoBuilder_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Cancelled)
            {
                return;
            }

            BuilderProgress.Value = (int)(m_Progress * 100.0);

            foreach (LogBlock Block in m_NewNodes)
            {
                TreeNode Node = new TreeNode();

                Node.Name = Block.Name;
                Node.Text = Block.Text;
                Node.Tag  = Block;

                if (LogTree.Nodes.Count > 0)
                {
                    TreeNode LastNode = GetLastNode(LogTree.Nodes[LogTree.Nodes.Count - 1], Block.Parent);

                    if (LastNode != null)
                    {
                        LastNode.Nodes.Add(Node);
                    }
                    else
                    {
                        LogTree.Nodes.Add(Node);
                    }
                }
                else
                {
                    LogTree.Nodes.Add(Node);
                }
            }

            ThePlotter.RefreshPlots();

            LineOffsetDicoBuilder.RunWorkerAsync();
        }
Esempio n. 2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void BtClearMarkers_Click(object sender, EventArgs e)
 {
     ThePlotter.ClearMarkers();
 }
Esempio n. 3
0
        /// <summary>
        /// Handles the DoWork event of the LineOffsetArrayBuilder control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="System.ComponentModel.DoWorkEventArgs"/> instance containing the event data.</param>
        private void LineOffsetDicoBuilder_DoWork(object sender, DoWorkEventArgs e)
        {
            Thread.Sleep(10);

            m_NewNodes = new List <LogBlock>();

            Int64 Line   = 0;
            Int64 Offset = 0;

            // Get the last offset/line where we stopped

            if (m_LineOffsetDico.Keys.Count > 0)
            {
                List <Int64> KeyList = new List <Int64>(m_LineOffsetDico.Keys);
                Line   = KeyList[KeyList.Count - 1];
                Offset = m_LineOffsetDico[Line];
            }

            FileStream TheStream = null;

            try
            {
                int LineCount = 0;

                // Open stream, read a line and close stream

                TheStream = new FileStream(m_FileName, FileMode.Open, FileAccess.Read, System.IO.FileShare.ReadWrite);

                while (true && LineCount < 1000)
                {
                    if (LineOffsetDicoBuilder.CancellationPending)
                    {
                        e.Cancel = true;
                        return;
                    }

                    Int64 SavedOffset = 0;

                    TheStream.Position = Offset;
                    SavedOffset        = Offset;
                    String LineString = GetLine(TheStream);
                    Offset = TheStream.Position;

                    if (LineString == String.Empty)
                    {
                        break;
                    }

                    if (m_LineOffsetDico.ContainsKey(Line) == false)
                    {
                        m_LineOffsetDico.Add(Line, SavedOffset);

                        LogBlock Block = GetLineBlock(LineString);

                        if (Block != null)
                        {
                            if (Block.Plot == String.Empty)
                            {
                                Block.Offset = SavedOffset;
                                Block.Line   = Line;

                                m_NewNodes.Add(Block);

                                m_OffsetBlockDico.Add(SavedOffset, Block);
                            }
                            else
                            {
                                ThePlotter.AddValue(Block.Name, new LogValue(Block.Time, Block.PlotValue));
                            }
                        }

                        Line++;
                    }
                    else
                    {
                        Line++;
                    }

                    LineCount++;
                }

                m_Progress = ((double)Offset / (double)TheStream.Length);

                TheStream.Close();
                TheStream.Dispose();
            }
            catch (Exception Ex)
            {
                Console.WriteLine(Ex.ToString());
            }
        }