view 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 source
--	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