mirror of
https://github.com/Insality/druid
synced 2025-09-27 18:12:21 +02:00
Update example with new brand one
This commit is contained in:
69
example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua
Normal file
69
example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua
Normal file
@@ -0,0 +1,69 @@
|
||||
local component = require("druid.component")
|
||||
|
||||
---@class scroll_bind_grid: druid.base_component
|
||||
---@field scroll druid.scroll
|
||||
---@field grid druid.static_grid
|
||||
---@field text druid.text
|
||||
---@field druid druid_instance
|
||||
local M = component.create("scroll_bind_grid")
|
||||
|
||||
|
||||
---@param template string
|
||||
---@param nodes table<hash, node>
|
||||
function M:init(template, nodes)
|
||||
self.druid = self:get_druid(template, nodes)
|
||||
|
||||
self.created_nodes = {}
|
||||
|
||||
self.prefab = self:get_node("prefab")
|
||||
gui.set_enabled(self.prefab, false)
|
||||
|
||||
self.scroll = self.druid:new_scroll("view", "content")
|
||||
self.grid = self.druid:new_static_grid("content", "prefab", 1)
|
||||
self.scroll:bind_grid(self.grid)
|
||||
|
||||
for index = 1, 20 do
|
||||
self:add_element()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
function M:on_remove()
|
||||
self:clear()
|
||||
end
|
||||
|
||||
|
||||
function M:add_element()
|
||||
local prefab_nodes = gui.clone_tree(self.prefab)
|
||||
local root = prefab_nodes[self:get_template() .. "/prefab"]
|
||||
local text = prefab_nodes[self:get_template() .. "/text"]
|
||||
table.insert(self.created_nodes, root)
|
||||
gui.set_text(text, "Grid Item " .. #self.created_nodes)
|
||||
gui.set_enabled(root, true)
|
||||
|
||||
self.grid:add(root)
|
||||
end
|
||||
|
||||
|
||||
function M:remove_element()
|
||||
local last_node = table.remove(self.created_nodes)
|
||||
if last_node == nil then
|
||||
return
|
||||
end
|
||||
|
||||
gui.delete_node(last_node)
|
||||
local grid_index = self.grid:get_index_by_node(last_node)
|
||||
self.grid:remove(grid_index)
|
||||
end
|
||||
|
||||
|
||||
function M:clear()
|
||||
for _, node in ipairs(self.created_nodes) do
|
||||
gui.delete_node(node)
|
||||
end
|
||||
self.created_nodes = {}
|
||||
self.grid:clear()
|
||||
end
|
||||
|
||||
|
||||
return M
|
Reference in New Issue
Block a user