diff --git a/README.md b/README.md
index 77a9bee..a3c100a 100644
--- a/README.md
+++ b/README.md
@@ -178,13 +178,6 @@ Here is full **Druid** components list.
### Extended components
-> Extended components before usage should be registered in **Druid** with [`druid.register()`](https://insality.github.io/druid/modules/Druid.html#druid.register) function.
-> On usage of unregistered **Druid** component the next log will be shown in the console.
-```
-local data_list = require("druid.extended.data_list")
-druid.register("data_list", data_list)
-```
-
| Name | Description | Example |
Preview
|
|------|-------------|---------|---------|
| **[Data List](https://insality.github.io/druid/modules/DataList.html)** | Logic over Scroll and Grid components. Create only visible GUI nodes or components to make "infinity" scroll befaviour | [Data List Example](https://insality.github.io/druid/druid/?example=ui_example_data_list_basic) | |
diff --git a/druid/custom/rich_input/rich_input.lua b/druid/custom/rich_input/rich_input.lua
index db14b7b..067fbc1 100644
--- a/druid/custom/rich_input/rich_input.lua
+++ b/druid/custom/rich_input/rich_input.lua
@@ -43,8 +43,6 @@ local const = require("druid.const")
local utf8_lua = require("druid.system.utf8")
local utf8 = utf8 or utf8_lua
-local input = require("druid.extended.input")
-
---@class druid.rich_input: druid.base_component
---@field root node
---@field input druid.input
@@ -209,7 +207,7 @@ function M:init(template, nodes)
self.is_lshift = false
self.is_lctrl = false
- self.input = self.druid:new(input, "button", "input_text")
+ self.input = self.druid:new_input("button", "input_text")
self.is_button_input_enabled = gui.is_enabled(self.input.button.node)
self.cursor = self:get_node("cursor_node")
diff --git a/druid/system/druid_instance.lua b/druid/system/druid_instance.lua
index bf6cfe7..2260516 100755
--- a/druid/system/druid_instance.lua
+++ b/druid/system/druid_instance.lua
@@ -667,7 +667,7 @@ end
local timer_component = require("druid.extended.timer")
---Create Timer component
---@param node string|node Gui text node
----@param seconds_from number Start timer value in seconds
+---@param seconds_from number|nil Start timer value in seconds
---@param seconds_to number|nil End timer value in seconds
---@param callback function|nil Function on timer end
---@return druid.timer Timer component
@@ -690,7 +690,7 @@ end
local layout = require("druid.extended.layout")
---Create Layout component
---@param node string|node The_node id or gui.get_node(node_id).
----@param mode string vertical|horizontal|horizontal_wrap
+---@param mode string|nil vertical|horizontal|horizontal_wrap. Default: horizontal
---@return druid.layout Layout component
function M:new_layout(node, mode)
return self:new(layout, node, mode)
diff --git a/example/components/container/container.lua b/example/components/container/container.lua
deleted file mode 100644
index 8e1bf1a..0000000
--- a/example/components/container/container.lua
+++ /dev/null
@@ -1,527 +0,0 @@
---- Container component
--- Container setup in GUI
--- parent container - container that contains this container. If not, then it's a window default container or parent node
--- container pivot - the point of the parent container that will be used as a pivot point for positioning
--- node_offset - position offset from parent container pivot point (vector4 - offset in pixels from each side)
--- adjust mode FIT - container will keep it's size and will be positioned inside parent container
--- adjust mode STRETCH - container will have percentage of parent container size
--- adjust mode STRETCH_X - container will have percentage of parent container size (only x side)
--- adjust mode STRETCH_Y - container will have percentage of parent container size (only y side)
--- Adjust Stretch and x_anchor == None: container will be positioned by pivot point with one side fixed margin, stretched to pivot side by percentage
--- Adjust stretch and x_anchor ~= None: container will be positioned by pivot point, stretched to pivot side by percentage, but with fixed margins
-
-local const = require("druid.const")
-local helper = require("druid.helper")
-local component = require("druid.component")
-local event = require("event.event")
-
----@class druid.container: druid.base_component
----@field node node
----@field druid druid_instance
----@field node_offset vector4
----@field origin_size vector3
----@field size vector3
----@field origin_position vector3
----@field position vector3
----@field pivot_offset vector3
----@field center_offset vector3
----@field mode string
----@field fit_size vector3
----@field min_size_x number|nil
----@field min_size_y number|nil
----@field on_size_changed event @function on_size_changed(size)
----@field _parent_container druid.container
----@field _containers table
----@field _draggable_corners table
-local M = component.create("container")
-
-local abs = math.abs
-local min = math.min
-local max = math.max
-
-local CORNER_PIVOTS = {
- gui.PIVOT_NE,
- gui.PIVOT_NW,
- gui.PIVOT_SE,
- gui.PIVOT_SW,
-}
-
-
---- The Container init
----@param node node Gui node
----@param mode string Layout mode
----@param callback fun(self: druid.container, size: vector3) Callback on size changed
-function M:init(node, mode, callback)
- self.node = self:get_node(node)
- self.druid = self:get_druid()
-
- self.min_size_x = 0
- self.min_size_y = 0
- self._containers = {}
- self._draggable_corners = {}
- self.node_offset = vmath.vector4(0)
- self.node_fill_x = nil
- self.node_fill_y = nil
- self._position = gui.get_position(self.node)
- local x_koef, y_koef = helper.get_screen_aspect_koef()
- self.x_koef = x_koef
- self.y_koef = y_koef
-
- self.x_anchor = gui.get_xanchor(self.node)
- self.y_anchor = gui.get_yanchor(self.node)
-
- -- Can be changed
- self.origin_size = gui.get_size(self.node)
- self.size = gui.get_size(self.node)
- self.position = gui.get_position(self.node)
- self.origin_position = gui.get_position(self.node)
-
- local adjust_mode = gui.get_adjust_mode(self.node)
- self.mode = mode or (adjust_mode == gui.ADJUST_FIT) and const.LAYOUT_MODE.FIT or const.LAYOUT_MODE.STRETCH
-
- gui.set_size_mode(self.node, gui.SIZE_MODE_MANUAL)
- gui.set_adjust_mode(self.node, gui.ADJUST_FIT)
-
- self.on_size_changed = event.create(callback)
-
- self.pivot_offset = helper.get_pivot_offset(gui.get_pivot(self.node))
- self.center_offset = -vmath.vector3(self.size.x * self.pivot_offset.x, self.size.y * self.pivot_offset.y, 0)
- self:set_size(self.size.x, self.size.y)
-end
-
-
-function M:on_late_init()
- if not gui.get_parent(self.node) then
- -- TODO: Scale issue here, in fit into window!
- self:fit_into_window()
- end
-end
-
-
-function M:on_remove()
- self:clear_draggable_corners()
-end
-
-
-function M:refresh_origins()
- self.origin_size = gui.get_size(self.node)
- self.origin_position = gui.get_position(self.node)
- self:set_pivot(gui.get_pivot(self.node))
-end
-
-
----@param pivot constant
-function M:set_pivot(pivot)
- gui.set_pivot(self.node, pivot)
- self.pivot_offset = helper.get_pivot_offset(pivot)
- self.center_offset = -vmath.vector3(self.size.x * self.pivot_offset.x, self.size.y * self.pivot_offset.y, 0)
-end
-
-
---- Component style params.
--- You can override this component styles params in Druid styles table
--- or create your own style
--- @table style
--- @tfield[opt=vector3(24, 24, 0)] vector3 DRAGGABLE_CORNER_SIZE Size of box node for debug draggable corners
--- @tfield[opt=vector4(1)] vector4 DRAGGABLE_CORNER_COLOR Color of debug draggable corners
-function M:on_style_change(style)
- self.style = {}
- self.style.DRAGGABLE_CORNER_SIZE = style.DRAGGABLE_CORNER_SIZE or vmath.vector3(24, 24, 0)
- self.style.DRAGGABLE_CORNER_COLOR = style.DRAGGABLE_CORNER_COLOR or vmath.vector4(10)
-end
-
-
---- Set new size of layout node
----@param width number|nil
----@param height number|nil
----@return druid.container Container
-function M:set_size(width, height)
- width = width or self.size.x
- height = height or self.size.y
-
- if self.min_size_x then
- width = max(width, self.min_size_x)
- end
- if self.min_size_y then
- height = max(height, self.min_size_y)
- end
-
- if (width and width ~= self.size.x) or (height and height ~= self.size.y) then
- self.center_offset.x = -width * self.pivot_offset.x
- self.center_offset.y = -height * self.pivot_offset.y
- self.size.x = width
- self.size.y = height
- self.size.z = 0
- gui.set_size(self.node, self.size)
-
- self:update_child_containers()
- self.on_size_changed:trigger(self:get_context(), self.size)
- end
-
- return self
-end
-
-
----@param pos_x number
----@param pos_y number
-function M:set_position(pos_x, pos_y)
- if self._position.x == pos_x and self._position.y == pos_y then
- return
- end
-
- self._position.x = pos_x
- self._position.y = pos_y
- gui.set_position(self.node, self._position)
-end
-
-
----Get current size of layout node
----@return vector3 size
-function M:get_size()
- return self.size
-end
-
-
----Get current scale of layout node
----@return vector3 scale
-function M:get_scale()
- return helper.get_scene_scale(self.node, true) --[[@as vector3]]
-end
-
-
---- Set size for layout node to fit inside it
----@param target_size vector3
----@return druid.container Container
-function M:fit_into_size(target_size)
- self.fit_size = target_size
- self:refresh()
-
- return self
-end
-
-
---- Set current size for layout node to fit inside it
----@return druid.container Container
-function M:fit_into_window()
- return self:fit_into_size(vmath.vector3(gui.get_width(), gui.get_height(), 0))
-end
-
-
-function M:on_window_resized()
- local x_koef, y_koef = helper.get_screen_aspect_koef()
- self.x_koef = x_koef
- self.y_koef = y_koef
-
- if not self._parent_container then
- self:refresh()
- end
-end
-
-
----@param node_or_container node|string|druid.container|table
----@param mode string|nil stretch, fit, stretch_x, stretch_y. Default: Pick from node, "fit" or "stretch"
----@param on_resize_callback fun(self: userdata, size: vector3)|nil
----@return druid.container Container New created layout instance
-function M:add_container(node_or_container, mode, on_resize_callback)
- local container = nil
- local node = node_or_container
-
- -- Check it's a container components instead of node
- if type(node_or_container) == "table" and node_or_container._component then
- node = node_or_container.node
- container = node_or_container
- mode = mode or container.mode
- end
-
- -- Covert node_id to node if needed
- node = self:get_node(node)
-
- container = container or self.druid:new(M, node, mode)
- container:set_parent_container(self)
- if on_resize_callback then
- container.on_size_changed:subscribe(on_resize_callback)
- end
- table.insert(self._containers, container)
-
- return container
-end
-
-
----@return druid.container|nil
-function M:remove_container_by_node(node)
- for index = 1, #self._containers do
- local container = self._containers[index]
- if container.node == node then
- table.remove(self._containers, index)
- self.druid:remove(container)
- return container
- end
- end
-
- return nil
-end
-
-
----@param parent_container druid.container|nil
-function M:set_parent_container(parent_container)
- if not parent_container then
- self._parent_container = nil
- gui.set_parent(self.node, nil)
- self:refresh()
- return
- end
-
- -- TODO: Just check it's already parent
- gui.set_parent(self.node, parent_container.node, true)
-
- -- Node offset - fixed distance from parent side to the child side
- local parent_left = parent_container.center_offset.x - parent_container.origin_size.x * 0.5
- local parent_right = parent_container.center_offset.x + parent_container.origin_size.x * 0.5
- local parent_top = parent_container.center_offset.y + parent_container.origin_size.y * 0.5
- local parent_bottom = parent_container.center_offset.y - parent_container.origin_size.y * 0.5
-
- local node_left = self.origin_position.x + self.center_offset.x - self.origin_size.x * 0.5
- local node_right = self.origin_position.x + self.center_offset.x + self.origin_size.x * 0.5
- local node_top = self.origin_position.y + self.center_offset.y + self.origin_size.y * 0.5
- local node_bottom = self.origin_position.y + self.center_offset.y - self.origin_size.y * 0.5
-
- self.node_offset.x = node_left - parent_left
- self.node_offset.y = node_top - parent_top
- self.node_offset.z = node_right - parent_right
- self.node_offset.w = node_bottom - parent_bottom
- self._parent_container = parent_container
-
- local offset_x = (self.node_offset.x + self.node_offset.z)/2
- local offset_y = (self.node_offset.y + self.node_offset.w)/2
-
- if self.pivot_offset.x < 0 then
- offset_x = self.node_offset.x
- end
- if self.pivot_offset.x > 0 then
- offset_x = self.node_offset.z
- end
- if self.pivot_offset.y < 0 then
- offset_y = self.node_offset.w
- end
- if self.pivot_offset.y > 0 then
- offset_y = self.node_offset.y
- end
-
- local koef_x = (parent_container.origin_size.x - abs(offset_x))
- self.node_fill_x = koef_x ~= 0 and self.origin_size.x / koef_x or 1
- local x_anchor = gui.get_xanchor(self.node)
- if x_anchor ~= gui.ANCHOR_NONE then
- self.node_fill_x = 1
- end
-
- local koef_y = (parent_container.origin_size.y - abs(offset_y))
- self.node_fill_y = koef_y ~= 0 and self.origin_size.y / koef_y or 1
- local y_anchor = gui.get_yanchor(self.node)
- if y_anchor ~= gui.ANCHOR_NONE then
- self.node_fill_y = 1
- end
-
- self:refresh()
-end
-
-
--- Glossary
--- Center Offset - vector from node position to visual center of node
-function M:refresh()
- local x_koef, y_koef = self.x_koef, self.y_koef
- self:refresh_scale()
-
- if self._parent_container then
- local parent = self._parent_container
- local offset_x = (self.node_offset.x + self.node_offset.z) / 2
- local offset_y = (self.node_offset.y + self.node_offset.w) / 2
-
- if self.pivot_offset.x < 0 then
- offset_x = self.node_offset.x
- end
- if self.pivot_offset.x > 0 then
- offset_x = self.node_offset.z
- end
- if self.pivot_offset.y < 0 then
- offset_y = self.node_offset.w
- end
- if self.pivot_offset.y > 0 then
- offset_y = self.node_offset.y
- end
-
- local stretch_side_x = parent.size.x - abs(offset_x)
- local stretch_side_y = parent.size.y - abs(offset_y)
-
- do
- local parent_pivot_x = parent.center_offset.x + (parent.size.x * self.pivot_offset.x)
- local parent_pivot_y = parent.center_offset.y + (parent.size.y * self.pivot_offset.y)
- local pos_x = parent_pivot_x + offset_x
- local pos_y = parent_pivot_y + offset_y
- self:set_position(pos_x, pos_y)
- end
-
- do
- if self.x_anchor ~= gui.ANCHOR_NONE then
- stretch_side_x = parent.size.x - (abs(self.node_offset.x) + abs(self.node_offset.z))
- end
-
- if self.y_anchor ~= gui.ANCHOR_NONE then
- stretch_side_y = parent.size.y - (abs(self.node_offset.y) + abs(self.node_offset.w))
- end
-
- ---- Size Update (for stretch)
- if self.mode == const.LAYOUT_MODE.STRETCH then
- self:set_size(
- abs(stretch_side_x * self.node_fill_x),
- abs(stretch_side_y * self.node_fill_y))
- end
-
- if self.mode == const.LAYOUT_MODE.STRETCH_X then
- self:set_size(abs(stretch_side_x * self.node_fill_x), nil)
- end
-
- if self.mode == const.LAYOUT_MODE.STRETCH_Y then
- self:set_size(nil, abs(stretch_side_y * self.node_fill_y))
- end
- end
- else
- if self.fit_size then
- x_koef = self.fit_size.x / self.origin_size.x * x_koef
- y_koef = self.fit_size.y / self.origin_size.y * y_koef
-
- if self.mode == const.LAYOUT_MODE.STRETCH then
- self:set_size(self.origin_size.x * x_koef, self.origin_size.y * y_koef)
- end
- end
- end
-
- self:update_child_containers()
-end
-
-
-function M:refresh_scale()
- if self._fit_node then
- local fit_node_size = gui.get_size(self._fit_node)
-
- local scale = vmath.vector3(1)
- scale.x = min(fit_node_size.x / self.size.x, 1)
- scale.y = min(fit_node_size.y / self.size.y, 1)
-
- scale.x = min(scale.x, scale.y)
- scale.y = min(scale.x, scale.y)
-
- gui.set_scale(self.node, scale)
- end
-end
-
-
-function M:update_child_containers()
- for index = 1, #self._containers do
- self._containers[index]:refresh()
- end
-end
-
-
----@return druid.container Container
-function M:create_draggable_corners()
- self:clear_draggable_corners()
-
- for _, corner_pivot in pairs(CORNER_PIVOTS) do
- local corner_offset = helper.get_pivot_offset(corner_pivot)
- local anchor_position = vmath.vector3(
- self.center_offset.x + (self.size.x) * corner_offset.x,
- self.center_offset.y + (self.size.y) * corner_offset.y,
- 0)
-
- local new_draggable_node = gui.new_box_node(anchor_position, self.style.DRAGGABLE_CORNER_SIZE)
- gui.set_color(new_draggable_node, self.style.DRAGGABLE_CORNER_COLOR)
- gui.set_pivot(new_draggable_node, corner_pivot)
- gui.set_parent(new_draggable_node, self.node)
- self:add_container(new_draggable_node)
-
- ---@type druid.drag
- local drag = self.druid:new_drag(new_draggable_node, function(_, x, y)
- self:_on_corner_drag(x, y, corner_offset)
- end)
- table.insert(self._draggable_corners, drag)
-
- drag.style.DRAG_DEADZONE = 0
- end
-
- return self
-end
-
-
----@return druid.container Container
-function M:clear_draggable_corners()
- for index = 1, #self._draggable_corners do
- local drag_component = self._draggable_corners[index]
- self.druid:remove(drag_component)
- self:remove_container_by_node(drag_component.node)
- gui.delete_node(drag_component.node)
- end
-
- self._draggable_corners = {}
-
- return self
-end
-
-
-function M:_on_corner_drag(x, y, corner_offset)
- x = corner_offset.x >= 0 and x or -x
- y = corner_offset.y >= 0 and y or -y
-
- local size = self:get_size()
- if self.min_size_x and size.x + x < self.min_size_x then
- x = self.min_size_x - size.x
- end
- if self.min_size_y and size.y + y < self.min_size_y then
- y = self.min_size_y - size.y
- end
-
- if corner_offset.x < 0 then
- self.node_offset.x = self.node_offset.x - x
- end
- if corner_offset.x > 0 then
- self.node_offset.z = self.node_offset.z - x
- end
- if corner_offset.y < 0 then
- self.node_offset.w = self.node_offset.w - y
- end
- if corner_offset.y > 0 then
- self.node_offset.y = self.node_offset.y - y
- end
-
- local pivot = gui.get_pivot(self.node)
- local pivot_offset = helper.get_pivot_offset(pivot)
-
- local center_pos_x = self._position.x + (x * (pivot_offset.x + corner_offset.x))
- local center_pos_y = self._position.y + (y * (pivot_offset.y + corner_offset.y))
-
- self:set_position(center_pos_x, center_pos_y)
- self:set_size(size.x + x, size.y + y)
-end
-
-
---- Set node for layout node to fit inside it. Pass nil to reset
----@param node string|node The node_id or gui.get_node(node_id)
----@return druid.container Layout
-function M:fit_into_node(node)
- self._fit_node = self:get_node(node)
- self:refresh_scale()
- return self
-end
-
-
----@param min_size_x number|nil
----@param min_size_y number|nil
-function M:set_min_size(min_size_x, min_size_y)
- self.min_size_x = min_size_x or self.min_size_x
- self.min_size_y = min_size_y or self.min_size_y
- self:refresh()
-
- return self
-end
-
-
-return M
diff --git a/example/components/druid_logo/druid_logo.lua b/example/components/druid_logo/druid_logo.lua
index 4784a80..c2eb7d2 100644
--- a/example/components/druid_logo/druid_logo.lua
+++ b/example/components/druid_logo/druid_logo.lua
@@ -2,7 +2,6 @@ local panthera = require("panthera.panthera")
local component = require("druid.component")
local druid_logo_panthera = require("example.components.druid_logo.druid_logo_panthera")
-local container = require("example.components.container.container")
---@class druid_logo: druid.base_component
---@field root druid.container
@@ -16,7 +15,7 @@ local DruidLogo = component.create("druid_logo")
function DruidLogo:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.root:add_container("E_Anchor")
self.root:add_container("W_Anchor")
diff --git a/example/components/example_scene/example_scene.lua b/example/components/example_scene/example_scene.lua
index a237456..24ddb50 100644
--- a/example/components/example_scene/example_scene.lua
+++ b/example/components/example_scene/example_scene.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local container = require("example.components.container.container")
---@class example_scene: druid.base_component
---@field root druid.container
@@ -14,7 +13,7 @@ local M = component.create("example_scene")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.root:add_container("text_debug_info")
self.root:add_container("text_gui_path")
diff --git a/example/components/examples_list_view/examples_list_view.lua b/example/components/examples_list_view/examples_list_view.lua
index 92ae178..d5f98d2 100644
--- a/example/components/examples_list_view/examples_list_view.lua
+++ b/example/components/examples_list_view/examples_list_view.lua
@@ -1,7 +1,5 @@
local event = require("event.event")
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
local storage = require("saver.storage")
local examples_list_view_item = require("example.components.examples_list_view.examples_list_view_item")
@@ -19,10 +17,10 @@ local M = component.create("examples_list_view")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.root:add_container("text_header")
- self.druid:new(lang_text, "text_header", "ui_examples")
+ self.druid:new_lang_text("text_header", "ui_examples")
self.druid:new(examples_list_view_item, "examples_list_view_item")
self.prefab = self:get_node("examples_list_view_item/root")
diff --git a/example/components/examples_list_view/examples_list_view_item.lua b/example/components/examples_list_view/examples_list_view_item.lua
index e87e27f..1b4edc1 100644
--- a/example/components/examples_list_view/examples_list_view_item.lua
+++ b/example/components/examples_list_view/examples_list_view_item.lua
@@ -1,6 +1,4 @@
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
---@class examples_list_view_item: druid.base_component
---@field root druid.container
@@ -14,8 +12,8 @@ local M = component.create("examples_list_view_item")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
- self.text = self.druid:new(lang_text, "text") --[[ @as druid.lang_text]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
+ self.text = self.druid:new_lang_text("text") --[[ @as druid.lang_text]]
self.icon = self:get_node("icon")
self.selected = self:get_node("panel_selected")
self.highlight = self:get_node("panel_highlight")
diff --git a/example/components/output_list/output_list.lua b/example/components/output_list/output_list.lua
index 39d3323..c7e0802 100644
--- a/example/components/output_list/output_list.lua
+++ b/example/components/output_list/output_list.lua
@@ -1,6 +1,4 @@
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
---@class output_list: druid.base_component
---@field root druid.container
@@ -14,7 +12,7 @@ local M = component.create("output_list")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.root:add_container("text_header")
self.root:add_container("separator")
@@ -27,7 +25,7 @@ function M:init(template, nodes)
self.scroll:bind_grid(self.grid)
self.scroll:set_horizontal_scroll(false)
- self.druid:new(lang_text, "text_header", "ui_output")
+ self.druid:new_lang_text("text_header", "ui_output")
local defold_version = sys.get_engine_info().version
gui.set_text(self:get_node("text_version_defold"), "Defold v" .. defold_version)
diff --git a/example/components/panel_druid_profiler/panel_druid_profiler.lua b/example/components/panel_druid_profiler/panel_druid_profiler.lua
index 9899a91..47804a4 100644
--- a/example/components/panel_druid_profiler/panel_druid_profiler.lua
+++ b/example/components/panel_druid_profiler/panel_druid_profiler.lua
@@ -1,8 +1,6 @@
local event = require("event.event")
local helper = require("druid.helper")
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
---@class panel_druid_profiler: druid.base_component
@@ -16,7 +14,7 @@ local FPS_SAMPLES = 60
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.group_memory = self.root:add_container("group_memory")
self.group_fps = self.root:add_container("group_fps")
self.group_components = self.root:add_container("group_components")
@@ -35,10 +33,10 @@ function M:init(template, nodes)
self.text_components_amount = self.druid:new_text("text_components_amount")
self.text_events_amount = self.druid:new_text("text_events_amount")
- self.druid:new(lang_text, "text_memory", "ui_profiler_memory")
- self.druid:new(lang_text, "text_fps", "ui_profiler_fps")
- self.druid:new(lang_text, "text_components", "ui_profiler_components")
- self.druid:new(lang_text, "text_events", "ui_profiler_events")
+ self.druid:new_lang_text("text_memory", "ui_profiler_memory")
+ self.druid:new_lang_text("text_fps", "ui_profiler_fps")
+ self.druid:new_lang_text("text_components", "ui_profiler_components")
+ self.druid:new_lang_text("text_events", "ui_profiler_events")
self.previous_time = nil
self.fps_samples = {}
diff --git a/example/components/panel_information/panel_information.lua b/example/components/panel_information/panel_information.lua
index fd0a35e..cd799dd 100644
--- a/example/components/panel_information/panel_information.lua
+++ b/example/components/panel_information/panel_information.lua
@@ -1,10 +1,6 @@
local lang = require("lang.lang")
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
-local rich_text = require("druid.custom.rich_text.rich_text")
-
---@class panel_information: druid.base_component
---@field root druid.container
---@field text_header druid.lang_text
@@ -17,17 +13,17 @@ local PanelInformation = component.create("panel_information")
function PanelInformation:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.root:add_container("text_header")
self.root:add_container("scroll_view")
self.root:add_container("S_Anchor")
self.root:add_container("NE_Anchor")
- self.druid:new(lang_text, "text_header", "ui_information")
- self.druid:new(lang_text, "button_profiler/text", "ui_profiler")
+ self.druid:new_lang_text("text_header", "ui_information")
+ self.druid:new_lang_text("button_profiler/text", "ui_profiler")
- --self.text_description = self.druid:new(lang_text, "text_description", "") --[[@as druid.lang_text]]
- self.rich_text = self.druid:new(rich_text, "text_description")
+ --self.text_description = self.druid:new_lang_text("text_description", "") --[[@as druid.lang_text]]
+ self.rich_text = self.druid:new_rich_text("text_description")
self.button_profiler = self.druid:new_button("button_profiler/root", self.on_profiler_click)
self.button_profiler:set_key_trigger("key_p")
self.button_view_code = self.druid:new_button("button_view_code/root")
diff --git a/example/components/properties_panel/properties/property_button.lua b/example/components/properties_panel/properties/property_button.lua
index 9ffa273..6dcc2ab 100644
--- a/example/components/properties_panel/properties/property_button.lua
+++ b/example/components/properties_panel/properties/property_button.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local lang_text = require("druid.extended.lang_text")
---@class property_button: druid.base_component
---@field root node
@@ -15,7 +14,7 @@ function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
self.root = self:get_node("root")
- self.text_name = self.druid:new(lang_text, "text_name") --[[@as druid.lang_text]]
+ self.text_name = self.druid:new_lang_text("text_name") --[[@as druid.lang_text]]
self.selected = self:get_node("selected")
gui.set_alpha(self.selected, 0)
diff --git a/example/components/properties_panel/properties/property_checkbox.lua b/example/components/properties_panel/properties/property_checkbox.lua
index fbe92c5..d3e9ce8 100644
--- a/example/components/properties_panel/properties/property_checkbox.lua
+++ b/example/components/properties_panel/properties/property_checkbox.lua
@@ -1,6 +1,4 @@
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
---@class property_checkbox: druid.base_component
---@field druid druid_instance
@@ -15,7 +13,7 @@ local M = component.create("property_checkbox")
---@param nodes table
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.icon = self:get_node("icon")
gui.set_enabled(self.icon, false)
@@ -23,7 +21,7 @@ function M:init(template, nodes)
self.selected = self:get_node("selected")
gui.set_alpha(self.selected, 0)
- self.text_name = self.druid:new(lang_text, "text_name") --[[@as druid.lang_text]]
+ self.text_name = self.druid:new_lang_text("text_name") --[[@as druid.lang_text]]
self.button = self.druid:new_button("button", self.on_click)
end
diff --git a/example/components/properties_panel/properties/property_slider.lua b/example/components/properties_panel/properties/property_slider.lua
index d5ada5f..82fd16b 100644
--- a/example/components/properties_panel/properties/property_slider.lua
+++ b/example/components/properties_panel/properties/property_slider.lua
@@ -1,7 +1,4 @@
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
-local slider = require("druid.extended.slider")
---@class property_slider: druid.base_component
---@field druid druid_instance
@@ -17,14 +14,14 @@ local M = component.create("property_slider")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.selected = self:get_node("selected")
gui.set_alpha(self.selected, 0)
self._value = 0
- self.text_name = self.druid:new(lang_text, "text_name") --[[@as druid.lang_text]]
+ self.text_name = self.druid:new_lang_text("text_name") --[[@as druid.lang_text]]
self.text_value = self.druid:new_text("text_value")
- self.slider = self.druid:new(slider, "slider_pin", vmath.vector3(68, 0, 0), self._on_slider_change_by_user) --[[@as druid.slider]]
+ self.slider = self.druid:new_slider("slider_pin", vmath.vector3(68, 0, 0), self._on_slider_change_by_user) --[[@as druid.slider]]
self.slider:set_input_node("slider")
self:set_text_function(function(value)
diff --git a/example/components/properties_panel/properties_panel.lua b/example/components/properties_panel/properties_panel.lua
index 667aa93..2d370d1 100644
--- a/example/components/properties_panel/properties_panel.lua
+++ b/example/components/properties_panel/properties_panel.lua
@@ -1,6 +1,4 @@
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
local property_checkbox = require("example.components.properties_panel.properties.property_checkbox")
local property_slider = require("example.components.properties_panel.properties.property_slider")
@@ -18,7 +16,7 @@ local M = component.create("properties_panel")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.root = self.druid:new_container("root") --[[@as druid.container]]
self.root:add_container("text_header")
self.root:add_container("separator")
--self.root:add_container("scroll_view", nil, function()
@@ -27,8 +25,8 @@ function M:init(template, nodes)
self.properties = {}
- self.druid:new(lang_text, "text_header", "ui_properties_panel")
- self.text_no_properties = self.druid:new(lang_text, "text_no_properties", "ui_no_properties") --[[@as druid.lang_text]]
+ self.druid:new_lang_text("text_header", "ui_properties_panel")
+ self.text_no_properties = self.druid:new_lang_text("text_no_properties", "ui_no_properties") --[[@as druid.lang_text]]
self.scroll = self.druid:new_scroll("scroll_view", "scroll_content")
self.grid = self.druid:new_grid("scroll_content", "item_size", 1)
diff --git a/example/druid.gui_script b/example/druid.gui_script
index ff90b43..1a7eb7c 100644
--- a/example/druid.gui_script
+++ b/example/druid.gui_script
@@ -3,7 +3,6 @@ local saver = require("saver.saver")
local storage = require("saver.storage")
local druid = require("druid.druid")
-local container = require("example.components.container.container")
local druid_logo = require("example.components.druid_logo.druid_logo")
local panel_information = require("example.components.panel_information.panel_information")
local example_scene = require("example.components.example_scene.example_scene")
@@ -56,7 +55,7 @@ end
--- This allow easily move components in the GUI scene and change the size of each section
---@param self druid.example
local function setup_layout(self)
- self.container_root = self.druid:new(container, "root") --[[@as druid.container]]
+ self.container_root = self.druid:new_container("root") --[[@as druid.container]]
self.container_left = self.container_root:add_container("container_left", "stretch_y")
self.container_logo = self.container_left:add_container("container_logo")
self.container_examples = self.container_left:add_container("container_examples")
diff --git a/example/examples/basic/hotkey/basic_hotkey.lua b/example/examples/basic/hotkey/basic_hotkey.lua
index d003699..fec96aa 100644
--- a/example/examples/basic/hotkey/basic_hotkey.lua
+++ b/example/examples/basic/hotkey/basic_hotkey.lua
@@ -1,5 +1,3 @@
-local hotkey = require("druid.extended.hotkey")
-
local component = require("druid.component")
---@class basic_hotkey: druid.base_component
@@ -15,7 +13,7 @@ function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
self.root = self:get_node("root")
- self.hotkey = self.druid:new(hotkey, { "key_lshift", "key_x" }, self.on_hotkey)
+ self.hotkey = self.druid:new_hotkey({ "key_lshift", "key_x" }, self.on_hotkey)
end
diff --git a/example/examples/basic/input/basic_input.lua b/example/examples/basic/input/basic_input.lua
index 3648191..7be4813 100644
--- a/example/examples/basic/input/basic_input.lua
+++ b/example/examples/basic/input/basic_input.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local input = require("druid.extended.input")
---@class basic_input: druid.base_component
---@field druid druid_instance
@@ -12,9 +11,9 @@ local M = component.create("basic_input")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.input = self.druid:new(input, "input/root", "input/text")
+ self.input = self.druid:new_input("input/root", "input/text")
- self.input_2 = self.druid:new(input, "input_2/root", "input_2/text") --[[@as druid.input]]
+ self.input_2 = self.druid:new_input("input_2/root", "input_2/text") --[[@as druid.input]]
-- you can set custom style for input and their components
-- Check in the example, how long tap on bottom input will erase text
diff --git a/example/examples/basic/input/input_password.lua b/example/examples/basic/input/input_password.lua
index d56760a..014f1d7 100644
--- a/example/examples/basic/input/input_password.lua
+++ b/example/examples/basic/input/input_password.lua
@@ -1,7 +1,6 @@
local component = require("druid.component")
-local input = require("druid.extended.input")
----@class input_password: druid.component
+---@class input_password: druid.base_component
---@field druid druid_instance
---@field root node
local M = component.create("input_password")
@@ -13,7 +12,7 @@ function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
self.root = self:get_node("root")
- self.input = self.druid:new(input, "input/root", "input/text", gui.KEYBOARD_TYPE_PASSWORD)
+ self.input = self.druid:new_input("input/root", "input/text", gui.KEYBOARD_TYPE_PASSWORD)
self.input:set_text("")
self.input.on_input_unselect:subscribe(function(_, text)
diff --git a/example/examples/basic/input/rich_input.lua b/example/examples/basic/input/rich_input.lua
index cef718c..a7e04ab 100644
--- a/example/examples/basic/input/rich_input.lua
+++ b/example/examples/basic/input/rich_input.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local rich_input = require("druid.custom.rich_input.rich_input")
---@class rich_input: druid.base_component
---@field druid druid_instance
@@ -11,10 +10,10 @@ local M = component.create("rich_input")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.rich_input = self.druid:new(rich_input, "rich_input") --[[@as druid.rich_input]]
+ self.rich_input = self.druid:new_rich_input("rich_input") --[[@as druid.rich_input]]
self.rich_input:set_placeholder("Enter text")
- self.rich_input_2 = self.druid:new(rich_input, "rich_input_2") --[[@as druid.rich_input]]
+ self.rich_input_2 = self.druid:new_rich_input("rich_input_2") --[[@as druid.rich_input]]
self.rich_input_2:set_placeholder("Enter text")
end
diff --git a/example/examples/basic/progress_bar/basic_progress_bar.lua b/example/examples/basic/progress_bar/basic_progress_bar.lua
index 6681d01..fe85f93 100644
--- a/example/examples/basic/progress_bar/basic_progress_bar.lua
+++ b/example/examples/basic/progress_bar/basic_progress_bar.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local progress = require("druid.extended.progress")
---@class basic_progress_bar: druid.base_component
---@field druid druid_instance
@@ -12,7 +11,7 @@ local M = component.create("basic_progress_bar")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.progress = self.druid:new(progress, "progress_bar_fill", "x")
+ self.progress = self.druid:new_progress("progress_bar_fill", "x")
self.text_value = self:get_node("progress_value")
self:set_value(self.progress:get())
diff --git a/example/examples/basic/progress_bar/basic_progress_bar_slice9.lua b/example/examples/basic/progress_bar/basic_progress_bar_slice9.lua
index 9a73c0d..2640001 100644
--- a/example/examples/basic/progress_bar/basic_progress_bar_slice9.lua
+++ b/example/examples/basic/progress_bar/basic_progress_bar_slice9.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local progress = require("druid.extended.progress")
---@class basic_progress_bar_slice9: druid.base_component
---@field druid druid_instance
@@ -12,7 +11,7 @@ local M = component.create("basic_progress_bar_slice9")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.progress = self.druid:new(progress, "progress_bar_fill", "x")
+ self.progress = self.druid:new_progress("progress_bar_fill", "x")
self.text_value = self:get_node("progress_value")
self:set_value(self.progress:get())
diff --git a/example/examples/basic/rich_text/basic_rich_text.lua b/example/examples/basic/rich_text/basic_rich_text.lua
index 3abb632..e61226b 100644
--- a/example/examples/basic/rich_text/basic_rich_text.lua
+++ b/example/examples/basic/rich_text/basic_rich_text.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local rich_text = require("druid.custom.rich_text.rich_text")
---@class basic_rich_text: druid.base_component
---@field druid druid_instance
@@ -11,7 +10,7 @@ local M = component.create("basic_rich_text")
---@param nodes table
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.druid:new(rich_text, "text", "Hello, I'm a Rich Text!")
+ self.druid:new_rich_text("text", "Hello, I'm a Rich Text!")
end
diff --git a/example/examples/basic/rich_text/rich_text_tags.lua b/example/examples/basic/rich_text/rich_text_tags.lua
index 69f65cb..dc8f6c7 100644
--- a/example/examples/basic/rich_text/rich_text_tags.lua
+++ b/example/examples/basic/rich_text/rich_text_tags.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local rich_text = require("druid.custom.rich_text.rich_text")
local helper = require("druid.helper")
---@class rich_text_tags: druid.base_component
@@ -13,19 +12,19 @@ local M = component.create("rich_text_tags")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.rich_text_color = self.druid:new(rich_text, "rich_text_color") --[[@as druid.rich_text]]
+ self.rich_text_color = self.druid:new_rich_text("rich_text_color") --[[@as druid.rich_text]]
self.rich_text_color:set_text("Hello, I'm a Rich Text and it's nested color tag")
- self.rich_text_font = self.druid:new(rich_text, "rich_text_font") --[[@as druid.rich_text]]
+ self.rich_text_font = self.druid:new_rich_text("rich_text_font") --[[@as druid.rich_text]]
self.rich_text_font:set_text("Hello, I'm a Rich Text and this is bold text")
- self.rich_text_size = self.druid:new(rich_text, "rich_text_size") --[[@as druid.rich_text]]
+ self.rich_text_size = self.druid:new_rich_text("rich_text_size") --[[@as druid.rich_text]]
self.rich_text_size:set_text("Hello, I'm have East Pivot and different text scale")
- self.rich_text_breaks = self.druid:new(rich_text, "rich_text_breaks") --[[@as druid.rich_text]]
+ self.rich_text_breaks = self.druid:new_rich_text("rich_text_breaks") --[[@as druid.rich_text]]
self.rich_text_breaks:set_text("Hello, I'm Rich Text With \"Line Breaks\"\nEnabled in GUI")
- self.rich_text_image = self.druid:new(rich_text, "rich_text_image") --[[@as druid.rich_text]]
+ self.rich_text_image = self.druid:new_rich_text("rich_text_image") --[[@as druid.rich_text]]
self.rich_text_image:set_text("Hello, I'mRich Text ")
self.position = {
diff --git a/example/examples/basic/rich_text/rich_text_tags_custom.lua b/example/examples/basic/rich_text/rich_text_tags_custom.lua
index e541012..38adf14 100644
--- a/example/examples/basic/rich_text/rich_text_tags_custom.lua
+++ b/example/examples/basic/rich_text/rich_text_tags_custom.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local rich_text = require("druid.custom.rich_text.rich_text")
local helper = require("druid.helper")
local event = require("event.event")
@@ -15,7 +14,7 @@ function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
do -- Init rich text with links example
- self.rich_text_link = self.druid:new(rich_text, "rich_text_link") --[[@as druid.rich_text]]
+ self.rich_text_link = self.druid:new_rich_text("rich_text_link") --[[@as druid.rich_text]]
self.rich_text_link:set_text("Hello, I'm a Custom Link")
local tagged = self.rich_text_link:tagged("custom_link")
@@ -27,10 +26,10 @@ function M:init(template, nodes)
end
end
- self.rich_text_characters = self.druid:new(rich_text, "rich_text_characters") --[[@as druid.rich_text]]
+ self.rich_text_characters = self.druid:new_rich_text("rich_text_characters") --[[@as druid.rich_text]]
self.rich_text_characters:set_text("Hello, I'm a have a splitted characters")
- self.rich_text_custom = self.druid:new(rich_text, "rich_text_custom") --[[@as druid.rich_text]]
+ self.rich_text_custom = self.druid:new_rich_text("rich_text_custom") --[[@as druid.rich_text]]
self.rich_text_custom:set_text("Hello, I'm have South Text Pivot to adjust different text scale")
self.position = {
diff --git a/example/examples/basic/scroll_slider/scroll_slider.lua b/example/examples/basic/scroll_slider/scroll_slider.lua
index 79723ef..0627f82 100644
--- a/example/examples/basic/scroll_slider/scroll_slider.lua
+++ b/example/examples/basic/scroll_slider/scroll_slider.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local slider = require("druid.extended.slider")
---@class scroll_slider: druid.base_component
---@field root node
@@ -16,7 +15,7 @@ function M:init(template, nodes)
self.scroll = self.druid:new_scroll("scroll_view", "scroll_content")
self.scroll.on_scroll:subscribe(self.on_scroll)
- self.slider = self.druid:new(slider, "slider_pin", vmath.vector3(-8, -976, 0), self.on_slider) --[[@as druid.slider]]
+ self.slider = self.druid:new_slider("slider_pin", vmath.vector3(-8, -976, 0), self.on_slider) --[[@as druid.slider]]
self.slider:set_input_node("slider_back")
self.druid:new_hover("slider_back", nil, self.on_slider_back_hover)
diff --git a/example/examples/basic/slider/basic_slider.lua b/example/examples/basic/slider/basic_slider.lua
index 05fcabc..73fe031 100644
--- a/example/examples/basic/slider/basic_slider.lua
+++ b/example/examples/basic/slider/basic_slider.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local slider = require("druid.extended.slider")
---@class basic_slider: druid.base_component
---@field druid druid_instance
@@ -13,7 +12,7 @@ local M = component.create("basic_slider")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.slider = self.druid:new(slider, "slider/slider_pin", vmath.vector3(118, 0, 0), self.on_slider_change) --[[@as druid.slider]]
+ self.slider = self.druid:new_slider("slider/slider_pin", vmath.vector3(118, 0, 0), self.on_slider_change) --[[@as druid.slider]]
-- To add input across all slider widget add a root node to acquire additional input
self.slider:set_input_node("slider/root")
diff --git a/example/examples/basic/slider/basic_slider_stepped.lua b/example/examples/basic/slider/basic_slider_stepped.lua
index 02becaf..8a22642 100644
--- a/example/examples/basic/slider/basic_slider_stepped.lua
+++ b/example/examples/basic/slider/basic_slider_stepped.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local slider = require("druid.extended.slider")
---@class basic_slider_stepped: druid.base_component
---@field druid druid_instance
@@ -13,7 +12,7 @@ local M = component.create("basic_slider_stepped")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.slider = self.druid:new(slider, "slider/slider_pin", vmath.vector3(118, 0, 0), self.on_slider_change) --[[@as druid.slider]]
+ self.slider = self.druid:new_slider("slider/slider_pin", vmath.vector3(118, 0, 0), self.on_slider_change) --[[@as druid.slider]]
-- To add input across all slider widget add a root node to acquire additional input
self.slider:set_input_node("slider/root")
diff --git a/example/examples/basic/slider/basic_slider_vertical.lua b/example/examples/basic/slider/basic_slider_vertical.lua
index ba3eff7..bbeb019 100644
--- a/example/examples/basic/slider/basic_slider_vertical.lua
+++ b/example/examples/basic/slider/basic_slider_vertical.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local slider = require("druid.extended.slider")
---@class basic_slider_vertical: druid.base_component
---@field druid druid_instance
@@ -13,7 +12,7 @@ local M = component.create("basic_slider_vertical")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.slider = self.druid:new(slider, "slider/slider_pin", vmath.vector3(0, -118, 0), self.on_slider_change) --[[@as druid.slider]]
+ self.slider = self.druid:new_slider("slider/slider_pin", vmath.vector3(0, -118, 0), self.on_slider_change) --[[@as druid.slider]]
-- To add input across all slider widget add a root node to acquire additional input
self.slider:set_input_node("slider/root")
diff --git a/example/examples/basic/swipe/basic_swipe.lua b/example/examples/basic/swipe/basic_swipe.lua
index e8d768a..ca56596 100644
--- a/example/examples/basic/swipe/basic_swipe.lua
+++ b/example/examples/basic/swipe/basic_swipe.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local swipe = require("druid.extended.swipe")
---@class basic_swipe: druid.base_component
---@field druid druid_instance
@@ -10,7 +9,7 @@ local M = component.create("basic_swipe")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.swipe = self.druid:new(swipe, "root", self.on_swipe) --[[@as druid.swipe]]
+ self.swipe = self.druid:new_swipe("root", self.on_swipe) --[[@as druid.swipe]]
self.text_hint = self:get_node("swipe_hint")
end
diff --git a/example/examples/basic/text/basic_text.lua b/example/examples/basic/text/basic_text.lua
index 63889c5..dca1682 100644
--- a/example/examples/basic/text/basic_text.lua
+++ b/example/examples/basic/text/basic_text.lua
@@ -1,7 +1,5 @@
local helper = require("druid.helper")
local component = require("druid.component")
-local container = require("example.components.container.container")
-local lang_text = require("druid.extended.lang_text")
---@class basic_text: druid.base_component
---@field druid druid_instance
@@ -16,7 +14,7 @@ function M:init(template, nodes)
self.text = self.druid:new_text("text")
-- This code is for adjustable text area with mouse
- self.container = self.druid:new(container, "text_area", nil, function(_, size)
+ self.container = self.druid:new_container("text_area", nil, function(_, size)
self.text:set_size(size)
self:refresh_text_position()
end) --[[@as druid.container]]
diff --git a/example/examples/basic/text/multiline_text.lua b/example/examples/basic/text/multiline_text.lua
index 56f78c8..d50de10 100644
--- a/example/examples/basic/text/multiline_text.lua
+++ b/example/examples/basic/text/multiline_text.lua
@@ -1,6 +1,5 @@
local helper = require("druid.helper")
local component = require("druid.component")
-local container = require("example.components.container.container")
---@class multiline_text: druid.base_component
---@field root node
@@ -16,7 +15,7 @@ function M:init(template, nodes)
self.text = self.druid:new_text("text")
-- This code is for adjustable text area with mouse
- self.container = self.druid:new(container, "text_area", nil, function(_, size)
+ self.container = self.druid:new_container("text_area", nil, function(_, size)
self.text:set_size(size)
self:refresh_text_position()
end) --[[@as druid.container]]
diff --git a/example/examples/basic/timer/basic_timer.lua b/example/examples/basic/timer/basic_timer.lua
index 0cc2a04..1687628 100644
--- a/example/examples/basic/timer/basic_timer.lua
+++ b/example/examples/basic/timer/basic_timer.lua
@@ -1,9 +1,8 @@
local event = require("event.event")
-local timer = require("druid.extended.timer")
local component = require("druid.component")
----@class basic_timer: druid.component
+---@class basic_timer: druid.base_component
---@field druid druid_instance
---@field root node
---@field text druid.text
@@ -16,7 +15,7 @@ function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
self.root = self:get_node("root")
- self.timer = self.druid:new(timer, "text")
+ self.timer = self.druid:new_timer("text")
local time = 5
self.timer:set_interval(time, 0)
diff --git a/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua b/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua
index e7f38d3..b4ab3f6 100644
--- a/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua
+++ b/example/examples/data_list/add_remove_clear/data_list_add_remove_clear.lua
@@ -1,6 +1,5 @@
local event = require("event.event")
local component = require("druid.component")
-local data_list = require("druid.extended.data_list")
---@class data_list_add_remove_clear: druid.base_component
---@field druid druid_instance
@@ -18,7 +17,7 @@ function M:init(template, nodes)
self.scroll = self.druid:new_scroll("view", "content")
self.grid = self.druid:new_grid("content", self.prefab, 1)
- self.data_list = self.druid:new(data_list, self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]]
+ self.data_list = self.druid:new_data_list(self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]]
local data = {}
for index = 1, 20 do
diff --git a/example/examples/data_list/basic/data_list_basic.lua b/example/examples/data_list/basic/data_list_basic.lua
index 238e47a..f950b73 100644
--- a/example/examples/data_list/basic/data_list_basic.lua
+++ b/example/examples/data_list/basic/data_list_basic.lua
@@ -1,6 +1,5 @@
local event = require("event.event")
local component = require("druid.component")
-local data_list = require("druid.extended.data_list")
---@class data_list_basic: druid.base_component
---@field druid druid_instance
@@ -17,7 +16,7 @@ function M:init(template, nodes)
self.scroll = self.druid:new_scroll("view", "content")
self.grid = self.druid:new_grid("content", self.prefab, 1)
- self.data_list = self.druid:new(data_list, self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]]
+ self.data_list = self.druid:new_data_list(self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]]
local data = {}
for index = 1, 1000 do
diff --git a/example/examples/data_list/basic/data_list_horizontal_basic.lua b/example/examples/data_list/basic/data_list_horizontal_basic.lua
index 2bc5aff..262bea1 100644
--- a/example/examples/data_list/basic/data_list_horizontal_basic.lua
+++ b/example/examples/data_list/basic/data_list_horizontal_basic.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local data_list = require("druid.extended.data_list")
---@class data_list_horizontal_basic: druid.base_component
---@field druid druid_instance
@@ -16,7 +15,7 @@ function M:init(template, nodes)
self.scroll = self.druid:new_scroll("view", "content")
self.grid = self.druid:new_grid("content", self.prefab, 1000)
- self.data_list = self.druid:new(data_list, self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]]
+ self.data_list = self.druid:new_data_list(self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]]
local data = {}
for index = 1, 100 do
diff --git a/example/examples/data_list/cache_with_component/cache_with_component.lua b/example/examples/data_list/cache_with_component/cache_with_component.lua
index ba89aba..ffd8622 100644
--- a/example/examples/data_list/cache_with_component/cache_with_component.lua
+++ b/example/examples/data_list/cache_with_component/cache_with_component.lua
@@ -1,6 +1,5 @@
local event = require("event.event")
local component = require("druid.component")
-local data_list = require("druid.extended.data_list")
local button_component = require("example.examples.data_list.cache_with_component.button_component")
@@ -19,7 +18,7 @@ function M:init(template, nodes)
self.scroll = self.druid:new_scroll("view", "content")
self.grid = self.druid:new_grid("content", self.prefab, 1)
- self.data_list = self.druid:new(data_list, self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]]
+ self.data_list = self.druid:new_data_list(self.scroll, self.grid, self.create_item_callback) --[[@as druid.data_list]]
self.data_list:set_use_cache(true)
self.data_list.on_element_add:subscribe(self.on_element_add)
self.data_list.on_element_remove:subscribe(self.on_element_remove)
diff --git a/example/examples/gamepad/gamepad_tester/gamepad_tester.lua b/example/examples/gamepad/gamepad_tester/gamepad_tester.lua
index af59cab..4b807d4 100644
--- a/example/examples/gamepad/gamepad_tester/gamepad_tester.lua
+++ b/example/examples/gamepad/gamepad_tester/gamepad_tester.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local progress = require("druid.extended.progress")
---@class gamepad_tester: druid.base_component
---@field root node
@@ -38,8 +37,8 @@ function M:init(template, nodes)
self.button_start = self.druid:new_button("button_start/button"):set_key_trigger("gamepad_start")
self.button_back = self.druid:new_button("button_back/button"):set_key_trigger("gamepad_back")
- self.trigger_l2 = self.druid:new(progress, "button_l2/fill", "x", 0) --[[@as druid.progress]]
- self.trigger_r2 = self.druid:new(progress, "button_r2/fill", "x", 0) --[[@as druid.progress]]
+ self.trigger_l2 = self.druid:new_progress("button_l2/fill", "x", 0) --[[@as druid.progress]]
+ self.trigger_r2 = self.druid:new_progress("button_r2/fill", "x", 0) --[[@as druid.progress]]
self.stick_left = self:get_node("stick_left/stick_root")
self.stick_right = self:get_node("stick_right/stick_root")
diff --git a/example/examples/intro/intro/intro.lua b/example/examples/intro/intro/intro.lua
index 4473ba1..abeee0e 100644
--- a/example/examples/intro/intro/intro.lua
+++ b/example/examples/intro/intro/intro.lua
@@ -1,6 +1,4 @@
local component = require("druid.component")
-local rich_text = require("druid.custom.rich_text.rich_text")
-local layout = require("druid.extended.layout")
local panthera = require("panthera.panthera")
local intro_panthera = require("example.examples.intro.intro.intro_panthera")
@@ -15,13 +13,13 @@ function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
self.root = self:get_node("root")
- self.druid:new(rich_text, "text_hello", "Hello!")
+ self.druid:new_rich_text("text_hello", "Hello!")
self.druid:new_button("sponsor_github", self.open_link, "https://github.com/sponsors/insality")
self.druid:new_button("sponsor_coffee", self.open_link, "https://www.buymeacoffee.com/insality")
self.druid:new_button("sponsor_kofi", self.open_link, "https://ko-fi.com/insality")
- self.druid:new(layout, "sponsor")
+ self.druid:new_layout("sponsor")
:add("sponsor_github")
:add("sponsor_coffee")
:add("sponsor_kofi")
diff --git a/example/examples/panthera/animation_blend/animation_blend.lua b/example/examples/panthera/animation_blend/animation_blend.lua
index b4c86d7..2192db2 100644
--- a/example/examples/panthera/animation_blend/animation_blend.lua
+++ b/example/examples/panthera/animation_blend/animation_blend.lua
@@ -2,8 +2,6 @@ local panthera = require("panthera.panthera")
local component = require("druid.component")
local helper = require("druid.helper")
local event = require("event.event")
-local lang_text = require("druid.extended.lang_text")
-local rich_text = require("druid.custom.rich_text.rich_text")
local character_animation_blend = require("example.examples.panthera.animation_blend.character_animation_blend")
@@ -20,7 +18,7 @@ function M:init(template, nodes)
self.root = self:get_node("root")
self.root_size = gui.get_size(self.root)
- self.druid:new(lang_text, "text_hint", "ui_example_panthera_animation_blend_hint")
+ self.druid:new_lang_text("text_hint", "ui_example_panthera_animation_blend_hint")
self.animation_idle = panthera.create_gui(character_animation_blend, self:get_template(), nodes)
self.animation_vertical = panthera.create_gui(character_animation_blend, self:get_template(), nodes)
@@ -59,7 +57,7 @@ end
function M:setup_rich_text()
- self.rich_text = self.druid:new(rich_text, "rich_text_kenney", "Character assets by Kenney")
+ self.rich_text = self.druid:new_rich_text("rich_text_kenney", "Character assets by Kenney")
local tagged = self.rich_text:tagged("link")
for index = 1, #tagged do
diff --git a/example/examples/widgets/hover_hint/hover_hint_example.lua b/example/examples/widgets/hover_hint/hover_hint_example.lua
index 53633c1..28cf278 100644
--- a/example/examples/widgets/hover_hint/hover_hint_example.lua
+++ b/example/examples/widgets/hover_hint/hover_hint_example.lua
@@ -2,7 +2,7 @@ local hover_hint = require("example.examples.widgets.hover_hint.hover_hint")
local component = require("druid.component")
----@class hover_hint_example: druid.component
+---@class hover_hint_example: druid.base_component
---@field druid druid_instance
local M = component.create("hover_hint_example")
diff --git a/example/examples/windows/window_confirmation/window_confirmation.lua b/example/examples/windows/window_confirmation/window_confirmation.lua
index a59bcd9..f91b7a5 100644
--- a/example/examples/windows/window_confirmation/window_confirmation.lua
+++ b/example/examples/windows/window_confirmation/window_confirmation.lua
@@ -1,5 +1,4 @@
local component = require("druid.component")
-local lang_text = require("druid.extended.lang_text")
local panthera = require("panthera.panthera")
local window_animation_panthera = require("example.examples.windows.window_animation_panthera")
@@ -19,10 +18,10 @@ local M = component.create("window_confirmation")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.text_header = self.druid:new(lang_text, "text_header", "ui_confirmation") --[[@as druid.lang_text]]
- self.text_button_accept = self.druid:new(lang_text, "button_accept/text", "ui_accept") --[[@as druid.lang_text]]
- self.text_button_decline = self.druid:new(lang_text, "button_decline/text", "ui_decline") --[[@as druid.lang_text]]
- self.text_description = self.druid:new(lang_text, "text") --[[@as druid.lang_text]]
+ self.text_header = self.druid:new_lang_text("text_header", "ui_confirmation") --[[@as druid.lang_text]]
+ self.text_button_accept = self.druid:new_lang_text("button_accept/text", "ui_accept") --[[@as druid.lang_text]]
+ self.text_button_decline = self.druid:new_lang_text("button_decline/text", "ui_decline") --[[@as druid.lang_text]]
+ self.text_description = self.druid:new_lang_text("text") --[[@as druid.lang_text]]
self.button_close = self.druid:new_button("button_close", self.on_button_close)
self.button_accept = self.druid:new_button("button_accept/root")
diff --git a/example/examples/windows/window_info/window_info.lua b/example/examples/windows/window_info/window_info.lua
index 26c36c1..3385176 100644
--- a/example/examples/windows/window_info/window_info.lua
+++ b/example/examples/windows/window_info/window_info.lua
@@ -1,6 +1,5 @@
local component = require("druid.component")
local panthera = require("panthera.panthera")
-local lang_text = require("druid.extended.lang_text")
local window_animation_panthera = require("example.examples.windows.window_animation_panthera")
@@ -18,9 +17,9 @@ local M = component.create("window_info")
function M:init(template, nodes)
self.druid = self:get_druid(template, nodes)
- self.text_header = self.druid:new(lang_text, "text_header", "ui_information") --[[@as druid.lang_text]]
- self.text_button_accept = self.druid:new(lang_text, "button_accept/text", "ui_accept") --[[@as druid.lang_text]]
- self.text_description = self.druid:new(lang_text, "text") --[[@as druid.lang_text]]
+ self.text_header = self.druid:new_lang_text("text_header", "ui_information") --[[@as druid.lang_text]]
+ self.text_button_accept = self.druid:new_lang_text("button_accept/text", "ui_accept") --[[@as druid.lang_text]]
+ self.text_description = self.druid:new_lang_text("text") --[[@as druid.lang_text]]
self.button_close = self.druid:new_button("button_close", self.on_button_close)
self.button_accept = self.druid:new_button("button_accept/root")
diff --git a/example/examples/windows/window_language/window_language.lua b/example/examples/windows/window_language/window_language.lua
index 55dc74a..f572d64 100644
--- a/example/examples/windows/window_language/window_language.lua
+++ b/example/examples/windows/window_language/window_language.lua
@@ -2,7 +2,6 @@ local lang = require("lang.lang")
local druid = require("druid.druid")
local event = require("event.event")
local component = require("druid.component")
-local lang_text = require("druid.extended.lang_text")
local panthera = require("panthera.panthera")
local window_animation_panthera = require("example.examples.windows.window_animation_panthera")
@@ -35,7 +34,7 @@ function M:init(template, nodes)
self.button_close = self.druid:new_button("button_close", self.on_button_close)
- self.druid:new(lang_text, "text_header", "ui_language")
+ self.druid:new_lang_text("text_header", "ui_language")
self.grid = self.druid:new_grid("content", self.prefab, 2)
self.grid.style.IS_DYNAMIC_NODE_POSES = true
@@ -73,7 +72,7 @@ function M:load_langs()
local text = prefab_nodes[template .. "button/text"]
local button = self.druid:new_button(button_node, self.on_language_button, lang_id)
- self.druid:new(lang_text, text, "ui_language_" .. lang_id)
+ self.druid:new_lang_text(text, "ui_language_" .. lang_id)
gui.set_enabled(root, true)
self.grid:add(root)