changeset 23:3b1c0b676583

Simplified the CallbackFactory object model.
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Thu, 25 Apr 2013 01:30:36 +0000
parents 0b0f51236a88
children 6906d8ffd580
files CallbackFactory.lua CyborgMMO7.lua WowObjects.lua
diffstat 3 files changed, 69 insertions(+), 102 deletions(-) [+]
line wrap: on
line diff
--- a/CallbackFactory.lua	Thu Apr 25 01:30:31 2013 +0000
+++ b/CallbackFactory.lua	Thu Apr 25 01:30:36 2013 +0000
@@ -18,108 +18,75 @@
 --~ along with this program; if not, write to the Free Software
 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 
-CyborgMMO_CallbackFactory = {
-	new = function()
-		local self = {}
-		self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent)
-		self.Callbacks = {}
-		self.Id = 1
+------------------------------------------------------------------------------
 
-		self.AddCallback = function(fn)
-			local name = "Button"..self.Id
-			self.Callbacks[name] = CreateFrame("Button", name, self.Frame)
-			self.Callbacks[name]:SetScript("OnClick", fn)
-			self.Id = self.Id + 1
-			return self.Callbacks[name],self.Frame,name
-		end
+local CallbackFactory_methods = {}
+local CallbackFactory_mt = {__index=CallbackFactory_methods}
 
-		self.RemoveCallback = function(name)
-			self.Callbacks[name] = nil
-		end
+local function CallbackFactory()
+	local self = {}
+	self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent)
+	self.Callbacks = {}
+	self.Id = 1
 
-		self.GetCallback = function(callbackName)
-			local callback = nil
-			if callbackName == "Map" then
-				callback = self.ToggleMap
-			elseif callbackName == "CharacterPage" then
-				callback = self.ToggleCharacterPage
-			elseif callbackName == "Spellbook" then
-				callback = self.ToggleSpellbook
-			elseif callbackName == "Macros" then
-				callback = self.ToggleMacros
-			elseif callbackName == "QuestLog" then
-				callback = self.ToggleQuests
-			elseif callbackName == "Achievement" then
-				callback = self.ToggleAchievements
-			elseif callbackName == "Inventory" then
-				callback = self.ToggleBags
-			end
-			return callback
-		end
+	setmetatable(self, CallbackFactory_mt)
 
+	return self
+end
 
-		self.ToggleMap = function()
-			ToggleFrame(WorldMapFrame)
-		end
+function CallbackFactory_methods:AddCallback(fn)
+	local name = "Button"..self.Id
+	self.Callbacks[name] = CreateFrame("Button", name, self.Frame)
+	self.Callbacks[name]:SetScript("OnClick", fn)
+	self.Id = self.Id + 1
+	return self.Callbacks[name],self.Frame,name
+end
 
-		self.ToggleCharacterPage = function()
-			ToggleCharacter("PaperDollFrame")
-		end
+function CallbackFactory_methods:RemoveCallback(name)
+	self.Callbacks[name] = nil
+end
 
-		self.ToggleSpellbook = function()
-			ToggleFrame(SpellBookFrame)
-			if SpellBookFrame:IsShown() then
-				SpellbookMicroButton:SetButtonState("PUSHED", 1)
-			else
-				SpellbookMicroButton:SetButtonState("NORMAL")
-			end
-		end
+local callbacks = {}
 
-		self.ToggleMacros = function()
-			if MacroFrame:IsShown() and MacroFrame:IsVisible() then
-				HideUIPanel(MacroFrame)
-			else
-				ShowMacroFrame()
-			end
-		end
+function CallbackFactory_methods:GetCallback(name)
+	return callbacks[name]
+end
 
-		self.ToggleQuests = function()
-			ToggleFrame(QuestLogFrame)
-			if QuestLogFrame:IsShown() then
-				QuestLogMicroButton:SetButtonState("PUSHED", 1)
-			else
-				QuestLogMicroButton:SetButtonState("NORMAL")
-			end
-		end
+------------------------------------------------------------------------------
 
-		self.ToggleAchievements = function()
-			ToggleAchievementFrame()
-			if AchievementFrame and AchievementFrame:IsShown() then
-				AchievementMicroButton:SetButtonState("PUSHED", 1)
-			else
-				if (HasCompletedAnyAchievement() or IsInGuild()) and CanShowAchievementUI() then
-					AchievementMicroButton:Enable()
-					AchievementMicroButton:SetButtonState("NORMAL")
-				else
-					AchievementMicroButton:Disable()
-				end
-			end
-		end
+function callbacks.Map()
+	ToggleFrame(WorldMapFrame)
+end
 
-		self.ToggleBags = function()
-			ToggleAllBags()
-		end
-		return self
-	end,
+function callbacks.CharacterPage()
+	ToggleCharacter("PaperDollFrame")
+end
 
