Start update examples to move control things to example itself

This commit is contained in:
Insality
2025-03-29 19:53:11 +02:00
parent d6fb8cad09
commit e1339a2ca8
7 changed files with 107 additions and 87 deletions

View File

@@ -47,8 +47,9 @@ function M:init(template, nodes)
end
---@class example_instance: druid.widget
---@field on_create fun(self: example_instance, output_list: output_list)?
---@field on_example_created fun(self: example_instance, output_list: output_list)?
---@field properties_control fun(self: example_instance, properties_panel: properties_panel)?
---@field get_debug_info fun(self: example_instance):string?
---@param examples druid.examples
---@param druid_example druid.example @The main GUI component
@@ -109,8 +110,8 @@ function M:add_example(examples, druid_example)
item:set_selected(true)
druid_example.output_list:clear()
if instance.on_create then
instance:on_create(druid_example.output_list)
if instance.on_example_created then
instance:on_example_created(druid_example.output_list)
elseif example_data.on_create then
example_data.on_create(instance, druid_example.output_list)
end
@@ -177,6 +178,13 @@ function M:update_debug_info()
return
end
local instance = self.selected_example.instance
if instance.get_debug_info then
local info = instance:get_debug_info()
self.on_debug_info:trigger(info)
return
end
local data = self.selected_example.data
if data.get_debug_info then
local info = data.get_debug_info(self.selected_example.instance)

View File

@@ -65,7 +65,7 @@ end
---@return property_checkbox
function M:add_checkbox(text_id, initial_value, on_change_callback)
local nodes = gui.clone_tree(self.property_checkbox_prefab)
local instance = self.druid:new(property_checkbox, "property_checkbox", nodes) --[[@as property_checkbox]]
local instance = self.druid:new_widget(property_checkbox, "property_checkbox", nodes) --[[@as property_checkbox]]
instance.text_name:translate(text_id)
instance:set_value(initial_value, true)
instance.button.on_click:subscribe(function()
@@ -108,7 +108,7 @@ end
---@param on_click_callback function
function M:add_button(text_id, on_click_callback)
local nodes = gui.clone_tree(self.property_button_prefab)
local instance = self.druid:new(property_button, "property_button", nodes) --[[@as property_button]]
local instance = self.druid:new_widget(property_button, "property_button", nodes) --[[@as property_button]]
instance.text_name:translate(text_id)
gui.set_enabled(instance.root, true)