vanilla-wow-addons – Rev 1

Subversion Repositories:
Rev:
--[[
        Enchantrix Addon for World of Warcraft(tm).
        Version: 3.6.1 (Platypus)
        Revision: $Id: EnxConfig.lua 881 2006-05-28 18:31:04Z aradan $

        Configuration functions.

        License:
                This program is free software; you can redistribute it and/or
                modify it under the terms of the GNU General Public License
                as published by the Free Software Foundation; either version 2
                of the License, or (at your option) any later version.

                This program is distributed in the hope that it will be useful,
                but WITHOUT ANY WARRANTY; without even the implied warranty of
                MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                GNU General Public License for more details.

                You should have received a copy of the GNU General Public License
                along with this program(see GLP.txt); if not, write to the Free Software
                Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
]]

-- Global functions
local addonLoaded               -- Enchantrix.Config.AddonLoaded()
local getFilterDefaults -- Enchantrix.Config.GetFilterDefaults()
local setFilter                 -- Enchantrix.Config.SetFilter()
local getFilter                 -- Enchantrix.Config.GetFilter()
local setFrame                  -- Enchantrix.Config.SetFrame()
local getFrameNames             -- Enchantrix.Config.GetFrameNames()
local getFrameIndex             -- Enchantrix.Config.GetFrameIndex()
local setLocale                 -- Enchantrix.Config.SetLocale()
local getLocale                 -- Enchantrix.Config.GetLocale()

-- Local functions
local isValidLocale

-- Default filter configuration
local filterDefaults = {
                ['all'] = true,
                ['barker'] = true,
                ['embed'] = false,
                ['counts'] = false,
                ['terse'] = false,
                ['valuate'] = true,
                ['valuate-hsp'] = true,
                ['valuate-median'] = true,
                ['valuate-baseline'] = true,
                ['locale'] = 'default',
                ['printframe'] = 1,
        }

-- True if this filter value should be saved per character
local perCharacterFilter = {
                ['embed'] = true,
                ['counts'] = true,
                ['terse'] = true,
                ['printframe'] = true,
        }

function addonLoaded()
        -- Remove unused/unknown filter values
        for key in EnchantConfig.filters do
                if getFilterDefaults(key) == nil then
                        setFilter(key, nil)
                else
                        setFilter(key, getFilter(key))
                end
        end
end

function getFilterDefaults(key)
        return filterDefaults[key]
end

function getFilter(filter)
        local val = EnchantConfigChar.filters[filter]
        if val == nil then
                val = EnchantConfig.filters[filter]
        end
        if val == nil then
                val = getFilterDefaults(filter)
        end
        return val
end

function setFilter(key, value)
        if (value == 'default') or (value == getFilterDefaults(key)) then
                -- Don't save default values
                value = nil
        elseif value == 'on' then
                value = true
        elseif value == 'off' then
                value = false
        end
        if perCharacterFilter[key] then
                EnchantConfigChar.filters[key] = value
        else
                EnchantConfigChar.filters[key] = nil
        end
        EnchantConfig.filters[key] = value
end

-- The following three functions were added by MentalPower to implement the /enx print-in command
function getFrameNames(index)

        local frames = {}
        local frameName

        for i = 1, NUM_CHAT_WINDOWS do
                -- name, fontSize, r, g, b, a, shown, locked, docked = GetChatWindowInfo(i)
                local name = GetChatWindowInfo(i)

                if ( name == "" ) then
                        if (i == 1) then
                                name = _ENCH('TextGeneral')
                        elseif (i == 2) then
                                name = _ENCH('TextCombat')
                        end
                end
                frames[name] = i

                if i == index then
                        frameName = name
                end
        end

        return frames, frameName or ""
end

function getFrameIndex()
        return Enchantrix.Config.GetFilter('printframe')
end

function setFrame(frame, chatprint)

        local frameNumber
        local frameVal
        frameVal = tonumber(frame)

        -- If no arguments are passed, then set it to the default frame.
        if not (frame) then
                frameNumber = 1;

        -- If the frame argument is a number then set our chatframe to that number.
        elseif ((frameVal) ~= nil) then
                frameNumber = frameVal;

        -- If the frame argument is a string, find out if there's a chatframe with that name, and set our chatframe to that index. If not set it to the default frame.
        elseif (type(frame) == "string") then
                allFrames = Enchantrix.Config.GetFrameNames();

                if (allFrames[frame]) then
                        frameNumber = allFrames[frame];

                else
                        frameNumber = 1;
                end

        -- If the argument is something else, set our chatframe to it's default value.
        else
                frameNumber = 1;
        end

        local _, frameName

        if (chatprint == true) then
                _, frameName = Enchantrix.Config.GetFrameNames(frameNumber);

                if (Enchantrix.Config.GetFrameIndex() ~= frameNumber) then
                        Enchantrix.Util.ChatPrint(string.format(_ENCH('FrmtPrintin'), frameName));
                end
        end

        Enchantrix.Config.SetFilter("printframe", frameNumber);

        if (chatprint == true) then
                Enchantrix.Util.ChatPrint(string.format(_ENCH('FrmtPrintin'), frameName));
                Enchantrix.Command.SetKhaosSetKeyValue("printframe", frameNumber);
        end
end

function isValidLocale(param)
        return (EnchantrixLocalizations and EnchantrixLocalizations[param])
end

function setLocale(param, chatprint)
        param = Enchantrix.Locale.DelocalizeFilterVal(param)

        if (param == 'default') or (param == 'off') then
                Babylonian.SetOrder('')
                validLocale = true
        elseif (isValidLocale(param)) then
                Babylonian.SetOrder(param)
                validLocale = true
        else
                validLocale = false
        end

        if chatprint then
                if validLocale then
                        Enchantrix.Util.ChatPrint(string.format(_ENCH('FrmtActSet'), _ENCH('CmdLocale'), param))
                        Enchantrix.Command.SetKhaosSetKeyValue('locale', param)
                else
                        Enchantrix.Util.ChatPrint(string.format(_ENCH("FrmtActUnknownLocale"), param))
                        local locales = "    "
                        for locale, data in pairs(EnchantrixLocalizations) do
                                locales = locales .. " '" .. locale .. "' "
                        end
                        Enchantrix.Util.ChatPrint(locales)
                end
        end

        if (Enchantrix.State.Khaos_Registered) then
                Khaos.refresh(nil, nil, true)
        end

        Enchantrix.State.Locale_Changed = true
end

function getLocale()
        local locale = Enchantrix.Config.GetFilter('locale')
        if locale ~= 'default' then
                return locale
        end
        return GetLocale()
end

Enchantrix.Config = {
        Revision                        = "$Revision: 881 $",
        AddonLoaded                     = addonLoaded,

        GetFilterDefaults       = getFilterDefaults,
        GetFilter                       = getFilter,
        SetFilter                       = setFilter,

        GetFrameNames           = getFrameNames,
        GetFrameIndex           = getFrameIndex,
        SetFrame                        = setFrame,

        SetLocale                       = setLocale,
        GetLocale                       = getLocale,
}