102 lines
3.1 KiB
Lua
102 lines
3.1 KiB
Lua
--
|
|
-- Basic floating example.
|
|
--
|
|
|
|
local core = require "core"
|
|
local Widget = require "libraries.widget"
|
|
local Button = require "libraries.widget.button"
|
|
local CheckBox = require "libraries.widget.checkbox"
|
|
local Line = require "libraries.widget.line"
|
|
local Label = require "libraries.widget.label"
|
|
local TextBox = require "libraries.widget.textbox"
|
|
|
|
local function on_button_click(self)
|
|
system.show_fatal_error("Clicked:", self.label)
|
|
end
|
|
|
|
---@type widget
|
|
local widget = Widget()
|
|
widget.size.x = 300
|
|
widget.size.y = 300
|
|
widget.position.x = 100
|
|
widget.draggable = true
|
|
widget.scrollable = true
|
|
|
|
---@type widget.button
|
|
local button = Button(widget, "Button1")
|
|
button:set_position(10, 10)
|
|
button:set_tooltip("Description 1")
|
|
button.on_click = on_button_click
|
|
|
|
---@type widget.button
|
|
local button2 = Button(widget, "Button2")
|
|
button2:set_position(10, button:get_bottom() + 10)
|
|
button2:set_tooltip("Description 2")
|
|
|
|
---@type widget.button
|
|
local button3 = Button(widget, "Button2")
|
|
button3:set_position(button:get_right() + 10, 10)
|
|
button3:set_tooltip("Description 2")
|
|
button3.on_click = on_button_click
|
|
|
|
---@type widget.button
|
|
local button23 = Button(widget, "Button23")
|
|
button23:set_position(button:get_right() / 2, 10)
|
|
button23:set_tooltip("Description 22")
|
|
button23.on_click = on_button_click
|
|
|
|
---@type widget.checkbox
|
|
local checkbox = CheckBox(widget, "Some Checkbox")
|
|
checkbox:set_position(10, button2:get_bottom() + 10)
|
|
checkbox:set_tooltip("Description checkbox")
|
|
checkbox.on_checked = function(_, checked)
|
|
core.log_quiet(tostring(checked))
|
|
end
|
|
|
|
---@type widget.label
|
|
local label = Label(widget, "Label:")
|
|
label:set_position(10, checkbox:get_bottom() + 10)
|
|
|
|
---@type widget.textbox
|
|
local textbox = TextBox(widget, "", "enter text...")
|
|
textbox:set_position(10, label:get_bottom() + 10)
|
|
textbox:set_tooltip("Texbox")
|
|
|
|
---@type widget.button
|
|
local button4 = Button(widget, "Button4")
|
|
button4:set_position(10, textbox:get_bottom() + 10)
|
|
button4:set_tooltip("Description 4")
|
|
button4.on_click = on_button_click
|
|
|
|
local button5 = Button(widget, "Button5")
|
|
button5:set_position(10, button4:get_bottom() + 10)
|
|
button5:set_tooltip("Description 5")
|
|
button5.on_click = on_button_click
|
|
|
|
local button6 = Button(widget, "Button6")
|
|
button6:set_position(10, button5:get_bottom() + 10)
|
|
button6:set_tooltip("Description 6")
|
|
button6.on_click = on_button_click
|
|
|
|
---@type widget.line
|
|
local line = Line(widget)
|
|
line:set_position(0, button6:get_bottom() + 10)
|
|
|
|
-- reposition items on scale changes
|
|
widget.update = function(self)
|
|
if Widget.update(self) then
|
|
button:set_position(10, 10)
|
|
button2:set_position(10, button:get_bottom() + 10)
|
|
button23:set_position(button:get_right() / 2, 10)
|
|
button3:set_position(button:get_right() + 10, 10)
|
|
checkbox:set_position(10, button2:get_bottom() + 10)
|
|
label:set_position(10, checkbox:get_bottom() + 10)
|
|
textbox:set_position(10, label:get_bottom() + 10)
|
|
button4:set_position(10, textbox:get_bottom() + 10)
|
|
button5:set_position(10, button4:get_bottom() + 10)
|
|
button6:set_position(10, button5:get_bottom() + 10)
|
|
line:set_position(0, button6:get_bottom() + 10)
|
|
end
|
|
end
|
|
|
|
widget:show()
|