From 026fb13dfeb6570f1a5da5136770b862668a0522 Mon Sep 17 00:00:00 2001
From: 3wc <3wc@doesthisthing.work>
Date: Sun, 30 Jul 2023 19:45:16 +0100
Subject: [PATCH] Initial code
---
compile.hxml | 6 +++
res/style.css | 46 ++++++++++++++++++
src/Main.hx | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 178 insertions(+)
create mode 100644 compile.hxml
create mode 100644 res/style.css
create mode 100644 src/Main.hx
diff --git a/compile.hxml b/compile.hxml
new file mode 100644
index 0000000..6573025
--- /dev/null
+++ b/compile.hxml
@@ -0,0 +1,6 @@
+-cp src
+-lib heaps
+-lib hlsdl
+-hl hello.hl
+-main Main
+-lib domkit
diff --git a/res/style.css b/res/style.css
new file mode 100644
index 0000000..30ba63d
--- /dev/null
+++ b/res/style.css
@@ -0,0 +1,46 @@
+.mybox {
+ background: #080;
+ padding: -10;
+}
+
+view.mybox {
+ padding: 10;
+}
+
+container {
+ max-width: 300;
+ layout: vertical;
+}
+
+button {
+ background: #333;
+ fill-width: true;
+ height: 30;
+ transition: background 0.5;
+}
+
+button.highlight {
+ background: #a33;
+}
+
+button text {
+ align: middle middle;
+}
+
+button:hover {
+ background: #444;
+}
+
+button text {
+ align: middle middle;
+ color : #aaa;
+ transition : color;
+}
+
+button:hover text {
+ color : white;
+}
+
+button:active {
+ background: #666;
+}
\ No newline at end of file
diff --git a/src/Main.hx b/src/Main.hx
new file mode 100644
index 0000000..2927f5f
--- /dev/null
+++ b/src/Main.hx
@@ -0,0 +1,126 @@
+
+
+@:uiComp("view")
+// Naming scheme of component classes can be customized with domkit.Macros.registerComponentsPath();
+class ViewComp extends h2d.Flow implements h2d.domkit.Object {
+
+ static var SRC =
+
+
+ for( i in icons )
+
+ ;
+
+ public function new(align:h2d.Flow.FlowAlign,icons:Array,?parent) {
+ super(parent);
+ initComponent();
+ }
+
+}
+
+
+@:uiComp("button")
+class ButtonComp extends h2d.Flow implements h2d.domkit.Object {
+
+ static var SRC =
+
+ public var label(get, set): String;
+ function get_label() return labelTxt.text;
+ function set_label(s) {
+ labelTxt.text = s;
+ return s;
+ }
+
+ public function new( ?parent ) {
+ super(parent);
+ initComponent();
+ enableInteractive = true;
+ interactive.onClick = function(_) onClick();
+ interactive.onOver = function(_) {
+ dom.hover = true;
+ };
+ interactive.onPush = function(_) {
+ dom.active = true;
+ };
+ interactive.onRelease = function(_) {
+ dom.active = false;
+ };
+ interactive.onOut = function(_) {
+ dom.hover = false;
+ };
+ }
+
+ public dynamic function onClick() {
+ }
+}
+
+@:uiComp("container")
+class ContainerComp extends h2d.Flow implements h2d.domkit.Object {
+
+ static var SRC =
+
+
+
+
+ ;
+
+ public function new(align:h2d.Flow.FlowAlign, ?parent) {
+ super(parent);
+ initComponent();
+ }
+
+}
+
+
+//PARAM=-lib domkit
+class Main extends hxd.App {
+
+ var center : h2d.Flow;
+ var style = null;
+
+ override function init() {
+ center = new h2d.Flow(s2d);
+ center.horizontalAlign = center.verticalAlign = Middle;
+ onResize();
+ var root = new ContainerComp(Right, center);
+
+ // Override
+ root.btn.label = "Button";
+ root.btn1.label = "Highlight ON";
+ root.btn2.labelTxt.text = "Highlight OFF";
+
+ root.btn1.onClick = function() {
+ root.btn.dom.addClass("highlight");
+ }
+ root.btn2.onClick = function() {
+ root.btn.dom.removeClass("highlight");
+ }
+
+ style = new h2d.domkit.Style();
+ style.load(hxd.Res.style);
+ style.addObject(root);
+ }
+
+ override function onResize() {
+ center.minWidth = center.maxWidth = s2d.width;
+ center.minHeight = center.maxHeight = s2d.height;
+ }
+
+ override function update(dt:Float) {
+ style.sync();
+ }
+
+ static function main() {
+ #if hl
+ hxd.res.Resource.LIVE_UPDATE = true;
+ hxd.Res.initLocal();
+ #else
+ hxd.Res.initEmbed();
+ #end
+ new Main();
+ }
+
+}
+