mirror of
https://github.com/linux-man/LoveFrames.git
synced 2024-11-26 05:14:21 +00:00
130 lines
3.2 KiB
Lua
130 lines
3.2 KiB
Lua
local example = {}
|
|
example.title = "List"
|
|
example.category = "Object Demonstrations"
|
|
|
|
local font = love.graphics.newFont(10)
|
|
|
|
function example.func(loveframes, centerarea)
|
|
|
|
local frame = loveframes.Create("frame")
|
|
frame:SetName("List")
|
|
frame:SetSize(500, 470)
|
|
frame:CenterWithinArea(unpack(centerarea))
|
|
|
|
local list = loveframes.Create("list", frame)
|
|
list:SetPos(5, 30)
|
|
list:SetSize(490, 300)
|
|
list:SetPadding(5)
|
|
list:SetSpacing(5)
|
|
|
|
local panel = loveframes.Create("panel")
|
|
panel:SetSize(490, 115)
|
|
panel.Draw = function() end
|
|
|
|
local text1 = loveframes.Create("text", panel)
|
|
local text2 = loveframes.Create("text", panel)
|
|
local slider1 = loveframes.Create("slider", panel)
|
|
slider1:SetPos(5, 20)
|
|
slider1:SetWidth(480)
|
|
slider1:SetMinMax(0, 100)
|
|
slider1:SetValue(5)
|
|
slider1:SetText("Padding")
|
|
slider1:SetDecimals(0)
|
|
slider1.OnValueChanged = function(object2, value)
|
|
list:SetPadding(value)
|
|
text2:SetPos(slider1:GetWidth() - text2:GetWidth(), 5)
|
|
text2:SetText(slider1:GetValue())
|
|
end
|
|
|
|
text1:SetPos(5, 5)
|
|
text1:SetFont(font)
|
|
text1:SetText(slider1:GetText())
|
|
|
|
text2:SetText(slider1:GetValue())
|
|
text2:SetFont(font)
|
|
text2:SetPos(slider1:GetWidth() - text2:GetWidth(), 5)
|
|
|
|
local text3 = loveframes.Create("text", panel)
|
|
local text4 = loveframes.Create("text", panel)
|
|
local slider2 = loveframes.Create("slider", panel)
|
|
slider2:SetPos(5, 60)
|
|
slider2:SetWidth(480)
|
|
slider2:SetMinMax(0, 100)
|
|
slider2:SetValue(5)
|
|
slider2:SetText("Spacing")
|
|
slider2:SetDecimals(0)
|
|
slider2.OnValueChanged = function(object2, value)
|
|
list:SetSpacing(value)
|
|
text4:SetPos(slider2:GetWidth() - text4:GetWidth(), 45)
|
|
text4:SetText(slider2:GetValue())
|
|
end
|
|
|
|
text3:SetPos(5, 45)
|
|
text3:SetFont(font)
|
|
text3:SetText(slider2:GetText())
|
|
|
|
text4:SetText(slider2:GetValue())
|
|
text4:SetFont(font)
|
|
text4:SetPos(slider2:GetWidth() - text4:GetWidth(), 45)
|
|
|
|
local button1 = loveframes.Create("button", panel)
|
|
button1:SetPos(5, 85)
|
|
button1:SetSize(237, 25)
|
|
button1:SetText("Change List Type")
|
|
button1.OnClick = function(object2, x, y)
|
|
if list:GetDisplayType() == "vertical" then
|
|
list:SetDisplayType("horizontal")
|
|
else
|
|
list:SetDisplayType("vertical")
|
|
end
|
|
list:Clear()
|
|
for i=1, 100 do
|
|
local button = loveframes.Create("button")
|
|
button:SetText(i)
|
|
list:AddItem(button)
|
|
end
|
|
end
|
|
|
|
local button2 = loveframes.Create("button", panel)
|
|
button2:SetPos(247, 85)
|
|
button2:SetSize(237, 25)
|
|
button2:SetText("Toggle Horizontal Stacking")
|
|
button2.OnClick = function(object2, x, y)
|
|
local enabled = list:GetHorizontalStacking()
|
|
list:EnableHorizontalStacking(not enabled)
|
|
list:Clear()
|
|
for i=1, 100 do
|
|
local button = loveframes.Create("button")
|
|
button:SetSize(100, 25)
|
|
button:SetText(i)
|
|
list:AddItem(button)
|
|
end
|
|
end
|
|
button2.Update = function(object)
|
|
local displaytype = list:GetDisplayType()
|
|
if displaytype ~= "vertical" then
|
|
object:SetEnabled(false)
|
|
object:SetClickable(false)
|
|
else
|
|
object:SetEnabled(true)
|
|
object:SetClickable(true)
|
|
end
|
|
end
|
|
|
|
local form = loveframes.Create("form", frame)
|
|
form:SetPos(5, 335)
|
|
form.padding = 0
|
|
form.spacing = 0
|
|
form:SetName("List Controls")
|
|
form:AddItem(panel)
|
|
|
|
for i=1, 100 do
|
|
local button = loveframes.Create("button")
|
|
button:SetText(i)
|
|
list:AddItem(button)
|
|
end
|
|
|
|
end
|
|
|
|
return example
|