You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

96 lines
2.5 KiB

Particles = { }
-- private variables
local particlesWindow
local particlesButton
-- private functions
local function onExtendedParticles(protocol, opcode, buffer)
end
-- public functions
function Particles.init()
particlesWindow = g_ui.displayUI('particles.otui')
particlesButton = TopMenu.addLeftButton('particlesButton', tr('Particles Manager'), 'particles.png', Particles.toggle)
local particlesList = particlesWindow:getChildById('particlesList')
g_keyboard.bindKeyPress('Up', function() particlesList:focusPreviousChild(KeyboardFocusReason) end, particlesWindow)
g_keyboard.bindKeyPress('Down', function() particlesList:focusNextChild(KeyboardFocusReason) end, particlesWindow)
Extended.register(ExtendedParticles, onExtendedParticles)
end
function Particles.terminate()
particlesWindow:destroy()
particlesWindow = nil
particlesButton:destroy()
particlesButton = nil
Extended.unregister(ExtendedParticles)
end
function Particles.show()
Particles.refreshList()
particlesWindow:show()
particlesWindow:raise()
particlesWindow:focus()
end
function Particles.hide()
particlesWindow:hide()
end
function Particles.toggle()
if particlesWindow:isVisible() then
Particles.hide()
else
Particles.show()
end
end
function Particles.refreshInfo()
local particlesList = particlesWindow:getChildById('particlesList')
local widget = particlesList:getFocusedChild()
local name = particlesWindow:getChildById('name')
name:setText(widget.effect:getName())
local location = particlesWindow:getChildById('location')
location:setText(widget.effect:getFile())
local description = particlesWindow:getChildById('description')
description:setText(widget.effect:getDescription())
end
function Particles.refreshList()
local particlesList = particlesWindow:getChildById('particlesList')
particlesList.onChildFocusChange = nil
particlesList:destroyChildren()
local firstChild = nil
local effects = g_particles.getEffectsTypes()
for name,effect in pairs(effects) do
local label = g_ui.createWidget('ParticlesListLabel', particlesList)
label:setText(name)
label.effect = effect
if not firstChild then
firstChild = label
end
end
particlesList.onChildFocusChange = Particles.refreshInfo
if firstChild then
firstChild:focus()
end
end
function Particles.start()
local particlesList = particlesWindow:getChildById('particlesList')
local focusedEffect = particlesList:getFocusedChild()
local preview = particlesWindow:getChildById('preview')
preview:addEffect(focusedEffect:getText())
end