mirror of
https://github.com/arendst/Tasmota.git
synced 2025-08-02 15:37:42 +00:00
Berry animation improve event_manager (#23743)
This commit is contained in:
parent
3ef60018f0
commit
5416890f11
@ -58,13 +58,6 @@ register_to_animation(event_handler)
|
|||||||
import "core/user_functions" as user_functions
|
import "core/user_functions" as user_functions
|
||||||
register_to_animation(user_functions)
|
register_to_animation(user_functions)
|
||||||
|
|
||||||
def animation_init(m)
|
|
||||||
import global
|
|
||||||
global._event_manager = m.event_manager()
|
|
||||||
return m
|
|
||||||
end
|
|
||||||
animation.init = animation_init
|
|
||||||
|
|
||||||
# Import effects
|
# Import effects
|
||||||
import "effects/filled" as filled_animation
|
import "effects/filled" as filled_animation
|
||||||
register_to_animation(filled_animation)
|
register_to_animation(filled_animation)
|
||||||
@ -151,6 +144,7 @@ register_to_animation(dsl_runtime)
|
|||||||
def animation_global(name, module_name)
|
def animation_global(name, module_name)
|
||||||
import global
|
import global
|
||||||
import introspect
|
import introspect
|
||||||
|
import animation
|
||||||
|
|
||||||
# First try to find in animation module
|
# First try to find in animation module
|
||||||
if (module_name != nil) && introspect.contains(animation, module_name)
|
if (module_name != nil) && introspect.contains(animation, module_name)
|
||||||
@ -166,4 +160,24 @@ def animation_global(name, module_name)
|
|||||||
end
|
end
|
||||||
animation.global = animation_global
|
animation.global = animation_global
|
||||||
|
|
||||||
|
def animation_init(m)
|
||||||
|
var animation_new = module("animation") # create new non-solidified module
|
||||||
|
animation_new._ntv = m # keep the native module
|
||||||
|
animation_new.event_manager = m.EventManager() # create monad for event manager
|
||||||
|
|
||||||
|
# create a member function that looks in current module then in solidified
|
||||||
|
animation_new.member = def (k)
|
||||||
|
import animation
|
||||||
|
import introspect
|
||||||
|
if introspect.contains(animation._ntv, k)
|
||||||
|
return animation._ntv.(k)
|
||||||
|
else
|
||||||
|
return module("undefined")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return animation_new
|
||||||
|
end
|
||||||
|
animation.init = animation_init
|
||||||
|
|
||||||
return animation
|
return animation
|
||||||
|
@ -294,10 +294,10 @@ class AnimationEngine
|
|||||||
|
|
||||||
# Event processing methods
|
# Event processing methods
|
||||||
def _process_events(current_time)
|
def _process_events(current_time)
|
||||||
# Process any queued events from the global event manager
|
# Process any queued events from the animation event manager
|
||||||
# This is called during fast_loop to handle events asynchronously
|
# This is called during fast_loop to handle events asynchronously
|
||||||
if global._event_manager != nil
|
if animation.event_manager != nil
|
||||||
global._event_manager._process_queued_events()
|
animation.event_manager._process_queued_events()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -218,43 +218,37 @@ end
|
|||||||
|
|
||||||
# Event system functions to monad
|
# Event system functions to monad
|
||||||
def register_event_handler(event_name, callback_func, priority, condition, metadata)
|
def register_event_handler(event_name, callback_func, priority, condition, metadata)
|
||||||
import global
|
return animation.event_manager.register_handler(event_name, callback_func, priority, condition, metadata)
|
||||||
return global._event_manager.register_handler(event_name, callback_func, priority, condition, metadata)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def unregister_event_handler(handler)
|
def unregister_event_handler(handler)
|
||||||
import global
|
animation.event_manager.unregister_handler(handler)
|
||||||
global._event_manager.unregister_handler(handler)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def trigger_event(event_name, event_data)
|
def trigger_event(event_name, event_data)
|
||||||
import global
|
animation.event_manager.trigger_event(event_name, event_data)
|
||||||
global._event_manager.trigger_event(event_name, event_data)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_registered_events()
|
def get_registered_events()
|
||||||
return global._event_manager.get_registered_events()
|
return animation.event_manager.get_registered_events()
|
||||||
end
|
end
|
||||||
|
|
||||||
def get_event_handlers(event_name)
|
def get_event_handlers(event_name)
|
||||||
import global
|
return animation.event_manager.get_handlers(event_name)
|
||||||
return global._event_manager.get_handlers(event_name)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def clear_all_event_handlers()
|
def clear_all_event_handlers()
|
||||||
import global
|
animation.event_manager.clear_all_handlers()
|
||||||
global._event_manager.clear_all_handlers()
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def set_event_active(event_name, active)
|
def set_event_active(event_name, active)
|
||||||
import global
|
animation.event_manager.set_event_active(event_name, active)
|
||||||
global._event_manager.set_event_active(event_name, active)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
# Export classes
|
# Export classes
|
||||||
return {
|
return {
|
||||||
"event_handler": EventHandler,
|
"event_handler": EventHandler,
|
||||||
"event_manager": EventManager,
|
"EventManager": EventManager,
|
||||||
'register_event_handler': register_event_handler,
|
'register_event_handler': register_event_handler,
|
||||||
'unregister_event_handler': unregister_event_handler,
|
'unregister_event_handler': unregister_event_handler,
|
||||||
'trigger_event': trigger_event,
|
'trigger_event': trigger_event,
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -39,7 +39,7 @@ end
|
|||||||
|
|
||||||
# Test 2: Event Manager Registration
|
# Test 2: Event Manager Registration
|
||||||
def test_event_manager_registration()
|
def test_event_manager_registration()
|
||||||
var manager = global._event_manager
|
var manager = animation.event_manager
|
||||||
var callback_called = false
|
var callback_called = false
|
||||||
|
|
||||||
var handler = manager.register_handler("button_press", def(data) callback_called = true end, 0, nil, nil)
|
var handler = manager.register_handler("button_press", def(data) callback_called = true end, 0, nil, nil)
|
||||||
@ -52,7 +52,7 @@ end
|
|||||||
|
|
||||||
# Test 3: Event Priority Ordering
|
# Test 3: Event Priority Ordering
|
||||||
def test_event_priority_ordering()
|
def test_event_priority_ordering()
|
||||||
var manager = global._event_manager
|
var manager = animation.event_manager
|
||||||
var execution_order = []
|
var execution_order = []
|
||||||
|
|
||||||
# Register handlers with different priorities
|
# Register handlers with different priorities
|
||||||
@ -72,7 +72,7 @@ end
|
|||||||
|
|
||||||
# Test 4: Event Conditions
|
# Test 4: Event Conditions
|
||||||
def test_event_conditions()
|
def test_event_conditions()
|
||||||
var manager = global._event_manager
|
var manager = animation.event_manager
|
||||||
var callback_called = false
|
var callback_called = false
|
||||||
|
|
||||||
# Register handler with condition
|
# Register handler with condition
|
||||||
@ -92,7 +92,7 @@ end
|
|||||||
|
|
||||||
# Test 5: Global Event Handlers
|
# Test 5: Global Event Handlers
|
||||||
def test_global_event_handlers()
|
def test_global_event_handlers()
|
||||||
var manager = global._event_manager
|
var manager = animation.event_manager
|
||||||
var global_events = []
|
var global_events = []
|
||||||
|
|
||||||
# Register global handler
|
# Register global handler
|
||||||
@ -157,7 +157,7 @@ end
|
|||||||
|
|
||||||
# Test 9: Event Handler Deactivation
|
# Test 9: Event Handler Deactivation
|
||||||
def test_event_handler_deactivation()
|
def test_event_handler_deactivation()
|
||||||
var manager = global._event_manager
|
var manager = animation.event_manager
|
||||||
var callback_called = false
|
var callback_called = false
|
||||||
|
|
||||||
var handler = manager.register_handler("deactivation_test", def(data) callback_called = true end, 0, nil, nil)
|
var handler = manager.register_handler("deactivation_test", def(data) callback_called = true end, 0, nil, nil)
|
||||||
@ -173,7 +173,7 @@ end
|
|||||||
|
|
||||||
# Test 10: Event Queue Processing
|
# Test 10: Event Queue Processing
|
||||||
def test_event_queue_processing()
|
def test_event_queue_processing()
|
||||||
var manager = global._event_manager
|
var manager = animation.event_manager
|
||||||
var events_processed = []
|
var events_processed = []
|
||||||
|
|
||||||
# Register handler that triggers another event (tests queue)
|
# Register handler that triggers another event (tests queue)
|
||||||
@ -208,7 +208,7 @@ end
|
|||||||
|
|
||||||
# Test 12: Event Metadata Handling
|
# Test 12: Event Metadata Handling
|
||||||
def test_event_metadata_handling()
|
def test_event_metadata_handling()
|
||||||
var manager = global._event_manager
|
var manager = animation.event_manager
|
||||||
var received_metadata = nil
|
var received_metadata = nil
|
||||||
|
|
||||||
var metadata = {"interval": 1000, "repeat": true}
|
var metadata = {"interval": 1000, "repeat": true}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user