45 lines
1.3 KiB
Lua
45 lines
1.3 KiB
Lua
local lib, oldminor = LibStub:NewLibrary("zzLDB", 1)
|
|
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)
|
|
-- print('reg', objname)
|
|
ldbicon:Register(objname, ldbobj, sb[objname])
|
|
end
|
|
end
|
|
end
|
|
return ldbobj
|
|
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 |