#108 Move component interests const from const.lua to component.lua

This commit is contained in:
Insality 2020-11-07 17:28:07 +03:00
parent 86c7170053
commit da085238cc
21 changed files with 86 additions and 77 deletions

View File

@ -14,7 +14,7 @@ local Event = require("druid.event")
local const = require("druid.const") local const = require("druid.const")
local component = require("druid.component") local component = require("druid.component")
local BackHandler = component.create("back_handler", { const.ON_INPUT }) local BackHandler = component.create("back_handler", { component.ON_INPUT })
--- Component init function --- Component init function

View File

@ -10,7 +10,7 @@
local const = require("druid.const") local const = require("druid.const")
local component = require("druid.component") local component = require("druid.component")
local Blocker = component.create("blocker", { const.ON_INPUT }) local Blocker = component.create("blocker", { component.ON_INPUT })
--- Component init function --- Component init function

View File

@ -51,7 +51,7 @@ local const = require("druid.const")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local Button = component.create("button", { const.ON_INPUT }) local Button = component.create("button", { component.ON_INPUT })
local function is_input_match(self, action_id) local function is_input_match(self, action_id)

View File

@ -48,7 +48,7 @@ local const = require("druid.const")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local Drag = component.create("drag", { const.ON_INPUT_HIGH }) local Drag = component.create("drag", { component.ON_INPUT_HIGH })
local function start_touch(self, touch) local function start_touch(self, touch)

View File

@ -15,7 +15,7 @@ local const = require("druid.const")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local Hover = component.create("hover", { const.ON_INPUT }) local Hover = component.create("hover", { component.ON_INPUT })
--- Component init function --- Component init function

View File

@ -54,11 +54,10 @@
local Event = require("druid.event") local Event = require("druid.event")
local const = require("druid.const")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local Scroll = component.create("scroll", { const.ON_UPDATE, const.ON_LAYOUT_CHANGE }) local Scroll = component.create("scroll", { component.ON_UPDATE, component.ON_LAYOUT_CHANGE })
local function inverse_lerp(min, max, current) local function inverse_lerp(min, max, current)

View File

@ -46,7 +46,7 @@ local Event = require("druid.event")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local StaticGrid = component.create("static_grid", { const.ON_LAYOUT_CHANGE }) local StaticGrid = component.create("static_grid", { component.ON_LAYOUT_CHANGE })
--- Component init function --- Component init function

View File

@ -20,7 +20,7 @@ local const = require("druid.const")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local Swipe = component.create("swipe", { const.ON_INPUT }) local Swipe = component.create("swipe", { component.ON_INPUT })
local function start_swipe(self, action) local function start_swipe(self, action)

View File

@ -43,7 +43,7 @@ local Event = require("druid.event")
local const = require("druid.const") local const = require("druid.const")
local component = require("druid.component") local component = require("druid.component")
local Text = component.create("text", { const.ON_LAYOUT_CHANGE }) local Text = component.create("text", { component.ON_LAYOUT_CHANGE })
local function update_text_size(self) local function update_text_size(self)

View File

