Update docs, wrong links

This commit is contained in:
Insality 2023-05-03 00:51:56 +03:00
parent 807168d850
commit 7aa2da11f6
3 changed files with 42 additions and 15 deletions

View File

@ -4,7 +4,7 @@
[![Github-sponsors](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/insality) [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/insality) [![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/insality) [![Github-sponsors](https://img.shields.io/badge/sponsor-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#EA4AAA)](https://github.com/sponsors/insality) [![Ko-Fi](https://img.shields.io/badge/Ko--fi-F16061?style=for-the-badge&logo=ko-fi&logoColor=white)](https://ko-fi.com/insality) [![BuyMeACoffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-ffdd00?style=for-the-badge&logo=buy-me-a-coffee&logoColor=black)](https://www.buymeacoffee.com/insality)
[![GitHub release (latest by date)](https://img.shields.io/github/v/release/insality/druid)](https://github.com/Insality/druid/releases) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/insality/druid)](https://github.com/Insality/druid/releases)
[![GitHub Workflow Status](https://img.shields.io/github/workflow/status/insality/druid/Run%20tests)](https://github.com/Insality/druid/actions) [![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/insality/druid/ci-workflow.yml?branch=master)](https://github.com/Insality/druid/actions)
[![codecov](https://codecov.io/gh/Insality/druid/branch/master/graph/badge.svg)](https://codecov.io/gh/Insality/druid) [![codecov](https://codecov.io/gh/Insality/druid/branch/master/graph/badge.svg)](https://codecov.io/gh/Insality/druid)
**Druid** - powerful Defold component UI library. Use basic and extended **Druid** components or make your own game-specific components to make amazing GUI in your games. **Druid** - powerful Defold component UI library. Use basic and extended **Druid** components or make your own game-specific components to make amazing GUI in your games.
@ -185,11 +185,11 @@ end
``` ```
For all **Druid** instance functions, [see here](https://insality.github.io/druid/modules/druid_instance.html). For all **Druid** instance functions, [see here](https://insality.github.io/druid/modules/DruidInstance.html).
## Druid Events ## Druid Events
Any **Druid** components as callbacks use [Druid Events](https://insality.github.io/druid/modules/druid_event.html). In component API ([button example](https://insality.github.io/druid/modules/druid.button.html#Events)) pointed list of component events. You can manually subscribe to those events with the following API: Any **Druid** components as callbacks use [Druid Events](https://insality.github.io/druid/modules/DruidEvent.html). In component API ([button example](https://insality.github.io/druid/modules/Button.html#on_click)) pointed list of component events. You can manually subscribe to those events with the following API:
- **event:subscribe**(callback) - **event:subscribe**(callback)

View File

@ -6,7 +6,7 @@ Druid allows you to create your custom components which contains your custom log
I wanna make a point that Druid is not only set of defined components to place buttons, scroll, etc. But mostly it's a way how to handle all your GUI elements in general. Custom components is most powerful way to separate logic and make higher abstraction in your code. I wanna make a point that Druid is not only set of defined components to place buttons, scroll, etc. But mostly it's a way how to handle all your GUI elements in general. Custom components is most powerful way to separate logic and make higher abstraction in your code.
Every component is the children of Basic Druid component. Read the [basic component API here].(https://insality.github.io/druid/modules/component.html), Methods of basic components you can call via `self:{method_name}` Every component is the children of Basic Druid component. Read the [basic component API here](https://insality.github.io/druid/modules/BaseComponent.html), Methods of basic components you can call via `self:{method_name}`
## Custom components ## Custom components
@ -172,16 +172,16 @@ The generator script also check current GUI scene for Druid components to make s
Start your node names with one of next keyword to say parser make component stubs for your. For example for nodes `button` and `button_exit` will be generated two Druid Button components with callback stubs. Start your node names with one of next keyword to say parser make component stubs for your. For example for nodes `button` and `button_exit` will be generated two Druid Button components with callback stubs.
Available keywords: Available keywords:
- `button` - add [Druid Button](docs_md/01-components.md#button) and generate callback stub - `button` - add [Druid Button](01-components.md#button) and generate callback stub
- `text` - add [Druid Text](docs_md/01-components.md#text) - `text` - add [Druid Text](01-components.md#text)
- `lang_text` - add Druid [Druid Lang Text](docs_md/01-components.md#lang-text) - `lang_text` - add Druid [Druid Lang Text](01-components.md#lang-text)
- `grid` or `static_grid` - add Druid [Druid Static Grid](docs_md/01-components.md#static-grid). You should to setup Grid prefab for this component after file generation - `grid` or `static_grid` - add Druid [Druid Static Grid](01-components.md#static-grid). You should to setup Grid prefab for this component after file generation
- `dynamic_grid` - add Druid [Druid Dynamic Grid](docs_md/01-components.md#dynamic-grid) - `dynamic_grid` - add Druid [Druid Dynamic Grid](01-components.md#dynamic-grid)
- `scroll_view` - add [Druid Scroll](docs_md/01-components.md#scroll). It will add `scroll_content` node with the same postfix too. Check that is will correct node - `scroll_view` - add [Druid Scroll](01-components.md#scroll). It will add `scroll_content` node with the same postfix too. Check that is will correct node
- `blocker` - add [Druid Blocker](docs_md/01-components.md#blocker) - `blocker` - add [Druid Blocker](01-components.md#blocker)
- `slider` - add [Druid Slider](docs_md/01-components.md#slider). You should to adjust end position of Slider after file generation - `slider` - add [Druid Slider](01-components.md#slider). You should to adjust end position of Slider after file generation
- `progress` - add [Druid Progress](docs_md/01-components.md#progress) - `progress` - add [Druid Progress](01-components.md#progress)
- `timer` - add [Druid Timer](docs_md/01-components.md#timer) - `timer` - add [Druid Timer](01-components.md#timer)

View File

@ -23,6 +23,9 @@
---On click outside of button(self, params, button_instance) ---On click outside of button(self, params, button_instance)
-- @tfield DruidEvent on_click_outside @{DruidEvent} -- @tfield DruidEvent on_click_outside @{DruidEvent}
---On pressed button callback(self, params, button_instance)
-- @tfield DruidEvent on_pressed @{DruidEvent}
---Trigger node ---Trigger node
-- @tfield node node -- @tfield node node
@ -141,7 +144,7 @@ local function on_button_release(self)
end end
return true return true
else else
if self.can_action then if self.can_action and not self._is_html5_mode then
self.can_action = false self.can_action = false
local time = socket.gettime() local time = socket.gettime()
@ -221,6 +224,7 @@ function Button.init(self, node, callback, params, anim_node)
-- Event stubs -- Event stubs
self.on_click = Event(callback) self.on_click = Event(callback)
self.on_pressed = Event()
self.on_repeated_click = Event() self.on_repeated_click = Event()
self.on_long_click = Event() self.on_long_click = Event()
self.on_double_click = Event() self.on_double_click = Event()
@ -267,6 +271,9 @@ function Button.on_input(self, action_id, action)
if action.released then if action.released then
self.on_click_outside:trigger(self:get_context(), self.params, self) self.on_click_outside:trigger(self:get_context(), self.params, self)
end end
if self._is_html5_mode then
html5.set_interaction_listener(nil)
end
return false return false
end end
@ -279,6 +286,14 @@ function Button.on_input(self, action_id, action)
self.can_action = true self.can_action = true
self.is_repeated_started = false self.is_repeated_started = false
self.last_pressed_time = socket.gettime() self.last_pressed_time = socket.gettime()
self.on_pressed:trigger(self:get_context(), self.params, self)
if self._is_html5_mode then
html5.set_interaction_listener(function()
on_button_click(self)
html5.set_interaction_listener(nil)
end)
end
return true return true
end end
@ -406,4 +421,16 @@ function Button.set_check_function(self, check_function, failure_callback)
end end
--- Set buttom click mode to call itself inside html5 callback in user interaction event
-- It required to do protected stuff like copy/paste text, show html keyboard, etc
-- The HTML5 button don't call any events except on_click
-- @tparam Button self
-- @tparam[opt] boolean is_html_mode If true - button will be called inside html5 callback
-- @treturn Button Current button instance
function Button.set_html5_user_interaction(self, is_html_mode)
self._is_html5_mode = is_html_mode and html5
return self
end
return Button return Button