예제 #1
0
        /// <summary>
        /// Returns a list of lines from the terminal model buffer
        /// </summary>
        /// <param name="from">The first line to return</param>
        /// <param name="count">The number of lines to return as a liat</param>
        /// <returns>The requetsed lines</returns>
        public TerminalLine [] GetLines(int from, int count)
        {
            var result = new TerminalLine[count];

            for (int i = 0; i < count; i++)
            {
                result[i] = ((from + i) >= Parent.Buffer.Count) ? null : Parent.Buffer[from + i];
            }

            return(result);
        }
예제 #2
0
        TerminalRun[] CopyLine(TerminalLine line)
        {
            var runs   = line.Runs;
            var result = new TerminalRun[runs.Count];

            for (int i = 0; i < runs.Count; ++i)
            {
                var run = runs[i];
                result[i] = new TerminalRun(run.Text, run.Font);
            }
            return(result);
        }
예제 #3
0
        public void AddMessage(string text, TerminalFont font)
        {
            prepareHistory(1);

            var line         = new TerminalLine();
            int leftPadding  = (Terminal.Size.Col - text.Length) / 2;
            int rightPadding = (Terminal.Size.Col - text.Length + 1) / 2;

            line.SetCharacters(0, new string(' ', leftPadding), font);
            line.SetCharacters(leftPadding, text, font);
            line.SetCharacters(leftPadding + text.Length, new string(' ', rightPadding), font);

            var visual = new TerminalLineVisual(this, line);

            visual.Offset = new Vector(0.0, history.Count * CharHeight);
            AddVisualChild(visual);
            history.PushBack(line);
        }
예제 #4
0
        public void DeleteCharactersTest()
        {
            TerminalLine line = new TerminalLine();

            line.SetCharacters(0, new string('0', 4), new TerminalFont()
            {
                Foreground = Color.FromRgb(0, 0, 0)
            });
            line.SetCharacters(4, new string('1', 4), new TerminalFont()
            {
                Foreground = Color.FromRgb(1, 1, 1)
            });
            line.SetCharacters(8, new string('2', 4), new TerminalFont()
            {
                Foreground = Color.FromRgb(2, 2, 2)
            });
            line.SetCharacters(12, new string('3', 4), new TerminalFont()
            {
                Foreground = Color.FromRgb(3, 3, 3)
            });
            line.DeleteCharacters(7, 6);

            TerminalRun[] expectedRuns = new[]
            {
                new TerminalRun(new string('0', 4), new TerminalFont()
                {
                    Foreground = Color.FromRgb(0, 0, 0)
                }),
                new TerminalRun(new string('1', 3), new TerminalFont()
                {
                    Foreground = Color.FromRgb(1, 1, 1)
                }),
                new TerminalRun(new string('3', 3), new TerminalFont()
                {
                    Foreground = Color.FromRgb(3, 3, 3)
                }),
            };

            AssertAreEqual(line.Runs[0], expectedRuns[0]);
            AssertAreEqual(line.Runs[1], expectedRuns[1]);
            AssertAreEqual(line.Runs[2], expectedRuns[2]);
        }
예제 #5
0
 public TerminalLineVisual(TerminalControlCore terminal, TerminalLine line)
 {
     this.Terminal = terminal;
     this.Line     = line;
 }
예제 #6
0
        public void AddMessage(string text, TerminalFont font)
        {
            prepareHistory(1);

            var line = new TerminalLine();
            int leftPadding = (Terminal.Size.Col - text.Length) / 2;
            int rightPadding = (Terminal.Size.Col - text.Length + 1) / 2;
            line.SetCharacters(0, new string(' ', leftPadding), font);
            line.SetCharacters(leftPadding, text, font);
            line.SetCharacters(leftPadding + text.Length, new string(' ', rightPadding), font);

            var visual = new TerminalLineVisual(this, line);
            visual.Offset = new Vector(0.0, history.Count * CharHeight);
            AddVisualChild(visual);
            history.PushBack(line);
        }