From 1a138f70207ce9830c0416e7b7497b93301268b3 Mon Sep 17 00:00:00 2001 From: Insality Date: Thu, 6 Mar 2025 00:27:51 +0200 Subject: [PATCH] Update --- docs_md/components/base/back_handler_api.md | 6 + .../components/base/back_handler_manual.md | 0 docs_md/components/base/blocker_api.md | 8 ++ docs_md/components/base/blocker_manual.md | 0 docs_md/components/base/button_api.md | 0 docs_md/components/base/button_manual.md | 0 docs_md/components/base/drag_api.md | 14 ++ docs_md/components/base/drag_manual.md | 0 docs_md/components/base/hover_api.md | 16 +++ docs_md/components/base/hover_manual.md | 0 docs_md/components/base/scroll_api.md | 20 +++ docs_md/components/base/scroll_manual.md | 0 docs_md/components/base/static_grid_api.md | 17 +++ docs_md/components/base/static_grid_manual.md | 0 docs_md/components/base/text_api.md | 17 +++ docs_md/components/base/text_manual.md | 0 docs_md/components/custom/rich_input_api.md | 12 ++ .../components/custom/rich_input_manual.md | 0 docs_md/components/custom/rich_text_api.md | 15 ++ docs_md/components/custom/rich_text_manual.md | 0 docs_md/components/extended/container_api.md | 26 ++++ .../components/extended/container_manual.md | 0 docs_md/components/extended/data_list_api.md | 16 +++ .../components/extended/data_list_manual.md | 0 docs_md/components/extended/hotkey_api.md | 10 ++ docs_md/components/extended/hotkey_manual.md | 0 docs_md/components/extended/input_api.md | 23 +++ docs_md/components/extended/input_manual.md | 0 docs_md/components/extended/lang_text_api.md | 9 ++ .../components/extended/lang_text_manual.md | 0 docs_md/components/extended/layout_api.md | 18 +++ docs_md/components/extended/layout_manual.md | 0 docs_md/components/extended/progress_api.md | 16 +++ .../components/extended/progress_manual.md | 0 docs_md/components/extended/slider_api.md | 13 ++ docs_md/components/extended/slider_manual.md | 0 docs_md/components/extended/swipe_api.md | 9 ++ docs_md/components/extended/swipe_manual.md | 0 docs_md/components/extended/timer_api.md | 10 ++ docs_md/components/extended/timer_manual.md | 0 docs_md/components/widgets/fps_panel_api.md | 0 .../components/widgets/fps_panel_manual.md | 0 .../components/widgets/memory_panel_api.md | 0 .../components/widgets/memory_panel_manual.md | 0 docs_md/components/widgets/mini_graph_api.md | 0 .../components/widgets/mini_graph_manual.md | 0 docs_md/components/widgets/node_repeat_api.md | 0 .../components/widgets/node_repeat_manual.md | 0 .../widgets/properties_panel_api.md | 0 .../widgets/properties_panel_manual.md | 0 docs_md/quick_api_reference.md | 39 +++--- druid/druid.lua | 3 +- druid/extended/progress.lua | 131 +++++++++--------- 53 files changed, 367 insertions(+), 81 deletions(-) create mode 100644 docs_md/components/base/back_handler_api.md create mode 100644 docs_md/components/base/back_handler_manual.md create mode 100644 docs_md/components/base/blocker_api.md create mode 100644 docs_md/components/base/blocker_manual.md create mode 100644 docs_md/components/base/button_api.md create mode 100644 docs_md/components/base/button_manual.md create mode 100644 docs_md/components/base/drag_api.md create mode 100644 docs_md/components/base/drag_manual.md create mode 100644 docs_md/components/base/hover_api.md create mode 100644 docs_md/components/base/hover_manual.md create mode 100644 docs_md/components/base/scroll_api.md create mode 100644 docs_md/components/base/scroll_manual.md create mode 100644 docs_md/components/base/static_grid_api.md create mode 100644 docs_md/components/base/static_grid_manual.md create mode 100644 docs_md/components/base/text_api.md create mode 100644 docs_md/components/base/text_manual.md create mode 100644 docs_md/components/custom/rich_input_api.md create mode 100644 docs_md/components/custom/rich_input_manual.md create mode 100644 docs_md/components/custom/rich_text_api.md create mode 100644 docs_md/components/custom/rich_text_manual.md create mode 100644 docs_md/components/extended/container_api.md create mode 100644 docs_md/components/extended/container_manual.md create mode 100644 docs_md/components/extended/data_list_api.md create mode 100644 docs_md/components/extended/data_list_manual.md create mode 100644 docs_md/components/extended/hotkey_api.md create mode 100644 docs_md/components/extended/hotkey_manual.md create mode 100644 docs_md/components/extended/input_api.md create mode 100644 docs_md/components/extended/input_manual.md create mode 100644 docs_md/components/extended/lang_text_api.md create mode 100644 docs_md/components/extended/lang_text_manual.md create mode 100644 docs_md/components/extended/layout_api.md create mode 100644 docs_md/components/extended/layout_manual.md create mode 100644 docs_md/components/extended/progress_api.md create mode 100644 docs_md/components/extended/progress_manual.md create mode 100644 docs_md/components/extended/slider_api.md create mode 100644 docs_md/components/extended/slider_manual.md create mode 100644 docs_md/components/extended/swipe_api.md create mode 100644 docs_md/components/extended/swipe_manual.md create mode 100644 docs_md/components/extended/timer_api.md create mode 100644 docs_md/components/extended/timer_manual.md create mode 100644 docs_md/components/widgets/fps_panel_api.md create mode 100644 docs_md/components/widgets/fps_panel_manual.md create mode 100644 docs_md/components/widgets/memory_panel_api.md create mode 100644 docs_md/components/widgets/memory_panel_manual.md create mode 100644 docs_md/components/widgets/mini_graph_api.md create mode 100644 docs_md/components/widgets/mini_graph_manual.md create mode 100644 docs_md/components/widgets/node_repeat_api.md create mode 100644 docs_md/components/widgets/node_repeat_manual.md create mode 100644 docs_md/components/widgets/properties_panel_api.md create mode 100644 docs_md/components/widgets/properties_panel_manual.md diff --git a/docs_md/components/base/back_handler_api.md b/docs_md/components/base/back_handler_api.md new file mode 100644 index 0000000..a5e209e --- /dev/null +++ b/docs_md/components/base/back_handler_api.md @@ -0,0 +1,6 @@ +# Back Handler Quick API reference + +```lua +back_handler:init([callback], [params]) +back_handler:on_input([action_id], [action]) +``` diff --git a/docs_md/components/base/back_handler_manual.md b/docs_md/components/base/back_handler_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/base/blocker_api.md b/docs_md/components/base/blocker_api.md new file mode 100644 index 0000000..0b56d8e --- /dev/null +++ b/docs_md/components/base/blocker_api.md @@ -0,0 +1,8 @@ +# Blocker Quick API reference + +```lua +blocker:init(node) +blocker:is_enabled() +blocker:on_input([action_id], [action]) +blocker:set_enabled([state]) +``` diff --git a/docs_md/components/base/blocker_manual.md b/docs_md/components/base/blocker_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/base/button_api.md b/docs_md/components/base/button_api.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/base/button_manual.md b/docs_md/components/base/button_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/base/drag_api.md b/docs_md/components/base/drag_api.md new file mode 100644 index 0000000..cbaaf0f --- /dev/null +++ b/docs_md/components/base/drag_api.md @@ -0,0 +1,14 @@ +# Drag Quick API reference + +```lua +drag:init(node_or_node_id, on_drag_callback) +drag:is_enabled() +drag:on_input([action_id], [action]) +drag:on_input_interrupt() +drag:on_late_init() +drag:on_style_change(style) +drag:on_window_resized() +drag:set_click_zone([node]) +drag:set_drag_cursors([is_enabled]) +drag:set_enabled([is_enabled]) +``` diff --git a/docs_md/components/base/drag_manual.md b/docs_md/components/base/drag_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/base/hover_api.md b/docs_md/components/base/hover_api.md new file mode 100644 index 0000000..ccc68b9 --- /dev/null +++ b/docs_md/components/base/hover_api.md @@ -0,0 +1,16 @@ +# Hover Quick API reference + +```lua +hover:init(node, on_hover_callback, on_mouse_hover) +hover:is_enabled() +hover:is_hovered() +hover:is_mouse_hovered() +hover:on_input([action_id], [action]) +hover:on_input_interrupt() +hover:on_late_init() +hover:on_style_change(style) +hover:set_click_zone([zone]) +hover:set_enabled([state]) +hover:set_hover([state]) +hover:set_mouse_hover([state]) +``` diff --git a/docs_md/components/base/hover_manual.md b/docs_md/components/base/hover_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/base/scroll_api.md b/docs_md/components/base/scroll_api.md new file mode 100644 index 0000000..079e807 --- /dev/null +++ b/docs_md/components/base/scroll_api.md @@ -0,0 +1,20 @@ +# Scroll Quick API reference + +```lua +scroll:init(view_node, content_node) +scroll:bind_grid([grid], [callback]) +scroll:get_percent() +scroll:on_input([action_id], [action]) +scroll:on_layout_change() +scroll:on_late_init() +scroll:on_remove() +scroll:on_style_change(style) +scroll:scroll_to(point, [is_instant]) +scroll:scroll_to_index(index, [skip_cb]) +scroll:scroll_to_percent(percent, [is_instant]) +scroll:set_click_zone([zone]) +scroll:set_horizontal_scroll([is_horizontal]) +scroll:set_size(size, [offset]) +scroll:set_vertical_scroll([is_vertical]) +scroll:update(dt) +``` diff --git a/docs_md/components/base/scroll_manual.md b/docs_md/components/base/scroll_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/base/static_grid_api.md b/docs_md/components/base/static_grid_api.md new file mode 100644 index 0000000..ba32a3a --- /dev/null +++ b/docs_md/components/base/static_grid_api.md @@ -0,0 +1,17 @@ +# Static Grid Quick API reference + +```lua +static_grid:init(parent, element, [in_row]) +static_grid:add(item, [index], [shift_policy], [is_instant]) +static_grid:get_index(pos) +static_grid:get_index_by_node(node) +static_grid:get_pos(index) +static_grid:get_size() +static_grid:get_size_for(count) +static_grid:on_layout_change() +static_grid:on_style_change(style) +static_grid:refresh() +static_grid:remove(index, [shift_policy], [is_instant]) +static_grid:set_anchor(anchor) +static_grid:set_items(nodes, [is_instant]) +static_grid:set_pivot(pivot) diff --git a/docs_md/components/base/static_grid_manual.md b/docs_md/components/base/static_grid_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/base/text_api.md b/docs_md/components/base/text_api.md new file mode 100644 index 0000000..41b5332 --- /dev/null +++ b/docs_md/components/base/text_api.md @@ -0,0 +1,17 @@ +# Text Quick API reference + +```lua +text:init(node, [value], [adjust_type]) +text:get_text() +text:get_text_index_by_width(width) +text:get_text_size([text]) +text:is_multiline() +text:on_layout_change() +text:on_style_change(style) +text:set_alpha(alpha) +text:set_color(color) +text:set_pivot(pivot) +text:set_scale(scale) +text:set_size(size) +text:set_text(new_text) +text:set_text_adjust([adjust_type], [minimal_scale]) diff --git a/docs_md/components/base/text_manual.md b/docs_md/components/base/text_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/custom/rich_input_api.md b/docs_md/components/custom/rich_input_api.md new file mode 100644 index 0000000..0c62226 --- /dev/null +++ b/docs_md/components/custom/rich_input_api.md @@ -0,0 +1,12 @@ +## Rich Input Quick API reference + +```lua +rich_input:get_text() +rich_input:init(template, nodes) +rich_input:on_input([action_id], [action]) +rich_input:select() +rich_input:set_allowed_characters(characters) +rich_input:set_font(font) +rich_input:set_placeholder(placeholder_text) +rich_input:set_text(text) +``` diff --git a/docs_md/components/custom/rich_input_manual.md b/docs_md/components/custom/rich_input_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/custom/rich_text_api.md b/docs_md/components/custom/rich_text_api.md new file mode 100644 index 0000000..f893fd9 --- /dev/null +++ b/docs_md/components/custom/rich_text_api.md @@ -0,0 +1,15 @@ +## Rich Text Quick API reference + +```lua +rich_text:characters(word) +rich_text:clear() +rich_text:get_line_metric() +rich_text:get_text() +rich_text:get_words() +rich_text:init(text_node, [value]) +rich_text:on_layout_change() +rich_text:on_remove() +rich_text:on_style_change(style) +rich_text:set_text([text]) +rich_text:tagged(tag) +``` diff --git a/docs_md/components/custom/rich_text_manual.md b/docs_md/components/custom/rich_text_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/container_api.md b/docs_md/components/extended/container_api.md new file mode 100644 index 0000000..7b72284 --- /dev/null +++ b/docs_md/components/extended/container_api.md @@ -0,0 +1,26 @@ +# Container Quick API reference + +```lua +container:add_container(node_or_container, [mode], [on_resize_callback]) +container:clear_draggable_corners() +container:fit_into_size(target_size) +container:fit_into_window() +container:get_position() +container:get_scale() +container:get_size() +container:init(node, [mode], [callback]) +container:on_late_init() +container:on_remove() +container:on_style_change(style) +container:on_window_resized() +container:refresh() +container:refresh_origins() +container:set_draggable_corners([is_draggable]) +container:set_min_size([min_size_x], [min_size_y]) +container:set_node_fill([fill_x], [fill_y]) +container:set_node_offset([offset]) +container:set_parent_container([container]) +container:set_pivot(pivot) +container:set_position(pos_x, pos_y) +container:set_size([width], [height], [anchor_pivot]) +container:update_child_containers() diff --git a/docs_md/components/extended/container_manual.md b/docs_md/components/extended/container_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/data_list_api.md b/docs_md/components/extended/data_list_api.md new file mode 100644 index 0000000..06ae27d --- /dev/null +++ b/docs_md/components/extended/data_list_api.md @@ -0,0 +1,16 @@ +# Data List Quick API reference + +```lua +data_list:add(data, [index], [shift_policy]) +data_list:clear() +data_list:get_created_components() +data_list:get_created_nodes() +data_list:get_data() +data_list:get_index(data) +data_list:init(scroll, grid, create_function) +data_list:on_remove() +data_list:remove([index], [shift_policy]) +data_list:remove_by_data(data, [shift_policy]) +data_list:scroll_to_index(index) +data_list:set_data(data) +data_list:set_use_cache(is_use_cache) diff --git a/docs_md/components/extended/data_list_manual.md b/docs_md/components/extended/data_list_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/hotkey_api.md b/docs_md/components/extended/hotkey_api.md new file mode 100644 index 0000000..826cad4 --- /dev/null +++ b/docs_md/components/extended/hotkey_api.md @@ -0,0 +1,10 @@ +# Hotkey Quick API reference + +```lua +hotkey:add_hotkey(keys, [callback_argument]) +hotkey:init(keys, callback, [callback_argument]) +hotkey:is_processing() +hotkey:on_focus_gained() +hotkey:on_input([action_id], [action]) +hotkey:on_style_change(style) +hotkey:set_repeat(is_enabled_repeated) diff --git a/docs_md/components/extended/hotkey_manual.md b/docs_md/components/extended/hotkey_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/input_api.md b/docs_md/components/extended/input_api.md new file mode 100644 index 0000000..cc9bd37 --- /dev/null +++ b/docs_md/components/extended/input_api.md @@ -0,0 +1,23 @@ +# Input Quick API reference + +```lua +input:get_text() +input:get_text_selected() +input:get_text_selected_replaced(text) +input:init(click_node, text_node, [keyboard_type]) +input:is_empty() +input:is_full() +input:is_selected() +input:on_focus_lost() +input:on_input([action_id], [action]) +input:on_input_interrupt() +input:on_style_change(style) +input:select() +input:select_cursor([index]) +input:set_allowed_characters([pattern]) +input:set_keyboard_type([keyboard_type]) +input:set_marked_text([text]) +input:set_max_length([length]) +input:set_text([text]) +input:unselect() +``` diff --git a/docs_md/components/extended/input_manual.md b/docs_md/components/extended/input_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/lang_text_api.md b/docs_md/components/extended/lang_text_api.md new file mode 100644 index 0000000..051c4ce --- /dev/null +++ b/docs_md/components/extended/lang_text_api.md @@ -0,0 +1,9 @@ +# Lang Text Quick API reference + +```lua +lang_text:format(...) +lang_text:init(node, [locale_id], [adjust_type]) +lang_text:on_language_change() +lang_text:set_text(text) +lang_text:set_to(text) +lang_text:translate(locale_id, ...) diff --git a/docs_md/components/extended/lang_text_manual.md b/docs_md/components/extended/lang_text_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/layout_api.md b/docs_md/components/extended/layout_api.md new file mode 100644 index 0000000..9f1928c --- /dev/null +++ b/docs_md/components/extended/layout_api.md @@ -0,0 +1,18 @@ +# Layout Quick API reference + +```lua +layout:add(node_or_node_id) +layout:get_content_size() +layout:get_entities() +layout:get_size() +layout:init(node_or_node_id, layout_type) +layout:refresh_layout() +layout:remove(node_or_node_id) +layout:set_dirty() +layout:set_hug_content(is_hug_width, is_hug_height) +layout:set_justify(is_justify) +layout:set_margin([margin_x], [margin_y]) +layout:set_node_index(node, index) +layout:set_padding([padding_x], [padding_y], [padding_z], [padding_w]) +layout:set_type(type) +layout:update() diff --git a/docs_md/components/extended/layout_manual.md b/docs_md/components/extended/layout_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/progress_api.md b/docs_md/components/extended/progress_api.md new file mode 100644 index 0000000..702aeca --- /dev/null +++ b/docs_md/components/extended/progress_api.md @@ -0,0 +1,16 @@ +# Progress Quick API reference + +```lua +progress:empty() +progress:fill() +progress:get() +progress:init(node, key, [init_value]) +progress:on_layout_change() +progress:on_remove() +progress:on_style_change(style) +progress:set_max_size(max_size) +progress:set_steps(steps, callback) +progress:set_to(to) +progress:to(to, [callback]) +progress:update(dt) +``` diff --git a/docs_md/components/extended/progress_manual.md b/docs_md/components/extended/progress_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/slider_api.md b/docs_md/components/extended/slider_api.md new file mode 100644 index 0000000..f9a8096 --- /dev/null +++ b/docs_md/components/extended/slider_api.md @@ -0,0 +1,13 @@ +# Slider Quick API reference + +```lua +slider:init(node, end_pos, [callback]) +slider:is_enabled() +slider:on_input([action_id], [action]) +slider:on_layout_change() +slider:on_remove() +slider:on_window_resized() +slider:set(value, [is_silent]) +slider:set_enabled(is_enabled) +slider:set_input_node([input_node]) +slider:set_steps(steps) diff --git a/docs_md/components/extended/slider_manual.md b/docs_md/components/extended/slider_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/swipe_api.md b/docs_md/components/extended/swipe_api.md new file mode 100644 index 0000000..5890589 --- /dev/null +++ b/docs_md/components/extended/swipe_api.md @@ -0,0 +1,9 @@ +# Swipe Quick API reference + +```lua +swipe:init(node_or_node_id, on_swipe_callback) +swipe:on_input([action_id], [action]) +swipe:on_input_interrupt() +swipe:on_late_init() +swipe:on_style_change(style) +swipe:set_click_zone([zone]) diff --git a/docs_md/components/extended/swipe_manual.md b/docs_md/components/extended/swipe_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/extended/timer_api.md b/docs_md/components/extended/timer_api.md new file mode 100644 index 0000000..cbc40be --- /dev/null +++ b/docs_md/components/extended/timer_api.md @@ -0,0 +1,10 @@ +# Timer Quick API reference + +```lua +timer:init(node, [seconds_from], [seconds_to], [callback]) +timer:on_layout_change() +timer:set_interval(from, to) +timer:set_state([is_on]) +timer:set_to(set_to) +timer:update(dt) +``` diff --git a/docs_md/components/extended/timer_manual.md b/docs_md/components/extended/timer_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/fps_panel_api.md b/docs_md/components/widgets/fps_panel_api.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/fps_panel_manual.md b/docs_md/components/widgets/fps_panel_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/memory_panel_api.md b/docs_md/components/widgets/memory_panel_api.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/memory_panel_manual.md b/docs_md/components/widgets/memory_panel_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/mini_graph_api.md b/docs_md/components/widgets/mini_graph_api.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/mini_graph_manual.md b/docs_md/components/widgets/mini_graph_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/node_repeat_api.md b/docs_md/components/widgets/node_repeat_api.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/node_repeat_manual.md b/docs_md/components/widgets/node_repeat_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/properties_panel_api.md b/docs_md/components/widgets/properties_panel_api.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/components/widgets/properties_panel_manual.md b/docs_md/components/widgets/properties_panel_manual.md new file mode 100644 index 0000000..e69de29 diff --git a/docs_md/quick_api_reference.md b/docs_md/quick_api_reference.md index 09f2934..4fcdee7 100644 --- a/docs_md/quick_api_reference.md +++ b/docs_md/quick_api_reference.md @@ -44,34 +44,37 @@ self.druid = druid.new(context, [style]) ## Druid Instance ```lua +-- Lifecycle self.druid:final() self.druid:update(dt) self.druid:on_input(action_id, action) self.druid:on_message(message_id, message, sender) +self.druid:on_window_event([window_event]) +-- Component creation self.druid:new(component, ...) +self.druid:new_widget(widget, [template], [nodes], ...) +self.druid:new_button(node, [callback], [params], [anim_node]) +self.druid:new_text(node, [value], [no_adjust]) +self.druid:new_grid(parent_node, item, [in_row]) +self.druid:new_scroll(view_node, content_node) +self.druid:new_data_list(druid_scroll, druid_grid, create_function) +self.druid:new_progress(node, key, [init_value]) +self.druid:new_lang_text(node, [locale_id], [adjust_type]) +self.druid:new_rich_text(text_node, [value]) self.druid:new_back_handler([callback], [params]) self.druid:new_blocker(node) -self.druid:new_button(node, [callback], [params], [anim_node]) -self.druid:new_container(node, [mode], [callback]) -self.druid:new_data_list(druid_scroll, druid_grid, create_function) -self.druid:new_drag(node, [on_drag_callback]) -self.druid:new_grid(parent_node, item, [in_row]) -self.druid:new_hotkey(keys_array, [callback], [callback_argument]) self.druid:new_hover(node, [on_hover_callback], [on_mouse_hover_callback]) -self.druid:new_input(click_node, text_node, [keyboard_type]) -self.druid:new_lang_text(node, [locale_id], [adjust_type]) -self.druid:new_layout(node, [mode]) -self.druid:new_progress(node, key, [init_value]) -self.druid:new_rich_input(template, [nodes]) -self.druid:new_rich_text(text_node, [value]) -self.druid:new_scroll(view_node, content_node) -self.druid:new_slider(pin_node, end_pos, [callback]) +self.druid:new_drag(node, [on_drag_callback]) self.druid:new_swipe(node, [on_swipe_callback]) -self.druid:new_text(node, [value], [no_adjust]) +self.druid:new_input(click_node, text_node, [keyboard_type]) +self.druid:new_rich_input(template, [nodes]) +self.druid:new_layout(node, [mode]) +self.druid:new_container(node, [mode], [callback]) +self.druid:new_hotkey(keys_array, [callback], [callback_argument]) +self.druid:new_slider(pin_node, end_pos, [callback]) self.druid:new_timer(node, [seconds_from], [seconds_to], [callback]) -self.druid:new_widget(widget, [template], [nodes], ...) -self.druid:on_window_event([window_event]) + self.druid:remove(component) self.druid:set_blacklist(blacklist_components) self.druid:set_whitelist(whitelist_components) @@ -81,6 +84,8 @@ self.druid:set_whitelist(whitelist_components) ### Base Component +Basic methods for all components. + ```lua component:get_childrens() component:get_context() diff --git a/druid/druid.lua b/druid/druid.lua index 9489357..5a2c2fa 100644 --- a/druid/druid.lua +++ b/druid/druid.lua @@ -5,6 +5,7 @@ local druid_instance = require("druid.system.druid_instance") local default_style = require("druid.styles.default.style") +---Entry point for Druid UI Framework. Create a new Druid instance and adjust the settings. ---@class druid local M = {} @@ -87,7 +88,7 @@ end local WRAPPED_WIDGETS = {} ---Set a widget to the current game object. The game object can acquire the widget by calling `bindings.get_widget` ----It wraps with events only top level functions cross-context, so no access to nested widgets functions +---It wraps with events only top level functions cross-context, so you will have no access to nested widgets functions ---@param widget druid.widget function M.set_widget(widget) local object = msg.url() diff --git a/druid/extended/progress.lua b/druid/extended/progress.lua index a2a188b..d310291 100644 --- a/druid/extended/progress.lua +++ b/druid/extended/progress.lua @@ -16,65 +16,6 @@ local component = require("druid.component") local M = component.create("progress") -local function check_steps(self, from, to, exactly) - if not self.steps then - return - end - - for i = 1, #self.steps do - local step = self.steps[i] - local v1, v2 = from, to - if v1 > v2 then - v1, v2 = v2, v1 - end - - if v1 < step and step < v2 then - self.step_callback(self:get_context(), step) - end - if exactly and exactly == step then - self.step_callback(self:get_context(), step) - end - end -end - - -local function set_bar_to(self, set_to, is_silent) - local prev_value = self.last_value - local other_side = self.key == const.SIDE.X and const.SIDE.Y or const.SIDE.X - self.last_value = set_to - - local total_width = set_to * self.max_size[self.key] - - local scale = 1 - if self.slice_size[self.key] > 0 then - scale = math.min(total_width / self.slice_size[self.key], 1) - end - local size = math.max(total_width, self.slice_size[self.key]) - - do -- Scale other side - -- Decrease other side of progress bar to match the oppotize slice_size - local minimal_size = self.size[other_side] - self.slice_size[other_side] - local maximum_size = self.size[other_side] - local scale_diff = (maximum_size - minimal_size) / maximum_size - local other_scale = 1 - (scale_diff * (1 - scale)) - self.scale[other_side] = other_scale - end - - self.scale[self.key] = scale - gui.set_scale(self.node, self.scale) - - self.size[self.key] = size - gui.set_size(self.node, self.size) - - if not is_silent then - check_steps(self, prev_value, set_to) - if prev_value ~= self.last_value then - self.on_change:trigger(self:get_context(), self.last_value) - end - end -end - - ---@param node string|node Node name or GUI Node itself. ---@param key string Progress bar direction: const.SIDE.X or const.SIDE.Y ---@param init_value number|nil Initial value of progress bar. Default: 1 @@ -132,7 +73,7 @@ function M:update(dt) self:set_to(helper.step(self.last_value, self.target, step)) if self.last_value == self.target then - check_steps(self, prev_value, self.target, self.target) + self:_check_steps(prev_value, self.target, self.target) if self.target_callback then self.target_callback(self:get_context(), self.target) @@ -146,13 +87,13 @@ end ---Fill a progress bar and stop progress animation function M:fill() - set_bar_to(self, 1, true) + self:_set_bar_to(1, true) end ---Empty a progress bar function M:empty() - set_bar_to(self, 0, true) + self:_set_bar_to(0, true) end @@ -160,7 +101,7 @@ end ---@param to number Progress bar value, from 0 to 1 function M:set_to(to) to = helper.clamp(to, 0, 1) - set_bar_to(self, to) + self:_set_bar_to(to) end @@ -207,4 +148,68 @@ function M:set_max_size(max_size) end + + +---@private +function M:_check_steps(from, to, exactly) + if not self.steps then + return + end + + for i = 1, #self.steps do + local step = self.steps[i] + local v1, v2 = from, to + if v1 > v2 then + v1, v2 = v2, v1 + end + + if v1 < step and step < v2 then + self.step_callback(self:get_context(), step) + end + if exactly and exactly == step then + self.step_callback(self:get_context(), step) + end + end +end + + +---@private +function M:_set_bar_to(set_to, is_silent) + local prev_value = self.last_value + local other_side = self.key == const.SIDE.X and const.SIDE.Y or const.SIDE.X + self.last_value = set_to + + local total_width = set_to * self.max_size[self.key] + + local scale = 1 + if self.slice_size[self.key] > 0 then + scale = math.min(total_width / self.slice_size[self.key], 1) + end + local size = math.max(total_width, self.slice_size[self.key]) + + do -- Scale other side + -- Decrease other side of progress bar to match the oppotize slice_size + local minimal_size = self.size[other_side] - self.slice_size[other_side] + local maximum_size = self.size[other_side] + local scale_diff = (maximum_size - minimal_size) / maximum_size + local other_scale = 1 - (scale_diff * (1 - scale)) + self.scale[other_side] = other_scale + end + + self.scale[self.key] = scale + gui.set_scale(self.node, self.scale) + + self.size[self.key] = size + gui.set_size(self.node, self.size) + + if not is_silent then + self:_check_steps(prev_value, set_to) + if prev_value ~= self.last_value then + self.on_change:trigger(self:get_context(), self.last_value) + end + end +end + + + return M