zz_Mailbox/Libs/zzLDB/zzLDB.lua

44 lines
1.3 KiB
Lua

local lib, oldminor = LibStub:NewLibrary("zzLDB", 2)
if not lib then return end
local ldb = LibStub:GetLibrary("LibDataBroker-1.1")
local ldbicon = LibStub:GetLibrary("LibDBIcon-1.0")
oldminor = oldminor or 0
local mixins = {'AddLDB', 'GetLDB'}
local defaults = {
['hide'] = false,
}
lib['ldbs'] = lib['ldbs'] or {}
local function proto_OnClick(self, button)
print("onclick required", self, button)
end
function lib:GetLDB(objname)
return ldb:GetDataObjectByName(objname)
end
function lib:AddLDB(objname, obj, db)
local obj = obj or {}
obj['type'] = obj['type'] or 'launcher'
obj['text'] = obj['text'] or objname
if(obj['type '] == 'launcher') then
obj['OnClick'] = obj['OnClick'] or proto_OnClick
end
if(ldb) then
local ldbobj = ldb:GetDataObjectByName(objname) or ldb:NewDataObject(objname, obj)
if(ldbobj) then
if(not ldbicon:IsRegistered(objname)) then
db['global']['ldbicons'] = db['global']['ldbicons'] or {}
local sb = db['global']['ldbicons']
sb[objname] = sb[objname] or CopyTable(defaults)
ldbicon:Register(objname, ldbobj, sb[objname])
end
return ldbobj
end
end
end
function lib:Embed(target)
for _,name in pairs(mixins) do
target[name] = lib[name]
end
end
for target, _ in pairs(lib['ldbs']) do
lib:Embed(target)
end