Added kernel log ui app
This commit is contained in:
parent
84d437104d
commit
204e464b1b
65
src/bin/KernelLog.hx
Normal file
65
src/bin/KernelLog.hx
Normal file
@ -0,0 +1,65 @@
|
||||
package bin;
|
||||
|
||||
import lib.Color;
|
||||
import lib.MathI;
|
||||
import kernel.log.Log;
|
||||
import kernel.ui.WindowContext;
|
||||
import lib.ui.UIApp;
|
||||
|
||||
using tink.CoreApi;
|
||||
|
||||
class KernelLog extends UIApp{
|
||||
private var ctx:WindowContext;
|
||||
private var exitTrigger: Bool -> Void;
|
||||
|
||||
public function new() {}
|
||||
|
||||
public function invoke(context:WindowContext):Future<Bool> {
|
||||
this.ctx = context;
|
||||
|
||||
Log.instance.onLog.handle(()->{
|
||||
render();
|
||||
});
|
||||
|
||||
render();
|
||||
|
||||
return new Future<Bool>(cb -> {
|
||||
this.exitTrigger = cb;
|
||||
return null;
|
||||
});
|
||||
}
|
||||
|
||||
private function render() {
|
||||
ctx.clear();
|
||||
ctx.setCursorPos(0,0);
|
||||
|
||||
var lines = Log.instance.getLines();
|
||||
var height = ctx.getSize().y;
|
||||
var start = MathI.max(lines.length - height,0);
|
||||
|
||||
for (i in start...lines.length) {
|
||||
var line = lines[i];
|
||||
|
||||
switch (line.level){
|
||||
case Info:
|
||||
ctx.setTextColor(Color.White);
|
||||
ctx.write("[INFO] ");
|
||||
case Warn:
|
||||
ctx.setTextColor(Color.Yellow);
|
||||
ctx.write("[WARN] ");
|
||||
case Error:
|
||||
ctx.setTextColor(Color.Red);
|
||||
ctx.write("[ERRO] ");
|
||||
case Debug:
|
||||
ctx.setTextColor(Color.Gray);
|
||||
ctx.write("[DEBG] ");
|
||||
case Silly:
|
||||
ctx.setTextColor(Color.Gray);
|
||||
ctx.write("[SILL] ");
|
||||
}
|
||||
|
||||
ctx.write(line.message);
|
||||
ctx.setCursorPos(0,ctx.getCursorPos().y + 1);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user