@ -6,9 +6,50 @@
local const = require("druid.const") local const = require("druid.const")
local class = require("druid.system.middleclass") local class = require("druid.system.middleclass")
local BaseComponent = class("druid.component") local BaseComponent = class("druid.component")
--- Component Interests
BaseComponent.ALL = const.ALL
BaseComponent.ON_INPUT = const.ON_INPUT
BaseComponent.ON_UPDATE = const.ON_UPDATE
BaseComponent.ON_MESSAGE = const.ON_MESSAGE
BaseComponent.ON_INPUT_HIGH = const.ON_INPUT_HIGH
BaseComponent.ON_FOCUS_LOST = const.ON_FOCUS_LOST
BaseComponent.ON_FOCUS_GAINED = const.ON_FOCUS_GAINED
BaseComponent.ON_LAYOUT_CHANGE = const.ON_LAYOUT_CHANGE
BaseComponent.ON_LANGUAGE_CHANGE = const.ON_LANGUAGE_CHANGE
BaseComponent.ALL_INTERESTS = {
BaseComponent.ALL,
BaseComponent.ON_INPUT,
BaseComponent.ON_UPDATE,
BaseComponent.ON_MESSAGE,
BaseComponent.ON_FOCUS_LOST,
BaseComponent.ON_INPUT_HIGH,
BaseComponent.ON_FOCUS_GAINED,
BaseComponent.ON_LAYOUT_CHANGE,
BaseComponent.ON_LANGUAGE_CHANGE,
}
-- Value is method name of component
BaseComponent.SPECIFIC_UI_MESSAGES = {
[BaseComponent.ON_FOCUS_LOST] = "on_focus_lost",
[BaseComponent.ON_FOCUS_GAINED] = "on_focus_gained",
[BaseComponent.ON_LAYOUT_CHANGE] = "on_layout_change",
[BaseComponent.ON_LANGUAGE_CHANGE] = "on_language_change",
}
BaseComponent.UI_INPUT = {
[BaseComponent.ON_INPUT_HIGH] = true,
[BaseComponent.ON_INPUT] = true
}
--- Set current component style table. --- Set current component style table.
-- Invoke `on_style_change` on component, if exist. BaseComponent should handle -- Invoke `on_style_change` on component, if exist. BaseComponent should handle
-- their style changing and store all style params -- their style changing and store all style params

View File

