45f86eff26
- unlocking works right on the petbar now
90 lines
2.0 KiB
Lua
90 lines
2.0 KiB
Lua
--[[ $Id$ ]]
|
|
local AceAddon = LibStub("AceAddon-3.0")
|
|
Bartender4 = AceAddon:NewAddon("Bartender4", "AceConsole-3.0", "AceEvent-3.0", "AceHook-3.0")
|
|
|
|
local defaults = {
|
|
profile = {
|
|
tooltip = "enabled",
|
|
buttonlock = false,
|
|
}
|
|
}
|
|
|
|
function Bartender4:OnInitialize()
|
|
self.db = LibStub("AceDB-3.0"):New("Bartender4DB", defaults)
|
|
self.db.RegisterCallback(self, "OnProfileChanged", "UpdateModuleConfigs")
|
|
self.db.RegisterCallback(self, "OnProfileCopied", "UpdateModuleConfigs")
|
|
self.db.RegisterCallback(self, "OnProfileReset", "UpdateModuleConfigs")
|
|
|
|
self:SetupOptions()
|
|
|
|
self.Locked = true
|
|
self:RegisterEvent("PLAYER_REGEN_DISABLED", "CombatLockdown")
|
|
MainMenuBarArtFrame:Hide()
|
|
MainMenuBar:Hide()
|
|
end
|
|
|
|
function Bartender4:RegisterDefaultsKey(key, subdefaults)
|
|
defaults.profile[key] = subdefaults
|
|
|
|
self.db:RegisterDefaults(defaults)
|
|
end
|
|
|
|
function Bartender4:UpdateModuleConfigs()
|
|
self:Lock()
|
|
for k,v in AceAddon:IterateModulesOfAddon(self) do
|
|
if v:IsEnabled() and type(v.ApplyConfig) == "function" then
|
|
v:ApplyConfig()
|
|
end
|
|
end
|
|
end
|
|
|
|
function Bartender4:CombatLockdown()
|
|
self:Lock()
|
|
LibStub("AceConfigDialog-3.0"):Close("Bartender4")
|
|
end
|
|
|
|
function Bartender4:ToggleLock()
|
|
if self.Locked then
|
|
self:Unlock()
|
|
else
|
|
self:Lock()
|
|
end
|
|
end
|
|
|
|
function Bartender4:Unlock()
|
|
if self.Locked then
|
|
self.Locked = false
|
|
Bartender4.Bar:ForAll("Unlock")
|
|
end
|
|
end
|
|
|
|
function Bartender4:Lock()
|
|
if not self.Locked then
|
|
self.Locked = true
|
|
Bartender4.Bar:ForAll("Lock")
|
|
end
|
|
end
|
|
|
|
function Bartender4:Merge(target, source)
|
|
if not target then target = {} end
|
|
for k,v in pairs(source) do
|
|
if type(v) == "table" then
|
|
target[k] = self:Merge(target[k], v)
|
|
elseif not target[k] then
|
|
target[k] = v
|
|
end
|
|
end
|
|
return target
|
|
end
|
|
|
|
Bartender4.modulePrototype = {}
|
|
function Bartender4.modulePrototype:ToggleModule(info, value)
|
|
self.db.profile.enabled = value
|
|
if value and not self:IsEnabled() then
|
|
self:Enable()
|
|
elseif not value and self:IsEnabled() then
|
|
self:Disable()
|
|
end
|
|
end
|
|
Bartender4:SetDefaultModulePrototype(Bartender4.modulePrototype)
|