pass events to ui element

This commit is contained in:
2022-03-04 00:59:02 +01:00
parent bddb80c42d
commit 3b6bc85271
4 changed files with 57 additions and 31 deletions

View File

@@ -1,5 +1,7 @@
package lib.ui.reactive;
import kernel.Log;
import kernel.ButtonType;
import util.Observable;
using tink.CoreApi;
@@ -7,17 +9,13 @@ import util.Color;
import util.Vec.Vec2;
import util.MathI;
class TextElement implements IElement {
public var changed(default, null):Signal<Noise>;
private var changedTrigger:SignalTrigger<Noise>;
class TextElement extends UIElement {
private final text:Observable<String>;
private final bg:Color;
private final fg:Color;
public function new(text:Observable<String>, ?background:Color = Black, ?textColor:Color = White) {
setupTrigger();
super();
this.text = text;
this.bg = background;
@@ -28,11 +26,6 @@ class TextElement implements IElement {
});
}
private function setupTrigger() {
changedTrigger = Signal.trigger();
changed = changedTrigger.asSignal();
}
public function render(bounds:Vec2<Int>):Canvas {
var rtn = new Canvas();
@@ -45,4 +38,8 @@ class TextElement implements IElement {
return rtn;
}
public override function handleClickEvent(pos: Vec2<Int>,button: ButtonType):Void {
Log.debug('Click: ${this.text.get()}');
}
}