roftl/lua/ui.lua

69 lines
1.9 KiB
Lua
Raw Normal View History

local lwtk = require("lwtk")
local Application = lwtk.Application
local Column = lwtk.Column
local Row = lwtk.Row
local PushButton = lwtk.PushButton
local TextInput = lwtk.TextInput
local TitleText = lwtk.TitleText
local Space = lwtk.Space
local app = Application("example01.lua")
local function quit()
app:close()
end
local win = app:newWindow {
title = "example01",
Column {
id = "c1",
TitleText { text = "What's your name?" },
TextInput { id = "i1", focus = true, style = { Columns = 40 } },
Row {
Space {},
PushButton { id = "b1", text = "&OK", disabled = true,
default = true },
PushButton { id = "b2", text = "&Quit", onClicked = quit },
Space {}
}
},
Column {
id = "c2",
visible = false,
Space {},
TitleText { id = "t2", style = { TextAlign = "center" } },
Space {},
Row {
Space {},
PushButton { id = "b3", text = "&Again" },
PushButton { id = "b4", text = "&Quit", default = true,
onClicked = quit },
Space {}
}
}
}
win:childById("c1"):setOnInputChanged(function(widget, input)
widget:childById("b1"):setDisabled(input.text == "")
end)
win:childById("b1"):setOnClicked(function(widget)
win:childById("t2"):setText("Hello "..win:childById("i1").text.."!")
win:childById("c1"):setVisible(false)
win:childById("c2"):setVisible(true)
end)
win:childById("b3"):setOnClicked(function(widget)
win:childById("i1"):setText("")
win:childById("i1"):setFocus()
win:childById("t2"):setText("")
win:childById("c1"):setVisible(true)
win:childById("c2"):setVisible(false)
end)
win:show()
app:runEventLoop()