From 1060c43fbaa0e25433463607463f72eb4c8254f9 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Sat, 13 Sep 2025 19:32:21 +0200 Subject: [PATCH] increase window size --- .../kotlin/de/unixwork/rssreader/MainWindow.kt | 4 ++-- .../src/main/java/de/unixwork/ui/UiObject.java | 9 +++++++++ .../main/java/de/unixwork/ui/UiObjectFuncs.java | 7 +++++++ .../main/kotlin/de/unixwork/ui/kotlin/Window.kt | 15 ++++++++++++--- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt index d850051..2f500f2 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt @@ -28,7 +28,7 @@ class MainWindow() { var currentFeedIndex = -1 init { - window = sidebarWindow("RSS Reader") { + window = sidebarWindow(title = "RSS Reader", width = 1600, height = 1000) { sidebar { vbox(fill = true) { sourcelist( @@ -73,7 +73,7 @@ class MainWindow() { } } - hsplitpane(fill = true, initialPosition = 300) { + hsplitpane(fill = true, initialPosition = 600) { vbox(fill = true) { val model = TableModel() model.addColumn("Title", ColumnType.STRING, -1) diff --git a/ui-java/src/main/java/de/unixwork/ui/UiObject.java b/ui-java/src/main/java/de/unixwork/ui/UiObject.java index f8cdeb8..db031e6 100644 --- a/ui-java/src/main/java/de/unixwork/ui/UiObject.java +++ b/ui-java/src/main/java/de/unixwork/ui/UiObject.java @@ -31,6 +31,15 @@ public class UiObject extends Context { } } + public void setSize(int width, int height) { + UiObjectFuncs tk = UiObjectFuncs.instance; + try { + tk.ui_window_size.invoke(ptr, width, height); + } catch (Throwable e) { + throw new RuntimeException(e); + } + } + public void addCloseHandler(ObjectDestroyHandler handler) { closeHandlers.add(handler); } diff --git a/ui-java/src/main/java/de/unixwork/ui/UiObjectFuncs.java b/ui-java/src/main/java/de/unixwork/ui/UiObjectFuncs.java index c5190fb..8febc50 100644 --- a/ui-java/src/main/java/de/unixwork/ui/UiObjectFuncs.java +++ b/ui-java/src/main/java/de/unixwork/ui/UiObjectFuncs.java @@ -16,6 +16,8 @@ class UiObjectFuncs { public MethodHandle ui_openfiledialog; public MethodHandle ui_savefiledialog; + public MethodHandle ui_window_size; + private UiObjectFuncs(Linker linker, SymbolLookup lib) { // void* func(void*, void*) @@ -26,6 +28,7 @@ class UiObjectFuncs { FunctionDescriptor sigv_mm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.ADDRESS); FunctionDescriptor sigv_mimm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.ADDRESS, ValueLayout.ADDRESS); FunctionDescriptor sigv_mmmm = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS, ValueLayout.ADDRESS); + FunctionDescriptor sigv_mii = FunctionDescriptor.ofVoid(ValueLayout.ADDRESS, ValueLayout.JAVA_INT, ValueLayout.JAVA_INT); MemorySegment ui_show_addr = lib.find("ui_show").orElseThrow(); MemorySegment ui_close_addr = lib.find("ui_close").orElseThrow(); @@ -37,6 +40,8 @@ class UiObjectFuncs { MemorySegment ui_openfiledialog_addr = lib.find("ui_openfiledialog").orElseThrow(); MemorySegment ui_savefiledialog_addr = lib.find("ui_savefiledialog").orElseThrow(); + MemorySegment ui_window_size_addr = lib.find("ui_window_size").orElseThrow(); + ui_show = linker.downcallHandle(ui_show_addr, sigv_m); ui_close = linker.downcallHandle(ui_close_addr, sigv_m); ui_window = linker.downcallHandle(ui_window_addr, sigm_mm); @@ -46,6 +51,8 @@ class UiObjectFuncs { ui_dialog_create = linker.downcallHandle(ui_dialog_create_addr, sigv_mm); ui_openfiledialog = linker.downcallHandle(ui_openfiledialog_addr, sigv_mimm); ui_savefiledialog = linker.downcallHandle(ui_savefiledialog_addr, sigv_mmmm); + + ui_window_size = linker.downcallHandle(ui_window_size_addr, sigv_mii); } // must be called by the Toolkit constructor 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 index c99ca61..35c2d19 100644 --- a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt @@ -5,22 +5,31 @@ import de.unixwork.ui.DialogWindowBuilder import de.unixwork.ui.EventHandler import de.unixwork.ui.UiObject -fun window(title: String, ui: (Toplevel.() -> Unit)? = null): Toplevel { +fun window(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel { val obj = UiObject.createWindow(title) + if(width > 0 && height > 0) { + obj.setSize(width, height) + } val toplevel = Toplevel(obj) ui?.invoke(toplevel) return toplevel } -fun simpleWindow(title: String, ui: (Toplevel.() -> Unit)? = null): Toplevel { +fun simpleWindow(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel { val obj = UiObject.createSimpleWindow(title) + if(width > 0 && height > 0) { + obj.setSize(width, height) + } val toplevel = Toplevel(obj) ui?.invoke(toplevel) return toplevel } -fun sidebarWindow(title: String, ui: (Toplevel.() -> Unit)? = null): Toplevel { +fun sidebarWindow(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel { val obj = UiObject.createSidebarWindow(title) + if(width > 0 && height > 0) { + obj.setSize(width, height) + } val toplevel = Toplevel(obj) ui?.invoke(toplevel) return toplevel -- 2.47.3