From e0f02e2841b3f3857c6f01c8bb83fc8f6a012fa3 Mon Sep 17 00:00:00 2001 From: Olaf Wintermann Date: Mon, 15 Dec 2025 16:12:05 +0100 Subject: [PATCH] remove Toplevel class --- .../de/unixwork/rssreader/ConfigWindow.kt | 24 +- .../de/unixwork/rssreader/FeedConfig.kt | 35 +- .../kotlin/de/unixwork/rssreader/FeedList.kt | 12 +- .../de/unixwork/rssreader/MainWindow.kt | 35 +- .../kotlin/de/unixwork/ui/kotlin/Toplevel.kt | 2481 ----------------- .../main/kotlin/de/unixwork/ui/kotlin/Ui.kt | 2434 ++++++++++++++++ .../kotlin/de/unixwork/ui/kotlin/Window.kt | 36 +- .../kotlin/de/unixwork/ui/kotlin/demo/Test.kt | 2 +- 8 files changed, 2501 insertions(+), 2558 deletions(-) delete mode 100644 ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt create mode 100644 ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt index 893e5d7..6b45043 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/ConfigWindow.kt @@ -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) { diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedConfig.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedConfig.kt index 824ba3d..6af8395 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedConfig.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedConfig.kt @@ -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() - 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() + 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 -> diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt index 1b776ce..b2de34f 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/FeedList.kt @@ -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) } } } diff --git a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt index a54316a..ce50772 100644 --- a/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt +++ b/rss-application/src/main/kotlin/de/unixwork/rssreader/MainWindow.kt @@ -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? = 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() + move = integer() + groups = list() 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 index f4784b7..0000000 --- a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Toplevel.kt +++ /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 table( - model: TableModel, - varname: String? = null, - value: UiList? = 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? = null, - getvalue: ListValueConverter? = null - ): UiWidget { - val table = ListView.table(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 createListView( - list: ListViewBuilder, - varname: String? = null, - value: UiList? = 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? = 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 listview( - varname: String? = null, - value: UiList? = 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? = null - ): UiWidget { - val list = ListView.list(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 dropdown( - varname: String? = null, - value: UiList? = 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? = null - ): UiWidget { - val list = ListView.dropdown(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 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? = null - ): UiWidget { - val list = ListView.sourcelist(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 index 0000000..44cc310 --- /dev/null +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Ui.kt @@ -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 UiObject.table( + model: TableModel, + varname: String? = null, + value: UiList? = 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? = null, + getvalue: ListValueConverter? = null +): UiWidget { + val table = ListView.table(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 UiObject.createListView( + list: ListViewBuilder, + varname: String? = null, + value: UiList? = 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? = 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 UiObject.listview( + varname: String? = null, + value: UiList? = 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? = null +): UiWidget { + val list = ListView.list(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 UiObject.dropdown( + varname: String? = null, + value: UiList? = 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? = null +): UiWidget { + val list = ListView.dropdown(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 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? = null +): UiWidget { + val list = ListView.sourcelist(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 + ) +} diff --git a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt index 35e119f..7d1e4f7 100644 --- a/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt +++ b/ui-kotlin/src/main/kotlin/de/unixwork/ui/kotlin/Window.kt @@ -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( diff --git a/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt b/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt index 74f2c1c..55667db 100644 --- a/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt +++ b/ui-kotlin/src/test/kotlin/de/unixwork/ui/kotlin/demo/Test.kt @@ -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") { -- 2.47.3