Example #1
0
        internal void AppendToLog(string text, LogItemType type)
        {
            if (InvokeRequired)
            {
                if (AppendToLogDelegater == null)
                {
                    AppendToLogDelegater = new AppendToLogDelegate(AppendToLog);
                }
                Invoke(AppendToLogDelegater, new object[] { text, type });
            }
            else
            {
                Color colText;
                // TODO let the user configure the colours
                switch (type)
                {
                case LogItemType.Action:
                    colText = Color.Black;
                    break;

                case LogItemType.Start:
                    colText = Color.Turquoise;
                    break;

                case LogItemType.Finish:
                    colText = Color.Brown;
                    break;

                case LogItemType.Pass:
                    colText = Color.Green;
                    break;

                case LogItemType.Fail:
                    colText = Color.Red;
                    break;

                case LogItemType.Disabled:
                    colText = Color.LightGray;
                    break;

                case LogItemType.NA:
                    colText = Color.Purple;
                    break;

                case LogItemType.Debug:
                    colText = Color.SlateGray;
                    break;

                case LogItemType.Information:
                    colText = Color.Navy;
                    break;

                case LogItemType.Warning:
                    colText = Color.LightPink;
                    break;

                case LogItemType.Error:
                    colText = Color.DeepPink;
                    break;

                default:
                    throw GUI.ApeException("Implement support for LogItemType." + type.ToString());
                }

                string TextToAdd;

                Lines += 1;

                if (Lines == 1)
                {
                    TextToAdd = text;
                }
                else
                {
                    TextToAdd = "\n" + text;
                }

                // Append the line and set its colour to be correct
                int TextLengthBeforeAppend = rtbLogViewer.TextLength;
                rtbLogViewer.AppendText(TextToAdd);
                rtbLogViewer.SelectionStart  = TextLengthBeforeAppend;
                rtbLogViewer.SelectionLength = TextToAdd.Length;
                rtbLogViewer.SelectionColor  = colText;
                rtbLogViewer.ScrollToCaret();

                // If we have more than 40 lines
                if (Lines > 40)
                {
                    // Remove the first line currently in the rich text box
                    rtbLogViewer.SelectionStart  = 0;
                    rtbLogViewer.SelectionLength = rtbLogViewer.Text.IndexOf('\n') + 1;
                    rtbLogViewer.ReadOnly        = false;
                    rtbLogViewer.SelectedText    = "";
                    rtbLogViewer.ReadOnly        = true;
                    Lines -= 1;
                    rtbLogViewer.SelectionStart = rtbLogViewer.TextLength;
                }
            }
        }