]> uap-core.de Git - rssreader.git/commitdiff
remove Toplevel class
authorOlaf Wintermann <olaf.wintermann@gmail.com>
Mon, 15 Dec 2025 15:12:05 +0000 (16:12 +0100)
committerOlaf Wintermann <olaf.wintermann@gmail.com>
Mon, 15 Dec 2025 15:12:05 +0000 (16:12 +0100)
rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/FeedConfig.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt
rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt [deleted file]
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt [new file with mode: 0644]
ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt
ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt

index 893e5d742529e9e207d662d92b9d1ec8ad4d4afd..6b4504363f21c9f5beaecb7bc3a5f0ec6f9d2f41 100644 (file)
@@ -2,11 +2,11 @@ package de.unixwork.rssreader
 
 import de.unixwork.ui.UiInteger
 import de.unixwork.ui.UiString
-import de.unixwork.ui.kotlin.Toplevel
-import de.unixwork.ui.kotlin.simpleWindow
+import de.unixwork.ui.UiObject
+import de.unixwork.ui.kotlin.*
 
 class ConfigWindow {
-    val window: Toplevel
+    val window: UiObject
 
     val dateFormat: UiString
     val dateFormatToday: UiString
@@ -23,19 +23,19 @@ class ConfigWindow {
 
     init {
         window = simpleWindow("")
-        window.ui.setSize(600, 500)
-        window.ui.addCloseHandler {
+        window.setSize(600, 500)
+        window.addCloseHandler {
             App.configWindow = null
         }
 
-        dateFormat = window.ui.string()
-        dateFormatToday = window.ui.string()
-        defaultUpdateInterval = window.ui.integer()
-        minUpdateWaitTime = window.ui.integer()
-        autoUpdateStartDelay = window.ui.integer()
-        maxItemAge = window.ui.integer()
+        dateFormat = window.string()
+        dateFormatToday = window.string()
+        defaultUpdateInterval = window.integer()
+        minUpdateWaitTime = window.integer()
+        autoUpdateStartDelay = window.integer()
+        maxItemAge = window.integer()
 
-        message = window.ui.string()
+        message = window.string()
 
         window {
             tabview(margin = 12, fill = true) {
index 824ba3d9c1baf0d63a8182444463794cb89a2087..6af83959afe34e921f091c4860242d056bce8318 100644 (file)
@@ -1,15 +1,16 @@
 package de.unixwork.rssreader
 
 import de.unixwork.ui.Text.passwordfield
+import de.unixwork.ui.UiObject
 import de.unixwork.ui.UiInteger
 import de.unixwork.ui.UiList
 import de.unixwork.ui.UiString
 import de.unixwork.ui.UiText
-import de.unixwork.ui.kotlin.Toplevel
+import de.unixwork.ui.kotlin.*
 import de.unixwork.ui.kotlin.openFileDialog
 
-class FeedConfig(toplevel: Toplevel) {
-    val window = toplevel
+class FeedConfig(obj: UiObject) {
+    val window = obj
 
     var feedCollection: FeedCollection? = null
 
@@ -34,18 +35,18 @@ class FeedConfig(toplevel: Toplevel) {
     }
 
     init {
-        groups = window.ui.list<FeedGroup>()
-        name = window.ui.string()
-        urls = window.ui.text()
-        readstatus = window.ui.list()
-        user = window.ui.string()
-        password = window.ui.string()
-        cert = window.ui.string()
-        customUpdateInterval = window.ui.integer()
-        updateInterval = window.ui.integer()
-        autoDeleteOptions = window.ui.list()
-        maxItemAge = window.ui.integer()
-        itemContent = window.ui.list()
+        groups = window.list<FeedGroup>()
+        name = window.string()
+        urls = window.text()
+        readstatus = window.list()
+        user = window.string()
+        password = window.string()
+        cert = window.string()
+        customUpdateInterval = window.integer()
+        updateInterval = window.integer()
+        autoDeleteOptions = window.list()
+        maxItemAge = window.integer()
+        itemContent = window.list()
 
         // data
         maxItemAge.setIntValue(100)
@@ -110,9 +111,9 @@ class FeedConfig(toplevel: Toplevel) {
                                 colspan = 2,
                                 onActivate = { event ->
                                     if(event.intValue == 2) {
-                                        window.ui.setState(FeedConfig.AUTO_DELETE_ITEMS)
+                                        window.setState(FeedConfig.AUTO_DELETE_ITEMS)
                                     } else {
-                                        window.ui.unsetState(FeedConfig.AUTO_DELETE_ITEMS)
+                                        window.unsetState(FeedConfig.AUTO_DELETE_ITEMS)
                                     }
                                 }
                             ) { elm, col ->
index 1b776ce660246f349813477747ed1da672d18cb6..b2de34f0bf7629aed1d15d645b6a57f96bb05006 100644 (file)
@@ -128,9 +128,9 @@ class FeedList(window: MainWindow) : Document() {
         feedName.setString(item.feedName)
         if(!item.author.isNullOrEmpty()) {
             author.setString(item.author)
-            window.window.ui.setState(MainWindow.ITEM_HAS_AUTHOR)
+            window.window.setState(MainWindow.ITEM_HAS_AUTHOR)
         } else {
-            window.window.ui.unsetState(MainWindow.ITEM_HAS_AUTHOR)
+            window.window.unsetState(MainWindow.ITEM_HAS_AUTHOR)
         }
         if(!item.link.isNullOrEmpty() && !currentFeed?.addUrlParam.isNullOrEmpty()) {
             var newurl = item.link
@@ -147,9 +147,9 @@ class FeedList(window: MainWindow) : Document() {
         category.setString(item.category ?: "")
         if(!item.category.isNullOrEmpty()) {
             category.setString(item.category)
-            window.window.ui.setState(MainWindow.ITEM_HAS_CATEGORY)
+            window.window.setState(MainWindow.ITEM_HAS_CATEGORY)
         } else {
-            window.window.ui.unsetState(MainWindow.ITEM_HAS_CATEGORY)
+            window.window.unsetState(MainWindow.ITEM_HAS_CATEGORY)
         }
 
         if(item.isBookmark) {
@@ -158,7 +158,7 @@ class FeedList(window: MainWindow) : Document() {
             starred.setIntValue(0)
         }
 
-        window.window.ui.setState(MainWindow.ITEM_SELETED)
+        window.window.setState(MainWindow.ITEM_SELETED)
 
         val browserSetting = browserSetting.intValue()
         if(browserSetting == 0) {
@@ -196,7 +196,7 @@ class FeedList(window: MainWindow) : Document() {
             } else {
                 val content = item.getContent()
                 webview.loadContent(item.link, content.text, content.type, "utf-8")
-                window.window.ui.unsetState(MainWindow.ITEM_INTERNAL_BROWSER)
+                window.window.unsetState(MainWindow.ITEM_INTERNAL_BROWSER)
             }
         }
     }
index a54316ada92817a682aef3f5811850588661ecd9..ce507728344a8e24f157dfd61b1c84f6f1e56581 100644 (file)
@@ -1,5 +1,6 @@
 package de.unixwork.rssreader
 
+import de.unixwork.ui.UiObject
 import de.unixwork.ui.ColumnType
 import de.unixwork.ui.LabelStyle
 import de.unixwork.ui.LinkButtonType
@@ -11,15 +12,7 @@ import de.unixwork.ui.UiInteger
 import de.unixwork.ui.UiList
 import de.unixwork.ui.UiString
 import de.unixwork.ui.UiText
-import de.unixwork.ui.kotlin.Toplevel
-import de.unixwork.ui.kotlin.dialog
-import de.unixwork.ui.kotlin.dialogWindow
-import de.unixwork.ui.kotlin.menuBuilder
-import de.unixwork.ui.kotlin.menuItem
-import de.unixwork.ui.kotlin.openFileDialog
-import de.unixwork.ui.kotlin.separator
-import de.unixwork.ui.kotlin.setDefaultWindowSize
-import de.unixwork.ui.kotlin.splitViewWindow
+import de.unixwork.ui.kotlin.*
 import kotlinx.coroutines.Dispatchers
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.launch
@@ -35,7 +28,7 @@ class MainWindow() {
         const val ITEM_INTERNAL_BROWSER = 1002
     }
 
-    val window : Toplevel
+    val window : UiObject
     val sourceList = FeedSourceList()
     val feedList = FeedList(this)
 
@@ -109,7 +102,7 @@ class MainWindow() {
             if(evt.sublistIndex >= 0 && evt.rowIndex >= 0) {
                 val feedCollection = sourceList.groups[evt.sublistIndex].feeds[evt.rowIndex]
                 dialog(
-                    parent = window.ui,
+                    parent = window,
                     title = "Delete Feed",
                     content = "Delete ${feedCollection.name}?",
                     button1Label = "Cancel",
@@ -128,7 +121,7 @@ class MainWindow() {
                 var move:UiInteger? = null
                 var groups:UiList<FeedGroup>? = null
                 val dialog = dialogWindow(
-                    parent = window.ui,
+                    parent = window,
                     title = "Delete",
                     lbutton1 = "Cancel",
                     rbutton4 = "Delete",
@@ -148,8 +141,8 @@ class MainWindow() {
                         ev.`object`.close()
                     })
                 {
-                    move = ui.integer()
-                    groups = ui.list<FeedGroup>()
+                    move = integer()
+                    groups = list<FeedGroup>()
                     groups.addAll(sourceList.groups.filter { it != feedGroup })
 
                     grid(margin = 12, columnspacing = 8, rowspacing = 8, fill = true) {
@@ -332,10 +325,10 @@ class MainWindow() {
             }
         }
 
-        window.ui.windowData = this
+        window.windowData = this
 
-        window.ui.attach(sourceList)
-        window.ui.attach(feedList)
+        window.attach(sourceList)
+        window.attach(feedList)
     }
 
     fun reload() {
@@ -359,7 +352,7 @@ class MainWindow() {
     fun createFeedDialog() {
         var feedConfig: FeedConfig? = null
         val w = dialogWindow(
-            parent = window.ui,
+            parent = window,
             title = "Add Feed",
             defaultButton = 1,
             lbutton1 = "Add",
@@ -383,7 +376,7 @@ class MainWindow() {
     fun createCategoryDialog() {
         var name: UiString? = null
         val w = dialogWindow(
-            parent = window.ui,
+            parent = window,
             title = "Add Folder",
             defaultButton = 1,
             lbutton1 = "Add",
@@ -408,7 +401,7 @@ class MainWindow() {
                 ev.`object`.close()
             })
         {
-            name = ui.string()
+            name = string()
 
             grid(
                 margin = 12,
@@ -434,7 +427,7 @@ class MainWindow() {
     fun editFeedDialog(collection: FeedCollection) {
         var feedConfig: FeedConfig? = null
         val w = dialogWindow(
-            parent = window.ui,
+            parent = window,
             title = "Edit Feed",
             defaultButton = 1,
             lbutton1 = "Save",
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
deleted file mode 100644 (file)
index f4784b7..0000000
+++ /dev/null
@@ -1,2481 +0,0 @@
-package de.unixwork.ui.kotlin
-
-import de.unixwork.ui.Alignment
-import de.unixwork.ui.Button
-import de.unixwork.ui.Container
-import de.unixwork.ui.ContainerBuilder
-import de.unixwork.ui.ContainerUI
-import de.unixwork.ui.Entry
-import de.unixwork.ui.EventHandler
-import de.unixwork.ui.FrameBuilder
-import de.unixwork.ui.LabelBuilder
-import de.unixwork.ui.LabelStyle
-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 de.unixwork.ui.WebView
-import de.unixwork.ui.Label
-import de.unixwork.ui.LinkButtonType
-import de.unixwork.ui.ListSaveHandler
-import de.unixwork.ui.ListStyleProvider
-import de.unixwork.ui.ListViewBuilder
-import de.unixwork.ui.Menu
-import de.unixwork.ui.TabViewType
-import de.unixwork.ui.TableModel
-import de.unixwork.ui.TableViewBuilder
-import de.unixwork.ui.UiDouble
-import de.unixwork.ui.UiRange
-import de.unixwork.ui.UiText
-import java.awt.TextArea
-
-class Toplevel(obj: UiObject) {
-    val ui: UiObject = obj
-
-    fun show() {
-        ui.show()
-    }
-
-    fun close() {
-        ui.close()
-    }
-
-    operator fun invoke(block: Toplevel.() -> Unit) {
-        block()
-    }
-
-    private fun createContainer(
-        container: ContainerBuilder,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        defhexpand: Boolean = false,
-        defvexpand: Boolean = false,
-        defhfill: Boolean = false,
-        defvfill: Boolean = false,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        spacing: Int = -1,
-        columnspacing: Int = -1,
-        rowspacing: Int = -1,
-        visibilityStates: IntArray? = null,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        if(fill) {
-            container.fill(true)
-        }
-        if(hexpand) {
-            container.hexpand(true)
-        }
-        if(vexpand) {
-            container.vexpand(true)
-        }
-        if(hfill) {
-            container.hfill(true)
-        }
-        if(vfill) {
-            container.vfill(true)
-        }
-        if(overrideDefaults) {
-            container.overrideDefaults(true)
-        }
-        if(margin > 0) {
-            container.margin(margin)
-        }
-        if(marginLeft > 0) {
-            container.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            container.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            container.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            container.marginBottom(marginBottom)
-        }
-        if(defhexpand) {
-            container.defaultHExpand(true)
-        }
-        if(defvexpand) {
-            container.defaultVExpand(true)
-        }
-        if(defhfill) {
-            container.defaultHfill(true)
-        }
-        if(defvfill) {
-            container.defaultVfill(true)
-        }
-        if(colspan > 0) {
-            container.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            container.rowspan(rowspan)
-        }
-        if(spacing > 0) {
-            container.spacing(spacing)
-        }
-        if(columnspacing > 0) {
-            container.columnspacing(columnspacing)
-        }
-        if(rowspacing > 0) {
-            container.rowspacing(rowspacing)
-        }
-        if(visibilityStates != null) {
-            container.visibilityStates(visibilityStates)
-        }
-
-        return container.create(ui)
-    }
-
-    fun hbox(
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        spacing: Int = -1,
-        visibilityStates: IntArray? = null,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        return createContainer(
-            container = Container.hbox(this@Toplevel.ui),
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            spacing = spacing,
-            visibilityStates = visibilityStates,
-            ui = ui
-        )
-    }
-
-
-    fun vbox(
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        spacing: Int = -1,
-        visibilityStates: IntArray? = null,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        return createContainer(
-            container = Container.vbox(this@Toplevel.ui),
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            spacing = spacing,
-            visibilityStates = visibilityStates,
-            ui = ui
-        )
-    }
-
-
-    fun grid(
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        defhexpand: Boolean = false,
-        defvexpand: Boolean = false,
-        defhfill: Boolean = false,
-        defvfill: Boolean = false,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        spacing: Int = -1,
-        columnspacing: Int = -1,
-        rowspacing: Int = -1,
-        visibilityStates: IntArray? = null,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        return createContainer(
-            container = Container.grid(this@Toplevel.ui),
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            defhexpand = defhexpand,
-            defhfill = defhfill,
-            defvexpand = defvexpand,
-            defvfill = defvfill,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            spacing = spacing,
-            columnspacing = columnspacing,
-            rowspacing = rowspacing,
-            visibilityStates = visibilityStates,
-            ui = ui
-        )
-    }
-
-    fun row(
-        ui: ContainerUI? = null
-    ) {
-        ui?.callback()
-        Container.newline(this@Toplevel.ui)
-    }
-
-    fun tab(
-        label: String? = null,
-        ui: ContainerUI? = null
-    ) {
-        val tab = Container.tab(this@Toplevel.ui, label)
-        ui?.callback()
-        tab.close()
-    }
-
-    private fun createFrame(
-        container: FrameBuilder,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        padding: Int = -1,
-        spacing: Int = -1,
-        columnspacing: Int = -1,
-        rowspacing: Int = -1,
-        expanded: Boolean = false,
-        label: String? = null,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        if(fill) {
-            container.fill(true)
-        }
-        if(hexpand) {
-            container.hexpand(true)
-        }
-        if(vexpand) {
-            container.vexpand(true)
-        }
-        if(hfill) {
-            container.hfill(true)
-        }
-        if(vfill) {
-            container.vfill(true)
-        }
-        if(overrideDefaults) {
-            container.overrideDefaults(true)
-        }
-        if(margin > 0) {
-            container.margin(margin)
-        }
-        if(marginLeft > 0) {
-            container.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            container.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            container.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            container.marginBottom(marginBottom)
-        }
-        if(colspan > 0) {
-            container.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            container.rowspan(rowspan)
-        }
-        if(padding > 0) {
-            container.padding(padding)
-        }
-        if(spacing > 0) {
-            container.spacing(spacing)
-        }
-        if(columnspacing > 0) {
-            container.columnspacing(columnspacing)
-        }
-        if(rowspacing > 0) {
-            container.rowspacing(rowspacing)
-        }
-        if(expanded) {
-            container.isexpanded(true)
-        }
-        if(label != null) {
-            container.label(label)
-        }
-
-        return container.create(ui)
-    }
-
-    fun frame(
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        padding: Int = -1,
-        spacing: Int = -1,
-        columnspacing: Int = -1,
-        rowspacing: Int = -1,
-        label: String? = null,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        return createFrame(
-            container = Container.frame(this@Toplevel.ui),
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            padding = padding,
-            spacing = spacing,
-            columnspacing = columnspacing,
-            rowspacing = rowspacing,
-            label = label,
-            ui = ui
-        )
-    }
-
-    fun expander(
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        padding: Int = -1,
-        spacing: Int = -1,
-        columnspacing: Int = -1,
-        rowspacing: Int = -1,
-        expanded: Boolean = false,
-        label: String? = null,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        return createFrame(
-            container = Container.expander(this@Toplevel.ui),
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            padding = padding,
-            spacing = spacing,
-            columnspacing = columnspacing,
-            rowspacing = rowspacing,
-            expanded = expanded,
-            label = label,
-            ui = ui
-        )
-    }
-
-    fun tabview(
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        padding: Int = -1,
-        spacing: Int = -1,
-        columnspacing: Int = -1,
-        rowspacing: Int = -1,
-        type: TabViewType = TabViewType.DEFAULT,
-        varname: String? = null,
-        value: UiInteger? = null,
-        onChange: EventHandler? = null,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        val container = Container.tabview(this@Toplevel.ui)
-        if(fill) {
-            container.fill(true)
-        }
-        if(hexpand) {
-            container.hexpand(true)
-        }
-        if(vexpand) {
-            container.vexpand(true)
-        }
-        if(hfill) {
-            container.hfill(true)
-        }
-        if(vfill) {
-            container.vfill(true)
-        }
-        if(overrideDefaults) {
-            container.overrideDefaults(true)
-        }
-        if(margin > 0) {
-            container.margin(margin)
-        }
-        if(marginLeft > 0) {
-            container.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            container.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            container.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            container.marginBottom(marginBottom)
-        }
-        if(name != null) {
-            container.name(name)
-        }
-        if(styleClass != null) {
-            container.styleClass(styleClass)
-        }
-        if(colspan > 0) {
-            container.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            container.rowspan(rowspan)
-        }
-        if(padding > 0) {
-            container.margin(padding)
-        }
-        if(spacing > 0) {
-            container.spacing(spacing)
-        }
-        if(columnspacing > 0) {
-            container.columnspacing(columnspacing)
-        }
-        if(rowspacing > 0) {
-            container.rowspacing(rowspacing)
-        }
-        container.type(type)
-        if(varname != null) {
-            container.varname(varname)
-        }
-        if(value != null) {
-            container.value(value)
-        }
-        if(onChange != null) {
-            container.onChange(onChange)
-        }
-        return container.create(ui)
-    }
-
-    private fun createSplitpane(
-        horizontal: Boolean,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        spacing: Int = -1,
-        initialPosition: Int = 0,
-        positionProperty: String? = null,
-        value: UiInteger? = null,
-        varname: String? = null,
-        maxPanes: Int = 0,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        val container = if(horizontal) {
-            Container.hsplitview(this@Toplevel.ui)
-        } else {
-            Container.vsplitview(this@Toplevel.ui)
-        }
-
-        if(fill) {
-            container.fill(true)
-        }
-        if(hexpand) {
-            container.hexpand(true)
-        }
-        if(vexpand) {
-            container.vexpand(true)
-        }
-        if(hfill) {
-            container.hfill(true)
-        }
-        if(vfill) {
-            container.vfill(true)
-        }
-        if(overrideDefaults) {
-            container.overrideDefaults(true)
-        }
-        if(margin > 0) {
-            container.margin(margin)
-        }
-        if(marginLeft > 0) {
-            container.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            container.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            container.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            container.marginBottom(marginBottom)
-        }
-        if(colspan > 0) {
-            container.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            container.rowspan(rowspan)
-        }
-        if(spacing > 0) {
-            container.spacing(spacing)
-        }
-        if(initialPosition > 0) {
-            container.initialPosition(initialPosition)
-        }
-        if(positionProperty != null) {
-            container.positionProperty(positionProperty)
-        }
-        if(value != null) {
-            container.value(value)
-        }
-        if(varname != null) {
-            container.varname(varname)
-        }
-        if(maxPanes > 0) {
-            container.maxPanes(maxPanes)
-        }
-        if(name != null) {
-            container.name(name)
-        }
-        if(styleClass != null) {
-            container.styleClass(styleClass)
-        }
-
-        return container.create(ui)
-    }
-
-    fun hsplitpane(
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        spacing: Int = -1,
-        initialPosition: Int = 0,
-        positionProperty: String? = null,
-        value: UiInteger? = null,
-        varname: String? = null,
-        maxPanes: Int = 0,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        return createSplitpane(
-            horizontal = true,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            spacing = spacing,
-            initialPosition = initialPosition,
-            positionProperty = positionProperty,
-            value = value,
-            varname = varname,
-            maxPanes = maxPanes,
-            ui = ui
-        )
-    }
-
-    fun vsplitpane(
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        spacing: Int = -1,
-        initialPosition: Int = 0,
-        positionProperty: String? = null,
-        value: UiInteger? = null,
-        varname: String? = null,
-        maxPanes: Int = 0,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        return createSplitpane(
-            horizontal = false,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            spacing = spacing,
-            initialPosition = initialPosition,
-            positionProperty = positionProperty,
-            value = value,
-            varname = varname,
-            maxPanes = maxPanes,
-            ui = ui
-        )
-    }
-
-    fun sidebar(
-        name: String? = null,
-        styleClass: String? = null,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        spacing: Int = -1,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        val container = Container.sidebar(this@Toplevel.ui)
-        if(margin > 0) {
-            container.margin(margin)
-        }
-        if(marginLeft > 0) {
-            container.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            container.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            container.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            container.marginBottom(marginBottom)
-        }
-        if(spacing > 0) {
-            container.spacing(spacing)
-        }
-        if(name != null) {
-            container.name(name)
-        }
-        if(styleClass != null) {
-            container.styleClass(styleClass)
-        }
-
-        return container.create(ui)
-    }
-
-    fun leftPanel(
-        name: String? = null,
-        styleClass: String? = null,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        spacing: Int = -1,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        val container = Container.leftPanel(this@Toplevel.ui)
-        if(margin > 0) {
-            container.margin(margin)
-        }
-        if(marginLeft > 0) {
-            container.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            container.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            container.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            container.marginBottom(marginBottom)
-        }
-        if(spacing > 0) {
-            container.spacing(spacing)
-        }
-        if(name != null) {
-            container.name(name)
-        }
-        if(styleClass != null) {
-            container.styleClass(styleClass)
-        }
-
-        return container.create(ui)
-    }
-
-    fun rightPanel(
-        name: String? = null,
-        styleClass: String? = null,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        spacing: Int = -1,
-        ui: ContainerUI? = null
-    ): UiWidget {
-        val container = Container.rightPanel(this@Toplevel.ui)
-        if(margin > 0) {
-            container.margin(margin)
-        }
-        if(marginLeft > 0) {
-            container.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            container.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            container.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            container.marginBottom(marginBottom)
-        }
-        if(spacing > 0) {
-            container.spacing(spacing)
-        }
-        if(name != null) {
-            container.name(name)
-        }
-        if(styleClass != null) {
-            container.styleClass(styleClass)
-        }
-
-        return container.create(ui)
-    }
-
-    fun button(
-        label: String? = null,
-        icon: String? = null,
-        tooltip: String? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onClick: EventHandler? = null
-    ): UiWidget {
-        val button = Button.button(ui)
-        label?.let {
-            button.label(it)
-        }
-        icon?.let {
-            button.icon(it)
-        }
-        tooltip?.let {
-            button.tooltip(it)
-        }
-        if(fill) {
-            button.fill(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)
-        }
-        if(margin > 0) {
-            button.margin(margin)
-        }
-        if(marginLeft > 0) {
-            button.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            button.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            button.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            button.marginBottom(marginBottom)
-        }
-        name?.let {
-            button.name(name)
-        }
-        styleClass?.let {
-            button.styleClass(it)
-        }
-        states?.let {
-            button.states(*it)
-        }
-        onClick?.let {
-            button.onClick(onClick)
-        }
-        return button.create()
-    }
-
-    private fun createToggleButton(
-        button: ToggleBuilder,
-        label: String? = null,
-        icon: String? = null,
-        tooltip: String? = null,
-        varname: String? = null,
-        value: UiInteger? = null,
-        enableState: Int = 0,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        label?.let {
-            button.label(it)
-        }
-        tooltip?.let {
-            button.tooltip(it)
-        }
-        varname?.let {
-            button.varname(it)
-        }
-        value?.let {
-            button.value(it)
-        }
-        if(enableState > 0) {
-            button.enableState(enableState)
-        }
-        if(fill) {
-            button.fill(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)
-        }
-        if(margin > 0) {
-            button.margin(margin)
-        }
-        if(marginLeft > 0) {
-            button.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            button.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            button.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            button.marginBottom(marginBottom)
-        }
-        name?.let {
-            button.name(it)
-        }
-        styleClass?.let {
-            button.styleClass(it)
-        }
-        states?.let {
-            button.states(*it)
-        }
-        onChange?.let {
-            button.onChange(onChange)
-        }
-        return button.create()
-    }
-
-    fun togglebutton(
-        label: String? = null,
-        icon: String? = null,
-        tooltip: String? = null,
-        varname: String? = null,
-        value: UiInteger? = null,
-        enableState: Int = 0,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        return createToggleButton(
-            button = Button.toggleButton(ui),
-            label = label,
-            icon = icon,
-            tooltip = tooltip,
-            varname = varname,
-            value = value,
-            enableState = enableState,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            onChange = onChange
-        )
-    }
-
-    fun checkbox(
-        label: String? = null,
-        icon: String? = null,
-        tooltip: String? = null,
-        varname: String? = null,
-        value: UiInteger? = null,
-        enableState: Int = 0,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        return createToggleButton(
-            button = Button.checkbox(ui),
-            label = label,
-            icon = icon,
-            tooltip = tooltip,
-            varname = varname,
-            value = value,
-            enableState = enableState,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            onChange = onChange
-        )
-    }
-
-    fun switch(
-        label: String? = null,
-        icon: String? = null,
-        tooltip: String? = null,
-        varname: String? = null,
-        value: UiInteger? = null,
-        enableState: Int = 0,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        return createToggleButton(
-            button = Button.switchButton(ui),
-            label = label,
-            icon = icon,
-            tooltip = tooltip,
-            varname = varname,
-            value = value,
-            enableState = enableState,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            onChange = onChange
-        )
-    }
-
-    fun radiobutton(
-        label: String? = null,
-        icon: String? = null,
-        tooltip: String? = null,
-        varname: String? = null,
-        value: UiInteger? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        return createToggleButton(
-            button = Button.radioButton(ui),
-            label = label,
-            icon = icon,
-            tooltip = tooltip,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            onChange = onChange
-        )
-    }
-
-    fun linkbutton(
-        label: String? = null,
-        uri: String? = null,
-        varname: String? = null,
-        value: UiString? = null,
-        nofollow: Boolean = false,
-        type: LinkButtonType? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onClick: EventHandler? = null
-    ): UiWidget {
-        val button = Button.linkButton(ui)
-        label?.let {
-            button.label(it)
-        }
-        uri?.let {
-            button.uri(it)
-        }
-        varname?.let {
-            button.varname(it)
-        }
-        value?.let {
-            button.value(it)
-        }
-        if(nofollow) {
-            button.nofollow(nofollow)
-        }
-        if(type != null) {
-            button.type(type)
-        }
-        if(onClick != null) {
-            button.onClick(onClick)
-        }
-        if(fill) {
-            button.fill(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)
-        }
-        if(margin > 0) {
-            button.margin(margin)
-        }
-        if(marginLeft > 0) {
-            button.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            button.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            button.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            button.marginBottom(marginBottom)
-        }
-        name?.let {
-            button.name(name)
-        }
-        styleClass?.let {
-            button.styleClass(it)
-        }
-        states?.let {
-            button.states(*it)
-        }
-        return button.create()
-    }
-
-    fun <T>table(
-        model: TableModel,
-        varname: String? = null,
-        value: UiList<T>? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        contextmenu: Menu? = null,
-        onActivate: EventHandler? = null,
-        onSelection: EventHandler? = null,
-        onDragStart: EventHandler? = null,
-        onDragComplete: EventHandler? = null,
-        onDrop: EventHandler? = null,
-        onSave: ListSaveHandler? = null,
-        getstyle: ListStyleProvider<T>? = null,
-        getvalue: ListValueConverter<T>? = null
-    ): UiWidget {
-        val table = ListView.table<T>(ui)
-        table.model(model)
-        varname?.let {
-            table.varname(varname)
-        }
-        value?.let {
-            table.value(value)
-        }
-        if(fill) {
-            table.fill(true)
-        }
-        if(hexpand) {
-            table.hexpand(true)
-        }
-        if(vexpand) {
-            table.vexpand(true)
-        }
-        if(hfill) {
-            table.hfill(true)
-        }
-        if(vfill) {
-            table.vfill(true)
-        }
-        if(overrideDefaults) {
-            table.overrideDefaults(true)
-        }
-        if(margin > 0) {
-            table.margin(margin)
-        }
-        if(marginLeft > 0) {
-            table.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            table.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            table.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            table.marginBottom(marginBottom)
-        }
-        if(colspan > 0) {
-            table.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            table.rowspan(rowspan)
-        }
-        name?.let {
-            table.name(it)
-        }
-        styleClass?.let {
-            table.styleClass(it)
-        }
-        states?.let {
-            table.states(*it)
-        }
-        contextmenu?.let {
-            table.contextmenu(it)
-        }
-        onActivate?.let {
-            table.onActivate(it)
-        }
-        onSelection?.let {
-            table.onSelection(it)
-        }
-        onDragStart?.let {
-            table.onDragStart(it)
-        }
-        onDragComplete?.let {
-            table.onDragComplete(it)
-        }
-        onDrop?.let {
-            table.onDrop(it)
-        }
-        onSave?.let {
-            table.onSave(it)
-        }
-        getstyle?.let {
-            table.getstyle(it)
-        }
-        getvalue?.let {
-            table.getvalue(it)
-        }
-        return table.create()
-    }
-
-    fun <T>createListView(
-        list: ListViewBuilder<T>,
-        varname: String? = null,
-        value: UiList<T>? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        contextmenu: Menu? = null,
-        onActivate: EventHandler? = null,
-        onSelection: EventHandler? = null,
-        onDragStart: EventHandler? = null,
-        onDragComplete: EventHandler? = null,
-        onDrop: EventHandler? = null,
-        getvalue: ListValueConverter<T>? = null
-    ): UiWidget {
-        varname?.let {
-            list.varname(varname)
-        }
-        value?.let {
-            list.value(value)
-        }
-        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(margin > 0) {
-            list.margin(margin)
-        }
-        if(marginLeft > 0) {
-            list.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            list.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            list.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            list.marginBottom(marginBottom)
-        }
-        if(colspan > 0) {
-            list.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            list.rowspan(rowspan)
-        }
-        name?.let {
-            list.name(it)
-        }
-        styleClass?.let {
-            list.styleClass(it)
-        }
-        states?.let {
-            list.states(*it)
-        }
-        contextmenu?.let {
-            list.contextmenu(it)
-        }
-        onActivate?.let {
-            list.onActivate(it)
-        }
-        onSelection?.let {
-            list.onSelection(it)
-        }
-        onDragStart?.let {
-            list.onDragStart(it)
-        }
-        onDragComplete?.let {
-            list.onDragComplete(it)
-        }
-        onDrop?.let {
-            list.onDrop(it)
-        }
-        getvalue?.let {
-            list.getvalue(it)
-        }
-        return list.create()
-    }
-
-    fun <T>listview(
-        varname: String? = null,
-        value: UiList<T>? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        contextmenu: Menu? = null,
-        onActivate: EventHandler? = null,
-        onSelection: EventHandler? = null,
-        onDragStart: EventHandler? = null,
-        onDragComplete: EventHandler? = null,
-        onDrop: EventHandler? = null,
-        getvalue: ListValueConverter<T>? = null
-    ): UiWidget {
-        val list = ListView.list<T>(ui)
-        return createListView(
-            list = list,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            contextmenu = contextmenu,
-            onActivate = onActivate,
-            onSelection = onSelection,
-            onDragStart = onDragStart,
-            onDragComplete = onDragComplete,
-            onDrop = onDrop,
-            getvalue = getvalue
-        )
-    }
-
-    fun <T>dropdown(
-        varname: String? = null,
-        value: UiList<T>? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onActivate: EventHandler? = null,
-        getvalue: ListValueConverter<T>? = null
-    ): UiWidget {
-        val list = ListView.dropdown<T>(ui)
-        return createListView(
-            list = list,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            onActivate = onActivate,
-            getvalue = getvalue
-        )
-    }
-
-    fun <T>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,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        contextmenu: Menu? = null,
-        headerIsItem: Boolean = false,
-        onActivate: EventHandler? = null,
-        onButtonClick: EventHandler? = null,
-        getvalue: SubListValueConverter<T>? = null
-    ): UiWidget {
-        val list = ListView.sourcelist<T>(ui)
-        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(margin > 0) {
-            list.margin(margin)
-        }
-        if(marginLeft > 0) {
-            list.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            list.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            list.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            list.marginBottom(marginBottom)
-        }
-        if(colspan > 0) {
-            list.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            list.rowspan(rowspan)
-        }
-        name?.let {
-            list.name(it)
-        }
-        styleClass?.let {
-            list.styleClass(it)
-        }
-        contextmenu?.let {
-            list.contextmenu(it)
-        }
-        if(headerIsItem) {
-            list.headerIsItem(true)
-        }
-        onActivate?.let {
-            list.onActivate(it)
-        }
-        onButtonClick?.let {
-            list.onButtonClick(it)
-        }
-        getvalue?.let {
-            list.getvalue(it)
-        }
-        return list.create()
-    }
-
-    fun textarea(
-        varname: String? = null,
-        value: UiText? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        val textarea = Text.textarea(ui)
-        varname?.let {
-            textarea.varname(it)
-        }
-        value?.let {
-            textarea.value(it)
-        }
-        if(fill) {
-            textarea.fill(fill);
-        }
-        if(hexpand) {
-            textarea.hexpand(true)
-        }
-        if(vexpand) {
-            textarea.vexpand(true)
-        }
-        if(hfill) {
-            textarea.hfill(true)
-        }
-        if(vfill) {
-            textarea.vfill(true)
-        }
-        if(colspan > 0) {
-            textarea.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            textarea.rowspan(rowspan)
-        }
-        if(overrideDefaults) {
-            textarea.overrideDefaults(true)
-        }
-        if(margin > 0) {
-            textarea.margin(margin)
-        }
-        if(marginLeft > 0) {
-            textarea.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            textarea.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            textarea.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            textarea.marginBottom(marginBottom)
-        }
-        name?.let {
-            textarea.name(it)
-        }
-        styleClass?.let {
-            textarea.styleClass(it)
-        }
-        states?.let {
-            textarea.states(*it)
-        }
-        onChange?.let {
-            textarea.onChange(onChange)
-        }
-        return textarea.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,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = 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)
-        }
-        if(margin > 0) {
-            textfield.margin(margin)
-        }
-        if(marginLeft > 0) {
-            textfield.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            textfield.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            textfield.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            textfield.marginBottom(marginBottom)
-        }
-        name?.let {
-            textfield.name(it)
-        }
-        styleClass?.let {
-            textfield.styleClass(it)
-        }
-        states?.let {
-            textfield.states(*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,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        val textfield = Text.textfield(ui)
-        return createTextField(
-            textfield = textfield,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            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,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        val textfield = Text.passwordfield(ui)
-        return createTextField(
-            textfield = textfield,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            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,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        val textfield = Text.framelessTextfield(ui)
-        return createTextField(
-            textfield = textfield,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            margin = margin,
-            marginLeft = marginLeft,
-            marginRight = marginRight,
-            marginTop = marginTop,
-            marginBottom = marginBottom,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass,
-            states = states,
-            onChange = onChange
-        )
-    }
-
-    fun spinbox(
-        varname: String? = null,
-        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,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        states: IntArray? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        val spinbox = Entry.spinbox(ui)
-        varname?.let {
-            spinbox.varname(it)
-        }
-        intValue?.let {
-            spinbox.intValue(it)
-        }
-        doubleValue?.let {
-            spinbox.doubleValue(it)
-        }
-        rangeValue?.let {
-            spinbox.rangeValue(it)
-        }
-        if(min != 0.0) {
-            spinbox.min(min)
-        }
-        if(max != 0.0) {
-            spinbox.max(max)
-        }
-        if(step != 0.0) {
-            spinbox.step(step)
-        }
-        if(digits != 0) {
-            spinbox.digits(digits)
-        }
-        if(fill) {
-            spinbox.fill(fill);
-        }
-        if(hexpand) {
-            spinbox.hexpand(true)
-        }
-        if(vexpand) {
-            spinbox.vexpand(true)
-        }
-        if(hfill) {
-            spinbox.hfill(true)
-        }
-        if(vfill) {
-            spinbox.vfill(true)
-        }
-        if(colspan > 0) {
-            spinbox.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            spinbox.rowspan(rowspan)
-        }
-        if(overrideDefaults) {
-            spinbox.overrideDefaults(true)
-        }
-        if(margin > 0) {
-            spinbox.margin(margin)
-        }
-        if(marginLeft > 0) {
-            spinbox.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            spinbox.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            spinbox.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            spinbox.marginBottom(marginBottom)
-        }
-        name?.let {
-            spinbox.name(it)
-        }
-        styleClass?.let {
-            spinbox.styleClass(it)
-        }
-        states?.let {
-            spinbox.states(*it)
-        }
-        onChange?.let {
-            spinbox.onChange(onChange)
-        }
-        return spinbox.create()
-    }
-
-    fun webview(
-        varname: String? = null,
-        value: WebView? = null,
-        fill: Boolean = false,
-        hexpand: Boolean = false,
-        vexpand: Boolean = false,
-        hfill: Boolean = false,
-        vfill: Boolean = false,
-        overrideDefaults: Boolean = false,
-        margin: Int = -1,
-        marginLeft: Int = -1,
-        marginRight: Int = -1,
-        marginTop: Int = -1,
-        marginBottom: Int = -1,
-        colspan: Int = -1,
-        rowspan: Int = -1,
-        name: String? = null,
-        styleClass: String? = null,
-        onChange: EventHandler? = null
-    ): UiWidget {
-        val webview = WebView.webview(ui)
-        varname?.let {
-            webview.varname(it)
-        }
-        value?.let {
-            webview.value(it)
-        }
-        if(fill) {
-            webview.fill(fill);
-        }
-        if(hexpand) {
-            webview.hexpand(true)
-        }
-        if(vexpand) {
-            webview.vexpand(true)
-        }
-        if(hfill) {
-            webview.hfill(true)
-        }
-        if(vfill) {
-            webview.vfill(true)
-        }
-        if(colspan > 0) {
-            webview.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            webview.rowspan(rowspan)
-        }
-        if(overrideDefaults) {
-            webview.overrideDefaults(true)
-        }
-        if(margin > 0) {
-            webview.margin(margin)
-        }
-        if(marginLeft > 0) {
-            webview.marginLeft(marginLeft)
-        }
-        if(marginRight > 0) {
-            webview.marginRight(marginRight)
-        }
-        if(marginTop > 0) {
-            webview.marginTop(marginTop)
-        }
-        if(marginBottom > 0) {
-            webview.marginBottom(marginBottom)
-        }
-        name?.let {
-            webview.name(it)
-        }
-        styleClass?.let {
-            webview.styleClass(it)
-        }
-        return webview.create()
-    }
-
-    private fun createLabel(
-        label: LabelBuilder,
-        labelStr: String? = null,
-        align: Alignment? = null,
-        style: LabelStyle? = null,
-        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,
-        ): UiWidget {
-        labelStr?.let {
-            label.label(it)
-        }
-        align?.let {
-            label.align(it)
-        }
-        style?.let {
-            label.style(it)
-        }
-        varname?.let {
-            label.varname(it)
-        }
-        value?.let {
-            label.value(it)
-        }
-        if(fill) {
-            label.fill(fill);
-        }
-        if(hexpand) {
-            label.hexpand(true)
-        }
-        if(vexpand) {
-            label.vexpand(true)
-        }
-        if(hfill) {
-            label.hfill(true)
-        }
-        if(vfill) {
-            label.vfill(true)
-        }
-        if(colspan > 0) {
-            label.colspan(colspan)
-        }
-        if(rowspan > 0) {
-            label.rowspan(rowspan)
-        }
-        if(overrideDefaults) {
-            label.overrideDefaults(true)
-        }
-        name?.let {
-            label.name(it)
-        }
-        styleClass?.let {
-            label.styleClass(it)
-        }
-
-        return label.create()
-    }
-
-    fun label(
-        label: String? = null,
-        align: Alignment? = null,
-        style: LabelStyle? = null,
-        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
-        ): UiWidget {
-        val labelBuilder = Label.label(ui)
-        return createLabel(
-            label = labelBuilder,
-            labelStr = label,
-            align = align,
-            style = style,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass
-        )
-    }
-
-    fun llabel(
-        label: String? = null,
-        style: LabelStyle? = null,
-        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
-    ): UiWidget {
-        val labelBuilder = Label.llabel(ui)
-        return createLabel(
-            label = labelBuilder,
-            labelStr = label,
-            style = style,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass
-        )
-    }
-
-    fun rlabel(
-        label: String? = null,
-        style: LabelStyle? = null,
-        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
-    ): UiWidget {
-        val labelBuilder = Label.rlabel(ui)
-        return createLabel(
-            label = labelBuilder,
-            labelStr = label,
-            style = style,
-            varname = varname,
-            value = value,
-            fill = fill,
-            hexpand = hexpand,
-            vexpand = vexpand,
-            hfill = hfill,
-            vfill = vfill,
-            overrideDefaults = overrideDefaults,
-            colspan = colspan,
-            rowspan = rowspan,
-            name = name,
-            styleClass = styleClass
-        )
-    }
-}
\ No newline at end of file
diff --git a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt
new file mode 100644 (file)
index 0000000..44cc310
--- /dev/null
@@ -0,0 +1,2434 @@
+package de.unixwork.ui.kotlin
+
+import de.unixwork.ui.*
+
+operator fun UiObject.invoke(block: UiObject.() -> Unit) {
+    block()
+}
+
+private fun UiObject.createContainer(
+    container: ContainerBuilder,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    defhexpand: Boolean = false,
+    defvexpand: Boolean = false,
+    defhfill: Boolean = false,
+    defvfill: Boolean = false,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    spacing: Int = -1,
+    columnspacing: Int = -1,
+    rowspacing: Int = -1,
+    visibilityStates: IntArray? = null,
+    ui: ContainerUI? = null
+): UiWidget {
+    if(fill) {
+        container.fill(true)
+    }
+    if(hexpand) {
+        container.hexpand(true)
+    }
+    if(vexpand) {
+        container.vexpand(true)
+    }
+    if(hfill) {
+        container.hfill(true)
+    }
+    if(vfill) {
+        container.vfill(true)
+    }
+    if(overrideDefaults) {
+        container.overrideDefaults(true)
+    }
+    if(margin > 0) {
+        container.margin(margin)
+    }
+    if(marginLeft > 0) {
+        container.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        container.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        container.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        container.marginBottom(marginBottom)
+    }
+    if(defhexpand) {
+        container.defaultHExpand(true)
+    }
+    if(defvexpand) {
+        container.defaultVExpand(true)
+    }
+    if(defhfill) {
+        container.defaultHfill(true)
+    }
+    if(defvfill) {
+        container.defaultVfill(true)
+    }
+    if(colspan > 0) {
+        container.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        container.rowspan(rowspan)
+    }
+    if(spacing > 0) {
+        container.spacing(spacing)
+    }
+    if(columnspacing > 0) {
+        container.columnspacing(columnspacing)
+    }
+    if(rowspacing > 0) {
+        container.rowspacing(rowspacing)
+    }
+    if(visibilityStates != null) {
+        container.visibilityStates(visibilityStates)
+    }
+
+    return container.create(ui)
+}
+
+fun UiObject.hbox(
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    spacing: Int = -1,
+    visibilityStates: IntArray? = null,
+    ui: ContainerUI? = null
+): UiWidget {
+    return createContainer(
+        container = Container.hbox(this),
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        spacing = spacing,
+        visibilityStates = visibilityStates,
+        ui = ui
+    )
+}
+
+
+fun UiObject.vbox(
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    spacing: Int = -1,
+    visibilityStates: IntArray? = null,
+    ui: ContainerUI? = null
+): UiWidget {
+    return createContainer(
+        container = Container.vbox(this),
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        spacing = spacing,
+        visibilityStates = visibilityStates,
+        ui = ui
+    )
+}
+
+
+fun UiObject.grid(
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    defhexpand: Boolean = false,
+    defvexpand: Boolean = false,
+    defhfill: Boolean = false,
+    defvfill: Boolean = false,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    spacing: Int = -1,
+    columnspacing: Int = -1,
+    rowspacing: Int = -1,
+    visibilityStates: IntArray? = null,
+    ui: ContainerUI? = null
+): UiWidget {
+    return createContainer(
+        container = Container.grid(this),
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        defhexpand = defhexpand,
+        defhfill = defhfill,
+        defvexpand = defvexpand,
+        defvfill = defvfill,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        spacing = spacing,
+        columnspacing = columnspacing,
+        rowspacing = rowspacing,
+        visibilityStates = visibilityStates,
+        ui = ui
+    )
+}
+
+fun UiObject.row(
+    ui: ContainerUI? = null
+) {
+    ui?.callback()
+    Container.newline(this)
+}
+
+fun UiObject.tab(
+    label: String? = null,
+    ui: ContainerUI? = null
+) {
+    val tab = Container.tab(this, label)
+    ui?.callback()
+    tab.close()
+}
+
+private fun UiObject.createFrame(
+    container: FrameBuilder,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    padding: Int = -1,
+    spacing: Int = -1,
+    columnspacing: Int = -1,
+    rowspacing: Int = -1,
+    expanded: Boolean = false,
+    label: String? = null,
+    ui: ContainerUI? = null
+): UiWidget {
+    if(fill) {
+        container.fill(true)
+    }
+    if(hexpand) {
+        container.hexpand(true)
+    }
+    if(vexpand) {
+        container.vexpand(true)
+    }
+    if(hfill) {
+        container.hfill(true)
+    }
+    if(vfill) {
+        container.vfill(true)
+    }
+    if(overrideDefaults) {
+        container.overrideDefaults(true)
+    }
+    if(margin > 0) {
+        container.margin(margin)
+    }
+    if(marginLeft > 0) {
+        container.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        container.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        container.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        container.marginBottom(marginBottom)
+    }
+    if(colspan > 0) {
+        container.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        container.rowspan(rowspan)
+    }
+    if(padding > 0) {
+        container.padding(padding)
+    }
+    if(spacing > 0) {
+        container.spacing(spacing)
+    }
+    if(columnspacing > 0) {
+        container.columnspacing(columnspacing)
+    }
+    if(rowspacing > 0) {
+        container.rowspacing(rowspacing)
+    }
+    if(expanded) {
+        container.isexpanded(true)
+    }
+    if(label != null) {
+        container.label(label)
+    }
+
+    return container.create(ui)
+}
+
+fun UiObject.frame(
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    padding: Int = -1,
+    spacing: Int = -1,
+    columnspacing: Int = -1,
+    rowspacing: Int = -1,
+    label: String? = null,
+    ui: ContainerUI? = null
+): UiWidget {
+    return createFrame(
+        container = Container.frame(this),
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        padding = padding,
+        spacing = spacing,
+        columnspacing = columnspacing,
+        rowspacing = rowspacing,
+        label = label,
+        ui = ui
+    )
+}
+
+fun UiObject.expander(
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    padding: Int = -1,
+    spacing: Int = -1,
+    columnspacing: Int = -1,
+    rowspacing: Int = -1,
+    expanded: Boolean = false,
+    label: String? = null,
+    ui: ContainerUI? = null
+): UiWidget {
+    return createFrame(
+        container = Container.expander(this),
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        padding = padding,
+        spacing = spacing,
+        columnspacing = columnspacing,
+        rowspacing = rowspacing,
+        expanded = expanded,
+        label = label,
+        ui = ui
+    )
+}
+
+fun UiObject.tabview(
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    padding: Int = -1,
+    spacing: Int = -1,
+    columnspacing: Int = -1,
+    rowspacing: Int = -1,
+    type: TabViewType = TabViewType.DEFAULT,
+    varname: String? = null,
+    value: UiInteger? = null,
+    onChange: EventHandler? = null,
+    ui: ContainerUI? = null
+): UiWidget {
+    val container = Container.tabview(this)
+    if(fill) {
+        container.fill(true)
+    }
+    if(hexpand) {
+        container.hexpand(true)
+    }
+    if(vexpand) {
+        container.vexpand(true)
+    }
+    if(hfill) {
+        container.hfill(true)
+    }
+    if(vfill) {
+        container.vfill(true)
+    }
+    if(overrideDefaults) {
+        container.overrideDefaults(true)
+    }
+    if(margin > 0) {
+        container.margin(margin)
+    }
+    if(marginLeft > 0) {
+        container.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        container.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        container.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        container.marginBottom(marginBottom)
+    }
+    if(name != null) {
+        container.name(name)
+    }
+    if(styleClass != null) {
+        container.styleClass(styleClass)
+    }
+    if(colspan > 0) {
+        container.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        container.rowspan(rowspan)
+    }
+    if(padding > 0) {
+        container.margin(padding)
+    }
+    if(spacing > 0) {
+        container.spacing(spacing)
+    }
+    if(columnspacing > 0) {
+        container.columnspacing(columnspacing)
+    }
+    if(rowspacing > 0) {
+        container.rowspacing(rowspacing)
+    }
+    container.type(type)
+    if(varname != null) {
+        container.varname(varname)
+    }
+    if(value != null) {
+        container.value(value)
+    }
+    if(onChange != null) {
+        container.onChange(onChange)
+    }
+    return container.create(ui)
+}
+
+private fun UiObject.createSplitpane(
+    horizontal: Boolean,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    spacing: Int = -1,
+    initialPosition: Int = 0,
+    positionProperty: String? = null,
+    value: UiInteger? = null,
+    varname: String? = null,
+    maxPanes: Int = 0,
+    ui: ContainerUI? = null
+): UiWidget {
+    val container = if(horizontal) {
+        Container.hsplitview(this)
+    } else {
+        Container.vsplitview(this)
+    }
+
+    if(fill) {
+        container.fill(true)
+    }
+    if(hexpand) {
+        container.hexpand(true)
+    }
+    if(vexpand) {
+        container.vexpand(true)
+    }
+    if(hfill) {
+        container.hfill(true)
+    }
+    if(vfill) {
+        container.vfill(true)
+    }
+    if(overrideDefaults) {
+        container.overrideDefaults(true)
+    }
+    if(margin > 0) {
+        container.margin(margin)
+    }
+    if(marginLeft > 0) {
+        container.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        container.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        container.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        container.marginBottom(marginBottom)
+    }
+    if(colspan > 0) {
+        container.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        container.rowspan(rowspan)
+    }
+    if(spacing > 0) {
+        container.spacing(spacing)
+    }
+    if(initialPosition > 0) {
+        container.initialPosition(initialPosition)
+    }
+    if(positionProperty != null) {
+        container.positionProperty(positionProperty)
+    }
+    if(value != null) {
+        container.value(value)
+    }
+    if(varname != null) {
+        container.varname(varname)
+    }
+    if(maxPanes > 0) {
+        container.maxPanes(maxPanes)
+    }
+    if(name != null) {
+        container.name(name)
+    }
+    if(styleClass != null) {
+        container.styleClass(styleClass)
+    }
+
+    return container.create(ui)
+}
+
+fun UiObject.hsplitpane(
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    spacing: Int = -1,
+    initialPosition: Int = 0,
+    positionProperty: String? = null,
+    value: UiInteger? = null,
+    varname: String? = null,
+    maxPanes: Int = 0,
+    ui: ContainerUI? = null
+): UiWidget {
+    return createSplitpane(
+        horizontal = true,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        spacing = spacing,
+        initialPosition = initialPosition,
+        positionProperty = positionProperty,
+        value = value,
+        varname = varname,
+        maxPanes = maxPanes,
+        ui = ui
+    )
+}
+
+fun UiObject.vsplitpane(
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    spacing: Int = -1,
+    initialPosition: Int = 0,
+    positionProperty: String? = null,
+    value: UiInteger? = null,
+    varname: String? = null,
+    maxPanes: Int = 0,
+    ui: ContainerUI? = null
+): UiWidget {
+    return createSplitpane(
+        horizontal = false,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        spacing = spacing,
+        initialPosition = initialPosition,
+        positionProperty = positionProperty,
+        value = value,
+        varname = varname,
+        maxPanes = maxPanes,
+        ui = ui
+    )
+}
+
+fun UiObject.sidebar(
+    name: String? = null,
+    styleClass: String? = null,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    spacing: Int = -1,
+    ui: ContainerUI? = null
+): UiWidget {
+    val container = Container.sidebar(this)
+    if(margin > 0) {
+        container.margin(margin)
+    }
+    if(marginLeft > 0) {
+        container.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        container.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        container.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        container.marginBottom(marginBottom)
+    }
+    if(spacing > 0) {
+        container.spacing(spacing)
+    }
+    if(name != null) {
+        container.name(name)
+    }
+    if(styleClass != null) {
+        container.styleClass(styleClass)
+    }
+
+    return container.create(ui)
+}
+
+fun UiObject.leftPanel(
+    name: String? = null,
+    styleClass: String? = null,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    spacing: Int = -1,
+    ui: ContainerUI? = null
+): UiWidget {
+    val container = Container.leftPanel(this)
+    if(margin > 0) {
+        container.margin(margin)
+    }
+    if(marginLeft > 0) {
+        container.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        container.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        container.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        container.marginBottom(marginBottom)
+    }
+    if(spacing > 0) {
+        container.spacing(spacing)
+    }
+    if(name != null) {
+        container.name(name)
+    }
+    if(styleClass != null) {
+        container.styleClass(styleClass)
+    }
+
+    return container.create(ui)
+}
+
+fun UiObject.rightPanel(
+    name: String? = null,
+    styleClass: String? = null,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    spacing: Int = -1,
+    ui: ContainerUI? = null
+): UiWidget {
+    val container = Container.rightPanel(this)
+    if(margin > 0) {
+        container.margin(margin)
+    }
+    if(marginLeft > 0) {
+        container.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        container.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        container.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        container.marginBottom(marginBottom)
+    }
+    if(spacing > 0) {
+        container.spacing(spacing)
+    }
+    if(name != null) {
+        container.name(name)
+    }
+    if(styleClass != null) {
+        container.styleClass(styleClass)
+    }
+
+    return container.create(ui)
+}
+
+fun UiObject.button(
+    label: String? = null,
+    icon: String? = null,
+    tooltip: String? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onClick: EventHandler? = null
+): UiWidget {
+    val button = Button.button(this)
+    label?.let {
+        button.label(it)
+    }
+    icon?.let {
+        button.icon(it)
+    }
+    tooltip?.let {
+        button.tooltip(it)
+    }
+    if(fill) {
+        button.fill(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)
+    }
+    if(margin > 0) {
+        button.margin(margin)
+    }
+    if(marginLeft > 0) {
+        button.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        button.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        button.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        button.marginBottom(marginBottom)
+    }
+    name?.let {
+        button.name(name)
+    }
+    styleClass?.let {
+        button.styleClass(it)
+    }
+    states?.let {
+        button.states(*it)
+    }
+    onClick?.let {
+        button.onClick(onClick)
+    }
+    return button.create()
+}
+
+private fun UiObject.createToggleButton(
+    button: ToggleBuilder,
+    label: String? = null,
+    icon: String? = null,
+    tooltip: String? = null,
+    varname: String? = null,
+    value: UiInteger? = null,
+    enableState: Int = 0,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    label?.let {
+        button.label(it)
+    }
+    tooltip?.let {
+        button.tooltip(it)
+    }
+    varname?.let {
+        button.varname(it)
+    }
+    value?.let {
+        button.value(it)
+    }
+    if(enableState > 0) {
+        button.enableState(enableState)
+    }
+    if(fill) {
+        button.fill(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)
+    }
+    if(margin > 0) {
+        button.margin(margin)
+    }
+    if(marginLeft > 0) {
+        button.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        button.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        button.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        button.marginBottom(marginBottom)
+    }
+    name?.let {
+        button.name(it)
+    }
+    styleClass?.let {
+        button.styleClass(it)
+    }
+    states?.let {
+        button.states(*it)
+    }
+    onChange?.let {
+        button.onChange(onChange)
+    }
+    return button.create()
+}
+
+fun UiObject.togglebutton(
+    label: String? = null,
+    icon: String? = null,
+    tooltip: String? = null,
+    varname: String? = null,
+    value: UiInteger? = null,
+    enableState: Int = 0,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    return createToggleButton(
+        button = Button.toggleButton(this),
+        label = label,
+        icon = icon,
+        tooltip = tooltip,
+        varname = varname,
+        value = value,
+        enableState = enableState,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        onChange = onChange
+    )
+}
+
+fun UiObject.checkbox(
+    label: String? = null,
+    icon: String? = null,
+    tooltip: String? = null,
+    varname: String? = null,
+    value: UiInteger? = null,
+    enableState: Int = 0,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    return createToggleButton(
+        button = Button.checkbox(this),
+        label = label,
+        icon = icon,
+        tooltip = tooltip,
+        varname = varname,
+        value = value,
+        enableState = enableState,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        onChange = onChange
+    )
+}
+
+fun UiObject.switch(
+    label: String? = null,
+    icon: String? = null,
+    tooltip: String? = null,
+    varname: String? = null,
+    value: UiInteger? = null,
+    enableState: Int = 0,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    return createToggleButton(
+        button = Button.switchButton(this),
+        label = label,
+        icon = icon,
+        tooltip = tooltip,
+        varname = varname,
+        value = value,
+        enableState = enableState,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        onChange = onChange
+    )
+}
+
+fun UiObject.radiobutton(
+    label: String? = null,
+    icon: String? = null,
+    tooltip: String? = null,
+    varname: String? = null,
+    value: UiInteger? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    return createToggleButton(
+        button = Button.radioButton(this),
+        label = label,
+        icon = icon,
+        tooltip = tooltip,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        onChange = onChange
+    )
+}
+
+fun UiObject.linkbutton(
+    label: String? = null,
+    uri: String? = null,
+    varname: String? = null,
+    value: UiString? = null,
+    nofollow: Boolean = false,
+    type: LinkButtonType? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onClick: EventHandler? = null
+): UiWidget {
+    val button = Button.linkButton(this)
+    label?.let {
+        button.label(it)
+    }
+    uri?.let {
+        button.uri(it)
+    }
+    varname?.let {
+        button.varname(it)
+    }
+    value?.let {
+        button.value(it)
+    }
+    if(nofollow) {
+        button.nofollow(nofollow)
+    }
+    if(type != null) {
+        button.type(type)
+    }
+    if(onClick != null) {
+        button.onClick(onClick)
+    }
+    if(fill) {
+        button.fill(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)
+    }
+    if(margin > 0) {
+        button.margin(margin)
+    }
+    if(marginLeft > 0) {
+        button.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        button.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        button.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        button.marginBottom(marginBottom)
+    }
+    name?.let {
+        button.name(name)
+    }
+    styleClass?.let {
+        button.styleClass(it)
+    }
+    states?.let {
+        button.states(*it)
+    }
+    return button.create()
+}
+
+fun <T>UiObject.table(
+    model: TableModel,
+    varname: String? = null,
+    value: UiList<T>? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    contextmenu: Menu? = null,
+    onActivate: EventHandler? = null,
+    onSelection: EventHandler? = null,
+    onDragStart: EventHandler? = null,
+    onDragComplete: EventHandler? = null,
+    onDrop: EventHandler? = null,
+    onSave: ListSaveHandler? = null,
+    getstyle: ListStyleProvider<T>? = null,
+    getvalue: ListValueConverter<T>? = null
+): UiWidget {
+    val table = ListView.table<T>(this)
+    table.model(model)
+    varname?.let {
+        table.varname(varname)
+    }
+    value?.let {
+        table.value(value)
+    }
+    if(fill) {
+        table.fill(true)
+    }
+    if(hexpand) {
+        table.hexpand(true)
+    }
+    if(vexpand) {
+        table.vexpand(true)
+    }
+    if(hfill) {
+        table.hfill(true)
+    }
+    if(vfill) {
+        table.vfill(true)
+    }
+    if(overrideDefaults) {
+        table.overrideDefaults(true)
+    }
+    if(margin > 0) {
+        table.margin(margin)
+    }
+    if(marginLeft > 0) {
+        table.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        table.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        table.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        table.marginBottom(marginBottom)
+    }
+    if(colspan > 0) {
+        table.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        table.rowspan(rowspan)
+    }
+    name?.let {
+        table.name(it)
+    }
+    styleClass?.let {
+        table.styleClass(it)
+    }
+    states?.let {
+        table.states(*it)
+    }
+    contextmenu?.let {
+        table.contextmenu(it)
+    }
+    onActivate?.let {
+        table.onActivate(it)
+    }
+    onSelection?.let {
+        table.onSelection(it)
+    }
+    onDragStart?.let {
+        table.onDragStart(it)
+    }
+    onDragComplete?.let {
+        table.onDragComplete(it)
+    }
+    onDrop?.let {
+        table.onDrop(it)
+    }
+    onSave?.let {
+        table.onSave(it)
+    }
+    getstyle?.let {
+        table.getstyle(it)
+    }
+    getvalue?.let {
+        table.getvalue(it)
+    }
+    return table.create()
+}
+
+fun <T>UiObject.createListView(
+    list: ListViewBuilder<T>,
+    varname: String? = null,
+    value: UiList<T>? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    contextmenu: Menu? = null,
+    onActivate: EventHandler? = null,
+    onSelection: EventHandler? = null,
+    onDragStart: EventHandler? = null,
+    onDragComplete: EventHandler? = null,
+    onDrop: EventHandler? = null,
+    getvalue: ListValueConverter<T>? = null
+): UiWidget {
+    varname?.let {
+        list.varname(varname)
+    }
+    value?.let {
+        list.value(value)
+    }
+    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(margin > 0) {
+        list.margin(margin)
+    }
+    if(marginLeft > 0) {
+        list.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        list.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        list.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        list.marginBottom(marginBottom)
+    }
+    if(colspan > 0) {
+        list.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        list.rowspan(rowspan)
+    }
+    name?.let {
+        list.name(it)
+    }
+    styleClass?.let {
+        list.styleClass(it)
+    }
+    states?.let {
+        list.states(*it)
+    }
+    contextmenu?.let {
+        list.contextmenu(it)
+    }
+    onActivate?.let {
+        list.onActivate(it)
+    }
+    onSelection?.let {
+        list.onSelection(it)
+    }
+    onDragStart?.let {
+        list.onDragStart(it)
+    }
+    onDragComplete?.let {
+        list.onDragComplete(it)
+    }
+    onDrop?.let {
+        list.onDrop(it)
+    }
+    getvalue?.let {
+        list.getvalue(it)
+    }
+    return list.create()
+}
+
+fun <T>UiObject.listview(
+    varname: String? = null,
+    value: UiList<T>? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    contextmenu: Menu? = null,
+    onActivate: EventHandler? = null,
+    onSelection: EventHandler? = null,
+    onDragStart: EventHandler? = null,
+    onDragComplete: EventHandler? = null,
+    onDrop: EventHandler? = null,
+    getvalue: ListValueConverter<T>? = null
+): UiWidget {
+    val list = ListView.list<T>(this)
+    return createListView(
+        list = list,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        contextmenu = contextmenu,
+        onActivate = onActivate,
+        onSelection = onSelection,
+        onDragStart = onDragStart,
+        onDragComplete = onDragComplete,
+        onDrop = onDrop,
+        getvalue = getvalue
+    )
+}
+
+fun <T>UiObject.dropdown(
+    varname: String? = null,
+    value: UiList<T>? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onActivate: EventHandler? = null,
+    getvalue: ListValueConverter<T>? = null
+): UiWidget {
+    val list = ListView.dropdown<T>(this)
+    return createListView(
+        list = list,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        onActivate = onActivate,
+        getvalue = getvalue
+    )
+}
+
+fun <T>UiObject.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,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    contextmenu: Menu? = null,
+    headerIsItem: Boolean = false,
+    onActivate: EventHandler? = null,
+    onButtonClick: EventHandler? = null,
+    getvalue: SubListValueConverter<T>? = null
+): UiWidget {
+    val list = ListView.sourcelist<T>(this)
+    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(margin > 0) {
+        list.margin(margin)
+    }
+    if(marginLeft > 0) {
+        list.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        list.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        list.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        list.marginBottom(marginBottom)
+    }
+    if(colspan > 0) {
+        list.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        list.rowspan(rowspan)
+    }
+    name?.let {
+        list.name(it)
+    }
+    styleClass?.let {
+        list.styleClass(it)
+    }
+    contextmenu?.let {
+        list.contextmenu(it)
+    }
+    if(headerIsItem) {
+        list.headerIsItem(true)
+    }
+    onActivate?.let {
+        list.onActivate(it)
+    }
+    onButtonClick?.let {
+        list.onButtonClick(it)
+    }
+    getvalue?.let {
+        list.getvalue(it)
+    }
+    return list.create()
+}
+
+fun UiObject.textarea(
+    varname: String? = null,
+    value: UiText? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    val textarea = Text.textarea(this)
+    varname?.let {
+        textarea.varname(it)
+    }
+    value?.let {
+        textarea.value(it)
+    }
+    if(fill) {
+        textarea.fill(fill);
+    }
+    if(hexpand) {
+        textarea.hexpand(true)
+    }
+    if(vexpand) {
+        textarea.vexpand(true)
+    }
+    if(hfill) {
+        textarea.hfill(true)
+    }
+    if(vfill) {
+        textarea.vfill(true)
+    }
+    if(colspan > 0) {
+        textarea.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        textarea.rowspan(rowspan)
+    }
+    if(overrideDefaults) {
+        textarea.overrideDefaults(true)
+    }
+    if(margin > 0) {
+        textarea.margin(margin)
+    }
+    if(marginLeft > 0) {
+        textarea.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        textarea.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        textarea.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        textarea.marginBottom(marginBottom)
+    }
+    name?.let {
+        textarea.name(it)
+    }
+    styleClass?.let {
+        textarea.styleClass(it)
+    }
+    states?.let {
+        textarea.states(*it)
+    }
+    onChange?.let {
+        textarea.onChange(onChange)
+    }
+    return textarea.create()
+}
+
+private fun UiObject.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,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = 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)
+    }
+    if(margin > 0) {
+        textfield.margin(margin)
+    }
+    if(marginLeft > 0) {
+        textfield.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        textfield.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        textfield.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        textfield.marginBottom(marginBottom)
+    }
+    name?.let {
+        textfield.name(it)
+    }
+    styleClass?.let {
+        textfield.styleClass(it)
+    }
+    states?.let {
+        textfield.states(*it)
+    }
+    onChange?.let {
+        textfield.onChange(onChange)
+    }
+    return textfield.create()
+}
+
+fun UiObject.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,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    val textfield = Text.textfield(this)
+    return createTextField(
+        textfield = textfield,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        onChange = onChange
+    )
+}
+
+fun UiObject.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,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    val textfield = Text.passwordfield(this)
+    return createTextField(
+        textfield = textfield,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        onChange = onChange
+    )
+}
+
+fun UiObject.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,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    val textfield = Text.framelessTextfield(this)
+    return createTextField(
+        textfield = textfield,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        margin = margin,
+        marginLeft = marginLeft,
+        marginRight = marginRight,
+        marginTop = marginTop,
+        marginBottom = marginBottom,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass,
+        states = states,
+        onChange = onChange
+    )
+}
+
+fun UiObject.spinbox(
+    varname: String? = null,
+    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,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    states: IntArray? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    val spinbox = Entry.spinbox(this)
+    varname?.let {
+        spinbox.varname(it)
+    }
+    intValue?.let {
+        spinbox.intValue(it)
+    }
+    doubleValue?.let {
+        spinbox.doubleValue(it)
+    }
+    rangeValue?.let {
+        spinbox.rangeValue(it)
+    }
+    if(min != 0.0) {
+        spinbox.min(min)
+    }
+    if(max != 0.0) {
+        spinbox.max(max)
+    }
+    if(step != 0.0) {
+        spinbox.step(step)
+    }
+    if(digits != 0) {
+        spinbox.digits(digits)
+    }
+    if(fill) {
+        spinbox.fill(fill);
+    }
+    if(hexpand) {
+        spinbox.hexpand(true)
+    }
+    if(vexpand) {
+        spinbox.vexpand(true)
+    }
+    if(hfill) {
+        spinbox.hfill(true)
+    }
+    if(vfill) {
+        spinbox.vfill(true)
+    }
+    if(colspan > 0) {
+        spinbox.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        spinbox.rowspan(rowspan)
+    }
+    if(overrideDefaults) {
+        spinbox.overrideDefaults(true)
+    }
+    if(margin > 0) {
+        spinbox.margin(margin)
+    }
+    if(marginLeft > 0) {
+        spinbox.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        spinbox.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        spinbox.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        spinbox.marginBottom(marginBottom)
+    }
+    name?.let {
+        spinbox.name(it)
+    }
+    styleClass?.let {
+        spinbox.styleClass(it)
+    }
+    states?.let {
+        spinbox.states(*it)
+    }
+    onChange?.let {
+        spinbox.onChange(onChange)
+    }
+    return spinbox.create()
+}
+
+fun UiObject.webview(
+    varname: String? = null,
+    value: WebView? = null,
+    fill: Boolean = false,
+    hexpand: Boolean = false,
+    vexpand: Boolean = false,
+    hfill: Boolean = false,
+    vfill: Boolean = false,
+    overrideDefaults: Boolean = false,
+    margin: Int = -1,
+    marginLeft: Int = -1,
+    marginRight: Int = -1,
+    marginTop: Int = -1,
+    marginBottom: Int = -1,
+    colspan: Int = -1,
+    rowspan: Int = -1,
+    name: String? = null,
+    styleClass: String? = null,
+    onChange: EventHandler? = null
+): UiWidget {
+    val webview = WebView.webview(this)
+    varname?.let {
+        webview.varname(it)
+    }
+    value?.let {
+        webview.value(it)
+    }
+    if(fill) {
+        webview.fill(fill);
+    }
+    if(hexpand) {
+        webview.hexpand(true)
+    }
+    if(vexpand) {
+        webview.vexpand(true)
+    }
+    if(hfill) {
+        webview.hfill(true)
+    }
+    if(vfill) {
+        webview.vfill(true)
+    }
+    if(colspan > 0) {
+        webview.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        webview.rowspan(rowspan)
+    }
+    if(overrideDefaults) {
+        webview.overrideDefaults(true)
+    }
+    if(margin > 0) {
+        webview.margin(margin)
+    }
+    if(marginLeft > 0) {
+        webview.marginLeft(marginLeft)
+    }
+    if(marginRight > 0) {
+        webview.marginRight(marginRight)
+    }
+    if(marginTop > 0) {
+        webview.marginTop(marginTop)
+    }
+    if(marginBottom > 0) {
+        webview.marginBottom(marginBottom)
+    }
+    name?.let {
+        webview.name(it)
+    }
+    styleClass?.let {
+        webview.styleClass(it)
+    }
+    return webview.create()
+}
+
+private fun UiObject.createLabel(
+    label: LabelBuilder,
+    labelStr: String? = null,
+    align: Alignment? = null,
+    style: LabelStyle? = null,
+    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,
+): UiWidget {
+    labelStr?.let {
+        label.label(it)
+    }
+    align?.let {
+        label.align(it)
+    }
+    style?.let {
+        label.style(it)
+    }
+    varname?.let {
+        label.varname(it)
+    }
+    value?.let {
+        label.value(it)
+    }
+    if(fill) {
+        label.fill(fill);
+    }
+    if(hexpand) {
+        label.hexpand(true)
+    }
+    if(vexpand) {
+        label.vexpand(true)
+    }
+    if(hfill) {
+        label.hfill(true)
+    }
+    if(vfill) {
+        label.vfill(true)
+    }
+    if(colspan > 0) {
+        label.colspan(colspan)
+    }
+    if(rowspan > 0) {
+        label.rowspan(rowspan)
+    }
+    if(overrideDefaults) {
+        label.overrideDefaults(true)
+    }
+    name?.let {
+        label.name(it)
+    }
+    styleClass?.let {
+        label.styleClass(it)
+    }
+
+    return label.create()
+}
+
+fun UiObject.label(
+    label: String? = null,
+    align: Alignment? = null,
+    style: LabelStyle? = null,
+    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
+): UiWidget {
+    val labelBuilder = Label.label(this)
+    return createLabel(
+        label = labelBuilder,
+        labelStr = label,
+        align = align,
+        style = style,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass
+    )
+}
+
+fun UiObject.llabel(
+    label: String? = null,
+    style: LabelStyle? = null,
+    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
+): UiWidget {
+    val labelBuilder = Label.llabel(this)
+    return createLabel(
+        label = labelBuilder,
+        labelStr = label,
+        style = style,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass
+    )
+}
+
+fun UiObject.rlabel(
+    label: String? = null,
+    style: LabelStyle? = null,
+    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
+): UiWidget {
+    val labelBuilder = Label.rlabel(this)
+    return createLabel(
+        label = labelBuilder,
+        labelStr = label,
+        style = style,
+        varname = varname,
+        value = value,
+        fill = fill,
+        hexpand = hexpand,
+        vexpand = vexpand,
+        hfill = hfill,
+        vfill = vfill,
+        overrideDefaults = overrideDefaults,
+        colspan = colspan,
+        rowspan = rowspan,
+        name = name,
+        styleClass = styleClass
+    )
+}
index 35e119fb28175134f77d30c6c558768a0ad6f0cc..7d1e4f7ff1b7f51bb4a4b3f6f5d07e6e1eb6941a 100644 (file)
@@ -5,44 +5,40 @@ import de.unixwork.ui.DialogWindowBuilder
 import de.unixwork.ui.EventHandler
 import de.unixwork.ui.UiObject
 
-fun window(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel {
+fun window(title: String, width: Int = 0, height: Int = 0, ui: (UiObject.() -> Unit)? = null): UiObject {
     val obj = UiObject.createWindow(title)
     if(width > 0 && height > 0) {
         obj.setSize(width, height)
     }
-    val toplevel = Toplevel(obj)
-    ui?.invoke(toplevel)
-    return toplevel
+    ui?.invoke(obj)
+    return obj
 }
 
-fun simpleWindow(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel {
+fun simpleWindow(title: String, width: Int = 0, height: Int = 0, ui: (UiObject.() -> Unit)? = null): UiObject {
     val obj = UiObject.createSimpleWindow(title)
     if(width > 0 && height > 0) {
         obj.setSize(width, height)
     }
-    val toplevel = Toplevel(obj)
-    ui?.invoke(toplevel)
-    return toplevel
+    ui?.invoke(obj)
+    return obj
 }
 
-fun sidebarWindow(title: String, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel {
+fun sidebarWindow(title: String, width: Int = 0, height: Int = 0, ui: (UiObject.() -> Unit)? = null): UiObject {
     val obj = UiObject.createSidebarWindow(title)
     if(width > 0 && height > 0) {
         obj.setSize(width, height)
     }
-    val toplevel = Toplevel(obj)
-    ui?.invoke(toplevel)
-    return toplevel
+    ui?.invoke(obj)
+    return obj
 }
 
-fun splitViewWindow(title: String, sidebar: Boolean = false, width: Int = 0, height: Int = 0, ui: (Toplevel.() -> Unit)? = null): Toplevel {
+fun splitViewWindow(title: String, sidebar: Boolean = false, width: Int = 0, height: Int = 0, ui: (UiObject.() -> Unit)? = null): UiObject {
     val obj = UiObject.createSplitViewWindow(title, sidebar)
     if(width > 0 && height > 0) {
         obj.setSize(width, height)
     }
-    val toplevel = Toplevel(obj)
-    ui?.invoke(toplevel)
-    return toplevel
+    ui?.invoke(obj)
+    return obj
 }
 
 fun dialog(
@@ -98,7 +94,7 @@ fun dialogWindow(
     width: Int = 0,
     height: Int = 0,
     onClick: EventHandler? = null,
-    ui: (Toplevel.() -> Unit)?): Toplevel
+    ui: (UiObject.() -> Unit)?): UiObject
 {
     val builder = DialogWindowBuilder(parent)
     title?.let {
@@ -132,9 +128,9 @@ fun dialogWindow(
         builder.onClick(it)
     }
 
-    val toplevel = Toplevel(builder.create())
-    ui?.invoke(toplevel)
-    return toplevel
+    val obj = builder.create()
+    ui?.invoke(obj)
+    return obj
 }
 
 fun openFileDialog(
index 74f2c1c1ba371140d95b01e762686960cc737e67..55667db518c5e162292816542b494aa75f54b31b 100644 (file)
@@ -32,7 +32,7 @@ class Test : Application {
         }
 
         val win = window("Test Window") {
-            val mystr = ui.string()
+            val mystr = string()
             grid {
                 vbox(vexpand = true, vfill = true) {
                     button("B1") {