-	m_Instance = nil,
+function callbacks.Spellbook()
+	ToggleFrame(SpellBookFrame)
+end
 
-	Instance = function()
-		if not CyborgMMO_CallbackFactory.m_Instance then
-			CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new()
-		end
-		return CyborgMMO_CallbackFactory.m_Instance
-	end,
-}
+function callbacks.Macros()
+	if MacroFrame:IsShown() and MacroFrame:IsVisible() then
+		HideUIPanel(MacroFrame)
+	else
+		ShowMacroFrame()
+	end
+end
 
+function callbacks.QuestLog()
+	ToggleFrame(QuestLogFrame)
+end
 
+function callbacks.Achievement()
+	ToggleAchievementFrame()
+end
+
+function callbacks.Inventory()
+	ToggleAllBags()
+end
+
+------------------------------------------------------------------------------
+
+CyborgMMO_CallbackFactory = CallbackFactory()
+
--- a/CyborgMMO7.lua	Thu Apr 25 01:30:31 2013 +0000
+++ b/CyborgMMO7.lua	Thu Apr 25 01:30:36 2013 +0000
@@ -171,12 +171,12 @@
 
 
 function CyborgMMO_SetupModeCallbacks(modeNum)
-	fn = function()
+	local fn = function()
 		CyborgMMO_MouseModeChange(modeNum)
 		CyborgMMO_RatPageModel:SetMode(modeNum)
 	end
 
-	local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(fn)
+	local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(fn)
 	SetOverrideBindingClick(parentFrame, true, CyborgMMO_Mode[modeNum], name, "LeftButton")
 end
 
--- a/WowObjects.lua	Thu Apr 25 01:30:31 2013 +0000
+++ b/WowObjects.lua	Thu Apr 25 01:30:36 2013 +0000
@@ -47,7 +47,7 @@
 	end,
 
 	ClearBinding = function(key)
-		local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(CyborgMMO_WowObject.DoNothing)
+		local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(CyborgMMO_WowObject.DoNothing)
 		SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
 	end,
 
@@ -138,7 +138,7 @@
 		end
 
 		self.DoAction = function()
-			local action = CyborgMMO_CallbackFactory.Instance().GetCallback(self.CallbackName)
+			local action = CyborgMMO_CallbackFactory:GetCallback(self.CallbackName)
 			CyborgMMO_DPrint("calling callback:- "..self.CallbackName)
 			action()
 		end
@@ -168,8 +168,8 @@
 		end
 
 		self.SetBinding = function(key)
-			local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction)
-			SetOverrideBindingClick(CyborgMMO_CallbackFactory.Instance().Frame, true, key, name, "LeftButton")
+			local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(self.DoAction)
+			SetOverrideBindingClick(CyborgMMO_CallbackFactory.Frame, true, key, name, "LeftButton")
 		end
 
 		return self
@@ -207,7 +207,7 @@
 		end
 
 		self.SetBinding = function(key)
-			SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "ITEM "..self.Name)
+			SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, "ITEM "..self.Name)
 		end
 
 		return self
@@ -241,7 +241,7 @@
 		self.SetBinding = function(key)
 			CyborgMMO_DPrint("Binding to key "..key)
 			self.Key = key
-			SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, self.Key, self.Type.." "..self.Name)
+			SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, self.Key, self.Type.." "..self.Name)
 		end
 
 		return self
@@ -274,7 +274,7 @@
 
 		self.SetBinding = function(key)
 			self.Key = key
-			SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MACRO "..self.Index)
+			SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, "MACRO "..self.Index)
 		end
 
 		return self
@@ -310,7 +310,7 @@
 
 		self.SetBinding = function(key)
 			self.Key = key
-			local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction)
+			local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(self.DoAction)
 			SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
 		--	SetOverrideBinding(hiddenModeChanger, true, key, "MACRO "..self.Index)
 		end
@@ -348,7 +348,7 @@
 
 		self.SetBinding = function(key)
 			self.Key = key
-			SetOverrideBinding(CyborgMMO_CallbackFactory.Instance().Frame, true, key, "MERCHANT "..self.Index)
+			SetOverrideBinding(CyborgMMO_CallbackFactory.Frame, true, key, "MERCHANT "..self.Index)
 		end
 
 		return self
@@ -380,7 +380,7 @@
 
 		self.SetBinding = function(key)
 			self.Key = key
-			local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory.Instance().AddCallback(self.DoAction);
+			local buttonFrame,parentFrame,name = CyborgMMO_CallbackFactory:AddCallback(self.DoAction);
 			SetOverrideBindingClick(parentFrame, true, key, name, "LeftButton")
 		end