WoWInterface SVN LibDefaults

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /trunk
    from Rev 1 to Rev 2
    Reverse comparison

Rev 1 → Rev 2

LibDefaults/LibDefaults.lua New file
0,0 → 1,106
--------------------------------------------------------------------------
-- LibDefaults.lua
--------------------------------------------------------------------------
--[[
LibDefaults
 
author: AnduinLothar <karlkfi@cosmosui.org>
 
-Saved Variable Initialization Library
 
Change List
v1.0
- Hopefully one version is enough!
 
$Date: 2007-07-03 21:22:03 -0500 (Tue, 03 Jul 2007) $
$Rev: 5009 $
 
]]--
 
local lib, oldminor = LibStub:NewLibrary("LibDefaults", 1)
if not lib then return end
 
-- <= == == == == == == == == == == == == =>
-- => Public
-- <= == == == == == == == == == == == == =>
 
--[[
Register a saved variable to be initialized to a default value
if it is nil once the addon's saved variables are loaded.
Can handle N-depth table values as well without requiring initialization of the tables themselves.
The addon saved variable defaults will be automatically initialized at the addon's ADDON_LOADED event,
or they can be forced to load using lib:InitAddOn(addonName).
 
Usage:
loader:SetDefault("MyAddOn", "SavedVar(Table)Name", [key1, [key2, [...] ] ], value)
Example Usage:
local loader = LibStub("LibDefaults")
loader:SetDefault("MyAddOn", "SavedVarName", SavedVarValue)
]]--
function lib:SetDefault(addonName, varName, ...)
if not self.addonVarList[addonName] then
self.addonVarList[addonName] = {}
end
tinsert(self.addonVarList[addonName], { varName = varName; value = {...}; } )
end
 
--[[
Register a function to be executed once an addon's variables have been loaded.
Fires after addon defaults have been set.
 
Usage:
SetDefault("MyAddOn", "SavedVar(Table)Name", [key1, [key2, [...] ] ], value)
Example Usage:
local loader = LibStub("LibDefaults")
loader:SetScript("MyAddOn", function(addonName) dostuff() end)
]]--
function lib:SetScript(addonName, func)
if not self.addonScriptList[addonName] then
self.addonScriptList[addonName] = {}
end
tinsert(self.addonScriptList[addonName], func)
end
 
-- <= == == == == == == == == == == == == =>
-- => Private
-- <= == == == == == == == == == == == == =>
 
lib.addonVarList = {}
lib.addonScriptList = {}
 
-- Initialization of Defaults
local function recursInit(t, key, keyOrValue, ...)
if select("#", ...) > 0 then
if t[key] == nil then
t[key] = {}
end
recursInit(t[key], keyOrValue, ...)
elseif t[key] == nil then
t[key] = keyOrValue
end
end
 
function lib:InitAddOn(addonName)
if self.addonVarList[addonName] then
-- Initialize Variables that are nil
for i, set in ipairs(self.addonVarList[addonName]) do
recursInit(_G, set.varName, unpack(set.value))
end
-- Empty the list
self.addonVarList[addonName] = nil
end
if self.addonScriptList[addonName] then
-- execute scripts
for i, func in ipairs(self.addonScriptList[addonName]) do
func(addonName)
end
-- Empty the list
self.addonScriptList[addonName] = nil
end
end
 
local frame = CreateFrame("Frame")
frame:RegisterEvent("ADDON_LOADED")
frame:SetScript("OnEvent", function(self, event, addonName) lib:InitAddOn(addonName) end)
 
lib.frame = frame
LibDefaults/LibDefaults.toc New file
0,0 → 1,10
## Interface: 30000
## Title: LibDefaults
## Notes: Saved Variable Initialization Library
## Author: AnduinLothar
## Version: 1.0
## X-Revision: $Rev: 5127 $
## X-Date: $Date: 2007-11-13 18:34:54 -0600 (Tue, 13 Nov 2007) $
## X-Category: Library
## X-Email: karlkfi@yahoo.com
LibDefaults.lua