From ac564b6e77ed2da993ccd60851709cda39d4ac9f Mon Sep 17 00:00:00 2001 From: TheUltimateHacker Date: Sun, 17 May 2015 11:47:42 -0400 Subject: Added directory-surfing to Terminal. Added cd, ls/dir, and mkdir commands to the Terminal. --- shiftos_next/Terminal.vb | 63 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 52 insertions(+), 11 deletions(-) (limited to 'shiftos_next/Terminal.vb') diff --git a/shiftos_next/Terminal.vb b/shiftos_next/Terminal.vb index 8a94704..c0e70a3 100644 --- a/shiftos_next/Terminal.vb +++ b/shiftos_next/Terminal.vb @@ -1,11 +1,12 @@ Public Class Terminal + Public currentdir As String = root 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 ~$> ") + AddLine("user@shiftos " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ") SelectBottom() End Sub @@ -17,12 +18,49 @@ command = command.ToLower If command Like "help" Then ShowHelp() + ElseIf command Like "cd *" 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 + 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 + ElseIf command Like "mkdir *" 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 ElseIf command Like "shutdown" Then Me.Close() 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.") + AddLine("Invalid command! Type ""help"" for a list of commands.") End If End Sub @@ -35,6 +73,9 @@ AddLine(" - Terminal commands are case-insensitive.") AddLine(" - The screen can only display Black and White." & 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.") AddLine(" - shutdown: Shuts the system down.") AddLine(" - help: Shows this screen.") @@ -109,25 +150,25 @@ If e.KeyCode = Keys.Enter Then e.SuppressKeyPress = True - Dim command As String = txtterm.Lines(txtterm.Lines.Length - 1).Replace("user@shiftos ~$> ", "").ToLower + Dim command As String = txtterm.Lines(txtterm.Lines.Length - 1).Replace("user@shiftos " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ", "").ToLower Interpret(command) If command = "clear" Then - txtterm.Text = "user@shiftos ~$> " + txtterm.Text = "user@shiftos " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> " txtterm.Select(txtterm.Text.Length, 0) Else - AddLine("user@shiftos ~$> ") + AddLine("user@shiftos " & currentdir.ToLower.Replace("c:\shiftos", "~") & "$> ") txtterm.Select(txtterm.Text.Length, 0) End If - trackpos = 0 - Else - If e.KeyCode = Keys.Back Then + trackpos = 0 Else - trackpos = trackpos + 1 + If e.KeyCode = Keys.Back Then + Else + trackpos = trackpos + 1 + End If End If - End If If e.KeyCode = Keys.Back Then If trackpos < 1 Then -- cgit v1.2.3