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@4: CyborgMMO_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@4: madcatzinc@4: self.GetCallback = function(callbackName) madcatzinc@4: local callback = nil madcatzinc@4: if("Map" == callbackName) then madcatzinc@4: callback = self.ToggleMap; madcatzinc@4: elseif("CharacterPage" == callbackName) then madcatzinc@4: callback = self.ToggleCharacterPage; madcatzinc@4: elseif("Spellbook" == callbackName) then madcatzinc@4: callback = self.ToggleSpellbook; madcatzinc@4: elseif("Macros" == callbackName) then madcatzinc@4: callback = self.ToggleMacros; madcatzinc@4: elseif("QuestLog" == callbackName) then madcatzinc@4: callback = self.ToggleQuests; madcatzinc@4: elseif("Achievement" == callbackName) then madcatzinc@4: callback = self.ToggleAchievements; madcatzinc@4: elseif("Inventory" == callbackName) then madcatzinc@4: callback = self.ToggleBags; madcatzinc@4: end; madcatzinc@4: return callback; madcatzinc@4: end madcatzinc@0: madcatzinc@4: madcatzinc@4: self.ToggleMap = function() madcatzinc@4: ToggleFrame(WorldMapFrame) madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleCharacterPage = function() madcatzinc@4: ToggleCharacter("PaperDollFrame") madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleSpellbook = function() madcatzinc@4: ToggleFrame(SpellBookFrame) madcatzinc@4: if(SpellBookFrame:IsShown()) then madcatzinc@4: SpellbookMicroButton:SetButtonState("PUSHED", 1); madcatzinc@4: else madcatzinc@4: SpellbookMicroButton:SetButtonState("NORMAL"); madcatzinc@4: end madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleMacros = function() madcatzinc@4: if(MacroFrame:IsShown() and MacroFrame:IsVisible()) then madcatzinc@4: HideUIPanel(MacroFrame); madcatzinc@4: else madcatzinc@4: ShowMacroFrame(); madcatzinc@4: end madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleQuests = function() madcatzinc@4: ToggleFrame(QuestLogFrame); madcatzinc@4: if ( QuestLogFrame:IsShown() ) then madcatzinc@4: QuestLogMicroButton:SetButtonState("PUSHED", 1); madcatzinc@4: else madcatzinc@4: QuestLogMicroButton:SetButtonState("NORMAL"); madcatzinc@4: end madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleAchievements = function() madcatzinc@4: ToggleAchievementFrame(); madcatzinc@4: if ( AchievementFrame and AchievementFrame:IsShown() ) then madcatzinc@4: AchievementMicroButton:SetButtonState("PUSHED", 1); madcatzinc@4: else madcatzinc@4: if ( ( HasCompletedAnyAchievement() or IsInGuild() ) and CanShowAchievementUI() ) then madcatzinc@4: AchievementMicroButton:Enable(); madcatzinc@4: AchievementMicroButton:SetButtonState("NORMAL"); madcatzinc@4: else madcatzinc@4: AchievementMicroButton:Disable(); madcatzinc@4: end madcatzinc@4: end madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleBags = function() madcatzinc@4: ToggleAllBags(); madcatzinc@4: end madcatzinc@0: return self; madcatzinc@0: end, madcatzinc@0: madcatzinc@0: m_Instance = nil, madcatzinc@0: madcatzinc@0: Instance = function() madcatzinc@4: if(nil == CyborgMMO_CallbackFactory.m_Instance) then madcatzinc@4: CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new(); madcatzinc@0: end madcatzinc@4: return CyborgMMO_CallbackFactory.m_Instance; madcatzinc@0: end madcatzinc@0: madcatzinc@4: madcatzinc@0: } madcatzinc@0: madcatzinc@0: