119 lines
3.6 KiB
Lua
119 lines
3.6 KiB
Lua
|
local name, addon = ...
|
||
|
|
||
|
local embed = addon:LibInit("zzCommon-ldb", 13, {'AddLDB','AddLDBIconOptions','OnText','GetLDB'})
|
||
|
if(type(embed) ~= 'function') then return end
|
||
|
|
||
|
local ldb = LibStub:GetLibrary("LibDataBroker-1.1")
|
||
|
local ldbicon = LibStub:GetLibrary("LibDBIcon-1.0")
|
||
|
|
||
|
local defaults = {
|
||
|
['hide'] = false,
|
||
|
}
|
||
|
|
||
|
local function ldbiconUpdate(objname)
|
||
|
local ldbobj = ldb:GetDataObjectByName(objname)
|
||
|
if(ldbicon) then
|
||
|
local db = ldbobj['zzInfo']['db']
|
||
|
db[objname] = db[objname] or CopyTable(defaults)
|
||
|
if(db[objname]['hide']) then
|
||
|
ldbicon:Hide(objname)
|
||
|
else
|
||
|
ldbicon:Show(objname)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
--[[
|
||
|
local function ldbOnClick(self, button)
|
||
|
local objname = self['objname']
|
||
|
if(IsShiftKeyDown() and button == "LeftButton") then
|
||
|
if(not ldbicon) then return end
|
||
|
local db = self['zzInfo']['db']
|
||
|
db[objname]['hide'] = not db[objname]['hide']
|
||
|
ldbiconUpdate(objname)
|
||
|
else
|
||
|
if(InterfaceOptionsFrame:IsVisible() and not InCombatLockdown()) then
|
||
|
InterfaceOptionsFrame:Hide()
|
||
|
else
|
||
|
InterfaceOptionsFrame_OpenToCategory(objname)
|
||
|
InterfaceOptionsFrame_OpenToCategory(objname) -- Twice because of a bug in InterfaceOptionsFrame_OpenToCategory
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
]]
|
||
|
local function minimapGet(pref)
|
||
|
local objname = pref[#pref - 2]
|
||
|
local ldbobj = ldb:GetDataObjectByName(objname)
|
||
|
local db = ldbobj['zzInfo']['db']
|
||
|
return db[objname][pref[#pref]]
|
||
|
end
|
||
|
|
||
|
local function minimapSet(pref,value)
|
||
|
local objname = pref[#pref - 2]
|
||
|
local ldbobj = ldb:GetDataObjectByName(objname)
|
||
|
local db = ldbobj['zzInfo']['db']
|
||
|
db[objname][pref[#pref]] = value
|
||
|
ldbiconUpdate(objname)
|
||
|
end
|
||
|
|
||
|
local lib = {}
|
||
|
function lib:AddLDB(objname, obj)
|
||
|
obj = obj or {}
|
||
|
local modsDir = self['parentName']
|
||
|
if(self['modsDir']) then
|
||
|
modsDir = modsDir .. "\\" .. self['modsDir']
|
||
|
end
|
||
|
local icon = ((self['name'] and objname~=self['parentName']) and "Interface\\AddOns\\"..modsDir.."\\"..objname.."\\icon2.tga" or "Interface\\AddOns\\"..objname.."\\icon2.tga")
|
||
|
local ldbobj = ldb:GetDataObjectByName(objname) or ldb:NewDataObject(objname, {
|
||
|
['type'] = obj['type'] or 'launcher',
|
||
|
['text'] = obj['text'] or objname,
|
||
|
['icon'] = obj['icon'] or icon,
|
||
|
['iconCoords'] = obj['iconCoords'],
|
||
|
['OnLeave'] = obj['OnLeave'],
|
||
|
['OnEnter'] = obj['OnEnter'],
|
||
|
['zzInfo'] = {}
|
||
|
})
|
||
|
ldbobj['OnClick'] = type(obj['OnClick']) == 'function' and function(self, button) obj['OnClick'](self, button) end
|
||
|
-- ldbobj['OnClick'] = type(obj['OnClick']) == 'function' and function(self, button) obj['OnClick'](self, button) end or function(self, button) ldbOnClick(self, button) end
|
||
|
ldbobj['OnTooltipShow'] = type(obj['OnTooltipShow']) == 'function' and obj['OnTooltipShow'] or nil
|
||
|
if(ldbobj and ldbicon) then
|
||
|
self['db']['global']['ldbicons'] = self['db']['global']['ldbicons'] or {}
|
||
|
local db = self['db']['global']['ldbicons']
|
||
|
ldbobj['zzInfo']['db'] = self['db']['global']['ldbicons']
|
||
|
db[objname] = db[objname] or CopyTable(defaults)
|
||
|
if(not ldbicon:IsRegistered(objname)) then
|
||
|
ldbicon:Register(objname,ldbobj,db[objname])
|
||
|
end
|
||
|
ldbiconUpdate(objname)
|
||
|
end
|
||
|
end
|
||
|
function lib:GetLDB(objname)
|
||
|
return ldb:GetDataObjectByName(objname)
|
||
|
end
|
||
|
function lib:OnText(objname, message)
|
||
|
ldb:GetDataObjectByName(objname)['text'] = message
|
||
|
end
|
||
|
function lib:AddLDBIconOptions()
|
||
|
return {
|
||
|
['name']="Minimapicon",
|
||
|
['type']='group',
|
||
|
['inline']=true,
|
||
|
['get'] = minimapGet,
|
||
|
['set'] = minimapSet,
|
||
|
['order'] = 100,
|
||
|
['args']={
|
||
|
['hide'] ={
|
||
|
['type'] = 'toggle',
|
||
|
['name'] = "Hide Minimapicon",
|
||
|
},
|
||
|
['minimapPos'] ={
|
||
|
['type'] = 'range',
|
||
|
['name'] = "Minimapicon Position",
|
||
|
['min'] = 1,
|
||
|
['max'] = 250,
|
||
|
['step']=1,
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
end
|
||
|
embed(lib)
|