vanilla-wow-addons – Rev 1
?pathlinks?
local locals = KC_ITEMS_LOCALS
KC_ItemsModule = AceModule:new();
-- Module DB Closures. These use the addon's (KC_Items's) profilePath to ensure
-- that the proper profile will always get used.
function KC_ItemsModule:GetOpt(path, var)
if (not var) then var = path; path = nil; end
if (self.db) then
local profilePath = path and {self.app.profilePath, path} or self.app.profilePath
return self.db:get(profilePath, var)
else
return self.app:GetOpt(path, var)
end
end
function KC_ItemsModule:SetOpt(path, var, val)
if (not var) then val = var; var = path; path = nil; end
if (self.db) then
local profilePath = path and {self.app.profilePath, path} or self.app.profilePath
return self.db:set(profilePath, var, val)
else
return self.app:SetOpt(path, var, val)
end
end
function KC_ItemsModule:TogOpt(path, var)
if (not var) then val = var; var = path; path = nil; end
if (self.db) then
local profilePath = path and {self.app.profilePath, path} or self.app.profilePath
return self.db:toggle(profilePath, var)
else
return self.app:TogOpt(path, var)
end
end
function KC_ItemsModule:ClearOpt(path, var)
if (not var) then var = path; path = nil; end
if (self.db) then
local profilePath = path and {self.app.profilePath, path} or self.app.profilePath
return self.db:set(profilePath, var)
else
return self.app:ClearOpt(path, var)
end
end
-- Command Reporting Closures
function KC_ItemsModule:Msg(...)
self.app:Msg(unpack(arg))
end
function KC_ItemsModule:Result(text, val, map)
self.app:Result(text, val, map)
end
function KC_ItemsModule:TogMsg(var, text)
local val = self:TogOpt(var)
self.app:Result(text, val, locals.maps.onOff)
return val
end
function KC_ItemsModule:Error(...)
self.app:Error(unpack(arg))
end
-- Enabling/Disabling
function KC_ItemsModule:Register()
self.disabled = TRUE
self:RegisterEvent("KC_ITEMS_LOADED")
self:RegisterEvent("KC_ITEMS_ENABLED")
end
function KC_ItemsModule:KC_ITEMS_LOADED()
self:debug("KC_Items Loaded")
if( self.db ) then self.db:Initialize() end
end
function KC_ItemsModule:KC_ITEMS_ENABLED()
self:CheckEnable()
self:RegisterEvent("KC_ITEMS_DISABLED")
self:debug("KC_Items Enabled")
end
function KC_ItemsModule:KC_ITEMS_DISABLED()
self:Disable()
self:debug("KC_Items Disabled")
end
function KC_ItemsModule:KC_ITEMS_MODULE_ENABLED()
if( self.disabled and self:CheckDependencies() ) then self:CheckEnable() end
end
function KC_ItemsModule:KC_ITEMS_MODULE_DISABLED()
if( self.disabled ) then return end
if( not self:CheckDependencies() ) then self:Disable() end
end
function KC_ItemsModule:CheckDependencies()
if( not self.dependencies ) then return TRUE end
local _, dep
for _, dep in self.dependencies do
if( (not self.app.modules[dep]) or
(not self.app:ModEnabled(self.app.modules[dep]))
) then
return
end
end
return TRUE
end
function KC_ItemsModule:CheckEnable(force)
if( (not self.app.disabled) and (self.app:ModEnabled(self) or force) and
self:CheckDependencies()
) then
self:Enable()
self.disabled = FALSE
self:TriggerEvent("KC_ITEMS_MODULE_ENABLED")
self:RegisterEvent("KC_ITEMS_DISABLED")
self:RegisterEvent("KC_ITEMS_MODULE_DISABLED")
return TRUE
end
end
-- Should be overridden
function KC_ItemsModule:Enable() end
function KC_ItemsModule:Disable()
self:UnregisterAllEvents()
self:UnhookAll()
self.disabled = TRUE
self:TriggerEvent("KC_ITEMS_MODULE_DISABLED")
self:RegisterEvent("KC_ITEMS_ENABLED")
self:RegisterEvent("KC_ITEMS_MODULE_ENABLED")
end
-- Common Module Command Handlers
function KC_ItemsModule:Toggle()
if( self.app:ModEnabled(self) ) then
self.app:SetModState(self, FALSE)
self:Disable()
self:Result(self.name, nil, locals.maps.enabled)
elseif( self:CheckEnable(TRUE)) then
self.app:SetModState(self, TRUE)
self:Result(self.name, TRUE, locals.maps.enabled)
else
self:Msg(format(locals.err.modEnable, self.name))
self:Msg(format(locals.err.needs, self.name, table.concat(self.dependencies, ", ")))
end
end
Generated by GNU Enscript 1.6.5.90.