Add config, ldb, readme
This commit is contained in:
parent
2a0fdd2f66
commit
7fe8447326
|
@ -4,27 +4,51 @@ oldminor = oldminor or 0
|
|||
lib['callbacks'] = lib['callbacks'] or LibStub:GetLibrary("CallbackHandler-1.0"):New(lib)
|
||||
lib['addons'] = lib['addons'] or {}
|
||||
lib['events'] = lib['events'] or CreateFrame("FRAME")
|
||||
local mixins = {'RegisterEvent','IsClassic'}
|
||||
local mixins = {'RegisterEvent','UnregisterEvent','IsClassic', 'GetSpecs'}
|
||||
local events = lib['events']
|
||||
function lib:GetSpecs(childName)
|
||||
if(self['specs']) then
|
||||
return self['specs'][childName]
|
||||
end
|
||||
end
|
||||
function lib:RegisterEvent(event)
|
||||
if(type(event) == 'table') then
|
||||
for key, ev in pairs(event) do
|
||||
for ev, func in pairs(event) do
|
||||
-- print("[zza] Registertab CB", type(ev),ev)
|
||||
if(type(ev) == 'string' and type(func) == 'function' and not self['events'][ev]) then
|
||||
self['events'][ev] = func
|
||||
end
|
||||
self:RegisterEvent(ev)
|
||||
end
|
||||
else
|
||||
-- print("[zza] Register CB", event)
|
||||
if(event ~= 'ADDON_LOADED' and not lib['events']:IsEventRegistered(event)) then
|
||||
elseif(type(event) == 'string') then
|
||||
-- print("[zza] Register CB", type(event),event)
|
||||
if(not lib['events']:IsEventRegistered(event)) then
|
||||
lib['events']:RegisterEvent(event)
|
||||
end
|
||||
lib['RegisterCallback'](self['events'], event)
|
||||
else
|
||||
print("ign reg", type(event), event)
|
||||
end
|
||||
end
|
||||
function lib:UnregisterEvent(event)
|
||||
if(type(event) == 'table') then
|
||||
for key, ev in pairs(event) do
|
||||
self:UnregisterEvent(ev)
|
||||
end
|
||||
else
|
||||
lib['UnregisterCallback'](self['events'], event)
|
||||
end
|
||||
end
|
||||
function lib:IsClassic()
|
||||
return WOW_PROJECT_ID == WOW_PROJECT_CLASSIC
|
||||
end
|
||||
function lib:NewAddOn(addonName, addonTable)
|
||||
if(type(addonName) == 'string') then
|
||||
lib['addons'][addonName] = addonTable
|
||||
function lib:NewAddOn(specs, addonName, addonTable)
|
||||
local childName = specs['name']
|
||||
addonTable['parentName'] = addonName
|
||||
addonTable['specs'] = addonTable['specs'] or {}
|
||||
addonTable['specs'][childName] = specs
|
||||
if(type(childName) == 'string') then
|
||||
lib['addons'][childName] = addonTable
|
||||
lib:Embed(addonTable)
|
||||
if(addonTable['events']) then
|
||||
for ev, func in pairs(addonTable['events']) do
|
||||
|
@ -34,7 +58,7 @@ function lib:NewAddOn(addonName, addonTable)
|
|||
end
|
||||
end
|
||||
end
|
||||
return lib['addons'][addonName]
|
||||
return lib['addons'][childName]
|
||||
end
|
||||
end
|
||||
function lib:Embed(target)
|
||||
|
@ -52,22 +76,22 @@ lib['events']:SetScript("OnEvent", function(self, event, ...)
|
|||
local addon = lib['addons'][addonName]
|
||||
if(addon) then
|
||||
if(event == 'ADDON_LOADED') then
|
||||
if(addon['specs'] and addon['specs']['sv'] and not addon['db']) then
|
||||
print('dbname',type(addon['specs']['sv']),type(addon['specs']['sv']) == 'boolean' and addonName or addon['specs']['sv'])
|
||||
local dbname = format('%sDB', type(addon['specs']['sv']) == 'boolean' and addonName or addon['specs']['sv'])
|
||||
addon['db'] = LibStub("AceDB-3.0"):New(dbname, type(addon['specs']['defaults']) == 'table' and addon['specs']['defaults'] or {}, true)
|
||||
if(addon['specs']['ldb']) then
|
||||
local ldbobj = LibStub:GetLibrary("zzLDB"):AddLDB(addon['specs']['name'], addon['specs']['ldb'], addon['db'])
|
||||
local specs = addon:GetSpecs(addonName)
|
||||
if(specs and specs['sv'] and not addon['db']) then
|
||||
-- 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'])
|
||||
addon['db'] = LibStub("AceDB-3.0"):New(dbname, type(specs['defaults']) == 'table' and specs['defaults'] or {}, true)
|
||||
if(specs['ldb']) then
|
||||
local ldbobj = LibStub:GetLibrary("zzLDB"):AddLDB(specs['name'], specs['ldb'], addon['db'])
|
||||
end
|
||||
if(addon['specs']['cfg']) then
|
||||
if(specs['cfg']) then
|
||||
local config = LibStub:GetLibrary("zzConfig")
|
||||
addon['options'] = config:InitConfig(addon, addonName)
|
||||
addon['options']['args']['profile'] = LibStub("AceDBOptions-3.0"):GetOptionsTable(addon['db'])
|
||||
function addon:RefreshConfig()
|
||||
print('refresh')
|
||||
addon['db']['profile'][addon['specs']['name']] = {}
|
||||
if(addon['specs']['cfgRefresh']) then
|
||||
addon['specs']['cfgRefresh'](addon['db'])
|
||||
self['db']['profile'][specs['name']] = {}
|
||||
if(specs['cfgRefresh']) then
|
||||
self['specs']['cfgRefresh'](addon['db'])
|
||||
end
|
||||
end
|
||||
addon['db'].RegisterCallback(addon, "OnProfileReset", "RefreshConfig")
|
||||
|
|
|
@ -33,13 +33,13 @@ local function minimapSet(pref,value)
|
|||
end
|
||||
local function getPref(pref)
|
||||
if(type(pref['handler']['GetPref']) == 'function') then
|
||||
print("use handler getpref", pref[#pref])
|
||||
-- print("use handler getpref", pref[#pref])
|
||||
return pref['handler']:GetPref(pref)
|
||||
end
|
||||
for i = 1, #pref do
|
||||
print(i, pref[i])
|
||||
end
|
||||
print("use default getpref", pref[#pref], pref['handler']['db']['profile'][pref[#pref]])
|
||||
-- for i = 1, #pref do
|
||||
-- print(i, pref[i])
|
||||
-- end
|
||||
-- print("use default getpref", pref[#pref], pref['handler']['db']['profile'][pref[#pref]])
|
||||
return pref['handler']['db']['profile'][pref[#pref-1]][pref[#pref]]
|
||||
end
|
||||
local function setPref(pref,value)
|
||||
|
|
|
@ -3,7 +3,7 @@ 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'}
|
||||
local mixins = {'AddLDB', 'GetLDB'}
|
||||
local defaults = {
|
||||
['hide'] = false,
|
||||
}
|
||||
|
@ -11,6 +11,9 @@ 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'
|
||||
|
@ -25,7 +28,7 @@ function lib:AddLDB(objname, obj, db)
|
|||
db['global']['ldbicons'] = db['global']['ldbicons'] or {}
|
||||
local sb = db['global']['ldbicons']
|
||||
sb[objname] = sb[objname] or CopyTable(defaults)
|
||||
print('reg', objname)
|
||||
-- print('reg', objname)
|
||||
ldbicon:Register(objname, ldbobj, sb[objname])
|
||||
end
|
||||
end
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
# zzLib
|
||||
|
||||
Baselibs for second gen Addons
|
||||
|
||||
#### Links
|
||||
[Releases](https://git.grml.de/rilgamon/zzLib/releases "Releases") | [Source](https://git.grml.de/rilgamon/zzLib "Source") | [Bugs&Comments](https://git.grml.de/rilgamon/zzLib/issues "Bugs&Comments") | [Donate](https://liberapay.com/bundesloser "Donate") | [Contact](https://mastodon.grml.de/@robin "Contact")
|
Loading…
Reference in New Issue