From: Olaf Wintermann Date: Thu, 19 Jun 2025 20:01:25 +0000 (+0200) Subject: add kotlin window function, extend Toplevel class, update UI demo X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=6379817efaabcd227b884d1cdb51258d094bca0f;p=rssreader.git add kotlin window function, extend Toplevel class, update UI demo --- diff --git a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt index 69ed4d4..b7b69be 100644 --- a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt @@ -11,6 +11,14 @@ import java.lang.foreign.MemorySegment class Toplevel(obj: UiObject) { private val obj: UiObject = obj + fun show() { + obj.show() + } + + operator fun invoke(block: Toplevel.() -> Unit) { + block() + } + fun button( label: String? = null, stockId: String? = null, diff --git a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt new file mode 100644 index 0000000..7f5ef47 --- /dev/null +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt @@ -0,0 +1,10 @@ +package de.unixwork.ui.kotlin + +import de.unixwork.ui.UiObject + +fun window(title: String, ui: (Toplevel.() -> Unit)?): Toplevel { + val obj = UiObject.createWindow(title) + val toplevel = Toplevel(obj) + ui?.invoke(toplevel) + return toplevel +} diff --git a/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Main.kt b/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Main.kt index e715840..f725e3b 100644 --- a/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Main.kt +++ b/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Main.kt @@ -5,13 +5,15 @@ import de.unixwork.ui.Button import de.unixwork.ui.Toolkit import de.unixwork.ui.UiObject import de.unixwork.ui.kotlin.Toplevel +import de.unixwork.ui.kotlin.window class Main : Application { override fun startup() { - val window = UiObject.createWindow("Test Window") - val toplevel = Toplevel(window) - - toplevel.button(label = "Hello World") + val window = window("Test Window") { + button(label = "Hello World") { + println("Button Clicked") + } + } window.show() } @@ -20,8 +22,6 @@ class Main : Application { fun main() { println("Kotlin UI Demo") - - Toolkit.init("testapp") Toolkit.runApplication(Main()) } \ No newline at end of file