From: Olaf Wintermann Date: Sun, 13 Jul 2025 17:57:27 +0000 (+0200) Subject: add kotlin API for sourcelist and text widgets X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=35235279a97269012ab67c67408dd88e1e642137;p=rssreader.git add kotlin API for sourcelist and text widgets --- 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 c9e2862..19f27a8 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 @@ -9,11 +9,17 @@ import de.unixwork.ui.EventHandler import de.unixwork.ui.EventWrapper.eventHandler import de.unixwork.ui.ListValueConverter import de.unixwork.ui.ListView +import de.unixwork.ui.SubListValueConverter +import de.unixwork.ui.Text +import de.unixwork.ui.TextFieldBuilder import de.unixwork.ui.ToggleBuilder import de.unixwork.ui.UiInteger import de.unixwork.ui.UiList import de.unixwork.ui.UiObject +import de.unixwork.ui.UiSourceList +import de.unixwork.ui.UiString import de.unixwork.ui.UiWidget +import java.awt.TextField import java.lang.foreign.MemorySegment class Toplevel(obj: UiObject) { @@ -739,4 +745,222 @@ class Toplevel(obj: UiObject) { } return list.create() } + + fun sourcelist( + varname: String? = null, + sourceList: UiSourceList? = null, + fill: Boolean = false, + hexpand: Boolean = false, + vexpand: Boolean = false, + hfill: Boolean = false, + vfill: Boolean = false, + overrideDefaults: Boolean = false, + colspan: Int = -1, + rowspan: Int = -1, + name: String? = null, + styleClass: String? = null, + getvalue: SubListValueConverter? = null + ): UiWidget { + val list = ListView.sourcelist(obj) + varname?.let { + list.varname(varname) + } + sourceList?.let { + list.dynamicSublists(sourceList) + } + if(fill) { + list.fill(true) + } + if(hexpand) { + list.hexpand(true) + } + if(vexpand) { + list.vexpand(true) + } + if(hfill) { + list.hfill(true) + } + if(vfill) { + list.vfill(true) + } + if(overrideDefaults) { + list.overrideDefaults(true) + } + if(colspan > 0) { + list.colspan(colspan) + } + if(rowspan > 0) { + list.rowspan(rowspan) + } + name?.let { + list.name(it) + } + styleClass?.let { + list.styleClass(it) + } + getvalue?.let { + list.getvalue(it) + } + return list.create() + } + + private fun createTextField( + textfield: TextFieldBuilder, + varname: String? = null, + value: UiString? = null, + fill: Boolean = false, + hexpand: Boolean = false, + vexpand: Boolean = false, + hfill: Boolean = false, + vfill: Boolean = false, + overrideDefaults: Boolean = false, + colspan: Int = -1, + rowspan: Int = -1, + name: String? = null, + styleClass: String? = null, + onChange: EventHandler? = null + ): UiWidget { + varname?.let { + textfield.varname(it) + } + value?.let { + textfield.value(it) + } + if(fill) { + textfield.fill(fill); + } + if(hexpand) { + textfield.hexpand(true) + } + if(vexpand) { + textfield.vexpand(true) + } + if(hfill) { + textfield.hfill(true) + } + if(vfill) { + textfield.vfill(true) + } + if(colspan > 0) { + textfield.colspan(colspan) + } + if(rowspan > 0) { + textfield.rowspan(rowspan) + } + if(overrideDefaults) { + textfield.overrideDefaults(true) + } + name?.let { + textfield.name(it) + } + styleClass?.let { + textfield.styleClass(it) + } + onChange?.let { + textfield.onChange(onChange) + } + return textfield.create() + } + + fun textfield( + varname: String? = null, + value: UiString? = null, + fill: Boolean = false, + hexpand: Boolean = false, + vexpand: Boolean = false, + hfill: Boolean = false, + vfill: Boolean = false, + overrideDefaults: Boolean = false, + colspan: Int = -1, + rowspan: Int = -1, + name: String? = null, + styleClass: String? = null, + onChange: EventHandler? = null + ): UiWidget { + val textfield = Text.textfield(obj) + return createTextField( + textfield = textfield, + varname = varname, + value = value, + fill = fill, + hexpand = hexpand, + vexpand = vexpand, + hfill = hfill, + vfill = vfill, + overrideDefaults = overrideDefaults, + colspan = colspan, + rowspan = rowspan, + name = name, + styleClass = styleClass, + onChange = onChange + ) + } + + fun passwordField( + varname: String? = null, + value: UiString? = null, + fill: Boolean = false, + hexpand: Boolean = false, + vexpand: Boolean = false, + hfill: Boolean = false, + vfill: Boolean = false, + overrideDefaults: Boolean = false, + colspan: Int = -1, + rowspan: Int = -1, + name: String? = null, + styleClass: String? = null, + onChange: EventHandler? = null + ): UiWidget { + val textfield = Text.passwordfield(obj) + return createTextField( + textfield = textfield, + varname = varname, + value = value, + fill = fill, + hexpand = hexpand, + vexpand = vexpand, + hfill = hfill, + vfill = vfill, + overrideDefaults = overrideDefaults, + colspan = colspan, + rowspan = rowspan, + name = name, + styleClass = styleClass, + onChange = onChange + ) + } + + fun framelessTextfield( + varname: String? = null, + value: UiString? = null, + fill: Boolean = false, + hexpand: Boolean = false, + vexpand: Boolean = false, + hfill: Boolean = false, + vfill: Boolean = false, + overrideDefaults: Boolean = false, + colspan: Int = -1, + rowspan: Int = -1, + name: String? = null, + styleClass: String? = null, + onChange: EventHandler? = null + ): UiWidget { + val textfield = Text.framelessTextfield(obj) + return createTextField( + textfield = textfield, + varname = varname, + value = value, + fill = fill, + hexpand = hexpand, + vexpand = vexpand, + hfill = hfill, + vfill = vfill, + overrideDefaults = overrideDefaults, + colspan = colspan, + rowspan = rowspan, + name = name, + styleClass = styleClass, + onChange = onChange + ) + } } \ No newline at end of file