Fix global use of some variables

This commit is contained in:
rilgamon 2021-03-12 11:10:06 +01:00
parent 7fe8447326
commit b677f7bb38
3 changed files with 29 additions and 25 deletions

View File

@ -80,7 +80,7 @@ lib['events']:SetScript("OnEvent", function(self, event, ...)
if(specs and specs['sv'] and not addon['db']) then if(specs and specs['sv'] and not addon['db']) then
-- print('dbname',type(specs['sv']),type(specs['sv']) == 'boolean' and addonName or specs['sv']) -- print('dbname',type(specs['sv']),type(specs['sv']) == 'boolean' and addonName or specs['sv'])
local dbname = format('%sDB', type(specs['sv']) == 'boolean' and addonName or specs['sv']) local dbname = format('%sDB', type(specs['sv']) == 'boolean' and addonName or specs['sv'])
addon['db'] = LibStub("AceDB-3.0"):New(dbname, type(specs['defaults']) == 'table' and specs['defaults'] or {}, true) addon['db'] = LibStub("AceDB-3.0"):New(dbname, type(specs['defaults']) == 'table' and specs['defaults'] or {}, 'Default')
if(specs['ldb']) then if(specs['ldb']) then
local ldbobj = LibStub:GetLibrary("zzLDB"):AddLDB(specs['name'], specs['ldb'], addon['db']) local ldbobj = LibStub:GetLibrary("zzLDB"):AddLDB(specs['name'], specs['ldb'], addon['db'])
end end
@ -88,13 +88,9 @@ lib['events']:SetScript("OnEvent", function(self, event, ...)
local config = LibStub:GetLibrary("zzConfig") local config = LibStub:GetLibrary("zzConfig")
addon['options'] = config:InitConfig(addon, addonName) addon['options'] = config:InitConfig(addon, addonName)
addon['options']['args']['profile'] = LibStub("AceDBOptions-3.0"):GetOptionsTable(addon['db']) addon['options']['args']['profile'] = LibStub("AceDBOptions-3.0"):GetOptionsTable(addon['db'])
function addon:RefreshConfig() if(type(specs['cfgReset']) == 'function') then
self['db']['profile'][specs['name']] = {} addon['db'].RegisterCallback(specs, "OnProfileReset", 'cfgReset')
if(specs['cfgRefresh']) then
self['specs']['cfgRefresh'](addon['db'])
end
end end
addon['db'].RegisterCallback(addon, "OnProfileReset", "RefreshConfig")
end end
end end
end end

View File

@ -31,6 +31,11 @@ local function minimapSet(pref,value)
db[pref[#pref]] = value db[pref[#pref]] = value
ldbiconUpdate(objname) ldbiconUpdate(objname)
end end
local function notify(pref, value, oldvalue)
if(type(pref['handler'].PrefChanged) == 'function') then
pref['handler']:PrefChanged(pref, value, oldvalue)
end
end
local function getPref(pref) local function getPref(pref)
if(type(pref['handler']['GetPref']) == 'function') then if(type(pref['handler']['GetPref']) == 'function') then
-- print("use handler getpref", pref[#pref]) -- print("use handler getpref", pref[#pref])
@ -46,7 +51,11 @@ local function setPref(pref,value)
if(type(pref['handler']['SetPref']) == 'function') then if(type(pref['handler']['SetPref']) == 'function') then
pref['handler']:SetPref(pref,value) pref['handler']:SetPref(pref,value)
else else
local oldvalue = pref['handler']['db']['profile'][pref[#pref-1]][pref[#pref]]
pref['handler']['db']['profile'][pref[#pref-1]][pref[#pref]] = value pref['handler']['db']['profile'][pref[#pref-1]][pref[#pref]] = value
if(value ~= oldvalue) then
notify(pref, value, oldvalue)
end
end end
end end
function lib:AddLDBIconOptions(options, conf) function lib:AddLDBIconOptions(options, conf)
@ -105,8 +114,8 @@ function lib:AddConfigEntry(options, ...)
} }
end end
options['args'][input[1]] = menu options['args'][input[1]] = menu
return menu
end end
return menu
end end
function lib:AddConfigMenu(options, parentName, handler, order, more) function lib:AddConfigMenu(options, parentName, handler, order, more)
local menu = { local menu = {

View File

@ -15,25 +15,24 @@ function lib:GetLDB(objname)
return ldb:GetDataObjectByName(objname) return ldb:GetDataObjectByName(objname)
end end
function lib:AddLDB(objname, obj, db) function lib:AddLDB(objname, obj, db)
local obj = obj or {} local obj = obj or {}
obj['type'] = obj['type'] or 'launcher' obj['type'] = obj['type'] or 'launcher'
obj['text'] = obj['text'] or objname obj['text'] = obj['text'] or objname
if(obj['type '] == 'launcher') then if(obj['type '] == 'launcher') then
obj['OnClick'] = obj['OnClick'] or proto_OnClick obj['OnClick'] = obj['OnClick'] or proto_OnClick
end end
if(ldb) then if(ldb) then
local ldbobj = ldb:GetDataObjectByName(objname) or ldb:NewDataObject(objname, obj) local ldbobj = ldb:GetDataObjectByName(objname) or ldb:NewDataObject(objname, obj)
if(ldbobj) then if(ldbobj) then
if(not ldbicon:IsRegistered(objname)) then if(not ldbicon:IsRegistered(objname)) then
db['global']['ldbicons'] = db['global']['ldbicons'] or {} db['global']['ldbicons'] = db['global']['ldbicons'] or {}
local sb = db['global']['ldbicons'] local sb = db['global']['ldbicons']
sb[objname] = sb[objname] or CopyTable(defaults) sb[objname] = sb[objname] or CopyTable(defaults)
-- print('reg', objname) ldbicon:Register(objname, ldbobj, sb[objname])
ldbicon:Register(objname, ldbobj, sb[objname])
end
end end
return ldbobj
end end
return ldbobj end
end end
function lib:Embed(target) function lib:Embed(target)
for _,name in pairs(mixins) do for _,name in pairs(mixins) do