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@23: ------------------------------------------------------------------------------ madcatzinc@0: madcatzinc@23: local CallbackFactory_methods = {} madcatzinc@23: local CallbackFactory_mt = {__index=CallbackFactory_methods} madcatzinc@0: madcatzinc@23: local function CallbackFactory() madcatzinc@23: local self = {} madcatzinc@23: self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent) madcatzinc@23: self.Callbacks = {} madcatzinc@23: self.Id = 1 madcatzinc@13: madcatzinc@23: setmetatable(self, CallbackFactory_mt) madcatzinc@0: madcatzinc@23: return self madcatzinc@23: end madcatzinc@4: madcatzinc@23: function CallbackFactory_methods:AddCallback(fn) madcatzinc@23: local name = "Button"..self.Id madcatzinc@23: self.Callbacks[name] = CreateFrame("Button", name, self.Frame) madcatzinc@23: self.Callbacks[name]:SetScript("OnClick", fn) madcatzinc@23: self.Id = self.Id + 1 madcatzinc@23: return self.Callbacks[name],self.Frame,name madcatzinc@23: end madcatzinc@4: madcatzinc@23: function CallbackFactory_methods:RemoveCallback(name) madcatzinc@23: self.Callbacks[name] = nil madcatzinc@23: end madcatzinc@4: madcatzinc@23: local callbacks = {} madcatzinc@4: madcatzinc@23: function CallbackFactory_methods:GetCallback(name) madcatzinc@23: return callbacks[name] madcatzinc@23: end madcatzinc@4: madcatzinc@23: ------------------------------------------------------------------------------ madcatzinc@4: madcatzinc@23: function callbacks.Map() jerome@67: ToggleWorldMap() madcatzinc@23: end madcatzinc@4: madcatzinc@23: function callbacks.CharacterPage() madcatzinc@23: ToggleCharacter("PaperDollFrame") madcatzinc@23: end madcatzinc@0: madcatzinc@23: function callbacks.Spellbook() madcatzinc@23: ToggleFrame(SpellBookFrame) madcatzinc@23: end madcatzinc@0: madcatzinc@23: function callbacks.Macros() madcatzinc@30: if MacroFrame and MacroFrame:IsShown() and MacroFrame:IsVisible() then madcatzinc@23: HideUIPanel(MacroFrame) madcatzinc@23: else madcatzinc@23: ShowMacroFrame() madcatzinc@23: end madcatzinc@23: end madcatzinc@0: madcatzinc@23: function callbacks.QuestLog() jerome@67: ToggleQuestLog() madcatzinc@23: end madcatzinc@0: madcatzinc@23: function callbacks.Achievement() madcatzinc@23: ToggleAchievementFrame() madcatzinc@23: end madcatzinc@23: madcatzinc@23: function callbacks.Inventory() madcatzinc@23: ToggleAllBags() madcatzinc@23: end madcatzinc@23: madcatzinc@23: ------------------------------------------------------------------------------ madcatzinc@23: madcatzinc@23: CyborgMMO_CallbackFactory = CallbackFactory() madcatzinc@23: