madcatzinc@13: --~ 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@13: self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent) madcatzinc@0: self.Callbacks = {} madcatzinc@13: 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@13: self.Callbacks[name]:SetScript("OnClick", fn) madcatzinc@13: self.Id = self.Id + 1 madcatzinc@13: 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@13: madcatzinc@4: self.GetCallback = function(callbackName) madcatzinc@4: local callback = nil madcatzinc@13: if callbackName == "Map" then madcatzinc@13: callback = self.ToggleMap madcatzinc@13: elseif callbackName == "CharacterPage" then madcatzinc@13: callback = self.ToggleCharacterPage madcatzinc@13: elseif callbackName == "Spellbook" then madcatzinc@13: callback = self.ToggleSpellbook madcatzinc@13: elseif callbackName == "Macros" then madcatzinc@13: callback = self.ToggleMacros madcatzinc@13: elseif callbackName == "QuestLog" then madcatzinc@13: callback = self.ToggleQuests madcatzinc@13: elseif callbackName == "Achievement" then madcatzinc@13: callback = self.ToggleAchievements madcatzinc@13: elseif callbackName == "Inventory" then madcatzinc@13: callback = self.ToggleBags madcatzinc@13: end madcatzinc@13: 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@13: if SpellBookFrame:IsShown() then madcatzinc@13: SpellbookMicroButton:SetButtonState("PUSHED", 1) madcatzinc@4: else madcatzinc@13: SpellbookMicroButton:SetButtonState("NORMAL") madcatzinc@4: end madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleMacros = function() madcatzinc@13: if MacroFrame:IsShown() and MacroFrame:IsVisible() then madcatzinc@13: HideUIPanel(MacroFrame) madcatzinc@4: else madcatzinc@13: ShowMacroFrame() madcatzinc@4: end madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleQuests = function() madcatzinc@13: ToggleFrame(QuestLogFrame) madcatzinc@13: if QuestLogFrame:IsShown() then madcatzinc@13: QuestLogMicroButton:SetButtonState("PUSHED", 1) madcatzinc@4: else madcatzinc@13: QuestLogMicroButton:SetButtonState("NORMAL") madcatzinc@4: end madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleAchievements = function() madcatzinc@13: ToggleAchievementFrame() madcatzinc@13: if AchievementFrame and AchievementFrame:IsShown() then madcatzinc@13: AchievementMicroButton:SetButtonState("PUSHED", 1) madcatzinc@4: else madcatzinc@13: if (HasCompletedAnyAchievement() or IsInGuild()) and CanShowAchievementUI() then madcatzinc@13: AchievementMicroButton:Enable() madcatzinc@13: AchievementMicroButton:SetButtonState("NORMAL") madcatzinc@4: else madcatzinc@13: AchievementMicroButton:Disable() madcatzinc@4: end madcatzinc@4: end madcatzinc@4: end madcatzinc@4: madcatzinc@4: self.ToggleBags = function() madcatzinc@13: ToggleAllBags() madcatzinc@4: end madcatzinc@13: return self madcatzinc@0: end, madcatzinc@0: madcatzinc@0: m_Instance = nil, madcatzinc@0: madcatzinc@0: Instance = function() madcatzinc@13: if not CyborgMMO_CallbackFactory.m_Instance then madcatzinc@13: CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new() madcatzinc@0: end madcatzinc@13: return CyborgMMO_CallbackFactory.m_Instance madcatzinc@13: end, madcatzinc@0: } madcatzinc@0: madcatzinc@0: