aboutsummaryrefslogtreecommitdiff
path: root/ShiftOS.WinForms/Applications/Terminal.cs
diff options
context:
space:
mode:
authorpfg <[email protected]>2017-03-12 09:29:17 -0700
committerpfg <[email protected]>2017-03-12 09:29:17 -0700
commit6460ccee378e15408768337dcdc1bc77da07da53 (patch)
treef32e7a443d23492343fec0881115cbcad15f6324 /ShiftOS.WinForms/Applications/Terminal.cs
parentb20d77edd1227b2ce53b65b0752972bd65a36e84 (diff)
downloadshiftos_thereturn-6460ccee378e15408768337dcdc1bc77da07da53.tar.gz
shiftos_thereturn-6460ccee378e15408768337dcdc1bc77da07da53.tar.bz2
shiftos_thereturn-6460ccee378e15408768337dcdc1bc77da07da53.zip
Custom Command Syntax
Diffstat (limited to 'ShiftOS.WinForms/Applications/Terminal.cs')
-rw-r--r--ShiftOS.WinForms/Applications/Terminal.cs282
1 files changed, 99 insertions, 183 deletions
diff --git a/ShiftOS.WinForms/Applications/Terminal.cs b/ShiftOS.WinForms/Applications/Terminal.cs
index 7bab213..9bd9f3c 100644
--- a/ShiftOS.WinForms/Applications/Terminal.cs
+++ b/ShiftOS.WinForms/Applications/Terminal.cs
@@ -44,13 +44,11 @@ using static ShiftOS.Engine.SkinEngine;
using ShiftOS.Engine;
using ShiftOS.Objects;
-namespace ShiftOS.WinForms.Applications
-{
+namespace ShiftOS.WinForms.Applications {
[Launcher("Terminal", false, null, "Utilities")]
[WinOpen("terminal")]
[DefaultIcon("iconTerminal")]
- public partial class Terminal : UserControl, IShiftOSWindow
- {
+ public partial class Terminal : UserControl, IShiftOSWindow {
public static Stack<string> ConsoleStack = new Stack<string>();
public static System.Windows.Forms.Timer ti = new System.Windows.Forms.Timer();
@@ -62,81 +60,63 @@ namespace ShiftOS.WinForms.Applications
public static string RemoteGuid = "";
[Obsolete("This is used for compatibility with old parts of the backend. Please use TerminalBackend instead.")]
- public static bool PrefixEnabled
- {
- get
- {
+ public static bool PrefixEnabled {
+ get {
return TerminalBackend.PrefixEnabled;
}
- set
- {
+ set {
TerminalBackend.PrefixEnabled = value;
}
}
[Obsolete("This is used for compatibility with old parts of the backend. Please use TerminalBackend instead.")]
- public static bool InStory
- {
- get
- {
+ public static bool InStory {
+ get {
return TerminalBackend.InStory;
}
- set
- {
+ set {
TerminalBackend.InStory = value;
}
}
[Obsolete("This is used for compatibility with old parts of the backend. Please use TerminalBackend instead.")]
- public static string LastCommand
- {
- get
- {
+ public static string LastCommand {
+ get {
return TerminalBackend.LastCommand;
}
- set
- {
+ set {
TerminalBackend.LastCommand = value;
}
}
- public int TutorialProgress
- {
- get
- {
+ public int TutorialProgress {
+ get {
throw new NotImplementedException();
}
- set
- {
+ set {
throw new NotImplementedException();
}
}
[Obsolete("This is used for compatibility with old parts of the backend. Please use TerminalBackend instead.")]
- public static void InvokeCommand(string text)
- {
-
+ public static void InvokeCommand(string text) {
+
TerminalBackend.InvokeCommand(text);
}
- public Terminal()
- {
+ public Terminal() {
InitializeComponent();
- SaveSystem.GameReady += () =>
- {
- try
- {
- this.Invoke(new Action(() =>
- {
+ SaveSystem.GameReady += () => {
+ try {
+ this.Invoke(new Action(() => {
ResetAllKeywords();
rtbterm.Text = "";
TerminalBackend.PrefixEnabled = true;
TerminalBackend.InStory = false;
Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ");
- if (Shiftorium.UpgradeInstalled("wm_free_placement"))
- {
+ if (Shiftorium.UpgradeInstalled("wm_free_placement")) {
this.ParentForm.Width = 640;
this.ParentForm.Height = 480;
this.ParentForm.Left = (Screen.PrimaryScreen.Bounds.Width - 640) / 2;
@@ -144,8 +124,7 @@ namespace ShiftOS.WinForms.Applications
}
}));
- }
- catch { }
+ } catch { }
};
@@ -153,32 +132,21 @@ namespace ShiftOS.WinForms.Applications
}
- public void FocusOnTerminal()
- {
+ public void FocusOnTerminal() {
rtbterm.Focus();
}
- public static string GetTime()
- {
+ public static string GetTime() {
var time = DateTime.Now;
- if (ShiftoriumFrontend.UpgradeInstalled("full_precision_time"))
- {
+ if (ShiftoriumFrontend.UpgradeInstalled("full_precision_time")) {
return DateTime.Now.ToString("h:mm:ss tt");
- }
- else if (ShiftoriumFrontend.UpgradeInstalled("clock_am_and_pm"))
- {
+ } else if (ShiftoriumFrontend.UpgradeInstalled("clock_am_and_pm")) {
return time.TimeOfDay.TotalHours > 12 ? $"{time.Hour - 12} PM" : $"{time.Hour} AM";
- }
- else if (ShiftoriumFrontend.UpgradeInstalled("clock_hours"))
- {
+ } else if (ShiftoriumFrontend.UpgradeInstalled("clock_hours")) {
return ((int)time.TimeOfDay.TotalHours).ToString();
- }
- else if (ShiftoriumFrontend.UpgradeInstalled("clock_minutes"))
- {
+ } else if (ShiftoriumFrontend.UpgradeInstalled("clock_minutes")) {
return ((int)time.TimeOfDay.TotalMinutes).ToString();
- }
- else if (ShiftoriumFrontend.UpgradeInstalled("clock"))
- {
+ } else if (ShiftoriumFrontend.UpgradeInstalled("clock")) {
return ((int)time.TimeOfDay.TotalSeconds).ToString();
}
@@ -188,8 +156,7 @@ namespace ShiftOS.WinForms.Applications
public static event TextSentEventHandler TextSent;
- public void ResetAllKeywords()
- {
+ public void ResetAllKeywords() {
string primary = SaveSystem.CurrentSave.Username + " ";
string secondary = "shiftos ";
@@ -198,27 +165,18 @@ namespace ShiftOS.WinForms.Applications
var types = asm.GetTypes();
- foreach (var type in types)
- {
- foreach (var a in type.GetCustomAttributes(false))
- {
- if (ShiftoriumFrontend.UpgradeAttributesUnlocked(type))
- {
- if (a is Namespace)
- {
+ foreach (var type in types) {
+ foreach (var a in type.GetCustomAttributes(false)) {
+ if (ShiftoriumFrontend.UpgradeAttributesUnlocked(type)) {
+ if (a is Namespace) {
var ns = a as Namespace;
- if (!primary.Contains(ns.name))
- {
+ if (!primary.Contains(ns.name)) {
primary += ns.name + " ";
}
- foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Static))
- {
- if (ShiftoriumFrontend.UpgradeAttributesUnlocked(method))
- {
- foreach (var ma in method.GetCustomAttributes(false))
- {
- if (ma is Command)
- {
+ foreach (var method in type.GetMethods(BindingFlags.Public | BindingFlags.Static)) {
+ if (ShiftoriumFrontend.UpgradeAttributesUnlocked(method)) {
+ foreach (var ma in method.GetCustomAttributes(false)) {
+ if (ma is Command) {
var cmd = ma as Command;
if (!secondary.Contains(cmd.name))
secondary += cmd.name + " ";
@@ -234,19 +192,14 @@ namespace ShiftOS.WinForms.Applications
}
- public static void MakeWidget(Controls.TerminalBox txt)
- {
+ public static void MakeWidget(Controls.TerminalBox txt) {
AppearanceManager.StartConsoleOut();
- txt.GotFocus += (o, a) =>
- {
+ txt.GotFocus += (o, a) => {
AppearanceManager.ConsoleOut = txt;
};
- txt.KeyDown += (o, a) =>
- {
- if (a.KeyCode == Keys.Enter)
- {
- try
- {
+ txt.KeyDown += (o, a) => {
+ if (a.KeyCode == Keys.Enter) {
+ try {
a.SuppressKeyPress = true;
Console.WriteLine("");
var text = txt.Lines.ToArray();
@@ -254,60 +207,55 @@ namespace ShiftOS.WinForms.Applications
var text3 = "";
var text4 = Regex.Replace(text2, @"\t|\n|\r", "");
- if (IsInRemoteSystem == true)
- {
- ServerManager.SendMessage("trm_invcmd", JsonConvert.SerializeObject(new
- {
+ if (IsInRemoteSystem == true) {
+ ServerManager.SendMessage("trm_invcmd", JsonConvert.SerializeObject(new {
guid = RemoteGuid,
command = text4
}));
- }
- else
- {
- if (TerminalBackend.PrefixEnabled)
- {
+ } else {
+ if (TerminalBackend.PrefixEnabled) {
text3 = text4.Remove(0, $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ".Length);
}
TerminalBackend.LastCommand = text3;
TextSent?.Invoke(text4);
- if (TerminalBackend.InStory == false)
- {
- TerminalBackend.InvokeCommand(text3);
+ if (TerminalBackend.InStory == false) {
+ if(text3 == "stop theme") {
+ CurrentCommandParser.parser = null;
+ }else {
+ if(CurrentCommandParser.parser == null) {
+ TerminalBackend.InvokeCommand(text3);
+ } else {
+ var result = CurrentCommandParser.parser.ParseCommand(text3);
+
+ if (result.Equals(default(KeyValuePair<KeyValuePair<string, string>, Dictionary<string, string>>))) {
+ Console.WriteLine("Syntax Error: Syntax Error");
+ } else {
+ TerminalBackend.InvokeCommand(result.Key.Key, result.Key.Value, result.Value);
+ }
+ }
+ }
}
- if (TerminalBackend.PrefixEnabled)
- {
+ if (TerminalBackend.PrefixEnabled) {
Console.Write($"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ");
}
}
+ } catch {
}
- catch
- {
- }
- }
- else if (a.KeyCode == Keys.Back)
- {
- try
- {
+ } else if (a.KeyCode == Keys.Back) {
+ try {
var tostring3 = txt.Lines[txt.Lines.Length - 1];
var tostringlen = tostring3.Length + 1;
var workaround = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ";
var derp = workaround.Length + 1;
- if (tostringlen != derp)
- {
+ if (tostringlen != derp) {
AppearanceManager.CurrentPosition--;
- }
- else
- {
+ } else {
a.SuppressKeyPress = true;
}
- }
- catch
- {
+ } catch {
Debug.WriteLine("Drunky alert in terminal.");
}
- }
- else if (a.KeyCode == Keys.Left)
- {
+ } else if (a.KeyCode == Keys.Left) {
var getstring = txt.Lines[txt.Lines.Length - 1];
var stringlen = getstring.Length + 1;
var header = $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ";
@@ -316,28 +264,19 @@ namespace ShiftOS.WinForms.Applications
var remstrlen = txt.TextLength - stringlen;
var finalnum = selstart - remstrlen;
- if (finalnum != headerlen)
- {
+ if (finalnum != headerlen) {
AppearanceManager.CurrentPosition--;
- }
- else
- {
+ } else {
a.SuppressKeyPress = true;
}
- }
- //( ͡° ͜ʖ ͡° ) You found the lennyface without looking at the commit message. Message Michael in the #shiftos channel on Discord saying "ladouceur" somewhere in your message if you see this.
- else if (a.KeyCode == Keys.Up)
- {
+ } else if (a.KeyCode == Keys.Up) {
var tostring3 = txt.Lines[txt.Lines.Length - 1];
if (tostring3 == $"{SaveSystem.CurrentSave.Username}@{SaveSystem.CurrentSave.SystemName}:~$ ")
Console.Write(TerminalBackend.LastCommand);
a.SuppressKeyPress = true;
- }
- else
- {
- if (TerminalBackend.InStory)
- {
+ } else {
+ if (TerminalBackend.InStory) {
a.SuppressKeyPress = true;
}
AppearanceManager.CurrentPosition++;
@@ -346,7 +285,7 @@ namespace ShiftOS.WinForms.Applications
};
AppearanceManager.ConsoleOut = txt;
-
+
txt.Focus();
txt.Font = LoadedSkin.TerminalFont;
@@ -355,17 +294,12 @@ namespace ShiftOS.WinForms.Applications
}
- private void Terminal_Load(object sender, EventArgs e)
- {
- ServerManager.MessageReceived += (msg) =>
- {
- if(msg.Name == "trm_handshake_guid")
- {
+ private void Terminal_Load(object sender, EventArgs e) {
+ ServerManager.MessageReceived += (msg) => {
+ if (msg.Name == "trm_handshake_guid") {
IsInRemoteSystem = true;
RemoteGuid = msg.GUID;
- }
- else if(msg.Name == "trm_handshake_stop")
- {
+ } else if (msg.Name == "trm_handshake_stop") {
IsInRemoteSystem = false;
RemoteGuid = "";
}
@@ -373,21 +307,17 @@ namespace ShiftOS.WinForms.Applications
}
- private void Terminal_FormClosing(object sender, FormClosingEventArgs e)
- {
+ private void Terminal_FormClosing(object sender, FormClosingEventArgs e) {
ti.Stop();
IsInRemoteSystem = false;
RemoteGuid = "";
}
- public void OnLoad()
- {
+ public void OnLoad() {
MakeWidget(rtbterm);
- if (SaveSystem.CurrentSave != null)
- {
- if (!ShiftoriumFrontend.UpgradeInstalled("window_manager"))
- {
+ if (SaveSystem.CurrentSave != null) {
+ if (!ShiftoriumFrontend.UpgradeInstalled("window_manager")) {
rtbterm.Text = AppearanceManager.LastTerminalText;
rtbterm.Select(rtbterm.TextLength, 0);
}
@@ -398,42 +328,30 @@ namespace ShiftOS.WinForms.Applications
}
- public void OnSkinLoad()
- {
- try
- {
+ public void OnSkinLoad() {
+ try {
rtbterm.Font = LoadedSkin.TerminalFont;
rtbterm.ForeColor = LoadedSkin.TerminalForeColor;
rtbterm.BackColor = LoadedSkin.TerminalBackColor;
- }
- catch
- {
+ } catch {
}
}
- public bool OnUnload()
- {
- if (SaveSystem.ShuttingDown == false)
- {
- if (!ShiftoriumFrontend.UpgradeInstalled("desktop"))
- {
- if (AppearanceManager.OpenForms.Count <= 1)
- {
+ public bool OnUnload() {
+ if (SaveSystem.ShuttingDown == false) {
+ if (!ShiftoriumFrontend.UpgradeInstalled("desktop")) {
+ if (AppearanceManager.OpenForms.Count <= 1) {
Console.WriteLine("");
Console.WriteLine("{WIN_CANTCLOSETERMINAL}");
- try
- {
+ try {
Console.WriteLine("");
- if (TerminalBackend.PrefixEnabled)
- {
+ if (TerminalBackend.PrefixEnabled) {
Console.Write($"{SaveSystem.CurrentSave.Username}@shiftos:~$ ");
}
- }
- catch (Exception ex)
- {
+ } catch (Exception ex) {
Console.WriteLine(ex);
}
return false;
@@ -443,15 +361,13 @@ namespace ShiftOS.WinForms.Applications
return true;
}
- public void OnUpgrade()
- {
+ public void OnUpgrade() {
}
- private void rtbterm_TextChanged(object sender, EventArgs e)
- {
+ private void rtbterm_TextChanged(object sender, EventArgs e) {
}
-
+
}
}
//lol you found this comment i made so i chould push a change to make a point. \ No newline at end of file