vanilla-wow-addons – Rev 1
?pathlinks?
local locals = KC_ITEMS_LOCALS
local DEFAULT_OPTIONS = {
}
KC_Items = AceAddon:new({
name = locals.name,
version = ".94.5." .. string.sub("$Revision: 2011 $", 12, -3),
releaseDate = string.sub("$Date: 2006-05-20 20:53:39 +0200 (lø, 20 maj 2006) $", 8, 17),
aceCompatible = "103",
author = "Kaelten",
email = "kaelten@gmail.com",
website = "http://www.wowace.com or http://kaelcycle.wowinterface.com",
category = "Inventory",
--optionsFrame = "AddonNameOptionsFrame",
db = AceDatabase:new("KC_ItemsDB"),
defaults = DEFAULT_OPTIONS,
cmd = AceChatCmd:new(locals.chat.commands, locals.chat.options),
optPath = {"core", "options"},
})
function KC_Items:Register(module)
if( not self.modules ) then self.modules = {} end
self.modules[module.type] = module
self[module.type] = module
module.app = self
if (self.common and self.common ~= module) then module.common = self.common end
module:Register()
if( module.cmdOptions ) then
module.cmdOptions.handler = module
tinsert(module.cmdOptions.args or {}, 1, locals.chat.toggle)
tinsert(self.cmd.options, module.cmdOptions)
end
end
-- Need at least an empty Enable so Ace will provide enable/disable features.
function KC_Items:Enable()
local stats = self.db:get("stats")
if (not stats or type(stats) == "table") then
self.db:set("stats", "0,0,0,0,0,0")
end
if (self.common.frame and self:GetOpt(self.optPath, "showstatsframe")) then
self.common.frame:Show()
end
end
-- Data Access Closures
function KC_Items:GetOpt(path, var)
if (not var) then var = path; path = nil; end
local profilePath = path and {self.profilePath, path} or self.profilePath;
return self.db:get(profilePath, var)
end
function KC_Items:SetOpt(path, var, val)
if (not val) then val = var; var = path; path = nil; end
local profilePath = path and {self.profilePath, path} or self.profilePath;
return self.db:set(profilePath, var, val)
end
function KC_Items:TogOpt(path, var)
if (not var) then var = path; path = nil; end
local profilePath = path and {self.profilePath, path} or self.profilePath;
return self.db:toggle(profilePath, var)
end
function KC_Items:ClearOpt(path, var)
if (not var) then var = path; path = nil; end
local profilePath = path and {self.profilePath, path} or self.profilePath;
return self.db:set(profilePath, var)
end
function KC_Items:SetModState(mod, state)
self.db:set({self.profilePath, "modules"}, mod.type, ace.toggle(state))
end
function KC_Items:ModEnabled(mod)
return ace.toggle(self.db:get({self.profilePath, "modules"}, mod.type))
end
-- Command Reporting Closures
function KC_Items:Msg(...)
self.cmd:result(locals.msg.color, unpack(arg))
end
function KC_Items:Result(text, val, map)
if( map ) then val = map[val or 0] or val end
self.cmd:result(locals.msg.color, text, " ", locals.msg.nowSetTo, " ",
format(locals.msg.display, val or ACE_CMD_REPORT_NO_VAL)
)
end
function KC_Items:TogMsg(var, text)
local val = self:TogOpt(var)
self:Result(text, val, locals.maps.onOff)
return val
end
function KC_Items:Error(...)
local text = "";
for i=1,getn(arg) do
text = text .. arg[i]
end
error(locals.msg.color .. text, 2)
end
-- Command Handlers
function KC_Items:Report()
-- Display KCI core Options.
-- self.cmd:report()
-- Display status of modules
if( self.modules ) then
local rpt, mod, _ = {}
for _, mod in self.modules do
tinsert(rpt, {text=mod.name, val=ace.toggle(mod.disabled), map=locals.maps.enabled})
end
self.cmd:report(locals.rpt.header, rpt)
else
self:Msg(locals.rpt.noModules)
end
end
KC_Items:RegisterForLoad()