tibia-client/modules/client_modulemanager/modulemanager.lua

155 lines
4.2 KiB
Lua
Raw Normal View History

2012-02-06 02:44:47 +01:00
local moduleManagerWindow
local moduleManagerButton
local moduleList
function init()
moduleManagerWindow = g_ui.displayUI('modulemanager')
2012-02-06 02:44:47 +01:00
moduleManagerWindow:hide()
moduleList = moduleManagerWindow:getChildById('moduleList')
connect(moduleList, { onChildFocusChange = function(self, focusedChild)
if focusedChild == nil then return end
updateModuleInfo(focusedChild:getText())
2012-02-06 02:44:47 +01:00
end })
2012-06-26 00:13:30 +02:00
g_keyboard.bindKeyPress('Up', function() moduleList:focusPreviousChild(KeyboardFocusReason) end, moduleManagerWindow)
g_keyboard.bindKeyPress('Down', function() moduleList:focusNextChild(KeyboardFocusReason) end, moduleManagerWindow)
moduleManagerButton = modules.client_topmenu.addLeftButton('moduleManagerButton', tr('Module Manager'), '/images/topbuttons/modulemanager', toggle)
2012-02-06 02:44:47 +01:00
-- refresh modules only after all modules are loaded
addEvent(listModules)
end
function hideButton()
moduleManagerButton:hide()
2012-02-06 02:44:47 +01:00
end
function terminate()
2012-02-06 02:44:47 +01:00
moduleManagerWindow:destroy()
moduleManagerWindow = nil
moduleManagerButton:destroy()
moduleManagerButton = nil
moduleList = nil
end
function hide()
2012-02-06 02:44:47 +01:00
moduleManagerWindow:hide()
end
function show()
2012-02-06 02:44:47 +01:00
moduleManagerWindow:show()
moduleManagerWindow:raise()
moduleManagerWindow:focus()
2012-02-06 02:44:47 +01:00
end
function toggle()
2012-02-06 02:44:47 +01:00
if moduleManagerWindow:isVisible() then
hide()
2012-02-06 02:44:47 +01:00
else
show()
2012-02-06 02:44:47 +01:00
end
end
function refreshModules()
2012-02-06 02:44:47 +01:00
g_modules.discoverModules()
listModules()
2012-02-06 02:44:47 +01:00
end
function listModules()
2012-02-06 20:19:47 +01:00
if not moduleManagerWindow then return end
2012-02-06 02:44:47 +01:00
moduleList:destroyChildren()
local modules = g_modules.getModules()
for i,module in ipairs(modules) do
2012-06-26 00:13:30 +02:00
local label = g_ui.createWidget('ModuleListLabel', moduleList)
2012-02-06 02:44:47 +01:00
label:setText(module:getName())
2012-02-06 20:19:47 +01:00
label:setOn(module:isLoaded())
2012-02-06 02:44:47 +01:00
end
moduleList:focusChild(moduleList:getFirstChild(), ActiveFocusReason)
end
function refreshLoadedModules()
2012-02-06 20:19:47 +01:00
if not moduleManagerWindow then return end
for i,child in ipairs(moduleList:getChildren()) do
local module = g_modules.getModule(child:getText())
child:setOn(module:isLoaded())
end
end
function updateModuleInfo(moduleName)
2012-02-06 20:19:47 +01:00
if not moduleManagerWindow then return end
2012-02-06 02:44:47 +01:00
local name = ''
local description = ''
local autoLoad = ''
local author = ''
local website = ''
local version = ''
2012-02-06 20:19:47 +01:00
local loaded = false
local canReload = false
2012-02-06 02:44:47 +01:00
local canUnload = false
local module = g_modules.getModule(moduleName)
if module then
name = module:getName()
description = module:getDescription()
author = module:getAuthor()
website = module:getWebsite()
version = module:getVersion()
2012-02-06 20:19:47 +01:00
loaded = module:isLoaded()
canReload = module:canReload()
2012-02-06 20:19:47 +01:00
canUnload = module:canUnload()
2012-02-06 02:44:47 +01:00
end
moduleManagerWindow:recursiveGetChildById('moduleName'):setText(name)
moduleManagerWindow:recursiveGetChildById('moduleDescription'):setText(description)
moduleManagerWindow:recursiveGetChildById('moduleAuthor'):setText(author)
moduleManagerWindow:recursiveGetChildById('moduleWebsite'):setText(website)
moduleManagerWindow:recursiveGetChildById('moduleVersion'):setText(version)
2012-02-06 20:19:47 +01:00
local reloadButton = moduleManagerWindow:recursiveGetChildById('moduleReloadButton')
reloadButton:setEnabled(canReload)
if loaded then reloadButton:setText('Reload')
else reloadButton:setText('Load') end
local unloadButton = moduleManagerWindow:recursiveGetChildById('moduleUnloadButton')
unloadButton:setEnabled(canUnload)
2012-02-06 02:44:47 +01:00
end
function reloadCurrentModule()
2012-02-06 02:44:47 +01:00
local focusedChild = moduleList:getFocusedChild()
if focusedChild then
local module = g_modules.getModule(focusedChild:getText())
if module then
2012-02-06 20:19:47 +01:00
module:reload()
if modules.client_modulemanager == nil then return end
updateModuleInfo(module:getName())
refreshLoadedModules()
show()
2012-02-06 02:44:47 +01:00
end
end
end
function unloadCurrentModule()
2012-02-06 02:44:47 +01:00
local focusedChild = moduleList:getFocusedChild()
if focusedChild then
local module = g_modules.getModule(focusedChild:getText())
if module then
module:unload()
if ModuleManager == nil then return end
updateModuleInfo(module:getName())
refreshLoadedModules()
2012-02-06 02:44:47 +01:00
end
end
end
function reloadAllModules()
g_modules.reloadModules()
refreshLoadedModules()
show()
2012-02-06 20:19:47 +01:00
end