From 8321cda445ab523a2db15187b46551c215f89f87 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Fri, 12 Sep 2025 17:49:53 +0200 Subject: [PATCH] add spinbox min, max, step, digits args --- .../main/java/de/unixwork/ui/ArgFuncs.java | 12 +++++++ .../java/de/unixwork/ui/SpinBoxBuilder.java | 36 +++++++++++++++++++ .../kotlin/de/unixwork/ui/kotlin/Toplevel.kt | 4 +++ 3 files changed, 52 insertions(+) diff --git a/ui-java/src/main/java/de/unixwork/ui/ArgFuncs.java b/ui-java/src/main/java/de/unixwork/ui/ArgFuncs.java index 748935d..970c969 100644 --- a/ui-java/src/main/java/de/unixwork/ui/ArgFuncs.java +++ b/ui-java/src/main/java/de/unixwork/ui/ArgFuncs.java @@ -404,6 +404,10 @@ class ArgFuncs { MethodHandle spinbox_args_set_style_class; MethodHandle spinbox_args_set_onchange; MethodHandle spinbox_args_set_onchangedata; + MethodHandle spinbox_args_set_min; + MethodHandle spinbox_args_set_max; + MethodHandle spinbox_args_set_step; + MethodHandle spinbox_args_set_digits; MethodHandle spinbox_args_set_varname; MethodHandle spinbox_args_set_intvalue; MethodHandle spinbox_args_set_doublevalue; @@ -834,6 +838,10 @@ class ArgFuncs { MemorySegment ui_spinbox_args_set_style_class_addr = lib.find("ui_spinbox_args_set_style_class").orElseThrow(); MemorySegment ui_spinbox_args_set_onchange_addr = lib.find("ui_spinbox_args_set_onchange").orElseThrow(); MemorySegment ui_spinbox_args_set_onchangedata_addr = lib.find("ui_spinbox_args_set_onchangedata").orElseThrow(); + MemorySegment ui_spinbox_args_set_min_addr = lib.find("ui_spinbox_args_set_min").orElseThrow(); + MemorySegment ui_spinbox_args_set_max_addr = lib.find("ui_spinbox_args_set_max").orElseThrow(); + MemorySegment ui_spinbox_args_set_step_addr = lib.find("ui_spinbox_args_set_step").orElseThrow(); + MemorySegment ui_spinbox_args_set_digits_addr = lib.find("ui_spinbox_args_set_digits").orElseThrow(); MemorySegment ui_spinbox_args_set_varname_addr = lib.find("ui_spinbox_args_set_varname").orElseThrow(); MemorySegment ui_spinbox_args_set_intvalue_addr = lib.find("ui_spinbox_args_set_intvalue").orElseThrow(); MemorySegment ui_spinbox_args_set_doublevalue_addr = lib.find("ui_spinbox_args_set_doublevalue").orElseThrow(); @@ -1255,6 +1263,10 @@ class ArgFuncs { spinbox_args_set_style_class = linker.downcallHandle(ui_spinbox_args_set_style_class_addr, sigv_mm); spinbox_args_set_onchange = linker.downcallHandle(ui_spinbox_args_set_onchange_addr, sigv_mm); spinbox_args_set_onchangedata = linker.downcallHandle(ui_spinbox_args_set_onchangedata_addr, sigv_mm); + spinbox_args_set_min = linker.downcallHandle(ui_spinbox_args_set_min_addr, sigv_md); + spinbox_args_set_max = linker.downcallHandle(ui_spinbox_args_set_max_addr, sigv_md); + spinbox_args_set_step = linker.downcallHandle(ui_spinbox_args_set_step_addr, sigv_md); + spinbox_args_set_digits = linker.downcallHandle(ui_spinbox_args_set_digits_addr, sigv_mi); spinbox_args_set_varname = linker.downcallHandle(ui_spinbox_args_set_varname_addr, sigv_mm); spinbox_args_set_intvalue = linker.downcallHandle(ui_spinbox_args_set_intvalue_addr, sigv_mm); spinbox_args_set_doublevalue = linker.downcallHandle(ui_spinbox_args_set_doublevalue_addr, sigv_mm); diff --git a/ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java b/ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java index b0a8c72..b2e89a3 100644 --- a/ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java +++ b/ui-java/src/main/java/de/unixwork/ui/SpinBoxBuilder.java @@ -15,6 +15,10 @@ public class SpinBoxBuilder extends AbstractWidgetBuilder{ private int rowspan; private String name; private String styleClass; + private double min; + private double max; + private double step; + private int digits; private UiInteger intValue; private UiDouble doubleValue; private UiRange rangeValue; @@ -79,6 +83,26 @@ public class SpinBoxBuilder extends AbstractWidgetBuilder{ return this; } + public SpinBoxBuilder min(double min) { + this.min = min; + return this; + } + + public SpinBoxBuilder max(double max) { + this.max = max; + return this; + } + + public SpinBoxBuilder step(double step) { + this.step = step; + return this; + } + + public SpinBoxBuilder digits(int digits) { + this.digits = digits; + return this; + } + public SpinBoxBuilder intValue(UiInteger value) { this.intValue = value; return this; @@ -153,6 +177,18 @@ public class SpinBoxBuilder extends AbstractWidgetBuilder{ ui.spinbox_args_set_onchange.invoke(args, event.getCallback()); ui.spinbox_args_set_onchangedata.invoke(args, event.getUserData()); } + if(min != 0) { + ui.spinbox_args_set_min.invoke(args, min); + } + if(max != 0) { + ui.spinbox_args_set_max.invoke(args, max); + } + if(step != 0) { + ui.spinbox_args_set_step.invoke(args, step); + } + if(digits != 0) { + ui.spinbox_args_set_digits.invoke(args, digits); + } if(varname != null) { MemorySegment cstr = arena.allocateFrom(varname); ui.spinbox_args_set_varname.invoke(args, cstr); 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 45ab0dc..b6a24eb 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 @@ -1538,6 +1538,10 @@ class Toplevel(obj: UiObject) { intValue: UiInteger? = null, doubleValue: UiDouble? = null, rangeValue: UiRange? = null, + min: Double = 0.0, + max: Double = 0.0, + step: Double = 0.0, + digits: Int = 0, fill: Boolean = false, hexpand: Boolean = false, vexpand: Boolean = false, -- 2.47.3