https://github.com/zevv/libuilua
Lua binding for libui, a simple and portable native UI library for unix, macos and windows
https://github.com/zevv/libuilua
Last synced: 11 months ago
JSON representation
Lua binding for libui, a simple and portable native UI library for unix, macos and windows
- Host: GitHub
- URL: https://github.com/zevv/libuilua
- Owner: zevv
- License: other
- Created: 2016-05-20T21:43:18.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2022-06-27T08:52:46.000Z (over 3 years ago)
- Last Synced: 2025-03-25T21:03:40.912Z (11 months ago)
- Language: C
- Size: 21.5 KB
- Stars: 50
- Watchers: 5
- Forks: 5
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
Lua binding for libui: https://github.com/andlabs/libui
- All top level functions are in the table returned by `require`
- New objects are created with ui.NewType()
- All uiTypeMethod() functions are accessible as object:Method() calls
- Set() methods return the object itself, which allow for chaining like
`s = ui.NewSlider(0, 10):SetValue(5):OnChanged(fn)`
- Append() methods take a variable number of arguments, allowing things
like `ui.NewRadioButtons():Append("One", "Two", "Three")
Below is the Lua-equivalent of libui's example/controlgallery:
```lua
#!/usr/bin/lua
ui = require "libuilua"
ui.Init()
local spinbox, slider, progressbar
local function update(control)
local v = control:Value()
spinbox:SetValue(v)
slider:SetValue(v)
progressbar:SetValue(v)
end
spinbox = ui.NewSpinbox(0, 100):OnChanged(update)
slider = ui.NewSlider(0, 100):OnChanged(update)
progressbar = ui.NewProgressBar(0, 100)
local win = ui.NewWindow("Hello", 320, 200, false):SetMargined(1):SetChild(
ui.NewVerticalBox():Append(
ui.NewHorizontalBox():Append(
ui.NewGroup("Basic Controls"):SetMargined(1):SetChild(
ui.NewVerticalBox():SetPadded(1):Append(
ui.NewButton("Button"),
ui.NewCheckbox("Checkbox"),
ui.NewLabel("Label"),
ui.NewHorizontalSeparator(),
ui.NewDatePicker(),
ui.NewDateTimePicker(),
ui.NewTimePicker()
)
),
ui.NewVerticalBox():Append(
ui.NewGroup("Numbers"):SetMargined(1):SetChild(
ui.NewVerticalBox():SetPadded(1):Append(spinbox, slider, progressbar)
)
):Append(
ui.NewGroup("Lists"):SetMargined(1):SetChild(
ui.NewVerticalBox():SetPadded(1):Append(
ui.NewCombobox():Append(
"Combobox Item 1",
"Combobox Item 2",
"Combobox Item 3"
),
ui.NewEditableCombobox():Append(
"Editable Item 1",
"Editable Item 2",
"Editable Item 3"
),
ui.NewRadioButtons():Append(
"Radio Button 1",
"Radio Button 2",
"Radio Button 3"
)
):Append(
ui.NewTab():Append(
"Page 1", ui.NewHorizontalBox(),
"Page 2", ui.NewHorizontalBox(),
"Page 3", ui.NewHorizontalBox()
), true
)
), true
), true
), true
)
)
ui.Main()
```lua