mirror of
https://github.com/Insality/druid
synced 2025-06-27 10:27:48 +02:00
LLS refactor
This commit is contained in:
parent
3bb8705444
commit
be03a5bd50
@ -4,6 +4,8 @@
|
|||||||
|
|
||||||
Button component is a basic component that can be used to create a clickable button. It provides various interaction callbacks such as click, long click, double click, and more. The component makes any GUI node clickable and allows you to define different behaviors for various user interactions.
|
Button component is a basic component that can be used to create a clickable button. It provides various interaction callbacks such as click, long click, double click, and more. The component makes any GUI node clickable and allows you to define different behaviors for various user interactions.
|
||||||
|
|
||||||
|
Button component is not support multitouch. In case of multitouch required (ex. on screen control) the custom component should be written with own input handling.
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
- Regular click handling
|
- Regular click handling
|
||||||
|
@ -38,8 +38,6 @@ local helper = require("druid.helper")
|
|||||||
---@field private _meta druid.component.meta
|
---@field private _meta druid.component.meta
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
local INTERESTS = {} -- Cache interests per component class in runtime
|
|
||||||
|
|
||||||
|
|
||||||
local uid = 0
|
local uid = 0
|
||||||
---@private
|
---@private
|
||||||
@ -234,6 +232,13 @@ function M:set_input_enabled(state)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
---Get component input state. By default it's enabled. Can be disabled by `set_input_enabled` function.
|
||||||
|
---@return boolean
|
||||||
|
function M:get_input_enabled()
|
||||||
|
return self._meta.input_enabled
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
---Get parent component
|
---Get parent component
|
||||||
---@return druid.component|nil parent_component The parent component if exist or nil
|
---@return druid.component|nil parent_component The parent component if exist or nil
|
||||||
function M:get_parent_component()
|
function M:get_parent_component()
|
||||||
@ -286,28 +291,6 @@ function M:_reset_input_priority_changed()
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
---Get current component interests
|
|
||||||
---@return table List of component interests
|
|
||||||
---@private
|
|
||||||
function M:__get_interests()
|
|
||||||
local instance_class = self._meta.instance_class
|
|
||||||
if INTERESTS[instance_class] then
|
|
||||||
return INTERESTS[instance_class]
|
|
||||||
end
|
|
||||||
|
|
||||||
local interests = {}
|
|
||||||
for index = 1, #const.ALL_INTERESTS do
|
|
||||||
local interest = const.ALL_INTERESTS[index]
|
|
||||||
if self[interest] and type(self[interest]) == "function" then
|
|
||||||
table.insert(interests, interest)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
INTERESTS[instance_class] = interests
|
|
||||||
return INTERESTS[instance_class]
|
|
||||||
end
|
|
||||||
|
|
||||||
|
|
||||||
---Get current component nodes
|
---Get current component nodes
|
||||||
---@return table<hash, node>|nil
|
---@return table<hash, node>|nil
|
||||||
function M:get_nodes()
|
function M:get_nodes()
|
||||||
@ -333,7 +316,6 @@ function M:__add_child(child)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---Remove child from component children list
|
---Remove child from component children list
|
||||||
---@generic T: druid.component
|
---@generic T: druid.component
|
||||||
---@param child T The druid component instance
|
---@param child T The druid component instance
|
||||||
@ -394,4 +376,45 @@ function M.create(name, input_priority)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local WIDGET_METATABLE = { __index = M }
|
||||||
|
|
||||||
|
---Create the Druid component instance
|
||||||
|
---@param self druid.instance
|
||||||
|
---@param widget_class druid.widget
|
||||||
|
---@param context table
|
||||||
|
---@return druid.widget
|
||||||
|
function M.create_widget(self, widget_class, context)
|
||||||
|
local instance = setmetatable({}, {
|
||||||
|
__index = setmetatable(widget_class, WIDGET_METATABLE)
|
||||||
|
})
|
||||||
|
|
||||||
|
instance._component = {
|
||||||
|
_uid = M.create_uid(),
|
||||||
|
name = "Druid Widget",
|
||||||
|
input_priority = const.PRIORITY_INPUT,
|
||||||
|
default_input_priority = const.PRIORITY_INPUT,
|
||||||
|
_is_input_priority_changed = true, -- Default true for sort once time after GUI init
|
||||||
|
}
|
||||||
|
instance._meta = {
|
||||||
|
druid = self,
|
||||||
|
template = "",
|
||||||
|
nodes = nil,
|
||||||
|
context = context,
|
||||||
|
style = nil,
|
||||||
|
input_enabled = true,
|
||||||
|
children = {},
|
||||||
|
parent = type(context) ~= "userdata" and context or nil,
|
||||||
|
instance_class = widget_class
|
||||||
|
}
|
||||||
|
|
||||||
|
-- Register
|
||||||
|
if instance._meta.parent then
|
||||||
|
instance._meta.parent:__add_child(instance)
|
||||||
|
end
|
||||||
|
|
||||||
|
---@cast instance druid.widget
|
||||||
|
return instance
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
return M
|
return M
|
||||||
|
@ -44,7 +44,7 @@ local CORNER_PIVOTS = {
|
|||||||
---@field fit_size vector3
|
---@field fit_size vector3
|
||||||
---@field min_size_x number|nil
|
---@field min_size_x number|nil
|
||||||
---@field min_size_y number|nil
|
---@field min_size_y number|nil
|
||||||
---@field on_size_changed event @function on_size_changed(size)
|
---@field on_size_changed event fun(self: druid.container, size: vector3)
|
||||||
---@field _parent_container druid.container
|
---@field _parent_container druid.container
|
||||||
---@field _containers table
|
---@field _containers table
|
||||||
---@field _draggable_corners table
|
---@field _draggable_corners table
|
||||||
@ -244,7 +244,7 @@ function M:add_container(node_or_container, mode, on_resize_callback)
|
|||||||
local node = node_or_container
|
local node = node_or_container
|
||||||
|
|
||||||
-- Check it's a container components instead of node
|
-- Check it's a container components instead of node
|
||||||
if type(node_or_container) == "table" and node_or_container._component then
|
if type(node_or_container) == "table" and node_or_container.add_container then
|
||||||
node = node_or_container.node
|
node = node_or_container.node
|
||||||
container = node_or_container
|
container = node_or_container
|
||||||
mode = mode or container.mode
|
mode = mode or container.mode
|
||||||
|
@ -148,8 +148,6 @@ function M:set_max_size(max_size)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
---@private
|
---@private
|
||||||
function M:_check_steps(from, to, exactly)
|
function M:_check_steps(from, to, exactly)
|
||||||
if not self.steps then
|
if not self.steps then
|
||||||
|
@ -298,7 +298,7 @@ end
|
|||||||
---@param node node
|
---@param node node
|
||||||
---@param x number
|
---@param x number
|
||||||
---@param y number
|
---@param y number
|
||||||
---@param node_click_area node|nil
|
---@param node_click_area node|nil Additional node to check for click area. If nil, only node will be checked
|
||||||
---@local
|
---@local
|
||||||
function M.pick_node(node, x, y, node_click_area)
|
function M.pick_node(node, x, y, node_click_area)
|
||||||
local is_pick = gui_pick_node(node, x, y)
|
local is_pick = gui_pick_node(node, x, y)
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
---@class druid.widget: druid.component
|
---@class druid.widget: druid.component
|
||||||
---@field druid druid.instance Ready to use druid instance
|
---@field druid druid.instance Ready to use druid instance
|
||||||
---@field root node Is it really needed?
|
|
||||||
|
|
||||||
---@class GUITextMetrics
|
---@class GUITextMetrics
|
||||||
---@field width number
|
---@field width number
|
||||||
|
@ -1,18 +1,16 @@
|
|||||||
-- Hello! Wish you a good day!
|
-- Hello, Defolder! Wish you a good day!
|
||||||
|
|
||||||
local events = require("event.events")
|
local events = require("event.events")
|
||||||
local const = require("druid.const")
|
local const = require("druid.const")
|
||||||
local helper = require("druid.helper")
|
local helper = require("druid.helper")
|
||||||
local settings = require("druid.system.settings")
|
local settings = require("druid.system.settings")
|
||||||
local base_component = require("druid.component")
|
local druid_component = require("druid.component")
|
||||||
|
|
||||||
---@class druid.instance
|
---@class druid.instance
|
||||||
---@field components_all druid.component[] All created components
|
---@field components_all druid.component[] All created components
|
||||||
---@field components_interest table<string, druid.component[]> All components sorted by interest
|
---@field components_interest table<string, druid.component[]> All components sorted by interest
|
||||||
---@field url url
|
---@field private _context table Druid context, usually a self of gui script
|
||||||
---@field private _context table Druid context
|
|
||||||
---@field private _style table Druid style table
|
---@field private _style table Druid style table
|
||||||
---@field private _deleted boolean
|
|
||||||
---@field private _is_late_remove_enabled boolean
|
---@field private _is_late_remove_enabled boolean
|
||||||
---@field private _late_remove druid.component[]
|
---@field private _late_remove druid.component[]
|
||||||
---@field private _input_blacklist druid.component[]|nil
|
---@field private _input_blacklist druid.component[]|nil
|
||||||
@ -25,6 +23,7 @@ local M = {}
|
|||||||
local MSG_ADD_FOCUS = hash("acquire_input_focus")
|
local MSG_ADD_FOCUS = hash("acquire_input_focus")
|
||||||
local MSG_REMOVE_FOCUS = hash("release_input_focus")
|
local MSG_REMOVE_FOCUS = hash("release_input_focus")
|
||||||
local IS_NO_AUTO_INPUT = sys.get_config_int("druid.no_auto_input", 0) == 1
|
local IS_NO_AUTO_INPUT = sys.get_config_int("druid.no_auto_input", 0) == 1
|
||||||
|
local INTERESTS_CACHE = {} -- Cache interests per component class in runtime
|
||||||
|
|
||||||
local function set_input_state(self, is_input_inited)
|
local function set_input_state(self, is_input_inited)
|
||||||
if IS_NO_AUTO_INPUT or (self.input_inited == is_input_inited) then
|
if IS_NO_AUTO_INPUT or (self.input_inited == is_input_inited) then
|
||||||
@ -36,17 +35,19 @@ local function set_input_state(self, is_input_inited)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- The a and b - two Druid components
|
|
||||||
---@private
|
---@private
|
||||||
local function sort_input_comparator(a, b)
|
---@param component_a druid.component
|
||||||
local a_priority = a:get_input_priority()
|
---@param component_b druid.component
|
||||||
local b_priority = b:get_input_priority()
|
---@return boolean
|
||||||
|
local function sort_input_comparator(component_a, component_b)
|
||||||
|
local a_priority = component_a:get_input_priority()
|
||||||
|
local b_priority = component_b:get_input_priority()
|
||||||
|
|
||||||
if a_priority ~= b_priority then
|
if a_priority ~= b_priority then
|
||||||
return a_priority < b_priority
|
return a_priority < b_priority
|
||||||
end
|
end
|
||||||
|
|
||||||
return a:get_uid() < b:get_uid()
|
return component_a:get_uid() < component_b:get_uid()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -60,64 +61,62 @@ local function sort_input_stack(self)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
-- Create the Druid component instance
|
---Get current component interests
|
||||||
local function create(self, instance_class)
|
---@param instance druid.component
|
||||||
local instance = instance_class()
|
---@return table interest_list List of component interests
|
||||||
instance:setup_component(self, self._context, self._style, instance_class)
|
local function get_component_interests(instance)
|
||||||
|
---@diagnostic disable-next-line: invisible
|
||||||
|
local instance_class = instance._meta.instance_class
|
||||||
|
if INTERESTS_CACHE[instance_class] then
|
||||||
|
return INTERESTS_CACHE[instance_class]
|
||||||
|
end
|
||||||
|
|
||||||
|
local interests = {}
|
||||||
|
for index = 1, #const.ALL_INTERESTS do
|
||||||
|
local interest = const.ALL_INTERESTS[index]
|
||||||
|
if instance[interest] and type(instance[interest]) == "function" then
|
||||||
|
table.insert(interests, interest)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
INTERESTS_CACHE[instance_class] = interests
|
||||||
|
return INTERESTS_CACHE[instance_class]
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
---@private
|
||||||
|
---@param self druid.instance
|
||||||
|
---@param instance druid.component
|
||||||
|
local function register_interests(self, instance)
|
||||||
table.insert(self.components_all, instance)
|
table.insert(self.components_all, instance)
|
||||||
|
local interest_list = get_component_interests(instance)
|
||||||
local register_to = instance:__get_interests()
|
for i = 1, #interest_list do
|
||||||
for i = 1, #register_to do
|
local interest = interest_list[i]
|
||||||
local interest = register_to[i]
|
|
||||||
table.insert(self.components_interest[interest], instance)
|
table.insert(self.components_interest[interest], instance)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
-- Create the Druid component instance
|
||||||
|
---@param self druid.instance
|
||||||
|
---@param instance_class druid.component
|
||||||
|
---@return druid.component
|
||||||
|
local function create(self, instance_class)
|
||||||
|
local instance = instance_class()
|
||||||
|
instance:setup_component(self, self:get_context(), self:get_style(), instance_class)
|
||||||
|
register_interests(self, instance)
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
local WIDGET_METATABLE = { __index = base_component }
|
---@private
|
||||||
|
|
||||||
---Create the Druid component instance
|
|
||||||
---@param self druid.instance
|
---@param self druid.instance
|
||||||
---@param widget_class druid.component
|
---@param widget_class druid.widget
|
||||||
|
---@return druid.widget
|
||||||
local function create_widget(self, widget_class)
|
local function create_widget(self, widget_class)
|
||||||
local instance = setmetatable({}, {
|
local instance = druid_component.create_widget(self, widget_class, self:get_context())
|
||||||
__index = setmetatable(widget_class, WIDGET_METATABLE)
|
register_interests(self, instance)
|
||||||
})
|
|
||||||
|
|
||||||
instance._component = {
|
|
||||||
_uid = base_component.create_uid(),
|
|
||||||
name = "Druid Widget",
|
|
||||||
input_priority = const.PRIORITY_INPUT,
|
|
||||||
default_input_priority = const.PRIORITY_INPUT,
|
|
||||||
_is_input_priority_changed = true, -- Default true for sort once time after GUI init
|
|
||||||
}
|
|
||||||
instance._meta = {
|
|
||||||
druid = self,
|
|
||||||
template = "",
|
|
||||||
nodes = nil,
|
|
||||||
context = self._context,
|
|
||||||
style = nil,
|
|
||||||
input_enabled = true,
|
|
||||||
children = {},
|
|
||||||
parent = type(self._context) ~= "userdata" and self._context,
|
|
||||||
instance_class = widget_class
|
|
||||||
}
|
|
||||||
|
|
||||||
-- Register
|
|
||||||
if instance._meta.parent then
|
|
||||||
instance._meta.parent:__add_child(instance)
|
|
||||||
end
|
|
||||||
|
|
||||||
table.insert(self.components_all, instance)
|
|
||||||
|
|
||||||
local register_to = instance:__get_interests()
|
|
||||||
for i = 1, #register_to do
|
|
||||||
local interest = register_to[i]
|
|
||||||
table.insert(self.components_interest[interest], instance)
|
|
||||||
end
|
|
||||||
|
|
||||||
return instance
|
return instance
|
||||||
end
|
end
|
||||||
@ -176,8 +175,9 @@ function M:_process_input(action_id, action, components)
|
|||||||
|
|
||||||
for i = #components, 1, -1 do
|
for i = #components, 1, -1 do
|
||||||
local component = components[i]
|
local component = components[i]
|
||||||
local meta = component._meta
|
local input_enabled = component:get_input_enabled()
|
||||||
if meta.input_enabled and self:_can_use_input_component(component) then
|
|
||||||
|
if input_enabled and self:_can_use_input_component(component) then
|
||||||
if not is_input_consumed then
|
if not is_input_consumed then
|
||||||
is_input_consumed = component:on_input(action_id, action) or false
|
is_input_consumed = component:on_input(action_id, action) or false
|
||||||
else
|
else
|
||||||
@ -210,7 +210,6 @@ end
|
|||||||
function M:initialize(context, style)
|
function M:initialize(context, style)
|
||||||
self._context = context
|
self._context = context
|
||||||
self._style = style or settings.default_style
|
self._style = style or settings.default_style
|
||||||
self._deleted = false
|
|
||||||
self._is_late_remove_enabled = false
|
self._is_late_remove_enabled = false
|
||||||
self._late_remove = {}
|
self._late_remove = {}
|
||||||
|
|
||||||
@ -257,8 +256,6 @@ function M:final()
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self._deleted = true
|
|
||||||
|
|
||||||
set_input_state(self, false)
|
set_input_state(self, false)
|
||||||
|
|
||||||
events.unsubscribe("druid.window_event", self.on_window_event, self)
|
events.unsubscribe("druid.window_event", self.on_window_event, self)
|
||||||
@ -303,9 +300,9 @@ function M:remove(component)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local interests = component:__get_interests()
|
local interest_list = get_component_interests(component)
|
||||||
for i = 1, #interests do
|
for i = 1, #interest_list do
|
||||||
local interest = interests[i]
|
local interest = interest_list[i]
|
||||||
local components = self.components_interest[interest]
|
local components = self.components_interest[interest]
|
||||||
for j = #components, 1, -1 do
|
for j = #components, 1, -1 do
|
||||||
if components[j] == component then
|
if components[j] == component then
|
||||||
@ -318,6 +315,22 @@ function M:remove(component)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
---Get a context of Druid instance (usually a self of gui script)
|
||||||
|
---@package
|
||||||
|
---@return any
|
||||||
|
function M:get_context()
|
||||||
|
return self._context
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
---Get a style of Druid instance
|
||||||
|
---@package
|
||||||
|
---@return table
|
||||||
|
function M:get_style()
|
||||||
|
return self._style
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
---Druid late update function called after initialization and before the regular update step.
|
---Druid late update function called after initialization and before the regular update step.
|
||||||
---This function is used to check the GUI state and perform actions after all components and nodes have been created.
|
---This function is used to check the GUI state and perform actions after all components and nodes have been created.
|
||||||
---An example use case is performing an auto stencil check in the GUI hierarchy for input components.
|
---An example use case is performing an auto stencil check in the GUI hierarchy for input components.
|
||||||
@ -506,7 +519,7 @@ end
|
|||||||
local button = require("druid.base.button")
|
local button = require("druid.base.button")
|
||||||
---Create Button component
|
---Create Button component
|
||||||
---@param node string|node The node_id or gui.get_node(node_id)
|
---@param node string|node The node_id or gui.get_node(node_id)
|
||||||
---@param callback function|nil Button callback
|
---@param callback function|event|nil Button callback
|
||||||
---@param params any|nil Button callback params
|
---@param params any|nil Button callback params
|
||||||
---@param anim_node node|string|nil Button anim node (node, if not provided)
|
---@param anim_node node|string|nil Button anim node (node, if not provided)
|
||||||
---@return druid.button Button component
|
---@return druid.button Button component
|
||||||
|
@ -102,13 +102,16 @@ end
|
|||||||
function M:clear_created_properties()
|
function M:clear_created_properties()
|
||||||
for index = 1, #self.properties do
|
for index = 1, #self.properties do
|
||||||
local property = self.properties[index]
|
local property = self.properties[index]
|
||||||
|
local root = property.root --[[@as node]]
|
||||||
|
|
||||||
|
if root then
|
||||||
-- If prefab used clone nodes we can remove it
|
-- If prefab used clone nodes we can remove it
|
||||||
if property:get_nodes() then
|
if property:get_nodes() then
|
||||||
gui.delete_node(property.root)
|
gui.delete_node(root)
|
||||||
else
|
else
|
||||||
-- Probably we have component placed on scene directly
|
-- Probably we have component placed on scene directly
|
||||||
gui.set_enabled(property.root, false)
|
gui.set_enabled(root, false)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
self.druid:remove(self.properties[index])
|
self.druid:remove(self.properties[index])
|
||||||
|
@ -13,7 +13,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/button/basic_button.lua",
|
code_url = "example/examples/basic/button/basic_button.lua",
|
||||||
component_class = require("example.examples.basic.button.basic_button"),
|
component_class = require("example.examples.basic.button.basic_button"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance basic_button
|
---@cast instance examples.basic_button
|
||||||
|
|
||||||
local checkbox = properties_panel:add_checkbox("ui_enabled", false, function(value)
|
local checkbox = properties_panel:add_checkbox("ui_enabled", false, function(value)
|
||||||
instance.button:set_enabled(value)
|
instance.button:set_enabled(value)
|
||||||
@ -21,7 +21,7 @@ function M.get_examples()
|
|||||||
checkbox:set_value(true)
|
checkbox:set_value(true)
|
||||||
end,
|
end,
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_button
|
---@cast instance examples.basic_button
|
||||||
instance.button.on_click:subscribe(function()
|
instance.button.on_click:subscribe(function()
|
||||||
output_log:add_log_text("Button Clicked")
|
output_log:add_log_text("Button Clicked")
|
||||||
end)
|
end)
|
||||||
@ -35,7 +35,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/button/basic_button_double_click.lua",
|
code_url = "example/examples/basic/button/basic_button_double_click.lua",
|
||||||
component_class = require("example.examples.basic.button.basic_button_double_click"),
|
component_class = require("example.examples.basic.button.basic_button_double_click"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_button_double_click
|
---@cast instance examples.basic_button_double_click
|
||||||
instance.button.on_click:subscribe(function()
|
instance.button.on_click:subscribe(function()
|
||||||
output_log:add_log_text("Clicked")
|
output_log:add_log_text("Clicked")
|
||||||
end)
|
end)
|
||||||
@ -52,7 +52,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/button/basic_button_hold.lua",
|
code_url = "example/examples/basic/button/basic_button_hold.lua",
|
||||||
component_class = require("example.examples.basic.button.basic_button_hold"),
|
component_class = require("example.examples.basic.button.basic_button_hold"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_button_hold
|
---@cast instance examples.basic_button_hold
|
||||||
instance.button.on_click:subscribe(function()
|
instance.button.on_click:subscribe(function()
|
||||||
output_log:add_log_text("Clicked")
|
output_log:add_log_text("Clicked")
|
||||||
end)
|
end)
|
||||||
@ -69,7 +69,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/text/basic_text.lua",
|
code_url = "example/examples/basic/text/basic_text.lua",
|
||||||
component_class = require("example.examples.basic.text.basic_text"),
|
component_class = require("example.examples.basic.text.basic_text"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance basic_text
|
---@cast instance examples.basic_text
|
||||||
|
|
||||||
local adjust_index = 1
|
local adjust_index = 1
|
||||||
local adjust_types = {
|
local adjust_types = {
|
||||||
@ -100,7 +100,7 @@ function M.get_examples()
|
|||||||
gui.PIVOT_NW,
|
gui.PIVOT_NW,
|
||||||
}
|
}
|
||||||
|
|
||||||
---@cast instance rich_text_tags
|
---@cast instance examples.rich_text_tags
|
||||||
properties_panel:add_button("ui_pivot_next", function()
|
properties_panel:add_button("ui_pivot_next", function()
|
||||||
pivot_index = pivot_index + 1
|
pivot_index = pivot_index + 1
|
||||||
if pivot_index > #pivot_list then
|
if pivot_index > #pivot_list then
|
||||||
@ -110,7 +110,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance multiline_text
|
---@cast instance examples.multiline_text
|
||||||
local info = ""
|
local info = ""
|
||||||
|
|
||||||
info = info .. "Text Adjust: " .. instance.text.adjust_type .. "\n"
|
info = info .. "Text Adjust: " .. instance.text.adjust_type .. "\n"
|
||||||
@ -127,7 +127,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/text/multiline_text.lua",
|
code_url = "example/examples/basic/text/multiline_text.lua",
|
||||||
component_class = require("example.examples.basic.text.multiline_text"),
|
component_class = require("example.examples.basic.text.multiline_text"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance multiline_text
|
---@cast instance examples.multiline_text
|
||||||
|
|
||||||
local adjust_index = 1
|
local adjust_index = 1
|
||||||
local adjust_types = {
|
local adjust_types = {
|
||||||
@ -167,7 +167,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance multiline_text
|
---@cast instance examples.multiline_text
|
||||||
local info = ""
|
local info = ""
|
||||||
|
|
||||||
info = info .. "Text Adjust: " .. instance.text.adjust_type .. "\n"
|
info = info .. "Text Adjust: " .. instance.text.adjust_type .. "\n"
|
||||||
@ -208,7 +208,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/slider/basic_slider.lua",
|
code_url = "example/examples/basic/slider/basic_slider.lua",
|
||||||
component_class = require("example.examples.basic.slider.basic_slider"),
|
component_class = require("example.examples.basic.slider.basic_slider"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_slider
|
---@cast instance examples.basic_slider
|
||||||
instance.slider.on_change_value:subscribe(function(_, value)
|
instance.slider.on_change_value:subscribe(function(_, value)
|
||||||
local value = helper.round(value, 2)
|
local value = helper.round(value, 2)
|
||||||
output_log:add_log_text("Slider Value: " .. value)
|
output_log:add_log_text("Slider Value: " .. value)
|
||||||
@ -223,7 +223,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/slider/basic_slider_vertical.lua",
|
code_url = "example/examples/basic/slider/basic_slider_vertical.lua",
|
||||||
component_class = require("example.examples.basic.slider.basic_slider_vertical"),
|
component_class = require("example.examples.basic.slider.basic_slider_vertical"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_slider_vertical
|
---@cast instance examples.basic_slider_vertical
|
||||||
instance.slider.on_change_value:subscribe(function(_, value)
|
instance.slider.on_change_value:subscribe(function(_, value)
|
||||||
local value = helper.round(value, 2)
|
local value = helper.round(value, 2)
|
||||||
output_log:add_log_text("Slider Value: " .. value)
|
output_log:add_log_text("Slider Value: " .. value)
|
||||||
@ -238,7 +238,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/slider/basic_slider_stepped.lua",
|
code_url = "example/examples/basic/slider/basic_slider_stepped.lua",
|
||||||
component_class = require("example.examples.basic.slider.basic_slider_stepped"),
|
component_class = require("example.examples.basic.slider.basic_slider_stepped"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_slider
|
---@cast instance examples.basic_slider_stepped
|
||||||
instance.slider.on_change_value:subscribe(function(_, value)
|
instance.slider.on_change_value:subscribe(function(_, value)
|
||||||
local value = helper.round(value, 2)
|
local value = helper.round(value, 2)
|
||||||
output_log:add_log_text("Slider Value: " .. value)
|
output_log:add_log_text("Slider Value: " .. value)
|
||||||
@ -253,7 +253,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/progress_bar/basic_progress_bar.lua",
|
code_url = "example/examples/basic/progress_bar/basic_progress_bar.lua",
|
||||||
component_class = require("example.examples.basic.progress_bar.basic_progress_bar"),
|
component_class = require("example.examples.basic.progress_bar.basic_progress_bar"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance basic_progress_bar
|
---@cast instance examples.basic_progress_bar
|
||||||
properties_panel:add_slider("ui_value", 1, function(value)
|
properties_panel:add_slider("ui_value", 1, function(value)
|
||||||
instance:set_value(value)
|
instance:set_value(value)
|
||||||
end)
|
end)
|
||||||
@ -267,7 +267,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/progress_bar/basic_progress_bar_slice9.lua",
|
code_url = "example/examples/basic/progress_bar/basic_progress_bar_slice9.lua",
|
||||||
component_class = require("example.examples.basic.progress_bar.basic_progress_bar_slice9"),
|
component_class = require("example.examples.basic.progress_bar.basic_progress_bar_slice9"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance basic_progress_bar_slice9
|
---@cast instance examples.basic_progress_bar_slice9
|
||||||
properties_panel:add_slider("ui_value", 1, function(value)
|
properties_panel:add_slider("ui_value", 1, function(value)
|
||||||
instance:set_value(value)
|
instance:set_value(value)
|
||||||
end)
|
end)
|
||||||
@ -281,7 +281,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/blocker/basic_blocker.lua",
|
code_url = "example/examples/basic/blocker/basic_blocker.lua",
|
||||||
component_class = require("example.examples.basic.blocker.basic_blocker"),
|
component_class = require("example.examples.basic.blocker.basic_blocker"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_blocker
|
---@cast instance examples.basic_blocker
|
||||||
instance.button_root.on_click:subscribe(function()
|
instance.button_root.on_click:subscribe(function()
|
||||||
output_log:add_log_text("Root Clicked")
|
output_log:add_log_text("Root Clicked")
|
||||||
end)
|
end)
|
||||||
@ -306,7 +306,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/timer/basic_timer.lua",
|
code_url = "example/examples/basic/timer/basic_timer.lua",
|
||||||
component_class = require("example.examples.basic.timer.basic_timer"),
|
component_class = require("example.examples.basic.timer.basic_timer"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_timer
|
---@cast instance examples.basic_timer
|
||||||
instance.on_cycle_end:subscribe(function()
|
instance.on_cycle_end:subscribe(function()
|
||||||
output_log:add_log_text("Timer Cycle End")
|
output_log:add_log_text("Timer Cycle End")
|
||||||
end)
|
end)
|
||||||
@ -320,7 +320,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/hotkey/basic_hotkey.lua",
|
code_url = "example/examples/basic/hotkey/basic_hotkey.lua",
|
||||||
component_class = require("example.examples.basic.hotkey.basic_hotkey"),
|
component_class = require("example.examples.basic.hotkey.basic_hotkey"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_hotkey
|
---@cast instance examples.basic_hotkey
|
||||||
instance.hotkey.on_hotkey_released:subscribe(function()
|
instance.hotkey.on_hotkey_released:subscribe(function()
|
||||||
output_log:add_log_text("Hotkey Released")
|
output_log:add_log_text("Hotkey Released")
|
||||||
end)
|
end)
|
||||||
@ -334,7 +334,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/scroll/scroll.lua",
|
code_url = "example/examples/basic/scroll/scroll.lua",
|
||||||
component_class = require("example.examples.basic.scroll.scroll"),
|
component_class = require("example.examples.basic.scroll.scroll"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance scroll
|
---@cast instance examples.scroll
|
||||||
instance.button_tutorial.on_click:subscribe(function()
|
instance.button_tutorial.on_click:subscribe(function()
|
||||||
output_log:add_log_text("Button Tutorial Clicked")
|
output_log:add_log_text("Button Tutorial Clicked")
|
||||||
end)
|
end)
|
||||||
@ -343,7 +343,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance scroll
|
---@cast instance examples.scroll
|
||||||
local scroll = instance.scroll
|
local scroll = instance.scroll
|
||||||
local is_stretch = instance.scroll.style.EXTRA_STRETCH_SIZE > 0
|
local is_stretch = instance.scroll.style.EXTRA_STRETCH_SIZE > 0
|
||||||
properties_panel:add_checkbox("ui_elastic_scroll", is_stretch, function(value)
|
properties_panel:add_checkbox("ui_elastic_scroll", is_stretch, function(value)
|
||||||
@ -386,7 +386,7 @@ function M.get_examples()
|
|||||||
wheel_by_inertion:set_value(scroll.style.WHEEL_SCROLL_BY_INERTION)
|
wheel_by_inertion:set_value(scroll.style.WHEEL_SCROLL_BY_INERTION)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance scroll
|
---@cast instance examples.scroll
|
||||||
local info = ""
|
local info = ""
|
||||||
|
|
||||||
local s = instance.scroll
|
local s = instance.scroll
|
||||||
@ -406,7 +406,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/scroll_slider/scroll_slider.lua",
|
code_url = "example/examples/basic/scroll_slider/scroll_slider.lua",
|
||||||
component_class = require("example.examples.basic.scroll_slider.scroll_slider"),
|
component_class = require("example.examples.basic.scroll_slider.scroll_slider"),
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance scroll_slider
|
---@cast instance examples.scroll_slider
|
||||||
local info = ""
|
local info = ""
|
||||||
|
|
||||||
local s = instance.scroll
|
local s = instance.scroll
|
||||||
@ -426,7 +426,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/grid/grid.lua",
|
code_url = "example/examples/basic/grid/grid.lua",
|
||||||
component_class = require("example.examples.basic.grid.grid"),
|
component_class = require("example.examples.basic.grid.grid"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance grid
|
---@cast instance examples.grid
|
||||||
|
|
||||||
local grid = instance.grid
|
local grid = instance.grid
|
||||||
|
|
||||||
@ -495,7 +495,7 @@ function M.get_examples()
|
|||||||
slider_size:set_value(0.5)
|
slider_size:set_value(0.5)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance grid
|
---@cast instance examples.grid
|
||||||
local info = ""
|
local info = ""
|
||||||
|
|
||||||
local grid = instance.grid
|
local grid = instance.grid
|
||||||
@ -514,7 +514,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua",
|
code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid.lua",
|
||||||
component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid"),
|
component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance scroll_bind_grid
|
---@cast instance examples.scroll_bind_grid
|
||||||
|
|
||||||
local view_node = instance.scroll.view_node
|
local view_node = instance.scroll.view_node
|
||||||
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
||||||
@ -538,7 +538,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance scroll_bind_grid
|
---@cast instance examples.scroll_bind_grid
|
||||||
local info = ""
|
local info = ""
|
||||||
|
|
||||||
local s = instance.scroll
|
local s = instance.scroll
|
||||||
@ -567,7 +567,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.lua",
|
code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid_horizontal.lua",
|
||||||
component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid_horizontal"),
|
component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid_horizontal"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance scroll_bind_grid_horizontal
|
---@cast instance examples.scroll_bind_grid_horizontal
|
||||||
|
|
||||||
local view_node = instance.scroll.view_node
|
local view_node = instance.scroll.view_node
|
||||||
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
||||||
@ -593,7 +593,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance scroll_bind_grid_horizontal
|
---@cast instance examples.scroll_bind_grid_horizontal
|
||||||
local info = ""
|
local info = ""
|
||||||
|
|
||||||
local s = instance.scroll
|
local s = instance.scroll
|
||||||
@ -621,7 +621,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.lua",
|
code_url = "example/examples/basic/scroll_bind_grid/scroll_bind_grid_points.lua",
|
||||||
component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid_points"),
|
component_class = require("example.examples.basic.scroll_bind_grid.scroll_bind_grid_points"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance scroll_bind_grid_points
|
---@cast instance examples.scroll_bind_grid_points
|
||||||
|
|
||||||
local view_node = instance.scroll.view_node
|
local view_node = instance.scroll.view_node
|
||||||
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
||||||
@ -645,7 +645,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance scroll_bind_grid_points
|
---@cast instance examples.scroll_bind_grid_points
|
||||||
local info = ""
|
local info = ""
|
||||||
|
|
||||||
local s = instance.scroll
|
local s = instance.scroll
|
||||||
@ -674,12 +674,18 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/input/basic_input.lua",
|
code_url = "example/examples/basic/input/basic_input.lua",
|
||||||
component_class = require("example.examples.basic.input.basic_input"),
|
component_class = require("example.examples.basic.input.basic_input"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_input
|
---@cast instance examples.basic_input
|
||||||
|
instance.input.on_input_select:subscribe(function()
|
||||||
|
output_log:add_log_text("Input Selected")
|
||||||
|
end)
|
||||||
|
instance.input_2.on_input_select:subscribe(function()
|
||||||
|
output_log:add_log_text("Input 2 Selected")
|
||||||
|
end)
|
||||||
instance.input.on_input_unselect:subscribe(function(_, text)
|
instance.input.on_input_unselect:subscribe(function(_, text)
|
||||||
output_log:add_log_text("Input: " .. text)
|
output_log:add_log_text("Input Deselected. Text: " .. text)
|
||||||
end)
|
end)
|
||||||
instance.input_2.on_input_unselect:subscribe(function(_, text)
|
instance.input_2.on_input_unselect:subscribe(function(_, text)
|
||||||
output_log:add_log_text("Input 2: " .. text)
|
output_log:add_log_text("Input Deselected. Text: " .. text)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
},
|
},
|
||||||
@ -691,7 +697,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/input/input_password.lua",
|
code_url = "example/examples/basic/input/input_password.lua",
|
||||||
component_class = require("example.examples.basic.input.input_password"),
|
component_class = require("example.examples.basic.input.input_password"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance input_password
|
---@cast instance examples.input_password
|
||||||
instance.input.on_input_unselect:subscribe(function(_, text)
|
instance.input.on_input_unselect:subscribe(function(_, text)
|
||||||
output_log:add_log_text("Input: " .. text)
|
output_log:add_log_text("Input: " .. text)
|
||||||
end)
|
end)
|
||||||
@ -705,7 +711,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/input/rich_input.lua",
|
code_url = "example/examples/basic/input/rich_input.lua",
|
||||||
component_class = require("example.examples.basic.input.rich_input"),
|
component_class = require("example.examples.basic.input.rich_input"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance rich_input
|
---@cast instance examples.rich_input
|
||||||
instance.rich_input.input.on_input_unselect:subscribe(function(_, text)
|
instance.rich_input.input.on_input_unselect:subscribe(function(_, text)
|
||||||
output_log:add_log_text("Input: " .. text)
|
output_log:add_log_text("Input: " .. text)
|
||||||
end)
|
end)
|
||||||
@ -743,7 +749,7 @@ function M.get_examples()
|
|||||||
gui.PIVOT_NW,
|
gui.PIVOT_NW,
|
||||||
}
|
}
|
||||||
|
|
||||||
---@cast instance rich_text_tags
|
---@cast instance examples.rich_text_tags
|
||||||
properties_panel:add_button("ui_pivot_next", function()
|
properties_panel:add_button("ui_pivot_next", function()
|
||||||
pivot_index = pivot_index + 1
|
pivot_index = pivot_index + 1
|
||||||
if pivot_index > #pivot_list then
|
if pivot_index > #pivot_list then
|
||||||
@ -799,7 +805,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/swipe/basic_swipe.lua",
|
code_url = "example/examples/basic/swipe/basic_swipe.lua",
|
||||||
component_class = require("example.examples.basic.swipe.basic_swipe"),
|
component_class = require("example.examples.basic.swipe.basic_swipe"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance basic_swipe
|
---@cast instance examples.basic_swipe
|
||||||
instance.swipe.on_swipe:subscribe(function(_, side, dist, delta_time)
|
instance.swipe.on_swipe:subscribe(function(_, side, dist, delta_time)
|
||||||
output_log:add_log_text("Swipe Side: " .. side)
|
output_log:add_log_text("Swipe Side: " .. side)
|
||||||
end)
|
end)
|
||||||
@ -813,7 +819,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/checkbox/checkbox.lua",
|
code_url = "example/examples/basic/checkbox/checkbox.lua",
|
||||||
component_class = require("example.examples.basic.checkbox.checkbox"),
|
component_class = require("example.examples.basic.checkbox.checkbox"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance checkbox
|
---@cast instance examples.checkbox
|
||||||
instance.button.on_click:subscribe(function()
|
instance.button.on_click:subscribe(function()
|
||||||
output_log:add_log_text("Checkbox Clicked: " .. tostring(instance.is_enabled))
|
output_log:add_log_text("Checkbox Clicked: " .. tostring(instance.is_enabled))
|
||||||
end)
|
end)
|
||||||
@ -827,7 +833,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/checkbox_group/checkbox_group.lua",
|
code_url = "example/examples/basic/checkbox_group/checkbox_group.lua",
|
||||||
component_class = require("example.examples.basic.checkbox_group.checkbox_group"),
|
component_class = require("example.examples.basic.checkbox_group.checkbox_group"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance checkbox_group
|
---@cast instance examples.checkbox_group
|
||||||
instance.on_state_changed:subscribe(function(state1, state2, state3)
|
instance.on_state_changed:subscribe(function(state1, state2, state3)
|
||||||
output_log:add_log_text("State: " .. tostring(state1) .. " " .. tostring(state2) .. " " .. tostring(state3))
|
output_log:add_log_text("State: " .. tostring(state1) .. " " .. tostring(state2) .. " " .. tostring(state3))
|
||||||
end)
|
end)
|
||||||
@ -841,7 +847,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/basic/radio_group/radio_group.lua",
|
code_url = "example/examples/basic/radio_group/radio_group.lua",
|
||||||
component_class = require("example.examples.basic.radio_group.radio_group"),
|
component_class = require("example.examples.basic.radio_group.radio_group"),
|
||||||
on_create = function(instance, output_log)
|
on_create = function(instance, output_log)
|
||||||
---@cast instance radio_group
|
---@cast instance examples.radio_group
|
||||||
instance.on_state_changed:subscribe(function(selected)
|
instance.on_state_changed:subscribe(function(selected)
|
||||||
output_log:add_log_text("Selected: " .. selected)
|
output_log:add_log_text("Selected: " .. selected)
|
||||||
end)
|
end)
|
||||||
|
@ -34,6 +34,37 @@ nodes {
|
|||||||
inherit_alpha: true
|
inherit_alpha: true
|
||||||
template: "/example/templates/slider.gui"
|
template: "/example/templates/slider.gui"
|
||||||
}
|
}
|
||||||
|
nodes {
|
||||||
|
size {
|
||||||
|
x: 40.0
|
||||||
|
y: 260.0
|
||||||
|
}
|
||||||
|
type: TYPE_BOX
|
||||||
|
id: "slider/root"
|
||||||
|
parent: "slider"
|
||||||
|
overridden_fields: 4
|
||||||
|
template_node_child: true
|
||||||
|
}
|
||||||
|
nodes {
|
||||||
|
rotation {
|
||||||
|
z: 90.0
|
||||||
|
}
|
||||||
|
type: TYPE_BOX
|
||||||
|
id: "slider/slider_back"
|
||||||
|
parent: "slider/root"
|
||||||
|
overridden_fields: 2
|
||||||
|
template_node_child: true
|
||||||
|
}
|
||||||
|
nodes {
|
||||||
|
position {
|
||||||
|
y: 118.0
|
||||||
|
}
|
||||||
|
type: TYPE_BOX
|
||||||
|
id: "slider/slider_pin"
|
||||||
|
parent: "slider/root"
|
||||||
|
overridden_fields: 1
|
||||||
|
template_node_child: true
|
||||||
|
}
|
||||||
nodes {
|
nodes {
|
||||||
position {
|
position {
|
||||||
y: 170.0
|
y: 170.0
|
||||||
|
@ -48,7 +48,7 @@ end
|
|||||||
|
|
||||||
---@param index number
|
---@param index number
|
||||||
---@param node node
|
---@param node node
|
||||||
---@param instance button_component
|
---@param instance examples.button_component
|
||||||
---@param data table
|
---@param data table
|
||||||
function M:on_element_add(index, node, instance, data)
|
function M:on_element_add(index, node, instance, data)
|
||||||
instance.text:set_text("Data Item " .. index)
|
instance.text:set_text("Data Item " .. index)
|
||||||
@ -62,7 +62,7 @@ function M:on_element_remove(index, node, instance, data)
|
|||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
---@param instance button_component
|
---@param instance examples.button_component
|
||||||
function M:on_button_click(instance)
|
function M:on_button_click(instance)
|
||||||
local data = instance:get_data()
|
local data = instance:get_data()
|
||||||
self.on_item_click:trigger(data)
|
self.on_item_click:trigger(data)
|
||||||
|
@ -11,13 +11,13 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/data_list/basic/data_list_basic.lua",
|
code_url = "example/examples/data_list/basic/data_list_basic.lua",
|
||||||
component_class = require("example.examples.data_list.basic.data_list_basic"),
|
component_class = require("example.examples.data_list.basic.data_list_basic"),
|
||||||
on_create = function(instance, output_list)
|
on_create = function(instance, output_list)
|
||||||
---@cast instance data_list_basic
|
---@cast instance examples.data_list_basic
|
||||||
instance.on_item_click:subscribe(function(index)
|
instance.on_item_click:subscribe(function(index)
|
||||||
output_list:add_log_text("Item clicked: " .. index)
|
output_list:add_log_text("Item clicked: " .. index)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance data_list_basic
|
---@cast instance examples.data_list_basic
|
||||||
|
|
||||||
local view_node = instance.scroll.view_node
|
local view_node = instance.scroll.view_node
|
||||||
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
||||||
@ -31,7 +31,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance data_list_basic
|
---@cast instance examples.data_list_basic
|
||||||
local data_list = instance.data_list
|
local data_list = instance.data_list
|
||||||
|
|
||||||
local data = data_list:get_data()
|
local data = data_list:get_data()
|
||||||
@ -59,7 +59,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/data_list/basic/data_list_horizontal_basic.lua",
|
code_url = "example/examples/data_list/basic/data_list_horizontal_basic.lua",
|
||||||
component_class = require("example.examples.data_list.basic.data_list_horizontal_basic"),
|
component_class = require("example.examples.data_list.basic.data_list_horizontal_basic"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance data_list_horizontal_basic
|
---@cast instance examples.data_list_horizontal_basic
|
||||||
|
|
||||||
local view_node = instance.scroll.view_node
|
local view_node = instance.scroll.view_node
|
||||||
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
||||||
@ -69,7 +69,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance data_list_horizontal_basic
|
---@cast instance examples.data_list_horizontal_basic
|
||||||
local data_list = instance.data_list
|
local data_list = instance.data_list
|
||||||
|
|
||||||
local data = data_list:get_data()
|
local data = data_list:get_data()
|
||||||
@ -97,14 +97,14 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua",
|
code_url = "example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua",
|
||||||
component_class = require("example.examples.data_list.add_remove_clear.data_list_add_remove_clear"),
|
component_class = require("example.examples.data_list.add_remove_clear.data_list_add_remove_clear"),
|
||||||
on_create = function(instance, output_list)
|
on_create = function(instance, output_list)
|
||||||
---@cast instance data_list_add_remove_clear
|
---@cast instance examples.data_list_add_remove_clear
|
||||||
instance.on_item_click:subscribe(function(index)
|
instance.on_item_click:subscribe(function(index)
|
||||||
instance:remove_item(index)
|
instance:remove_item(index)
|
||||||
output_list:add_log_text("Item removed: " .. index)
|
output_list:add_log_text("Item removed: " .. index)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance data_list_add_remove_clear
|
---@cast instance examples.data_list_add_remove_clear
|
||||||
|
|
||||||
local view_node = instance.scroll.view_node
|
local view_node = instance.scroll.view_node
|
||||||
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
||||||
@ -130,7 +130,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance data_list_add_remove_clear
|
---@cast instance examples.data_list_add_remove_clear
|
||||||
local data_list = instance.data_list
|
local data_list = instance.data_list
|
||||||
|
|
||||||
local data = data_list:get_data()
|
local data = data_list:get_data()
|
||||||
@ -158,13 +158,13 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/data_list/cache_with_component/cache_with_component.lua",
|
code_url = "example/examples/data_list/cache_with_component/cache_with_component.lua",
|
||||||
component_class = require("example.examples.data_list.cache_with_component.cache_with_component"),
|
component_class = require("example.examples.data_list.cache_with_component.cache_with_component"),
|
||||||
on_create = function(instance, output_list)
|
on_create = function(instance, output_list)
|
||||||
---@cast instance data_list_cache_with_component
|
---@cast instance examples.data_list_cache_with_component
|
||||||
instance.on_item_click:subscribe(function(index)
|
instance.on_item_click:subscribe(function(index)
|
||||||
output_list:add_log_text("Item clicked: " .. index)
|
output_list:add_log_text("Item clicked: " .. index)
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance data_list_cache_with_component
|
---@cast instance examples.data_list_cache_with_component
|
||||||
|
|
||||||
local view_node = instance.scroll.view_node
|
local view_node = instance.scroll.view_node
|
||||||
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
local is_stencil = gui.get_clipping_mode(view_node) == gui.CLIPPING_MODE_STENCIL
|
||||||
@ -178,7 +178,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance data_list_cache_with_component
|
---@cast instance examples.data_list_cache_with_component
|
||||||
local data_list = instance.data_list
|
local data_list = instance.data_list
|
||||||
|
|
||||||
local data = data_list:get_data()
|
local data = data_list:get_data()
|
||||||
|
@ -12,7 +12,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/gamepad/gamepad_tester/gamepad_tester.lua",
|
code_url = "example/examples/gamepad/gamepad_tester/gamepad_tester.lua",
|
||||||
component_class = require("example.examples.gamepad.gamepad_tester.gamepad_tester"),
|
component_class = require("example.examples.gamepad.gamepad_tester.gamepad_tester"),
|
||||||
on_create = function(instance, output_list)
|
on_create = function(instance, output_list)
|
||||||
---@cast instance gamepad_tester
|
---@cast instance examples.gamepad_tester
|
||||||
instance.button_left.on_click:subscribe(function()
|
instance.button_left.on_click:subscribe(function()
|
||||||
output_list:add_log_text("Button Left Clicked")
|
output_list:add_log_text("Button Left Clicked")
|
||||||
end)
|
end)
|
||||||
|
@ -3,7 +3,7 @@ local on_screen_input = require("example.examples.gamepad.on_screen_control.on_s
|
|||||||
|
|
||||||
---@class examples.on_screen_control: druid.component
|
---@class examples.on_screen_control: druid.component
|
||||||
---@field druid druid.instance
|
---@field druid druid.instance
|
||||||
---@field on_screen_input on_screen_input
|
---@field on_screen_input examples.on_screen_input
|
||||||
local M = component.create("on_screen_control")
|
local M = component.create("on_screen_control")
|
||||||
|
|
||||||
local CHARACTER_SPEED = 700
|
local CHARACTER_SPEED = 700
|
||||||
@ -19,7 +19,7 @@ function M:init(template, nodes)
|
|||||||
self.character_eye_left = self:get_node("eye_left")
|
self.character_eye_left = self:get_node("eye_left")
|
||||||
self.character_eye_right = self:get_node("eye_right")
|
self.character_eye_right = self:get_node("eye_right")
|
||||||
|
|
||||||
self.on_screen_input = self.druid:new(on_screen_input, "on_screen_input") --[[@as on_screen_input]]
|
self.on_screen_input = self.druid:new(on_screen_input, "on_screen_input")
|
||||||
|
|
||||||
self.on_screen_input.on_action:subscribe(self.on_action_button, self)
|
self.on_screen_input.on_action:subscribe(self.on_action_button, self)
|
||||||
self.on_screen_input.on_movement:subscribe(self.on_movement, self)
|
self.on_screen_input.on_movement:subscribe(self.on_movement, self)
|
||||||
|
@ -12,7 +12,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/layout/basic/basic_layout.lua",
|
code_url = "example/examples/layout/basic/basic_layout.lua",
|
||||||
component_class = require("example.examples.layout.basic.basic_layout"),
|
component_class = require("example.examples.layout.basic.basic_layout"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance basic_layout
|
---@cast instance examples.basic_layout
|
||||||
|
|
||||||
properties_panel:add_slider("ui_padding", 0, function(value)
|
properties_panel:add_slider("ui_padding", 0, function(value)
|
||||||
local padding = math.floor((value * 64) * 100) / 100
|
local padding = math.floor((value * 64) * 100) / 100
|
||||||
@ -71,7 +71,7 @@ function M.get_examples()
|
|||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
get_debug_info = function(instance)
|
get_debug_info = function(instance)
|
||||||
---@cast instance basic_layout
|
---@cast instance examples.basic_layout
|
||||||
local layout = instance.layout
|
local layout = instance.layout
|
||||||
local p = layout.padding
|
local p = layout.padding
|
||||||
local info = ""
|
local info = ""
|
||||||
|
@ -20,7 +20,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/panthera/animation_blend/animation_blend.lua",
|
code_url = "example/examples/panthera/animation_blend/animation_blend.lua",
|
||||||
component_class = require("example.examples.panthera.animation_blend.animation_blend"),
|
component_class = require("example.examples.panthera.animation_blend.animation_blend"),
|
||||||
properties_control = function(instance, properties_panel)
|
properties_control = function(instance, properties_panel)
|
||||||
---@cast instance animation_blend
|
---@cast instance examples.animation_blend
|
||||||
local vertical_time = panthera.get_time(instance.animation_vertical)
|
local vertical_time = panthera.get_time(instance.animation_vertical)
|
||||||
|
|
||||||
local vertical_slider = properties_panel:add_slider("ui_animation_vertical", vertical_time, function(value)
|
local vertical_slider = properties_panel:add_slider("ui_animation_vertical", vertical_time, function(value)
|
||||||
|
@ -12,7 +12,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/windows/window_language/window_language.lua",
|
code_url = "example/examples/windows/window_language/window_language.lua",
|
||||||
component_class = require("example.examples.windows.window_language.window_language"),
|
component_class = require("example.examples.windows.window_language.window_language"),
|
||||||
on_create = function(instance, output_list)
|
on_create = function(instance, output_list)
|
||||||
---@cast instance window_language
|
---@cast instance examples.window_language
|
||||||
instance.on_language_change:subscribe(function(language)
|
instance.on_language_change:subscribe(function(language)
|
||||||
output_list:add_log_text("Language changed to " .. language)
|
output_list:add_log_text("Language changed to " .. language)
|
||||||
end)
|
end)
|
||||||
@ -26,7 +26,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/windows/window_confirmation/window_confirmation.lua",
|
code_url = "example/examples/windows/window_confirmation/window_confirmation.lua",
|
||||||
component_class = require("example.examples.windows.window_confirmation.window_confirmation"),
|
component_class = require("example.examples.windows.window_confirmation.window_confirmation"),
|
||||||
on_create = function(instance, output_list)
|
on_create = function(instance, output_list)
|
||||||
---@cast instance window_confirmation
|
---@cast instance examples.window_confirmation
|
||||||
instance.text_header:translate("ui_confirmation")
|
instance.text_header:translate("ui_confirmation")
|
||||||
instance.text_button_accept:translate("ui_confirm")
|
instance.text_button_accept:translate("ui_confirm")
|
||||||
instance.text_button_decline:translate("ui_cancel")
|
instance.text_button_decline:translate("ui_cancel")
|
||||||
@ -48,7 +48,7 @@ function M.get_examples()
|
|||||||
code_url = "example/examples/windows/window_info/window_info.lua",
|
code_url = "example/examples/windows/window_info/window_info.lua",
|
||||||
component_class = require("example.examples.windows.window_info.window_info"),
|
component_class = require("example.examples.windows.window_info.window_info"),
|
||||||
on_create = function(instance, output_list)
|
on_create = function(instance, output_list)
|
||||||
---@cast instance window_info
|
---@cast instance examples.window_info
|
||||||
instance.text_header:translate("ui_information")
|
instance.text_header:translate("ui_information")
|
||||||
instance.text_button_accept:translate("ui_confirm")
|
instance.text_button_accept:translate("ui_confirm")
|
||||||
instance.text_description:translate("ui_example_window_information_text")
|
instance.text_description:translate("ui_example_window_information_text")
|
||||||
|
Loading…
x
Reference in New Issue
Block a user