annotate DependencyLoader_Core/frontend.lua @ 0:9852fcd5e59e

initial import
author mckenziemc
date Tue, 30 Nov 2010 16:13:04 -0800
parents
children
rev   line source
mckenziemc@0 1 -- main.lua
mckenziemc@0 2 --
mckenziemc@0 3
mckenziemc@0 4 local addonName, addonTable = ...
mckenziemc@0 5
mckenziemc@0 6
mckenziemc@0 7 local DependencyLoader = LibStub("AceAddon-3.0"):NewAddon(addonName)
mckenziemc@0 8 _G[addonName] = DependencyLoader
mckenziemc@0 9
mckenziemc@0 10 local libPrint = LibStub("LibPrint-1.0")
mckenziemc@0 11 DependencyLoader.printStream = libPrint:NewStream("DependencyLoader", "DpLdr", print)
mckenziemc@0 12 DependencyLoader.debugStream = libPrint:NewStream("DependencyLoader", "DpLdr", "mcm")
mckenziemc@0 13
mckenziemc@0 14 -- temp
mckenziemc@0 15 DependencyLoader.classes = addonTable.classes
mckenziemc@0 16
mckenziemc@0 17 function DependencyLoader:Print(...)
mckenziemc@0 18 self.printStream:Print(...)
mckenziemc@0 19 end
mckenziemc@0 20
mckenziemc@0 21
mckenziemc@0 22 function DependencyLoader:Debug(...)
mckenziemc@0 23 self.debugStream:Print(...)
mckenziemc@0 24 end
mckenziemc@0 25
mckenziemc@0 26
mckenziemc@0 27 function DependencyLoader:OnInitialize()
mckenziemc@0 28 self:Debug("Initializing and enabling", addonName)
mckenziemc@0 29 self:Enable()
mckenziemc@0 30 end
mckenziemc@0 31
mckenziemc@0 32
mckenziemc@0 33 function DependencyLoader:OnEnable()
mckenziemc@0 34 self.core = addonTable.classes.Core:New()
mckenziemc@0 35
mckenziemc@0 36 self:Print("Enabled", addonName)
mckenziemc@0 37
mckenziemc@0 38 self:FixCurrentAddons()
mckenziemc@0 39 end
mckenziemc@0 40
mckenziemc@0 41 function DependencyLoader:OnDisable()
mckenziemc@0 42 self:Print("Disabled", addonName)
mckenziemc@0 43 end
mckenziemc@0 44
mckenziemc@0 45
mckenziemc@0 46 -- TODO: move this into core?
mckenziemc@0 47
mckenziemc@0 48 -- Enables any dependencies needed by the addons
mckenziemc@0 49 -- that have already been enabled
mckenziemc@0 50 function DependencyLoader:FixCurrentAddons()
mckenziemc@0 51 local core = self.core
mckenziemc@0 52
mckenziemc@0 53 for i=1, GetNumAddOns() do
mckenziemc@0 54 local addon = self.core:GetAddon(i)
mckenziemc@0 55
mckenziemc@0 56 if addon:IsEnabled() then
mckenziemc@0 57 if addon:IsLoaded() then
mckenziemc@0 58 -- TODO: it might still help to enable its embeds
mckenziemc@0 59 else
mckenziemc@0 60 self:Debug("Checking", addon:GetName())
mckenziemc@0 61
mckenziemc@0 62 if addonTable.classes.Core:ForceLoadAvailable() then
mckenziemc@0 63 if core:CanForceLoadTree(addon:GetName()) then
mckenziemc@0 64 core:ForceLoadTree(addon:GetName())
mckenziemc@0 65 else
mckenziemc@0 66 print("Can't force load", addon:GetName())
mckenziemc@0 67 end
mckenziemc@0 68 else
mckenziemc@0 69 if core:CanLoDTree(addon:GetName()) then
mckenziemc@0 70 core:PrepareLoDTree(addon:GetName())
mckenziemc@0 71 else
mckenziemc@0 72 print("Couldn't load", addon:GetName(), "on demand.")
mckenziemc@0 73 end
mckenziemc@0 74 end
mckenziemc@0 75 end
mckenziemc@0 76 end
mckenziemc@0 77 end
mckenziemc@0 78 end
mckenziemc@0 79
mckenziemc@0 80
mckenziemc@0 81
mckenziemc@0 82
mckenziemc@0 83