improved terminal stuff

This commit is contained in:
2022-12-19 17:35:52 +01:00
parent c6e5a836ea
commit 3cb1811dcb
4 changed files with 70 additions and 35 deletions

View File

@@ -9,7 +9,7 @@ import kernel.ui.WindowManager;
class Terminal {
private var context:WindowContext;
private var input:String = "";
private var backlog: Array<String> = [];
private var backlog:Array<String> = [];
public function new() {}
@@ -45,7 +45,7 @@ class Terminal {
var start:Int = this.backlog.length - linesAvailable;
for (i in 0...linesAvailable){
for (i in 0...linesAvailable) {
var line = this.backlog[start + i];
this.context.setCursorPos(0, i);
@@ -73,7 +73,7 @@ class Terminal {
this.context.setCursorBlink(true);
}
private function invokeCommand(command: String):Void{
private function invokeCommand(command:String):Void {
var args = this.parseArgs(command);
if (args.length == 0) {
@@ -90,7 +90,7 @@ class Terminal {
var commandArgs:Array<String> = args.slice(1);
var hadInput = false;
var handle = new TermHandle(commandArgs,{
var handle = new TermHandle(commandArgs, {
onWrite: (s:String) -> {
if (!hadInput) {
this.backlog.push("");
@@ -115,17 +115,17 @@ class Terminal {
this.context.setCursorBlink(false);
prog.invoke(handle);
prog.invoke(handle).handle((exitCode) -> {
// Cleanup extra newline
if (this.backlog[this.backlog.length - 1] == "") {
this.backlog.pop();
}
// Cleanup extra newline
if (this.backlog[this.backlog.length - 1] == "") {
this.backlog.pop();
}
this.redrawInput();
this.redrawInput();
});
}
private function parseArgs(command: String): Array<String> {
private function parseArgs(command:String):Array<String> {
// TODO: tim and quote handling
return command.split(" ");
}
@@ -135,7 +135,7 @@ class Terminal {
this.redrawBacklog();
}
private function getProgByName(name: String): CLIBase {
private function getProgByName(name:String):CLIBase {
switch (name) {
case "hello":
return new HelloWorld();