WoWInterface SVN Bison1

[/] [trunk/] [Options.lua] - Rev 33

Compare with Previous | Blame | View Log

local Bison = LibStub( 'AceAddon-3.0'):GetAddon( 'Bison')
local L = LibStub( 'AceLocale-3.0'):GetLocale( 'Bison')
        
local function OptionTable( name, order)
        return {
                type = 'group', order = order, name = L.OptionName, inline = true, 
                args = {
                        show  = { type = 'toggle', order = 1, name = L.ShowName,     desc = L.ShowDesc,     width = 'full', arg = name, get = 'IsVisible',  set = 'ToggleVisible', },
                        flash = { type = 'toggle', order = 2, name = L.FlashingName, desc = L.FlashingDesc, width = 'full', arg = name, get = 'IsFlashing', set = 'ToggleFlashing', },
                        timer = { type = 'toggle', order = 3, name = L.TimerName,    desc = L.TimerDesc,    width = 'full', arg = name, get = 'IsTimer',    set = 'ToggleTimer', },
                        sort  = { type = 'select', order = 4, name = L.SortName,     desc = L.SortDesc,                     arg = name, get = 'GetSort',    set = 'SetSort', values = 'SortTypes', },
                },
        }
end

local function LayoutTable( name, order)
        local max = Bison:GetMaxButton( name)
        return {
                type = 'group', order = order, name = L.BarName, inline = true, 
                args = {
                        horizontal = { type = 'toggle', order = 1, name = L.HorizontalName, desc = L.HorizontalDesc, arg = name, get = 'IsHorizontal', set = 'ToggleHorizontal', },
                        scale      = { type = 'range',  order = 2, name = L.ScaleName,      desc = L.ScaleDesc,      arg = name, get = 'GetScale',     set = 'SetScale',    min = 0.01, max = 2,   step = 0.01, isPercent = true, },
                        cols       = { type = 'range',  order = 3, name = L.ColsName,       desc = L.ColsDesc,       arg = name, get = 'GetCols',      set = 'SetCols',     min = 1,    max = max, step = 1, },
                        rows       = { type = 'range',  order = 5, name = L.RowsName,       desc = L.RowsDesc,       arg = name, get = 'GetRows',      set = 'SetRows',     min = 1,    max = max, step = 1, },
                        xPadding   = { type = 'range',  order = 4, name = L.XPaddingName,   desc = L.XPaddingDesc,   arg = name, get = 'GetXPadding',  set = 'SetXPadding', min = -20,  max = 20,  step = 1, },
                        yPadding   = { type = 'range',  order = 6, name = L.YPaddingName,   desc = L.YPaddingDesc,   arg = name, get = 'GetYPadding',  set = 'SetYPadding', min = -50,  max = 50,  step = 1, },
                },
        }
end

local function BarTable( name, order)
        return {
                type = 'group', order = order, name = name, dialogHidden = true, dialogInline = true, 
                args = {
                        option = OptionTable( name, 1),
                        layout = LayoutTable( name, 2),
                },
        }
end

local options = {
        type = 'group', name = Bison.localizedname, handler = Bison,
        args = {
                release     = { type = 'description', order = 2,  name = Bison.version, cmdHidden = true, },
                description = { type = 'description', order = 3,  name = L.Description, cmdHidden = true, },
                space           = { type = 'description', order = 4,  name = '',            cmdHidden = true, },
                enable          = { type = 'toggle', order = 14, name = L.EnabledName, desc = L.EnabledDesc, width = 'full', get = 'IsEnabled',    set = 'ToggleEnabled', },
                lock            = { type = 'toggle', order = 15, name = L.LockName,    desc = L.LockDesc,    width = 'full', get = 'IsLocked',     set = 'ToggleLocked', },
                debug           = { type = 'toggle', order = 16, name = L.DebugName,   desc = L.DebugDesc,   width = 'full', get = 'IsDebug',      set = 'ToggleDebug', },
                version         = { type = 'toggle', order = 17, name = 'version',     dialogHidden = true, disabled = true, get = 'PrintVersion', set = false, },
                help            = { type = 'toggle', order = 18, name = 'help',        dialogHidden = true, disabled = true, get = 'PrintHelp',    set = false, },
                buff            = BarTable( 'buff',   20),
                debuff      = BarTable( 'debuff', 21),
                weapon      = BarTable( 'weapon', 22),
        },
}

local function OnCommand( input)
        if input and input:trim() ~= '' then
                LibStub( 'AceConfigCmd-3.0'):HandleCommand( 'bison', 'bison', input)
        else
                InterfaceOptionsFrame_OpenToCategory( 'Bison')
        end
end

function Bison:InitConfig()
        options.args.profile = LibStub( 'AceDBOptions-3.0'):GetOptionsTable( self.db)
        options.args.profile.dialogHidden = true
        options.args.profile.dialogInline = true
        options.args.profile.args.desc.dialogHidden = true
        LibStub('AceConfig-3.0'):RegisterOptionsTable( 'bison', options)
        local dialog = LibStub( 'AceConfigDialog-3.0')
        dialog:SetDefaultSize( 'Bison', 600, 400)
        dialog:AddToBlizOptions( 'bison', 'Bison')
        dialog:AddToBlizOptions( 'bison', L.BarBuff,   'Bison', 'buff')
        dialog:AddToBlizOptions( 'bison', L.BarDebuff, 'Bison', 'debuff')
        dialog:AddToBlizOptions( 'bison', L.BarWeapon, 'Bison', 'weapon')
        dialog:AddToBlizOptions( 'bison', L.Profile,   'Bison', 'profile')
        self:RegisterChatCommand( 'bison', OnCommand)
        self:RegisterChatCommand( 'bi', OnCommand)
end

Compare with Previous | Blame