diff options
Diffstat (limited to 'shiftos_next/Other/Terminal.vb')
| -rw-r--r-- | shiftos_next/Other/Terminal.vb | 302 |
1 files changed, 302 insertions, 0 deletions
diff --git a/shiftos_next/Other/Terminal.vb b/shiftos_next/Other/Terminal.vb new file mode 100644 index 0000000..25a3e21 --- /dev/null +++ b/shiftos_next/Other/Terminal.vb @@ -0,0 +1,302 @@ +Public Class Terminal + + Public currentdir As String = root + Public prompttoupdatesave As Boolean = False + Dim trackpos As Integer = 0 + + Private Sub Terminal_FormClosing(sender As Object, e As FormClosingEventArgs) Handles Me.FormClosing + If BasicWM.Desktop.openterminals > 0 Then BasicWM.Desktop.openterminals -= 1 + End Sub + + Private Sub Terminal_GotFocus(sender As Object, e As EventArgs) Handles terminaltext.GotFocus + API.txtterm = Me.terminaltext + End Sub + + + + Public Sub terminal_Innitiate(sender As Object, e As EventArgs) Handles MyBase.Load + Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None + API.txtterm = Me.terminaltext + pnltop.DetermineMyVisibility() + 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 Interpret(command As String) + command = command.ToLower + If command Like "help" Then + ShowHelp() + ElseIf command Like "cd *" Then + 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.") + Else + currentdir = IO.Directory.GetParent(currentdir).ToString + 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 + End If + Else + wrongcommand() + End If + ElseIf command = "dir" Or command = "ls" Then + 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 + 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 + 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 + terminaltext.ForeColor = SetColorbasic(args(2)) + End If + Case Else + AddLine("set: No valid setting node in configuration file for """ & args(1) & """.") + End Select + ElseIf command = "05tray" Then + AddLine("500 Codepoints have been added.") + AddCP(500) + ElseIf command Like "open *" Then + Dim progtoopen As String = command.Replace("open ", "") + OpenProgram(progtoopen) + ElseIf command Like "close *" Then + Dim progtoclose As String = command.Replace("close ", "") + If progtoclose = "terminal" Then + If boughtbasicwm = True Then + Me.Close() + Else + AddLine("close: Cannot close the Terminal!") + End If + Else + closeprogram(progtoclose) + End If + ElseIf command Like "shutdown" Then + savegame() + Application.Exit() + ElseIf command Like "math*" Then + mathquiz = True + changeinterpreter() + ElseIf command Like "guess the number" Or command Like "guess" Then + guessthenumber = True + changeinterpreter() + ElseIf command Like "code*" Or command = "code points" Then + AddLine("You have " & codepoints & " Codepoints.") + ElseIf command Like "bwm" Then + If boughtbasicwm = True Then + BasicWM.Desktop.Show() + Else + wrongcommand() + End If + 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. + Else + If IO.File.Exists(currentdir + "\" + command) Then + openfile(currentdir + "\" + command) + ElseIf IO.File.Exists(command) Then + openfile(command) + Else + wrongcommand() + End If + End If + End Sub + + + + + + + + Dim firstuseconversation As Integer = 0 + + Private Sub tmrfirstuse_Tick(sender As Object, e As EventArgs) Handles tmrfirstuse.Tick + Select Case firstuseconversation + Case 0 + terminaltext.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 + terminaltext.ResetText() + AddLine("user@shiftos ~$> ") + terminaltext.ReadOnly = False + tmrfirstuse.Stop() + End Select + firstuseconversation += 1 + End Sub + + Private Sub txtterm_KeyDown(sender As Object, e As KeyEventArgs) Handles terminaltext.KeyDown + If prompttoupdatesave = False Then + + 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 terminaltext.SelectionStart = terminaltext.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 + Case Keys.Down + e.SuppressKeyPress = True + trackpos = trackpos - 1 + End Select + + If e.KeyCode = Keys.Enter Then + e.SuppressKeyPress = True + If mathquiz = True Then + Dim question As String = terminaltext.Lines(terminaltext.Lines.Length - 2) + Dim answer As String = terminaltext.Lines(terminaltext.Lines.Length - 1).Replace("> ", "") + If answer = "exit" Then + mathquiz = False + AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ") + Else + Try + MQInterpret(question, answer) + Catch ex As Exception + AddLine("The answer provided isn't a proper number!") + End Try + AddLine("> ") + End If + ElseIf guessthenumber = True Then + Dim answer As String = terminaltext.Lines(terminaltext.Lines.Length - 1).Replace("> ", "") + If answer = "exit" Then + guessthenumber = False + AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ") + Else + Try + GTNInterpret(answer) + Catch ex As Exception + AddLine("The answer provided isn't a proper number.") + End Try + AddLine("> ") + End If + Else + Dim command As String = terminaltext.Lines(terminaltext.Lines.Length - 1).Replace(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ", "").ToLower + Interpret(command) + + If mathquiz Or guessthenumber Then + AddLine("> ") + Else + If command = "clear" Then + terminaltext.Text = username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> " + terminaltext.Select(terminaltext.Text.Length, 0) + + Else + AddLine(username + "@" + osname + " " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ") + terminaltext.Select(terminaltext.Text.Length, 0) + End If + End If + End If + trackpos = 0 + Else + If e.KeyCode = Keys.Back Then + Else + trackpos = trackpos + 1 + End If + End If + + If e.KeyCode = Keys.Back Then + If trackpos < 1 Then + e.SuppressKeyPress = True + Else + If terminaltext.SelectedText.Length < 1 Then + trackpos = trackpos - 1 + Else + e.SuppressKeyPress = True + End If + End If + End If + + 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 |
