]> uap-core.de Git - rssreader.git/commitdiff
add grid newline/row
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Mon, 23 Jun 2025 19:30:38 +0000 (21:30 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Mon, 23 Jun 2025 19:30:38 +0000 (21:30 +0200)
ui-java/src/main/java/de/unixwork/ui/Container.java
ui-java/src/main/java/de/unixwork/ui/ContainerFuncs.java
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt
ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Main.kt

index 7d6f66df82268328926739dd348170bfe8522f9a..e655b387c9bbffea8d340d46d8fb76d10ca57020 100644 (file)
@@ -42,4 +42,13 @@ public class Container implements AutoCloseable {
         ContainerFuncs ui = ContainerFuncs.getInstance();
         return new ContainerBuilder(obj, ui.grid_create);
     }
+
+    public static void newline(UiObject obj) {
+        ContainerFuncs ui = ContainerFuncs.getInstance();
+        try {
+            ui.newline.invoke(obj.ptr);
+        } catch (Throwable e) {
+            throw new RuntimeException(e);
+        }
+    }
 }
index e183dbd78de17277c2bb9debf5f09ec2bb129b0d..d16cc6f8ed28f196e41845b6b5db606fea3f31a7 100644 (file)
@@ -22,6 +22,8 @@ public class ContainerFuncs {
     public MethodHandle container_begin_close;
     public MethodHandle container_finish;
 
+    public MethodHandle newline;
+
     private ContainerFuncs(Linker linker, SymbolLookup lib) {
         FunctionDescriptor sigm_mm = FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS);
         FunctionDescriptor sigm_m = FunctionDescriptor.of(ValueLayout.ADDRESS, ValueLayout.ADDRESS);
@@ -44,6 +46,8 @@ public class ContainerFuncs {
         MemorySegment ui_container_begin_close = lib.find("ui_container_begin_close").orElseThrow();
         MemorySegment ui_container_finish = lib.find("ui_container_finish").orElseThrow();
 
+        MemorySegment ui_newline_addr = lib.find("ui_newline").orElseThrow();
+
         vbox_create = linker.downcallHandle(ui_vbox_create_addr, sigm_mm);
         hbox_create = linker.downcallHandle(ui_hbox_create_addr, sigm_mm);
         grid_create = linker.downcallHandle(ui_grid_create_addr, sigm_mm);
@@ -59,6 +63,8 @@ public class ContainerFuncs {
 
         container_begin_close = linker.downcallHandle(ui_container_begin_close, sigv_m);
         container_finish = linker.downcallHandle(ui_container_finish, sigi_m);
+
+        newline = linker.downcallHandle(ui_newline_addr, sigv_m);
     }
 
     static ContainerFuncs getInstance() {
index 53e996cf9cb11cd67c5dbf420a2d958453a0f20a..0a694e59ed4f4d07d3a77e254c42876494f88234 100644 (file)
@@ -208,6 +208,13 @@ class Toplevel(obj: UiObject) {
         )
     }
 
+    fun row(
+        ui: ContainerUI? = null
+    ) {
+        ui?.callback()
+        Container.newline(obj)
+    }
+
     fun button(
         label: String? = null,
         stockId: String? = null,
index 4d2d57e114b3601abaa7e8bb77846d3a8bad92cb..86890cd12ff103772e8a20189ac1f09a83498145 100644 (file)
@@ -10,14 +10,26 @@ import de.unixwork.ui.kotlin.window
 class Main : Application {
     override fun startup() {
         val window = window("Test Window") {
-            hbox {
-                button("T1")
-                button("T2")
-                vbox {
-                    button("V1")
-                    button("V2")
+            grid {
+                vbox(vexpand = true, vfill = true) {
+                    button("B1")
+                    button("B2")
+                    button("B3")
+                }
+                grid(columnspacing = 10, rowspacing = 10, hexpand = true, hfill = true, vexpand = true) {
+                    row {
+                        button("C1")
+                        button("C2")
+                        button(label = "C3", hfill = true, hexpand = true)
+                    }
+                    row {
+                        button("D1")
+                        button("D2")
+                    }
+                    row {
+                        button("E1")
+                    }
                 }
-                button("T3")
             }
         }