]> uap-core.de Git - rssreader.git/commitdiff
add kotlin functions for toggle buttons
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Thu, 19 Jun 2025 20:14:27 +0000 (22:14 +0200)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Thu, 19 Jun 2025 20:14:27 +0000 (22:14 +0200)
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt

index b7b69be76dcd9e077cd41f231eb9eab6a6889ba5..f006fd88256e539abc841f522e53a06cabb45ec9 100644 (file)
@@ -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