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