madcatzinc@0: --~ Warcraft Plugin for Cyborg MMO7 madcatzinc@0: --~ Filename: CalbackFactory.lua madcatzinc@0: --~ Description: Creates lua callbacks that can be executed from a user keycombination madcatzinc@0: --~ Copyright (C) 2012 Mad Catz Inc. madcatzinc@0: --~ Author: Christopher Hooks madcatzinc@0: madcatzinc@0: --~ This program is free software; you can redistribute it and/or madcatzinc@0: --~ modify it under the terms of the GNU General Public License madcatzinc@0: --~ as published by the Free Software Foundation; either version 2 madcatzinc@0: --~ of the License, or (at your option) any later version. madcatzinc@0: madcatzinc@0: --~ This program is distributed in the hope that it will be useful, madcatzinc@0: --~ but WITHOUT ANY WARRANTY; without even the implied warranty of madcatzinc@0: --~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the madcatzinc@0: --~ GNU General Public License for more details. madcatzinc@0: madcatzinc@0: --~ You should have received a copy of the GNU General Public License madcatzinc@0: --~ along with this program; if not, write to the Free Software madcatzinc@0: --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. madcatzinc@0: madcatzinc@0: CallbackFactory = { madcatzinc@0: new = function() madcatzinc@0: local self = {} madcatzinc@0: self.Frame = CreateFrame("Frame","CallbackFactoryFrame", UIParent); madcatzinc@0: self.Callbacks = {} madcatzinc@0: self.Id = 1; madcatzinc@0: madcatzinc@0: self.AddCallback = function(fn) madcatzinc@0: local name = "Button"..self.Id madcatzinc@0: self.Callbacks[name] = CreateFrame("Button", name, self.Frame) madcatzinc@0: self.Callbacks[name]:SetScript("OnClick", fn); madcatzinc@0: self.Id = self.Id + 1; madcatzinc@0: return self.Callbacks[name], self.Frame, name; madcatzinc@0: end madcatzinc@0: madcatzinc@0: self.RemoveCallback = function(name) madcatzinc@0: self.Callbacks[name] = nil madcatzinc@0: end madcatzinc@0: madcatzinc@0: return self; madcatzinc@0: end, madcatzinc@0: madcatzinc@0: m_Instance = nil, madcatzinc@0: madcatzinc@0: Instance = function() madcatzinc@0: if(nil == CallbackFactory.m_Instance) then madcatzinc@0: CallbackFactory.m_Instance = CallbackFactory.new(); madcatzinc@0: end madcatzinc@0: return CallbackFactory.m_Instance; madcatzinc@0: end madcatzinc@0: madcatzinc@0: } madcatzinc@0: madcatzinc@0: madcatzinc@0: GetCallback = function(callbackName) madcatzinc@0: local callback = nil madcatzinc@0: if("Map" == callbackName) then madcatzinc@0: callback = ToggleMap; madcatzinc@0: elseif("CharacterPage" == callbackName) then madcatzinc@0: callback = ToggleCharacterPage; madcatzinc@0: elseif("Spellbook" == callbackName) then madcatzinc@0: callback = ToggleSpellbook; madcatzinc@0: elseif("Macros" == callbackName) then madcatzinc@0: callback = ToggleMacros; madcatzinc@0: elseif("QuestLog" == callbackName) then madcatzinc@0: callback = ToggleQuests; madcatzinc@0: elseif("Achievement" == callbackName) then madcatzinc@0: callback = ToggleAchievements; madcatzinc@0: elseif("Inventory" == callbackName) then madcatzinc@0: callback = ToggleBags; madcatzinc@0: end; madcatzinc@0: return callback; madcatzinc@0: end madcatzinc@0: madcatzinc@0: madcatzinc@0: ToggleMap = function() madcatzinc@0: ToggleFrame(WorldMapFrame) madcatzinc@0: end madcatzinc@0: madcatzinc@0: ToggleCharacterPage = function() madcatzinc@0: ToggleCharacter("PaperDollFrame") madcatzinc@0: end madcatzinc@0: madcatzinc@0: ToggleSpellbook = function() madcatzinc@0: ToggleFrame(SpellBookFrame) madcatzinc@0: if(SpellBookFrame:IsShown()) then madcatzinc@0: SpellbookMicroButton:SetButtonState("PUSHED", 1); madcatzinc@0: else madcatzinc@0: SpellbookMicroButton:SetButtonState("NORMAL"); madcatzinc@0: end madcatzinc@0: madcatzinc@0: end madcatzinc@0: madcatzinc@0: ToggleMacros = function() madcatzinc@0: if(MacroFrame:IsShown() and MacroFrame:IsVisible()) then madcatzinc@0: HideUIPanel(MacroFrame); madcatzinc@0: else madcatzinc@0: ShowMacroFrame(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: ToggleQuests = function() madcatzinc@0: ToggleFrame(QuestLogFrame); madcatzinc@0: if ( QuestLogFrame:IsShown() ) then madcatzinc@0: QuestLogMicroButton:SetButtonState("PUSHED", 1); madcatzinc@0: else madcatzinc@0: QuestLogMicroButton:SetButtonState("NORMAL"); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: ToggleAchievements = function() madcatzinc@0: ToggleAchievementFrame(); madcatzinc@0: if ( AchievementFrame and AchievementFrame:IsShown() ) then madcatzinc@0: AchievementMicroButton:SetButtonState("PUSHED", 1); madcatzinc@0: else madcatzinc@0: if ( ( HasCompletedAnyAchievement() or IsInGuild() ) and CanShowAchievementUI() ) then madcatzinc@0: AchievementMicroButton:Enable(); madcatzinc@0: AchievementMicroButton:SetButtonState("NORMAL"); madcatzinc@0: else madcatzinc@0: AchievementMicroButton:Disable(); madcatzinc@0: end madcatzinc@0: end madcatzinc@0: end madcatzinc@0: madcatzinc@0: ToggleBags = function() madcatzinc@0: ToggleAllBags(); madcatzinc@0: end