diff CallbackFactory.lua @ 0:bf9220814fb5

The first version of the Cyborg MMO7 addon for warcraft
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Tue, 24 Jan 2012 17:14:21 +0000
parents
children d186f8cd5000
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/CallbackFactory.lua	Tue Jan 24 17:14:21 2012 +0000
@@ -0,0 +1,127 @@
+--~ Warcraft Plugin for Cyborg MMO7 
+--~ Filename: CalbackFactory.lua
+--~ Description: Creates lua callbacks that can be executed from a user keycombination
+--~ Copyright (C) 2012 Mad Catz Inc.
+--~ Author: Christopher Hooks
+
+--~ This program is free software; you can redistribute it and/or
+--~ modify it under the terms of the GNU General Public License
+--~ as published by the Free Software Foundation; either version 2
+--~ of the License, or (at your option) any later version.
+
+--~ This program is distributed in the hope that it will be useful,
+--~ but WITHOUT ANY WARRANTY; without even the implied warranty of
+--~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+--~ GNU General Public License for more details.
+
+--~ You should have received a copy of the GNU General Public License
+--~ along with this program; if not, write to the Free Software
+--~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+
+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
+
+		self.RemoveCallback = function(name)
+			self.Callbacks[name] = nil
+		end
+
+		return self;
+	end,
+
+	m_Instance = nil,
+
+	Instance = function()
+		if(nil == CallbackFactory.m_Instance) then
+			CallbackFactory.m_Instance = CallbackFactory.new();
+		end
+		return CallbackFactory.m_Instance;
+	end
+
+}
+
+
+GetCallback = function(callbackName)
+	local callback = nil
+	if("Map" == callbackName) then
+		callback = ToggleMap;
+	elseif("CharacterPage" == callbackName) then
+		callback = ToggleCharacterPage;
+	elseif("Spellbook" == callbackName) then
+		callback = ToggleSpellbook;
+	elseif("Macros" == callbackName) then
+		callback = ToggleMacros;
+	elseif("QuestLog" == callbackName) then
+		callback = ToggleQuests;
+	elseif("Achievement" == callbackName) then
+		callback = ToggleAchievements;
+	elseif("Inventory" == callbackName) then
+		callback = ToggleBags; 
+	end;
+	return callback;
+end
+
+
+ToggleMap = function()
+	ToggleFrame(WorldMapFrame)
+end
+
+ToggleCharacterPage = function()
+	ToggleCharacter("PaperDollFrame")
+end
+
+ToggleSpellbook = function()
+	ToggleFrame(SpellBookFrame)
+	if(SpellBookFrame:IsShown()) then
+		SpellbookMicroButton:SetButtonState("PUSHED", 1);
+	else
+		SpellbookMicroButton:SetButtonState("NORMAL");
+	end
+
+end
+
+ToggleMacros = function()
+	if(MacroFrame:IsShown() and MacroFrame:IsVisible()) then
+		HideUIPanel(MacroFrame);
+	else
+		ShowMacroFrame();
+	end
+end
+
+ToggleQuests = function()
+	ToggleFrame(QuestLogFrame);
+	if ( QuestLogFrame:IsShown() ) then
+		QuestLogMicroButton:SetButtonState("PUSHED", 1);
+	else
+		QuestLogMicroButton:SetButtonState("NORMAL");
+	end
+end
+
+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
+
+ToggleBags = function()
+	ToggleAllBags();
+end
\ No newline at end of file