vanilla-wow-addons – Rev 1
?pathlinks?
--[[
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,
}