Events and delegates
Event
Yue uses the signal/slot pattern for the event system, each event is a signal that can be connected by multiple slots, and event handlers are slots that can connect to multiple signals.
In Yue each signal is an instance of Signal
class,
while slot is just a function.
local gui = require('yue.gui')
gui.app.onready:connect(function() print('on ready') end)
It is also possible to connect a slot to a signal by assignment, which is a
shorthand of calling connect
.
function app.onready()
print('on ready')
end
Preventing the default behavior
Certain events have default behaviors that can be prevented.
Returning true
means preventing the default behavior, and other slots of the
event will not be executed. While returning nothing or false
means the slot
is only observing the event.
local gui = require('yue.gui')
local view = gui.Container.create()
view.onmousedown:connect(function(self, event) return true end)
Delegate
Unlike event that can have multiple handlers connected, a delegate is a single
function
that can only be assigned by one function.
local gui = require('yue.gui')
local window = gui.Window.create{}
window.shouldclose = function(self) return false end
The delegates are usually used over events when the library is requesting data dynamically.