mirror of
https://github.com/Insality/druid.git
synced 2025-09-27 18:12:19 +02:00
Basic examples done
This commit is contained in:
@@ -13,4 +13,74 @@ function M:init()
|
||||
end
|
||||
|
||||
|
||||
---@param output_log output_list
|
||||
function M:on_example_created(output_log)
|
||||
self.button_tutorial.on_click:subscribe(function()
|
||||
output_log:add_log_text("Button Tutorial Clicked")
|
||||
end)
|
||||
self.button_stencil.on_click:subscribe(function()
|
||||
output_log:add_log_text("Button Stencil Clicked")
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
---@param properties_panel properties_panel
|
||||
function M:properties_control(properties_panel)
|
||||
local scroll = self.scroll
|
||||
local is_stretch = self.scroll.style.EXTRA_STRETCH_SIZE > 0
|
||||
properties_panel:add_checkbox("ui_elastic_scroll", is_stretch, function(value)
|
||||
self.scroll:set_extra_stretch_size(value and 100 or 0)
|
||||
end)
|
||||
|
||||
local view_node = self.scroll.view_node
|
||||
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
||||
properties_panel:add_checkbox("ui_clipping", is_stencil, function(value)
|
||||
gui.set_clipping_mode(view_node, value and gui.CLIPPING_MODE_STENCIL or gui.CLIPPING_MODE_NONE)
|
||||
end)
|
||||
|
||||
local slider_frict = properties_panel:add_slider("ui_slider_friction", 0, function(value)
|
||||
scroll.style.FRICT = 1 - ((1 - value) * 0.1)
|
||||
end)
|
||||
slider_frict:set_text_function(function(value)
|
||||
return string.format("%.2f", 1 - ((1 - value) * 0.1))
|
||||
end)
|
||||
slider_frict:set_value(1 - (1 - scroll.style.FRICT) / 0.1)
|
||||
|
||||
local slider_speed = properties_panel:add_slider("ui_slider_speed", 0, function(value)
|
||||
scroll.style.INERT_SPEED = value * 50
|
||||
end)
|
||||
slider_speed:set_value(scroll.style.INERT_SPEED / 50)
|
||||
slider_speed:set_text_function(function(value)
|
||||
return string.format("%.1f", value * 50)
|
||||
end)
|
||||
|
||||
local slider_wheel_speed = properties_panel:add_slider("ui_slider_wheel_speed", 0, function(value)
|
||||
scroll.style.WHEEL_SCROLL_SPEED = value * 30
|
||||
end)
|
||||
slider_wheel_speed:set_value(scroll.style.WHEEL_SCROLL_SPEED / 30)
|
||||
slider_wheel_speed:set_text_function(function(value)
|
||||
return string.format("%.1f", value * 30)
|
||||
end)
|
||||
|
||||
local wheel_by_inertion = properties_panel:add_checkbox("ui_wheel_by_inertion", scroll.style.WHEEL_SCROLL_BY_INERTION, function(value)
|
||||
scroll.style.WHEEL_SCROLL_BY_INERTION = value
|
||||
end)
|
||||
wheel_by_inertion:set_value(scroll.style.WHEEL_SCROLL_BY_INERTION)
|
||||
end
|
||||
|
||||
|
||||
---@return string
|
||||
function M:get_debug_info()
|
||||
local info = ""
|
||||
|
||||
local s = self.scroll
|
||||
info = info .. "View Size Y: " .. gui.get(s.view_node, "size.y") .. "\n"
|
||||
info = info .. "Content Size Y: " .. gui.get(s.content_node, "size.y") .. "\n"
|
||||
info = info .. "Content position Y: " .. math.ceil(s.position.y) .. "\n"
|
||||
info = info .. "Content Range Y: " .. s.available_pos.y .. " - " .. s.available_pos.w .. "\n"
|
||||
|
||||
return info
|
||||
end
|
||||
|
||||
|
||||
return M
|
||||
|
Reference in New Issue
Block a user