added very simple GPS GUI

This commit is contained in:
2023-07-10 23:29:22 +02:00
parent 5fa6c3ecbf
commit 8683eaf17a
3 changed files with 59 additions and 2 deletions

View File

@@ -0,0 +1,54 @@
package bin.pathfinder;
import lib.Pos3;
import lib.ui.elements.UIElement;
import lib.ui.elements.TextElement;
import lib.ui.elements.RootElement;
import kernel.ui.WindowContext;
import kernel.ps.ProcessHandle;
import kernel.ps.Process;
class PFClient implements Process {
private var handle:ProcessHandle;
private var ctx: WindowContext;
private var requestRender:Void -> Void;
private var root:RootElement;
public function new() {}
public function run(handle:ProcessHandle) {
this.handle = handle;
var stateless = handle.createStatelessWindowContext();
this.ctx = stateless.ctx;
this.requestRender = stateless.requestRender;
stateless.setRenderFunc(this.render);
this.root = new RootElement();
this.root.setTitle("Pathfinder");
this.ctx.delegateEvents(this.root);
this.requestRender();
}
private function render() {
var acc = kernel.gps.GPS.instance.getAccuracy();
var pos: Pos3 = kernel.gps.GPS.instance.getPosition() ?? {x: 0, y: 0, z: 0};
var childre: Array<UIElement> = [
new TextElement('Acc: ${acc}'),
new TextElement('Pos: X:${pos.x} Y:${pos.y} Z:${pos.z}'),
new TextElement('UPDATE', { onClick: () -> {
kernel.gps.GPS.instance.locate().handle((pos) ->{
this.requestRender();
});
}}),
];
this.root.setChildren(childre);
this.root.render(ctx.getSize()).renderToContext(ctx);
}
}