@ -24,10 +24,10 @@ M.PRESSED = "pressed"
M.STRING = "string" M.STRING = "string"
M.TABLE = "table" M.TABLE = "table"
M.ZERO = "0" M.ZERO = "0"
M.ALL = "all"
--- Component Interests --- Component Interests
M.ALL = "all"
M.ON_INPUT = hash("on_input") M.ON_INPUT = hash("on_input")
M.ON_UPDATE = hash("on_update") M.ON_UPDATE = hash("on_update")
M.ON_MESSAGE = hash("on_message") M.ON_MESSAGE = hash("on_message")
@ -38,19 +38,6 @@ M.ON_LAYOUT_CHANGE = hash("layout_changed")
M.ON_LANGUAGE_CHANGE = hash("on_language_change") M.ON_LANGUAGE_CHANGE = hash("on_language_change")
M.ALL_INTERESTS = {
M.ALL,
M.ON_INPUT,
M.ON_UPDATE,
M.ON_MESSAGE,
M.ON_FOCUS_LOST,
M.ON_INPUT_HIGH,
M.ON_FOCUS_GAINED,
M.ON_LAYOUT_CHANGE,
M.ON_LANGUAGE_CHANGE,
}
M.PIVOTS = { M.PIVOTS = {
[gui.PIVOT_CENTER] = vmath.vector3(0), [gui.PIVOT_CENTER] = vmath.vector3(0),
[gui.PIVOT_N] = vmath.vector3(0, 0.5, 0), [gui.PIVOT_N] = vmath.vector3(0, 0.5, 0),
@ -64,21 +51,6 @@ M.PIVOTS = {
} }
-- Value is method name of component
M.SPECIFIC_UI_MESSAGES = {
[M.ON_FOCUS_LOST] = "on_focus_lost",
[M.ON_FOCUS_GAINED] = "on_focus_gained",
[M.ON_LAYOUT_CHANGE] = "on_layout_change",
[M.ON_LANGUAGE_CHANGE] = "on_language_change",
}
M.UI_INPUT = {
[M.ON_INPUT_HIGH] = true,
[M.ON_INPUT] = true
}
M.OS = { M.OS = {
ANDROID = "Android", ANDROID = "Android",
IOS = "iPhone OS", IOS = "iPhone OS",

View File

@ -15,8 +15,9 @@
-- @module druid -- @module druid
local const = require("druid.const") local const = require("druid.const")
local druid_instance = require("druid.system.druid_instance") local base_component = require("druid.component")
local settings = require("druid.system.settings") local settings = require("druid.system.settings")
local druid_instance = require("druid.system.druid_instance")
local default_style = require("druid.styles.default.style") local default_style = require("druid.styles.default.style")
@ -105,13 +106,13 @@ function M.on_window_callback(event)
if event == window.WINDOW_EVENT_FOCUS_LOST then if event == window.WINDOW_EVENT_FOCUS_LOST then
for i = 1, #instances do for i = 1, #instances do
msg.post(instances[i].url, const.ON_FOCUS_LOST) msg.post(instances[i].url, base_component.ON_FOCUS_LOST)
end end
end end
if event == window.WINDOW_EVENT_FOCUS_GAINED then if event == window.WINDOW_EVENT_FOCUS_GAINED then
for i = 1, #instances do for i = 1, #instances do
msg.post(instances[i].url, const.ON_FOCUS_GAINED) msg.post(instances[i].url, base_component.ON_FOCUS_GAINED)
end end
end end
end end
@ -123,7 +124,7 @@ function M.on_layout_change()
local instances = get_druid_instances() local instances = get_druid_instances()
for i = 1, #instances do for i = 1, #instances do
msg.post(instances[i].url, const.ON_LAYOUT_CHANGE) msg.post(instances[i].url, base_component.ON_LAYOUT_CHANGE)
end end
end end
@ -135,7 +136,7 @@ function M.on_language_change()
local instances = get_druid_instances() local instances = get_druid_instances()
for i = 1, #instances do for i = 1, #instances do
msg.post(instances[i].url, const.ON_LANGUAGE_CHANGE) msg.post(instances[i].url, base_component.ON_LANGUAGE_CHANGE)
end end
end end

View File

@ -16,11 +16,10 @@
-- @tfield Button button -- @tfield Button button
local const = require("druid.const")
local Event = require("druid.event") local Event = require("druid.event")
local component = require("druid.component") local component = require("druid.component")
local Checkbox = component.create("checkbox", { const.ON_LAYOUT_CHANGE }) local Checkbox = component.create("checkbox", { component.ON_LAYOUT_CHANGE })
local function on_click(self) local function on_click(self)

View File

@ -1,10 +1,9 @@
--- Druid component template --- Druid component template
-- @module druid.component -- @module druid.component
-- @local -- @local
local const = require("druid.const")
local component = require("druid.component") local component = require("druid.component")
local Component = component.create("my_component_name", { const.ON_UPDATE }) local Component = component.create("my_component_name", { component.ON_UPDATE })
-- Component constructor -- Component constructor
@ -12,12 +11,12 @@ function Component:init(...)
end end
-- Call only if exist interest: const.ON_UPDATE -- Call only if exist interest: component.ON_UPDATE
function Component:update(dt) function Component:update(dt)
end end
-- Call only if exist interest: const.ON_INPUT or const.ON_INPUT_HIGH -- Call only if exist interest: component.ON_INPUT or component.ON_INPUT_HIGH
function Component:on_input(action_id, action) function Component:on_input(action_id, action)
return false return false
end end
@ -28,7 +27,7 @@ function Component:on_style_change(style)
end end
-- Call only if exist interest: const.ON_MESSAGE -- Call only if exist interest: component.ON_MESSAGE
function Component:on_message(message_id, message, sender) function Component:on_message(message_id, message, sender)
end end

View File

@ -42,7 +42,7 @@ local Event = require("druid.event")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local DynamicGrid = component.create("dynamic_grid", { const.ON_LAYOUT_CHANGE }) local DynamicGrid = component.create("dynamic_grid", { component.ON_LAYOUT_CHANGE })
local SIDE_VECTORS = { local SIDE_VECTORS = {

View File

@ -50,7 +50,7 @@ local const = require("druid.const")
local component = require("druid.component") local component = require("druid.component")
local utf8 = require("druid.system.utf8") local utf8 = require("druid.system.utf8")
local Input = component.create("input", { const.ON_INPUT, const.ON_FOCUS_LOST }) local Input = component.create("input", { component.ON_INPUT, component.ON_FOCUS_LOST })
--- Mask text by replacing every character with a mask character --- Mask text by replacing every character with a mask character

View File

@ -12,11 +12,10 @@
local Event = require("druid.event") local Event = require("druid.event")
local const = require("druid.const")
local settings = require("druid.system.settings") local settings = require("druid.system.settings")
local component = require("druid.component") local component = require("druid.component")
local LangText = component.create("lang_text", { const.ON_LANGUAGE_CHANGE }) local LangText = component.create("lang_text", { component.ON_LANGUAGE_CHANGE })
--- Component init function --- Component init function

View File

@ -31,7 +31,7 @@ local const = require("druid.const")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local Progress = component.create("progress", { const.ON_UPDATE, const.ON_LAYOUT_CHANGE }) local Progress = component.create("progress", { component.ON_UPDATE, component.ON_LAYOUT_CHANGE })
local function check_steps(self, from, to, exactly) local function check_steps(self, from, to, exactly)

View File

@ -37,7 +37,7 @@ local helper = require("druid.helper")
local const = require("druid.const") local const = require("druid.const")
local component = require("druid.component") local component = require("druid.component")
local Slider = component.create("slider", { const.ON_INPUT_HIGH, const.ON_LAYOUT_CHANGE }) local Slider = component.create("slider", { component.ON_INPUT_HIGH, component.ON_LAYOUT_CHANGE })
local function on_change_value(self) local function on_change_value(self)

View File

@ -28,12 +28,11 @@
local Event = require("druid.event") local Event = require("druid.event")
local const = require("druid.const")
local formats = require("druid.helper.formats") local formats = require("druid.helper.formats")
local helper = require("druid.helper") local helper = require("druid.helper")
local component = require("druid.component") local component = require("druid.component")
local Timer = component.create("timer", { const.ON_UPDATE }) local Timer = component.create("timer", { component.ON_UPDATE })
--- Component init function --- Component init function

View File

@ -28,11 +28,11 @@
-- @see Drag -- @see Drag
-- @see Hover -- @see Hover
local const = require("druid.const")
local helper = require("druid.helper") local helper = require("druid.helper")
local druid_input = require("druid.helper.druid_input")
local settings = require("druid.system.settings")
local class = require("druid.system.middleclass") local class = require("druid.system.middleclass")
local settings = require("druid.system.settings")
local base_component = require("druid.component")
local druid_input = require("druid.helper.druid_input")
local back_handler = require("druid.base.back_handler") local back_handler = require("druid.base.back_handler")
local blocker = require("druid.base.blocker") local blocker = require("druid.base.blocker")
@ -87,14 +87,14 @@ local function create(self, instance_class)
local instance = instance_class() local instance = instance_class()
instance:setup_component(self, self._context, self._style) instance:setup_component(self, self._context, self._style)
table.insert(self.components[const.ALL], instance) table.insert(self.components[base_component.ALL], instance)
local register_to = instance:__get_interests() local register_to = instance:__get_interests()
for i = 1, #register_to do for i = 1, #register_to do
local interest = register_to[i] local interest = register_to[i]
table.insert(self.components[interest], instance) table.insert(self.components[interest], instance)
if const.UI_INPUT[interest] then if base_component.UI_INPUT[interest] then
input_init(self) input_init(self)
end end
end end
@ -155,8 +155,8 @@ function DruidInstance.initialize(self, context, style)
self.url = msg.url() self.url = msg.url()
self.components = {} self.components = {}
for i = 1, #const.ALL_INTERESTS do for i = 1, #base_component.ALL_INTERESTS do
self.components[const.ALL_INTERESTS[i]] = {} self.components[base_component.ALL_INTERESTS[i]] = {}
end end
end end
@ -180,7 +180,7 @@ end
-- on all druid components -- on all druid components
-- @tparam DruidInstance self -- @tparam DruidInstance self
function DruidInstance.final(self) function DruidInstance.final(self)
local components = self.components[const.ALL] local components = self.components[base_component.ALL]
for i = #components, 1, -1 do for i = #components, 1, -1 do
if components[i].on_remove then if components[i].on_remove then
@ -215,7 +215,7 @@ function DruidInstance.remove(self, component)
end end
component._meta.children = {} component._meta.children = {}
local all_components = self.components[const.ALL] local all_components = self.components[base_component.ALL]
for i = #all_components, 1, -1 do for i = #all_components, 1, -1 do
if all_components[i] == component then if all_components[i] == component then
if component.on_remove then if component.on_remove then
@ -242,7 +242,7 @@ end
-- @tparam DruidInstance self -- @tparam DruidInstance self
-- @tparam number dt Delta time -- @tparam number dt Delta time
function DruidInstance.update(self, dt) function DruidInstance.update(self, dt)
local components = self.components[const.ON_UPDATE] local components = self.components[base_component.ON_UPDATE]
for i = 1, #components do for i = 1, #components do
components[i]:update(dt) components[i]:update(dt)
end end
@ -259,10 +259,10 @@ function DruidInstance.on_input(self, action_id, action)
local is_input_consumed = false local is_input_consumed = false
is_input_consumed = process_input(action_id, action, is_input_consumed = process_input(action_id, action,
self.components[const.ON_INPUT_HIGH], is_input_consumed) self.components[base_component.ON_INPUT_HIGH], is_input_consumed)
is_input_consumed = process_input(action_id, action, is_input_consumed = process_input(action_id, action,
self.components[const.ON_INPUT], is_input_consumed) self.components[base_component.ON_INPUT], is_input_consumed)
self._is_input_processing = false self._is_input_processing = false
@ -283,7 +283,7 @@ end
-- @tparam table message Message from on_message -- @tparam table message Message from on_message
-- @tparam hash sender Sender from on_message -- @tparam hash sender Sender from on_message
function DruidInstance.on_message(self, message_id, message, sender) function DruidInstance.on_message(self, message_id, message, sender)
local specific_ui_message = const.SPECIFIC_UI_MESSAGES[message_id] local specific_ui_message = base_component.SPECIFIC_UI_MESSAGES[message_id]
if specific_ui_message then if specific_ui_message then
local components = self.components[message_id] local components = self.components[message_id]
@ -294,7 +294,7 @@ function DruidInstance.on_message(self, message_id, message, sender)
end end
end end
else else
local components = self.components[const.ON_MESSAGE] local components = self.components[base_component.ON_MESSAGE]
for i = 1, #components do for i = 1, #components do
components[i]:on_message(message_id, message, sender) components[i]:on_message(message_id, message, sender)
end end
@ -306,7 +306,7 @@ end
-- This one called by on_window_callback by global window listener -- This one called by on_window_callback by global window listener
-- @tparam DruidInstance self -- @tparam DruidInstance self
function DruidInstance.on_focus_lost(self) function DruidInstance.on_focus_lost(self)
local components = self.components[const.ON_FOCUS_LOST] local components = self.components[base_component.ON_FOCUS_LOST]
for i = 1, #components do for i = 1, #components do
components[i]:on_focus_lost() components[i]:on_focus_lost()
end end
@ -317,7 +317,7 @@ end
-- This one called by on_window_callback by global window listener -- This one called by on_window_callback by global window listener
-- @tparam DruidInstance self -- @tparam DruidInstance self
function DruidInstance.on_focus_gained(self) function DruidInstance.on_focus_gained(self)
local components = self.components[const.ON_FOCUS_GAINED] local components = self.components[base_component.ON_FOCUS_GAINED]
for i = 1, #components do for i = 1, #components do
components[i]:on_focus_gained() components[i]:on_focus_gained()
end end
@ -328,7 +328,7 @@ end
-- Called on update gui layout -- Called on update gui layout
-- @tparam DruidInstance self -- @tparam DruidInstance self
function DruidInstance.on_layout_change(self) function DruidInstance.on_layout_change(self)
local components = self.components[const.ON_LAYOUT_CHANGE] local components = self.components[base_component.ON_LAYOUT_CHANGE]
for i = 1, #components do for i = 1, #components do
components[i]:on_layout_change() components[i]:on_layout_change()
end end
@ -340,7 +340,7 @@ end
-- call manualy to update all translations -- call manualy to update all translations
-- @function druid.on_language_change -- @function druid.on_language_change
function DruidInstance.on_language_change(self) function DruidInstance.on_language_change(self)
local components = self.components[const.ON_LANGUAGE_CHANGE] local components = self.components[base_component.ON_LANGUAGE_CHANGE]
for i = 1, #components do for i = 1, #components do
components[i]:on_language_change() components[i]:on_language_change()
end end