From 7efdde5832b517153363621aaec982211ff25f61 Mon Sep 17 00:00:00 2001 From: Alex-TIMEHACK Date: Sun, 15 Oct 2017 17:01:17 +0100 Subject: [PATCH 1/6] Tiny change - github bugging out --- ShiftOS.Engine/Terminal/TerminalCommand.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/ShiftOS.Engine/Terminal/TerminalCommand.cs b/ShiftOS.Engine/Terminal/TerminalCommand.cs index a344122..b5dd8bf 100644 --- a/ShiftOS.Engine/Terminal/TerminalCommand.cs +++ b/ShiftOS.Engine/Terminal/TerminalCommand.cs @@ -6,10 +6,14 @@ using System.Threading.Tasks; namespace ShiftOS.Engine.Terminal { - public abstract class TerminalCommand + public class TerminalCommand { - public abstract string GetName(); + public string GetName() { return ""; } - public abstract string Run(params string[] parameters); + public void Run(params string[] parameters) { return ""; } + + public void Run(params string[] parameters) { + + } } } From b2f7322f3072ff90c8e6039ec4b3219d3c3fb919 Mon Sep 17 00:00:00 2001 From: Alex-TIMEHACK Date: Sun, 15 Oct 2017 20:25:37 +0100 Subject: [PATCH 2/6] It's broken. --- ShiftOS.Engine/ShiftOS.Engine.csproj | 3 - ShiftOS.Engine/Terminal/Commands/Hello.cs | 21 ----- ShiftOS.Engine/Terminal/TerminalCommand.cs | 19 ---- ShiftOS.Main/ShiftOS.Main.csproj | 3 + .../ShiftOS/Apps/Terminal.Designer.cs | 2 +- ShiftOS.Main/ShiftOS/Apps/Terminal.cs | 72 +++++++++------ ShiftOS.Main/ShiftOS/Desktop.cs | 2 +- ShiftOS.Main/Terminal/Commands/Hello.cs | 25 +++++ .../Terminal/TerminalBackend.cs | 27 +++--- ShiftOS.Main/Terminal/TerminalCommand.cs | 92 +++++++++++++++++++ 10 files changed, 181 insertions(+), 85 deletions(-) delete mode 100644 ShiftOS.Engine/Terminal/Commands/Hello.cs delete mode 100644 ShiftOS.Engine/Terminal/TerminalCommand.cs create mode 100644 ShiftOS.Main/Terminal/Commands/Hello.cs rename {ShiftOS.Engine => ShiftOS.Main}/Terminal/TerminalBackend.cs (57%) create mode 100644 ShiftOS.Main/Terminal/TerminalCommand.cs diff --git a/ShiftOS.Engine/ShiftOS.Engine.csproj b/ShiftOS.Engine/ShiftOS.Engine.csproj index 6740db1..8d3d003 100644 --- a/ShiftOS.Engine/ShiftOS.Engine.csproj +++ b/ShiftOS.Engine/ShiftOS.Engine.csproj @@ -52,9 +52,6 @@ True Resources.resx - - - UserControl diff --git a/ShiftOS.Engine/Terminal/Commands/Hello.cs b/ShiftOS.Engine/Terminal/Commands/Hello.cs deleted file mode 100644 index 531bd1f..0000000 --- a/ShiftOS.Engine/Terminal/Commands/Hello.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ShiftOS.Engine.Terminal.Commands -{ - public class Hello : TerminalCommand - { - public override string GetName() - { - return "Hello"; - } - - public override string Run(params string[] parameters) - { - return "Oh, HELLO, " + String.Join(" ", parameters); - } - } -} diff --git a/ShiftOS.Engine/Terminal/TerminalCommand.cs b/ShiftOS.Engine/Terminal/TerminalCommand.cs deleted file mode 100644 index b5dd8bf..0000000 --- a/ShiftOS.Engine/Terminal/TerminalCommand.cs +++ /dev/null @@ -1,19 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace ShiftOS.Engine.Terminal -{ - public class TerminalCommand - { - public string GetName() { return ""; } - - public void Run(params string[] parameters) { return ""; } - - public void Run(params string[] parameters) { - - } - } -} diff --git a/ShiftOS.Main/ShiftOS.Main.csproj b/ShiftOS.Main/ShiftOS.Main.csproj index 7c19b38..b2e9739 100644 --- a/ShiftOS.Main/ShiftOS.Main.csproj +++ b/ShiftOS.Main/ShiftOS.Main.csproj @@ -88,6 +88,9 @@ Desktop.cs + + + HijackScreen.cs diff --git a/ShiftOS.Main/ShiftOS/Apps/Terminal.Designer.cs b/ShiftOS.Main/ShiftOS/Apps/Terminal.Designer.cs index e92cdb4..b514bbf 100644 --- a/ShiftOS.Main/ShiftOS/Apps/Terminal.Designer.cs +++ b/ShiftOS.Main/ShiftOS/Apps/Terminal.Designer.cs @@ -60,6 +60,6 @@ #endregion - private System.Windows.Forms.RichTextBox termmain; + public System.Windows.Forms.RichTextBox termmain; } } diff --git a/ShiftOS.Main/ShiftOS/Apps/Terminal.cs b/ShiftOS.Main/ShiftOS/Apps/Terminal.cs index a9bd093..1bd5c03 100644 --- a/ShiftOS.Main/ShiftOS/Apps/Terminal.cs +++ b/ShiftOS.Main/ShiftOS/Apps/Terminal.cs @@ -8,15 +8,19 @@ using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using ShiftOS.Engine; -using ShiftOS.Engine.Terminal; +using ShiftOS.Main.Terminal; namespace ShiftOS.Main.ShiftOS.Apps { public partial class Terminal : UserControl { + public int TerminalID = TerminalBackend.trmTopID++; // Used so that we can have multiple instances of the terminal whilst the command begin run knowing what terminal to send the text to - very complicated ;) public string defaulttextBefore = "user> "; public string defaulttextResult = "user@shiftos> "; // NOT YET IMPLEMENTED!!! - public bool doClear = false; + public bool DoClear = false; + public bool RunningCommand = false; + public bool WaitingResponse = false; + public string InputReturnText = ""; // The below variables makes the terminal... a terminal! public string OldText = ""; @@ -27,12 +31,8 @@ namespace ShiftOS.Main.ShiftOS.Apps InitializeComponent(); termmain.ContextMenuStrip = new ContextMenuStrip(); // Disables the right click of a richtextbox! - } - public void Print(string text) - { - termmain.AppendText($"\n {text} \n {defaulttextResult}"); - TrackingPosition = termmain.Text.Length; + TerminalBackend.trm.Add(this); // Makes the commands run! } private void termmain_KeyDown(object sender, KeyEventArgs e) @@ -45,51 +45,67 @@ namespace ShiftOS.Main.ShiftOS.Apps // termmain.Paste(DataFormats.GetFormat(DataFormats.Text)); e.Handled = true; } else if (e.KeyCode == Keys.Enter) { - Print(TerminalBackend.RunCommand(termmain.Text.Substring(TrackingPosition, termmain.Text.Length - TrackingPosition))); // The most horrific line in the entire application! + RunningCommand = true; + TerminalBackend.RunCommand(termmain.Text.Substring(TrackingPosition, termmain.Text.Length - TrackingPosition), TerminalID); // The most horrific line in the entire application! + RunningCommand = false; + termmain.AppendText($"\n {defaulttextResult}"); + TrackingPosition = termmain.Text.Length; e.Handled = true; } } private void termmain_TextChanged(object sender, EventArgs e) { - if (termmain.SelectionStart < TrackingPosition) + if (!RunningCommand) { - if (doClear == false) // If it's not clearing the terminal + if (termmain.SelectionStart < TrackingPosition) { - termmain.Text = OldText; - termmain.Select(termmain.Text.Length, 0); + if (!DoClear) // If it's not clearing the terminal + { + termmain.Text = OldText; + termmain.Select(termmain.Text.Length, 0); + } + } + else + { + OldText = termmain.Text; } - } - else - { - OldText = termmain.Text; } } private void termmain_SelectionChanged(object sender, EventArgs e) { - if (termmain.SelectionStart < TrackingPosition) + if (!RunningCommand) { - termmain.Text = OldText; - termmain.Select(termmain.Text.Length, 0); + if (termmain.SelectionStart < TrackingPosition) + { + termmain.Text = OldText; + termmain.Select(termmain.Text.Length, 0); + } } } private void Terminal_Load(object sender, EventArgs e) { - Print("\n"); + termmain.Text = $"\n {defaulttextResult}"; + TrackingPosition = termmain.Text.Length; } - public string RunCommand(string command) + public void Input(string request) { - string ToReturn = ""; + InputReturnText = ""; + RunningCommand = false; - if (command == "hi") - { - ToReturn = $"{ToReturn} \n Hi!"; - MessageBox.Show("HI!"); - } - return ToReturn; + termmain.AppendText($"\n {request} "); + TrackingPosition = termmain.Text.Length; + } + + public void Clear() + { + DoClear = true; + termmain.Text = $"\n {defaulttextResult}"; + TrackingPosition = termmain.Text.Length; + DoClear = false; } } } diff --git a/ShiftOS.Main/ShiftOS/Desktop.cs b/ShiftOS.Main/ShiftOS/Desktop.cs index 06f1fc8..3477788 100644 --- a/ShiftOS.Main/ShiftOS/Desktop.cs +++ b/ShiftOS.Main/ShiftOS/Desktop.cs @@ -61,7 +61,7 @@ namespace ShiftOS.Main.ShiftOS private void terminalToolStripMenuItem_Click(object sender, EventArgs e) { Apps.Terminal trm = new Apps.Terminal(); - + ShiftWM.Init(trm, "Terminal", null, false, true); } } diff --git a/ShiftOS.Main/Terminal/Commands/Hello.cs b/ShiftOS.Main/Terminal/Commands/Hello.cs new file mode 100644 index 0000000..efc9a9a --- /dev/null +++ b/ShiftOS.Main/Terminal/Commands/Hello.cs @@ -0,0 +1,25 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ShiftOS.Main.Terminal.Commands +{ + public class Hello : TerminalCommand + { + public override string Name { get; } = "Hello"; + public override string Summary { get; } = "Just an example command."; + public override string Usage { get; } = "Hello ."; + public override bool Unlocked { get; set; } = false; + + public override async void Run(params string[] parameters) + { + string name = string.Join(" ", parameters); + WriteLine($"Oh, hello, {name}.", Color.Red); + string age = await Input("Hey, What's your age?"); + WriteLine($"Ok, so your name is {name} and your age {age}."); + } + } +} diff --git a/ShiftOS.Engine/Terminal/TerminalBackend.cs b/ShiftOS.Main/Terminal/TerminalBackend.cs similarity index 57% rename from ShiftOS.Engine/Terminal/TerminalBackend.cs rename to ShiftOS.Main/Terminal/TerminalBackend.cs index 7103238..9a5785f 100644 --- a/ShiftOS.Engine/Terminal/TerminalBackend.cs +++ b/ShiftOS.Main/Terminal/TerminalBackend.cs @@ -4,8 +4,9 @@ using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; +using System.Windows.Forms; -namespace ShiftOS.Engine.Terminal +namespace ShiftOS.Main.Terminal { public static class TerminalBackend { @@ -15,12 +16,14 @@ namespace ShiftOS.Engine.Terminal && t.GetConstructor(Type.EmptyTypes) != null select Activator.CreateInstance(t) as TerminalCommand; + public static List trm = new List(); + public static int trmTopID = 0; /// /// Runs a terminal command. /// /// - /// Returns all the output from that command. - public static string RunCommand(string command) + /// The rich text box that the text will be written to. + public static void RunCommand(string command, int TermID) { string name; try { name = command.Split(' ')[0]; } catch { name = command; } @@ -30,17 +33,17 @@ namespace ShiftOS.Engine.Terminal foreach (TerminalCommand instance in instances) { - if (instance.GetName() == name) - return instance.Run(theParams); + if (instance.Name.ToLower() == name.ToLower()) + { + instance.TermID = TermID; + // Add a new line! + Array.Find(trm.ToArray(), w => w.TerminalID == TermID).termmain.AppendText("\n"); + instance.Run(theParams); + return; + } } - return "The command cannot be found."; - } - - // An extra function ;) - private static Type[] GetTypesInNamespace(Assembly assembly, string nameSpace) - { - return assembly.GetTypes().Where(t => String.Equals(t.Namespace, nameSpace, StringComparison.Ordinal)).ToArray(); + Array.Find(trm.ToArray(), w => w.TerminalID == TermID).termmain.Text += " \n The command cannot be found. \n"; } } } diff --git a/ShiftOS.Main/Terminal/TerminalCommand.cs b/ShiftOS.Main/Terminal/TerminalCommand.cs new file mode 100644 index 0000000..4746e6c --- /dev/null +++ b/ShiftOS.Main/Terminal/TerminalCommand.cs @@ -0,0 +1,92 @@ +using System; +using System.Collections.Generic; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ShiftOS.Main.Terminal +{ + public class TerminalCommand + { + public int TermID { get; set; } + + public virtual string Name { get; } + public virtual string Summary { get; } + public virtual string Usage { get; } + public virtual bool Unlocked { get; set; } + + public virtual void Run(params string[] parameters) { } + + /// + /// Writes a blank line in the terminal. + /// + public virtual void WriteLine() + { + WriteLine(""); + } + + /// + /// Writes specified text in the terminal and starts a new line. + /// + /// The text to write before the new line is made. + public virtual void WriteLine(string value) + { + Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID).termmain.AppendText($"{value} \n"); + } + + /// + /// Writes specified text in the terminal in the specified color and starts a new line. + /// + /// The text to write before the new line is made. + /// The color the text is written in. + public virtual void WriteLine(string value, Color textClr) + { + ShiftOS.Apps.Terminal trm = Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID); + + int startPoint = trm.termmain.Text.Length; + trm.termmain.AppendText($"{value} \n"); + trm.termmain.Select(startPoint, $"{value} \n".Length); + trm.termmain.SelectionColor = textClr; + } + + /// + /// Writes specified text in the terminal. + /// + /// The text to write. + /// The color the text is written in. + public virtual void Write(string value, Color textClr) + { + + ShiftOS.Apps.Terminal trm = Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID); + + int startPoint = trm.termmain.Text.Length; + trm.termmain.AppendText($"{value}"); + trm.termmain.Select(startPoint, $"{value}".Length); + trm.termmain.SelectionColor = textClr; + } + + /// + /// Writes specified text in the terminal. + /// + /// The text to say before requesting text. + public virtual Task Input(string value = "") + { + ShiftOS.Apps.Terminal trm = Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID); + trm.Input(value); + + Task Input = new Task(() => + { + while (true) + if (trm.InputReturnText != "") break; + + // The terminal has finally decided! + + return trm.InputReturnText; + }); + Input.Start(); + return Input; + } + } +} From 65b7ac2b8cbc4478f6d31a21f106048aeb075078 Mon Sep 17 00:00:00 2001 From: Alex-TIMEHACK Date: Sat, 18 Nov 2017 16:09:54 +0000 Subject: [PATCH 3/6] Removed Input() stuff! --- ShiftOS.Main/Terminal/Commands/Hello.cs | 6 ++--- ShiftOS.Main/Terminal/TerminalBackend.cs | 7 +++--- ShiftOS.Main/Terminal/TerminalCommand.cs | 28 ++++++++++++------------ 3 files changed, 19 insertions(+), 22 deletions(-) diff --git a/ShiftOS.Main/Terminal/Commands/Hello.cs b/ShiftOS.Main/Terminal/Commands/Hello.cs index efc9a9a..a826532 100644 --- a/ShiftOS.Main/Terminal/Commands/Hello.cs +++ b/ShiftOS.Main/Terminal/Commands/Hello.cs @@ -14,12 +14,10 @@ namespace ShiftOS.Main.Terminal.Commands public override string Usage { get; } = "Hello ."; public override bool Unlocked { get; set; } = false; - public override async void Run(params string[] parameters) + public override void Run(params string[] parameters) { string name = string.Join(" ", parameters); - WriteLine($"Oh, hello, {name}.", Color.Red); - string age = await Input("Hey, What's your age?"); - WriteLine($"Ok, so your name is {name} and your age {age}."); + WriteLine($"Oh, hello, {name}."); } } } diff --git a/ShiftOS.Main/Terminal/TerminalBackend.cs b/ShiftOS.Main/Terminal/TerminalBackend.cs index 9a5785f..02c9cd0 100644 --- a/ShiftOS.Main/Terminal/TerminalBackend.cs +++ b/ShiftOS.Main/Terminal/TerminalBackend.cs @@ -11,10 +11,9 @@ namespace ShiftOS.Main.Terminal public static class TerminalBackend { // The line below gets all the terminal commands in... well... the entire ShiftOS.Engine - public static IEnumerable instances = from t in Assembly.GetExecutingAssembly().GetTypes() - where t.IsSubclassOf(typeof(TerminalCommand)) - && t.GetConstructor(Type.EmptyTypes) != null - select Activator.CreateInstance(t) as TerminalCommand; + public static IEnumerable instances = Assembly.GetExecutingAssembly().GetTypes() + .Where(t => t.IsSubclassOf(typeof(TerminalCommand)) && t.GetConstructor(Type.EmptyTypes) != null) + .Select(t => Activator.CreateInstance(t) as TerminalCommand); public static List trm = new List(); public static int trmTopID = 0; diff --git a/ShiftOS.Main/Terminal/TerminalCommand.cs b/ShiftOS.Main/Terminal/TerminalCommand.cs index 4746e6c..5f313be 100644 --- a/ShiftOS.Main/Terminal/TerminalCommand.cs +++ b/ShiftOS.Main/Terminal/TerminalCommand.cs @@ -71,22 +71,22 @@ namespace ShiftOS.Main.Terminal /// Writes specified text in the terminal. /// /// The text to say before requesting text. - public virtual Task Input(string value = "") - { - ShiftOS.Apps.Terminal trm = Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID); - trm.Input(value); + //public virtual Task Input(string value = "") + //{ + // ShiftOS.Apps.Terminal trm = Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID); + // trm.Input(value); - Task Input = new Task(() => - { - while (true) - if (trm.InputReturnText != "") break; + // Task Input = new Task(() => + // { + // while (true) + // if (trm.InputReturnText != "") break; - // The terminal has finally decided! + // // The terminal has finally decided! - return trm.InputReturnText; - }); - Input.Start(); - return Input; - } + // return trm.InputReturnText; + // }); + // Input.Start(); + // return Input; + //} } } From 6faabfbbd86d70c99e197a3d8cfcf7db0680d17f Mon Sep 17 00:00:00 2001 From: Alex-TIMEHACK Date: Sat, 18 Nov 2017 16:33:30 +0000 Subject: [PATCH 4/6] Fixed fork? --- ShiftOS.Engine/ShiftOS.Engine.csproj | 3 - ShiftOS.Engine/Terminal/Commands/Hello.cs | 9 - ShiftOS.Engine/Terminal/TerminalBackend.cs | 46 ------ ShiftOS.Engine/Terminal/TerminalCommand.cs | 182 --------------------- 4 files changed, 240 deletions(-) delete mode 100644 ShiftOS.Engine/Terminal/Commands/Hello.cs delete mode 100644 ShiftOS.Engine/Terminal/TerminalBackend.cs delete mode 100644 ShiftOS.Engine/Terminal/TerminalCommand.cs diff --git a/ShiftOS.Engine/ShiftOS.Engine.csproj b/ShiftOS.Engine/ShiftOS.Engine.csproj index 218daf4..6b810fa 100644 --- a/ShiftOS.Engine/ShiftOS.Engine.csproj +++ b/ShiftOS.Engine/ShiftOS.Engine.csproj @@ -70,9 +70,6 @@ - - - UserControl diff --git a/ShiftOS.Engine/Terminal/Commands/Hello.cs b/ShiftOS.Engine/Terminal/Commands/Hello.cs deleted file mode 100644 index 7d4b82f..0000000 --- a/ShiftOS.Engine/Terminal/Commands/Hello.cs +++ /dev/null @@ -1,9 +0,0 @@ -namespace ShiftOS.Engine.Terminal.Commands -{ - public class Hello : TerminalCommand - { - public override string GetName() => "Hello"; - - public override string Run(params string[] parameters) => "Oh, HELLO, " + string.Join(" ", parameters); - } -} \ No newline at end of file diff --git a/ShiftOS.Engine/Terminal/TerminalBackend.cs b/ShiftOS.Engine/Terminal/TerminalBackend.cs deleted file mode 100644 index e079d22..0000000 --- a/ShiftOS.Engine/Terminal/TerminalBackend.cs +++ /dev/null @@ -1,46 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Reflection; - -namespace ShiftOS.Engine.Terminal -{ - public static class TerminalBackend - { - // The line below gets all the terminal commands in... well... the entire ShiftOS.Engine - public static IEnumerable instances = Assembly.GetExecutingAssembly().GetTypes() - .Where(t => t.IsSubclassOf(typeof(TerminalCommand)) && t.GetConstructor(Type.EmptyTypes) != null) - .Select(t => Activator.CreateInstance(t) as TerminalCommand); - - /// - /// Runs a terminal command. - /// - /// - /// Returns all the output from that command. - public static string RunCommand(string command) - { - string name; - try - { - name = command.Split(' ')[0]; - } - catch - { - name = command; - } - - var theParams = new string[command.Split(' ').Length - 1]; - Array.Copy(command.Split(' '), 1, theParams, 0, command.Split(' ').Length - 1); - - foreach (var instance in Instances) - { - if (instance.GetName() == name) - { - return instance.Run(theParams); - } - } - - return "The command cannot be found."; - } - } -} \ No newline at end of file diff --git a/ShiftOS.Engine/Terminal/TerminalCommand.cs b/ShiftOS.Engine/Terminal/TerminalCommand.cs deleted file mode 100644 index 110d1d2..0000000 --- a/ShiftOS.Engine/Terminal/TerminalCommand.cs +++ /dev/null @@ -1,182 +0,0 @@ -using System; - -using System.Collections.Generic; - -using System.Drawing; - -using System.Linq; - -using System.Text; - -using System.Threading.Tasks; - -using System.Windows.Forms; - - - -namespace ShiftOS.Main.Terminal -{ - - public class TerminalCommand - - { - - public int TermID { get; set; } - - - - public virtual string Name { get; } - - public virtual string Summary { get; } - - public virtual string Usage { get; } - - public virtual bool Unlocked { get; set; } - - - - public virtual void Run(params string[] parameters) { } - - - - /// - - /// Writes a blank line in the terminal. - - /// - - public virtual void WriteLine() - - { - - WriteLine(""); - - } - - - - /// - - /// Writes specified text in the terminal and starts a new line. - - /// - - /// The text to write before the new line is made. - - public virtual void WriteLine(string value) - - { - - Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID).termmain.AppendText($"{value} \n"); - - } - - - - /// - - /// Writes specified text in the terminal in the specified color and starts a new line. - - /// - - /// The text to write before the new line is made. - - /// The color the text is written in. - - public virtual void WriteLine(string value, Color textClr) - - { - - ShiftOS.Apps.Terminal trm = Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID); - - - - int startPoint = trm.termmain.Text.Length; - - trm.termmain.AppendText($"{value} \n"); - - trm.termmain.Select(startPoint, $"{value} \n".Length); - - trm.termmain.SelectionColor = textClr; - - } - - - - /// - - /// Writes specified text in the terminal. - - /// - - /// The text to write. - - /// The color the text is written in. - - public virtual void Write(string value, Color textClr) - - { - - - - ShiftOS.Apps.Terminal trm = Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID); - - - - int startPoint = trm.termmain.Text.Length; - - trm.termmain.AppendText($"{value}"); - - trm.termmain.Select(startPoint, $"{value}".Length); - - trm.termmain.SelectionColor = textClr; - - } - - - - /// - - /// Writes specified text in the terminal. - - /// - - /// The text to say before requesting text. - - public virtual Task Input(string value = "") - - { - - ShiftOS.Apps.Terminal trm = Array.Find(TerminalBackend.trm.ToArray(), w => w.TerminalID == TermID); - - trm.Input(value); - - - - Task Input = new Task(() => - - { - - while (true) - - if (trm.InputReturnText != "") break; - - - - // The terminal has finally decided! - - - - return trm.InputReturnText; - - }); - - Input.Start(); - - return Input; - - } - - } - -} \ No newline at end of file From 179ec19e6b49dd6c0f5de5dc6f69128338a28e12 Mon Sep 17 00:00:00 2001 From: Alex-TIMEHACK Date: Sat, 18 Nov 2017 16:46:45 +0000 Subject: [PATCH 5/6] I don't know WHAT git did but I fixed it. --- .vs/ShiftOS/v15/sqlite3/storage.ide | Bin 1413120 -> 1622016 bytes ShiftOS.Engine/ShiftOS.Engine.csproj | 1 - ShiftOS.Main/ShiftOS.Main.csproj | 3 - ShiftOS.Main/ShiftOS/Apps/Terminal.cs | 98 ++++++++------------------ ShiftOS.Main/ShiftOS/Desktop.cs | 7 -- 5 files changed, 31 insertions(+), 78 deletions(-) diff --git a/.vs/ShiftOS/v15/sqlite3/storage.ide b/.vs/ShiftOS/v15/sqlite3/storage.ide index 4ff51190fa440d5141a59b2e50d3d1d47d56ecc0..1ddce4d4e02072d87cc944756dd38bbff6e4f639 100644 GIT binary patch delta 70448 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 HT+ROTrue Resources.resx - diff --git a/ShiftOS.Main/ShiftOS.Main.csproj b/ShiftOS.Main/ShiftOS.Main.csproj index f7d8dc0..35d7761 100644 --- a/ShiftOS.Main/ShiftOS.Main.csproj +++ b/ShiftOS.Main/ShiftOS.Main.csproj @@ -102,9 +102,6 @@ - - HijackScreen.cs - ResXFileCodeGenerator Resources.Designer.cs diff --git a/ShiftOS.Main/ShiftOS/Apps/Terminal.cs b/ShiftOS.Main/ShiftOS/Apps/Terminal.cs index a5c5a11..5976cab 100644 --- a/ShiftOS.Main/ShiftOS/Apps/Terminal.cs +++ b/ShiftOS.Main/ShiftOS/Apps/Terminal.cs @@ -14,52 +14,48 @@ namespace ShiftOS.Main.ShiftOS.Apps public bool RunningCommand = false; public bool WaitingResponse = false; public string InputReturnText = ""; -using ShiftOS.Engine.Terminal; - -namespace ShiftOS.Main.ShiftOS.Apps -{ - public partial class Terminal : UserControl - { - public string DefaulttextBefore = "user> "; - string DefaulttextResult = "user@shiftos> "; // NOT YET IMPLEMENTED!!! - bool DoClear = false; // The below variables makes the terminal... a terminal! string OldText = ""; int TrackingPosition; - termmain.ContextMenuStrip = new ContextMenuStrip(); // Disables the right click of a richtextbox! - - TerminalBackend.trm.Add(this); // Makes the commands run! - } public Terminal() { InitializeComponent(); termmain.ContextMenuStrip = new ContextMenuStrip(); // Disables the right click of a richtextbox! - } - void Print(string text) - { - termmain.AppendText($"\n {text} \n {DefaulttextResult}"); - TrackingPosition = termmain.Text.Length; - } - if (e.Control && e.KeyCode == Keys.V) - { - //if (Clipboard.ContainsText()) - // termmain.Paste(DataFormats.GetFormat(DataFormats.Text)); - e.Handled = true; - } else if (e.KeyCode == Keys.Enter) { - RunningCommand = true; - TerminalBackend.RunCommand(termmain.Text.Substring(TrackingPosition, termmain.Text.Length - TrackingPosition), TerminalID); // The most horrific line in the entire application! - RunningCommand = false; - termmain.AppendText($"\n {defaulttextResult}"); - TrackingPosition = termmain.Text.Length; - e.Handled = true; - } + TerminalBackend.trm.Add(this); } + void Print() + { + termmain.AppendText($"\n {defaulttextResult}"); + TrackingPosition = termmain.Text.Length; + } + + void Print(string text) + { + termmain.AppendText($"\n {text} \n {defaulttextResult}"); + TrackingPosition = termmain.Text.Length; + } + + //if (e.Control && e.KeyCode == Keys.V) + // { + // //if (Clipboard.ContainsText()) + // // termmain.Paste(DataFormats.GetFormat(DataFormats.Text)); + // e.Handled = true; + // } else if (e.KeyCode == Keys.Enter) { + // RunningCommand = true; + // TerminalBackend.RunCommand(termmain.Text.Substring(TrackingPosition, termmain.Text.Length - TrackingPosition), TerminalID); // The most horrific line in the entire application! + // RunningCommand = false; + // termmain.AppendText($"\n {defaulttextResult}"); + // TrackingPosition = termmain.Text.Length; + // e.Handled = true; + // } + //} + private void termmain_TextChanged(object sender, EventArgs e) { if (!RunningCommand) @@ -113,8 +109,7 @@ namespace ShiftOS.Main.ShiftOS.Apps TrackingPosition = termmain.Text.Length; DoClear = false; } - } -} + void termmain_KeyDown(object sender, KeyEventArgs e) { // The below code disables the ability to paste anything other then text... @@ -127,41 +122,10 @@ namespace ShiftOS.Main.ShiftOS.Apps } else if (e.KeyCode == Keys.Enter) { - Print( - TerminalBackend.RunCommand( - termmain.Text.Substring( - TrackingPosition, - termmain.Text.Length - TrackingPosition))); // The most horrific line in the entire application! + TerminalBackend.RunCommand(termmain.Text.Substring(TrackingPosition, termmain.Text.Length - TrackingPosition), TerminalID); // The most horrific line in the entire application! + Print(); e.Handled = true; } } - - void termmain_TextChanged(object sender, EventArgs e) - { - if (termmain.SelectionStart < TrackingPosition) - { - if (DoClear) return; - - termmain.Text = OldText; - termmain.Select(termmain.Text.Length, 0); - } - else - { - OldText = termmain.Text; - } - } - - void termmain_SelectionChanged(object sender, EventArgs e) - { - if (termmain.SelectionStart >= TrackingPosition) return; - - termmain.Text = OldText; - termmain.Select(termmain.Text.Length, 0); - } - - void Terminal_Load(object sender, EventArgs e) - { - Print("\n"); - } } } diff --git a/ShiftOS.Main/ShiftOS/Desktop.cs b/ShiftOS.Main/ShiftOS/Desktop.cs index 10eea41..4bf4805 100644 --- a/ShiftOS.Main/ShiftOS/Desktop.cs +++ b/ShiftOS.Main/ShiftOS/Desktop.cs @@ -60,13 +60,6 @@ namespace ShiftOS.Main.ShiftOS ShiftWM.Init(trm, "Terminal", null, false, true); } - } -} - void terminalToolStripMenuItem_Click(object sender, EventArgs e) - { - var trm = new Terminal(); - ShiftWM.Init(trm, "Terminal", null); - } void textPadToolStripMenuItem_Click(object sender, EventArgs e) { From c0400bc229d5f275955d6c964108deebf0908b4b Mon Sep 17 00:00:00 2001 From: Alex-TIMEHACK Date: Sat, 18 Nov 2017 16:48:19 +0000 Subject: [PATCH 6/6] Fixed tiny caret issue. --- ShiftOS.Main/ShiftOS/Apps/Terminal.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/ShiftOS.Main/ShiftOS/Apps/Terminal.cs b/ShiftOS.Main/ShiftOS/Apps/Terminal.cs index 5976cab..c65f705 100644 --- a/ShiftOS.Main/ShiftOS/Apps/Terminal.cs +++ b/ShiftOS.Main/ShiftOS/Apps/Terminal.cs @@ -91,6 +91,7 @@ namespace ShiftOS.Main.ShiftOS.Apps { termmain.Text = $"\n {defaulttextResult}"; TrackingPosition = termmain.Text.Length; + termmain.Select(termmain.TextLength, 1); } public void Input(string request)