Radical menus emit signals for property changes and user interactions. Signals follow the pattern PROPERTY_NAME::changed or specific item events.
Property Signals:
opacity::changed: Emitted when opacity changes.
Item Signals:
item::moved, item::swapped, item::removed, item::appended.
Widget/Layout Signals:
button::press / button::release: Mouse button interactions (includes mods array).mouse::enter / mouse::leave: Mouse hover entry/exit.long::hover / long::press: Long duration interactions (1.5 sec).
Example: Catching an opacity change:
mymenu:connect_signal("opacity::changed", function(value)
-- Do something
end)
Example: Handling button presses with modifiers:
local menubar = radical.bar{}
menubar:connect_signal("button::press", function(data, item, button, mods)
if mods.Control then
print("Foo menu pressed!", item.text, button, data.rowcount)
end
end)
local menubar = radical.bar{}
menubar:connect_signal("button::press",function(data,item,button,mods)
if mods.Control then
print("Foo menu pressed!",item.text,button,data.rowcount)
end
end)
-- Also work on items
menubar:add_item{text="bar"}:connect_signal("button::release",function(d,i,b,m)
print("bar click released!")
end)