vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
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()