From f30dcf5ef41d54c588d7b42c48be8d941abba72e Mon Sep 17 00:00:00 2001 From: Michael Date: Sun, 8 Jan 2017 09:57:10 -0500 Subject: Initial upload --- ShiftOS_TheReturn/TerminalTextWriter.cs | 75 +++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 ShiftOS_TheReturn/TerminalTextWriter.cs (limited to 'ShiftOS_TheReturn/TerminalTextWriter.cs') diff --git a/ShiftOS_TheReturn/TerminalTextWriter.cs b/ShiftOS_TheReturn/TerminalTextWriter.cs new file mode 100644 index 0000000..b36c13a --- /dev/null +++ b/ShiftOS_TheReturn/TerminalTextWriter.cs @@ -0,0 +1,75 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.IO; +using System.Windows.Forms; + +namespace ShiftOS.Engine +{ + public class TerminalTextWriter : TextWriter + { + [System.Runtime.InteropServices.DllImport("user32.dll")] + public static extern bool LockWindowUpdate(IntPtr hWndLock); + + + public override Encoding Encoding + { + get + { + return Encoding.Unicode; + } + } + + public ITerminalWidget UnderlyingControl + { + get + { + return AppearanceManager.ConsoleOut; + } + } + + public void select() + { + Desktop.InvokeOnWorkerThread(new Action(() => + { + UnderlyingControl.SelectBottom(); + + })); + } + + public override void Write(char value) + { + Desktop.InvokeOnWorkerThread(new Action(() => + { + UnderlyingControl.Write(value.ToString()); + select(); + })); + } + + public override void WriteLine(string value) + { + Desktop.InvokeOnWorkerThread(new Action(() => + { + UnderlyingControl.WriteLine(value); + select(); + })); + } + + public void SetLastText() + { + } + + public override void Write(string value) + { + Desktop.InvokeOnWorkerThread(new Action(() => + { + UnderlyingControl.Write(value.ToString()); + select(); + })); + } + + + } +} -- cgit v1.2.3