summaryrefslogtreecommitdiff
path: root/shiftos_next/Terminal.vb
diff options
context:
space:
mode:
Diffstat (limited to 'shiftos_next/Terminal.vb')
-rw-r--r--shiftos_next/Terminal.vb377
1 files changed, 267 insertions, 110 deletions
diff --git a/shiftos_next/Terminal.vb b/shiftos_next/Terminal.vb
index c0e70a3..5ac29e5 100644
--- a/shiftos_next/Terminal.vb
+++ b/shiftos_next/Terminal.vb
@@ -1,13 +1,18 @@
Public Class Terminal
Public currentdir As String = root
+ Public prompttoupdatesave As Boolean = False
Dim trackpos As Integer = 0
Public Sub terminal_Innitiate(sender As Object, e As EventArgs) Handles MyBase.Load
Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
Me.WindowState = FormWindowState.Maximized
- AddLine("user@shiftos " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
+ loadgame()
+ AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
SelectBottom()
+ If prompttoupdatesave = True Then
+ AddLine("ShiftOS has encountered an error loading configuration files. Press any key to reset damaged files.")
+ End If
End Sub
Public Sub SelectBottom()
@@ -19,67 +24,209 @@
If command Like "help" Then
ShowHelp()
ElseIf command Like "cd *" Then
- Dim folder As String = command.Replace("cd ", "")
+ If boughtdirectorysurfing = True Then
+ Dim folder As String = command.Replace("cd ", "")
- If folder = ".." Then
- If currentdir.ToLower = "c:\shiftos" Then
- AddLine("cd: Error! You are at the root of your drive.")
+ If folder = ".." Then
+ If currentdir.ToLower = "c:\shiftos" Then
+ AddLine("cd: Error! You are at the root of your drive.")
+ Else
+ currentdir = IO.Directory.GetParent(currentdir).ToString
+ End If
Else
- currentdir = IO.Directory.GetParent(currentdir).ToString
+ If IO.Directory.Exists(currentdir + "\" + folder) Then
+ currentdir = currentdir & "\" & folder
+ ElseIf IO.Directory.Exists(folder) Then
+ currentdir = folder
+ Else
+ AddLine("cd: Directory """ & folder & """ doesn't exist.")
+ End If
End If
Else
- If IO.Directory.Exists(currentdir + "\" + folder) Then
- currentdir = currentdir & "\" & folder
- ElseIf IO.Directory.Exists(folder) Then
- currentdir = folder
- Else
- AddLine("cd: Directory """ & folder & """ doesn't exist.")
- End If
+ wrongcommand()
End If
ElseIf command = "dir" Or command = "ls" Then
- AddLine("Type | Name ")
- AddLine("-------+-------------------------------------------")
- For Each Dir As String In IO.Directory.GetDirectories(currentdir)
- Dim dirinf As New IO.DirectoryInfo(Dir)
- AddLine("[DIR] | " & dirinf.Name)
- Next
- For Each file As String In IO.Directory.GetFiles(currentdir)
- Dim filinf As New IO.FileInfo(file)
- AddLine(filinf.Extension & " | " & filinf.Name)
- Next
+ If boughtdirectorysurfing Then
+ AddLine("Type | Name ")
+ AddLine("-------+-------------------------------------------")
+ For Each Dir As String In IO.Directory.GetDirectories(currentdir)
+ Dim dirinf As New IO.DirectoryInfo(Dir)
+ AddLine("[DIR] | " & dirinf.Name)
+ Next
+ For Each file As String In IO.Directory.GetFiles(currentdir)
+ Dim filinf As New IO.FileInfo(file)
+ AddLine(filinf.Extension & " | " & filinf.Name)
+ Next
+ Else
+ wrongcommand()
+ End If
ElseIf command Like "mkdir *" Then
- Dim foldertomake As String = command.Replace("mkdir ", "")
- If IO.Directory.Exists(currentdir + "\" + foldertomake) Then
- AddLine("Directory already exists!")
+ If boughtdirectorysurfing = True Then
+ Dim foldertomake As String = command.Replace("mkdir ", "")
+ If IO.Directory.Exists(currentdir + "\" + foldertomake) Then
+ AddLine("Directory already exists!")
+ Else
+ IO.Directory.CreateDirectory(currentdir + "\" + foldertomake)
+ AddLine("mkdir: Directory created successfully.")
+ End If
Else
- IO.Directory.CreateDirectory(currentdir + "\" + foldertomake)
- AddLine("mkdir: Directory created successfully.")
+ wrongcommand()
End If
+ ElseIf command Like "give me * codepoints" Then
+ Dim args() As String = command.Split(" ")
+ Dim cp As String = args(2)
+ AddCP(cp)
+ AddLine("Added " & cp & " to your existing ammount of Codepoints.")
+ ElseIf command Like "set * *" Then
+ Dim args() As String = command.Split(" ")
+ Select Case args(1)
+ Case "username"
+ If boughtcustomusername Then
+ username = args(2)
+ Else
+ wrongcommand()
+ End If
+ Case "textcolor"
+ If boughtterminalsettextcolor Then
+ Select Case args(2)
+ Case "black"
+ AddLine("Error! Black and black don't go too well...")
+ Case "white"
+ txtterm.ForeColor = Color.White
+ Case "gray"
+ If boughtgray Then
+ txtterm.ForeColor = Color.Gray
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case "red"
+ If boughtred Then
+ txtterm.ForeColor = Color.Red
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case "green"
+ If boughtgreen Then
+ txtterm.ForeColor = Color.Green
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case "blue"
+ If boughtblue Then
+ txtterm.ForeColor = Color.Blue
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case "yellow"
+ If boughtyellow Then
+ txtterm.ForeColor = Color.Yellow
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case "orange"
+ If boughtorange Then
+ txtterm.ForeColor = Color.Orange
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case "pink"
+ If boughtpink Then
+ txtterm.ForeColor = Color.Pink
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case "purple"
+ If boughtpurple Then
+ txtterm.ForeColor = Color.Purple
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case "brown"
+ If boughtbrown Then
+ txtterm.ForeColor = Color.Brown
+ Else
+ AddLine("Error! Unsupported color.")
+ End If
+ Case Else
+ AddLine("Error! Unsupported color, check 'colors' for a list of supported colors.")
+ End Select
+ End If
+ Case Else
+ AddLine("set: No valid setting node in configuration file for """ & args(1) & """.")
+ End Select
+ ElseIf command Like "open *" Then
+ Dim progtoopen As String = command.Replace("open ", "")
+ Select Case progtoopen
+ Case "shiftorium", "packages", "pacman", "code shop"
+ shiftorium_cmd.Show()
+ Case Else
+ AddLine("open: Invalid program """ & progtoopen & """.")
+ End Select
ElseIf command Like "shutdown" Then
+ savegame()
Me.Close()
+ ElseIf command = "colors" Then
+ ShowTerminalColors()
ElseIf command Like "" Then
- 'This is here to make it so that the Terminal doesn't say "Wrong Command" if the user doesn't input anything.
+ 'This is here to make it so that the Terminal doesn't say "Wrong Command" if the user doesn't input anything.
Else
- AddLine("Invalid command! Type ""help"" for a list of commands.")
+ wrongcommand()
End If
End Sub
+ Public Sub wrongcommand()
+ AddLine("Invalid command! Type ""help"" for a list of commands.")
+ End Sub
+
+ Public Sub showterminalcolors()
+ AddLine(" ==== SUPPORTED TERMINAL COLORS ==== " & vbNewLine)
+ AddLine("Below is a list of values that you can specify in <colorname> arguments. Note that only certain colors are supported; and if the video driver can output a color but it isn't on this list, it is not supported by the Terminal display engine." & vbNewLine)
+ If boughtgray Then AddLine("gray")
+ AddLine("white")
+ AddLine("black")
+ If boughtred Then AddLine("red")
+ If boughtgreen Then AddLine("green")
+ If boughtblue Then AddLine("blue")
+ If boughtyellow Then AddLine("yellow")
+ If boughtorange Then AddLine("orange")
+ If boughtpink Then AddLine("pink")
+ If boughtpurple Then AddLine("purple")
+ If boughtbrown Then AddLine("brown")
+ End Sub
+
Public Sub ShowHelp()
AddLine("ShiftOS Help" & vbNewLine)
AddLine("Usage tips: " & vbNewLine)
AddLine(" - The terminal runs in full-screen.")
AddLine(" - There are no window managers or desktop environments.")
- AddLine(" - Applications are fully text-based.")
- AddLine(" - Terminal commands are case-insensitive.")
- AddLine(" - The screen can only display Black and White." & vbNewLine)
+ If boughtbasicgui = True Then
+ AddLine(" - Applications can use the GUI server to display a proper GUI.")
+ Else
+ AddLine(" - Applications are fully text-based.")
+ End If
+ AddLine(" - Terminal commands are case-insensitive." & vbNewLine)
AddLine("Commands: " & vbNewLine)
- AddLine(" - cd: Change to the specified directory.")
- AddLine(" - mkdir: Create a directory inside the current directory (marked before the %)")
- AddLine(" - ls, dir: View the contents of the current directory.")
+ If boughtdirectorysurfing Then
+ AddLine(" - cd: Change to the specified directory.")
+ AddLine(" - mkdir: Create a directory inside the current directory (marked before the %)")
+ AddLine(" - ls, dir: View the contents of the current directory.")
+ End If
+ If boughtbasicsettings Then
+ AddLine(" - set <setting> <value>: Change some minimal settings in ShiftOS.")
+ If boughtcustomusername Then
+ AddLine(" Settings: ")
+ AddLine(" username <string>: Set the username of the OS.")
+ End If
+ If boughtterminalsettextcolor = True Then
+ AddLine(" textcolor <colorname>: Set the terminal text color.")
+ End If
+ End If
AddLine(" - shutdown: Shuts the system down.")
- AddLine(" - help: Shows this screen.")
-
-
+ AddLine(" - colors: Shows the colors supported by both the Terminal display engine, and the video driver.")
+ AddLine(" - help: Shows this screen." & vbNewLine)
+ AddLine("Installed Programs:" & vbNewLine)
+ AddLine("Below is a list of all the programs on your computer, followed by what they do. You can open one by typing ""open <name>""." & vbNewLine)
+ AddLine(" - shiftorium: Upgrade the OS with Codepoints using this application.")
End Sub
Public Sub AddLine(text As String)
@@ -90,77 +237,79 @@
Dim firstuseconversation As Integer = 0
Private Sub tmrfirstuse_Tick(sender As Object, e As EventArgs) Handles tmrfirstuse.Tick
- Select Case firstuseconversation
- Case 0
- txtterm.ReadOnly = True
- AddLine("IP Address 170.245.12.80 is connecting as ""DevX"".")
- Case 1
- AddLine("DevX: It seems my updates have completly installed.")
- Case 2
- AddLine("DevX: Unfortunately, due to your hard drive being formatted, you have lost all your data.")
- Case 3
- AddLine("DevX: However, Don't worry! I've added some pretty cool features to the Terminal to make up for this.")
- Case 4
- AddLine("DevX: I can't tell you much, except for ""Type Help for a list of commands"".")
- Case 5
- AddLine("DevX: I've got to go, but I'll contact you as I develop more updates; and you test the OS.")
- Case 6
- AddLine("User ""DevX"" has disconnected.")
- Case 7
- txtterm.ResetText()
- AddLine("user@shiftos ~$> ")
- txtterm.ReadOnly = False
- tmrfirstuse.Stop()
- End Select
- firstuseconversation += 1
+ Select Case firstuseconversation
+ Case 0
+ txtterm.ReadOnly = True
+ AddLine("IP Address 170.245.12.80 is connecting as ""DevX"".")
+ Case 1
+ AddLine("DevX: It seems my updates have completly installed.")
+ Case 2
+ AddLine("DevX: Unfortunately, due to your hard drive being formatted, you have lost all your data.")
+ Case 3
+ AddLine("DevX: However, Don't worry! I've added some pretty cool features to the Terminal to make up for this.")
+ Case 4
+ AddLine("DevX: I can't tell you much, except for ""Type Help for a list of commands"".")
+ Case 5
+ AddLine("DevX: I've got to go, but I'll contact you as I develop more updates; and you test the OS.")
+ Case 6
+ AddLine("User ""DevX"" has disconnected.")
+ Case 7
+ txtterm.ResetText()
+ AddLine("user@shiftos ~$> ")
+ txtterm.ReadOnly = False
+ tmrfirstuse.Stop()
+ End Select
+ firstuseconversation += 1
End Sub
Private Sub txtterm_KeyDown(sender As Object, e As KeyEventArgs) Handles txtterm.KeyDown
- Select Case e.KeyCode
- Case Keys.ShiftKey
- trackpos = trackpos - 1
- Case Keys.Alt
- trackpos = trackpos - 1
- Case Keys.CapsLock
- trackpos = trackpos - 1
- Case Keys.ControlKey
- trackpos = trackpos - 1
- Case Keys.LWin
- trackpos = trackpos - 1
- Case Keys.RWin
- trackpos = trackpos - 1
- Case Keys.Right
- If txtterm.SelectionStart = txtterm.TextLength Then
+ If prompttoupdatesave = False Then
+
+ Select Case e.KeyCode
+ Case Keys.ShiftKey
trackpos = trackpos - 1
- End If
- Case Keys.Left
- If trackpos < 1 Then
+ Case Keys.Alt
+ trackpos = trackpos - 1
+ Case Keys.CapsLock
+ trackpos = trackpos - 1
+ Case Keys.ControlKey
+ trackpos = trackpos - 1
+ Case Keys.LWin
+ trackpos = trackpos - 1
+ Case Keys.RWin
+ trackpos = trackpos - 1
+ Case Keys.Right
+ If txtterm.SelectionStart = txtterm.TextLength Then
+ trackpos = trackpos - 1
+ End If
+ Case Keys.Left
+ If trackpos < 1 Then
+ e.SuppressKeyPress = True
+ trackpos = trackpos - 1
+ Else
+ trackpos = trackpos - 2
+ End If
+ Case Keys.Up
e.SuppressKeyPress = True
trackpos = trackpos - 1
- Else
- trackpos = trackpos - 2
- End If
- Case Keys.Up
- e.SuppressKeyPress = True
- trackpos = trackpos - 1
- Case Keys.Down
- e.SuppressKeyPress = True
- trackpos = trackpos - 1
- End Select
+ Case Keys.Down
+ e.SuppressKeyPress = True
+ trackpos = trackpos - 1
+ End Select
- If e.KeyCode = Keys.Enter Then
- e.SuppressKeyPress = True
- Dim command As String = txtterm.Lines(txtterm.Lines.Length - 1).Replace("user@shiftos " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ", "").ToLower
- Interpret(command)
+ If e.KeyCode = Keys.Enter Then
+ e.SuppressKeyPress = True
+ Dim command As String = txtterm.Lines(txtterm.Lines.Length - 1).Replace(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ", "").ToLower
+ Interpret(command)
- If command = "clear" Then
- txtterm.Text = "user@shiftos " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> "
- txtterm.Select(txtterm.Text.Length, 0)
+ If command = "clear" Then
+ txtterm.Text = username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> "
+ txtterm.Select(txtterm.Text.Length, 0)
- Else
- AddLine("user@shiftos " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
- txtterm.Select(txtterm.Text.Length, 0)
- End If
+ Else
+ AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
+ txtterm.Select(txtterm.Text.Length, 0)
+ End If
trackpos = 0
Else
@@ -170,18 +319,26 @@
End If
End If
- If e.KeyCode = Keys.Back Then
- If trackpos < 1 Then
- e.SuppressKeyPress = True
- Else
- If txtterm.SelectedText.Length < 1 Then
- trackpos = trackpos - 1
- Else
+ If e.KeyCode = Keys.Back Then
+ If trackpos < 1 Then
e.SuppressKeyPress = True
+ Else
+ If txtterm.SelectedText.Length < 1 Then
+ trackpos = trackpos - 1
+ Else
+ e.SuppressKeyPress = True
+ End If
End If
End If
- End If
- SelectBottom()
+ SelectBottom()
+ Else
+ e.SuppressKeyPress = True
+ savegame()
+ loadgame()
+ AddLine("Self-repair complete with no errors.")
+ prompttoupdatesave = False
+ AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ")
+ End If
End Sub
End Class \ No newline at end of file