From: Olaf Wintermann Date: Thu, 19 Jun 2025 20:14:27 +0000 (+0200) Subject: add kotlin functions for toggle buttons X-Git-Url: https://uap-core.de/gitweb/?a=commitdiff_plain;h=a03acb656a70bc91e5f0bb98198e0119eb1403cc;p=rssreader.git add kotlin functions for toggle buttons --- 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 b7b69be..f006fd8 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 @@ -4,6 +4,7 @@ import de.unixwork.ui.Button import de.unixwork.ui.ButtonBuilder import de.unixwork.ui.EventHandler import de.unixwork.ui.EventWrapper.eventHandler +import de.unixwork.ui.ToggleBuilder import de.unixwork.ui.UiObject import de.unixwork.ui.UiWidget import java.lang.foreign.MemorySegment @@ -75,4 +76,213 @@ class Toplevel(obj: UiObject) { } return button.create() } + + private fun createToggleButton( + button: ToggleBuilder, + label: String? = null, + stockId: String? = null, + icon: String? = null, + varname: String? = 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 { + label?.let { + button.label(it) + } + varname?.let { + button.varname(it) + } + // TODO: fill + if(hexpand) { + button.hexpand(true) + } + if(vexpand) { + button.vexpand(true) + } + if(hfill) { + button.hfill(true) + } + if(vfill) { + button.vfill(true) + } + if(colspan > 0) { + button.colspan(colspan) + } + if(rowspan > 0) { + button.rowspan(rowspan) + } + if(overrideDefaults) { + button.overrideDefaults(true) + } + name?.let { + button.name(it) + } + styleClass?.let { + button.styleClass(it) + } + stockId?.let { + button.stockId(it) + } + onChange?.let { + button.onChange(onChange) + } + return button.create() + } + + fun togglebutton( + label: String? = null, + stockId: String? = null, + icon: String? = null, + varname: String? = 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 { + return createToggleButton( + button = Button.toggleButton(obj), + label = label, + stockId = stockId, + icon = icon, + varname = varname, + fill = fill, + hexpand = hexpand, + vexpand = vexpand, + hfill = hfill, + vfill = vfill, + overrideDefaults = overrideDefaults, + colspan = colspan, + rowspan = rowspan, + name = name, + styleClass = styleClass, + onChange = onChange + ) + } + + fun checkbox( + label: String? = null, + stockId: String? = null, + icon: String? = null, + varname: String? = 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 { + return createToggleButton( + button = Button.checkbox(obj), + label = label, + stockId = stockId, + icon = icon, + varname = varname, + fill = fill, + hexpand = hexpand, + vexpand = vexpand, + hfill = hfill, + vfill = vfill, + overrideDefaults = overrideDefaults, + colspan = colspan, + rowspan = rowspan, + name = name, + styleClass = styleClass, + onChange = onChange + ) + } + + fun switch( + label: String? = null, + stockId: String? = null, + icon: String? = null, + varname: String? = 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 { + return createToggleButton( + button = Button.switchButton(obj), + label = label, + stockId = stockId, + icon = icon, + varname = varname, + fill = fill, + hexpand = hexpand, + vexpand = vexpand, + hfill = hfill, + vfill = vfill, + overrideDefaults = overrideDefaults, + colspan = colspan, + rowspan = rowspan, + name = name, + styleClass = styleClass, + onChange = onChange + ) + } + + fun radiobutton( + label: String? = null, + stockId: String? = null, + icon: String? = null, + varname: String? = 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 { + return createToggleButton( + button = Button.radioButton(obj), + label = label, + stockId = stockId, + icon = icon, + varname = varname, + 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