Mercurial > wow > dependencyloader
diff DependencyLoader_Core/frontend.lua @ 0:9852fcd5e59e
initial import
author | mckenziemc |
---|---|
date | Tue, 30 Nov 2010 16:13:04 -0800 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/DependencyLoader_Core/frontend.lua Tue Nov 30 16:13:04 2010 -0800 @@ -0,0 +1,83 @@ +-- main.lua +-- + +local addonName, addonTable = ... + + +local DependencyLoader = LibStub("AceAddon-3.0"):NewAddon(addonName) +_G[addonName] = DependencyLoader + +local libPrint = LibStub("LibPrint-1.0") +DependencyLoader.printStream = libPrint:NewStream("DependencyLoader", "DpLdr", print) +DependencyLoader.debugStream = libPrint:NewStream("DependencyLoader", "DpLdr", "mcm") + +-- temp +DependencyLoader.classes = addonTable.classes + +function DependencyLoader:Print(...) + self.printStream:Print(...) +end + + +function DependencyLoader:Debug(...) + self.debugStream:Print(...) +end + + +function DependencyLoader:OnInitialize() + self:Debug("Initializing and enabling", addonName) + self:Enable() +end + + +function DependencyLoader:OnEnable() + self.core = addonTable.classes.Core:New() + + self:Print("Enabled", addonName) + + self:FixCurrentAddons() +end + +function DependencyLoader:OnDisable() + self:Print("Disabled", addonName) +end + + +-- TODO: move this into core? + +-- Enables any dependencies needed by the addons +-- that have already been enabled +function DependencyLoader:FixCurrentAddons() + local core = self.core + + for i=1, GetNumAddOns() do + local addon = self.core:GetAddon(i) + + if addon:IsEnabled() then + if addon:IsLoaded() then + -- TODO: it might still help to enable its embeds + else + self:Debug("Checking", addon:GetName()) + + if addonTable.classes.Core:ForceLoadAvailable() then + if core:CanForceLoadTree(addon:GetName()) then + core:ForceLoadTree(addon:GetName()) + else + print("Can't force load", addon:GetName()) + end + else + if core:CanLoDTree(addon:GetName()) then + core:PrepareLoDTree(addon:GetName()) + else + print("Couldn't load", addon:GetName(), "on demand.") + end + end + end + end + end +end + + + + + \ No newline at end of file