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