annotate 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
rev   line source
madcatzinc@0 1 --~ Warcraft Plugin for Cyborg MMO7
madcatzinc@0 2 --~ Filename: CalbackFactory.lua
madcatzinc@0 3 --~ Description: Creates lua callbacks that can be executed from a user keycombination
madcatzinc@0 4 --~ Copyright (C) 2012 Mad Catz Inc.
madcatzinc@0 5 --~ Author: Christopher Hooks
madcatzinc@0 6
madcatzinc@0 7 --~ This program is free software; you can redistribute it and/or
madcatzinc@0 8 --~ modify it under the terms of the GNU General Public License
madcatzinc@0 9 --~ as published by the Free Software Foundation; either version 2
madcatzinc@0 10 --~ of the License, or (at your option) any later version.
madcatzinc@0 11
madcatzinc@0 12 --~ This program is distributed in the hope that it will be useful,
madcatzinc@0 13 --~ but WITHOUT ANY WARRANTY; without even the implied warranty of
madcatzinc@0 14 --~ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
madcatzinc@0 15 --~ GNU General Public License for more details.
madcatzinc@0 16
madcatzinc@0 17 --~ You should have received a copy of the GNU General Public License
madcatzinc@0 18 --~ along with this program; if not, write to the Free Software
madcatzinc@0 19 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
madcatzinc@0 20
madcatzinc@0 21 CallbackFactory = {
madcatzinc@0 22 new = function()
madcatzinc@0 23 local self = {}
madcatzinc@0 24 self.Frame = CreateFrame("Frame","CallbackFactoryFrame", UIParent);
madcatzinc@0 25 self.Callbacks = {}
madcatzinc@0 26 self.Id = 1;
madcatzinc@0 27
madcatzinc@0 28 self.AddCallback = function(fn)
madcatzinc@0 29 local name = "Button"..self.Id
madcatzinc@0 30 self.Callbacks[name] = CreateFrame("Button", name, self.Frame)
madcatzinc@0 31 self.Callbacks[name]:SetScript("OnClick", fn);
madcatzinc@0 32 self.Id = self.Id + 1;
madcatzinc@0 33 return self.Callbacks[name], self.Frame, name;
madcatzinc@0 34 end
madcatzinc@0 35
madcatzinc@0 36 self.RemoveCallback = function(name)
madcatzinc@0 37 self.Callbacks[name] = nil
madcatzinc@0 38 end
madcatzinc@0 39
madcatzinc@0 40 return self;
madcatzinc@0 41 end,
madcatzinc@0 42
madcatzinc@0 43 m_Instance = nil,
madcatzinc@0 44
madcatzinc@0 45 Instance = function()
madcatzinc@0 46 if(nil == CallbackFactory.m_Instance) then
madcatzinc@0 47 CallbackFactory.m_Instance = CallbackFactory.new();
madcatzinc@0 48 end
madcatzinc@0 49 return CallbackFactory.m_Instance;
madcatzinc@0 50 end
madcatzinc@0 51
madcatzinc@0 52 }
madcatzinc@0 53
madcatzinc@0 54
madcatzinc@0 55 GetCallback = function(callbackName)
madcatzinc@0 56 local callback = nil
madcatzinc@0 57 if("Map" == callbackName) then
madcatzinc@0 58 callback = ToggleMap;
madcatzinc@0 59 elseif("CharacterPage" == callbackName) then
madcatzinc@0 60 callback = ToggleCharacterPage;
madcatzinc@0 61 elseif("Spellbook" == callbackName) then
madcatzinc@0 62 callback = ToggleSpellbook;
madcatzinc@0 63 elseif("Macros" == callbackName) then
madcatzinc@0 64 callback = ToggleMacros;
madcatzinc@0 65 elseif("QuestLog" == callbackName) then
madcatzinc@0 66 callback = ToggleQuests;
madcatzinc@0 67 elseif("Achievement" == callbackName) then
madcatzinc@0 68 callback = ToggleAchievements;
madcatzinc@0 69 elseif("Inventory" == callbackName) then
madcatzinc@0 70 callback = ToggleBags;
madcatzinc@0 71 end;
madcatzinc@0 72 return callback;
madcatzinc@0 73 end
madcatzinc@0 74
madcatzinc@0 75
madcatzinc@0 76 ToggleMap = function()
madcatzinc@0 77 ToggleFrame(WorldMapFrame)
madcatzinc@0 78 end
madcatzinc@0 79
madcatzinc@0 80 ToggleCharacterPage = function()
madcatzinc@0 81 ToggleCharacter("PaperDollFrame")
madcatzinc@0 82 end
madcatzinc@0 83
madcatzinc@0 84 ToggleSpellbook = function()
madcatzinc@0 85 ToggleFrame(SpellBookFrame)
madcatzinc@0 86 if(SpellBookFrame:IsShown()) then
madcatzinc@0 87 SpellbookMicroButton:SetButtonState("PUSHED", 1);
madcatzinc@0 88 else
madcatzinc@0 89 SpellbookMicroButton:SetButtonState("NORMAL");
madcatzinc@0 90 end
madcatzinc@0 91
madcatzinc@0 92 end
madcatzinc@0 93
madcatzinc@0 94 ToggleMacros = function()
madcatzinc@0 95 if(MacroFrame:IsShown() and MacroFrame:IsVisible()) then
madcatzinc@0 96 HideUIPanel(MacroFrame);
madcatzinc@0 97 else
madcatzinc@0 98 ShowMacroFrame();
madcatzinc@0 99 end
madcatzinc@0 100 end
madcatzinc@0 101
madcatzinc@0 102 ToggleQuests = function()
madcatzinc@0 103 ToggleFrame(QuestLogFrame);
madcatzinc@0 104 if ( QuestLogFrame:IsShown() ) then
madcatzinc@0 105 QuestLogMicroButton:SetButtonState("PUSHED", 1);
madcatzinc@0 106 else
madcatzinc@0 107 QuestLogMicroButton:SetButtonState("NORMAL");
madcatzinc@0 108 end
madcatzinc@0 109 end
madcatzinc@0 110
madcatzinc@0 111 ToggleAchievements = function()
madcatzinc@0 112 ToggleAchievementFrame();
madcatzinc@0 113 if ( AchievementFrame and AchievementFrame:IsShown() ) then
madcatzinc@0 114 AchievementMicroButton:SetButtonState("PUSHED", 1);
madcatzinc@0 115 else
madcatzinc@0 116 if ( ( HasCompletedAnyAchievement() or IsInGuild() ) and CanShowAchievementUI() ) then
madcatzinc@0 117 AchievementMicroButton:Enable();
madcatzinc@0 118 AchievementMicroButton:SetButtonState("NORMAL");
madcatzinc@0 119 else
madcatzinc@0 120 AchievementMicroButton:Disable();
madcatzinc@0 121 end
madcatzinc@0 122 end
madcatzinc@0 123 end
madcatzinc@0 124
madcatzinc@0 125 ToggleBags = function()
madcatzinc@0 126 ToggleAllBags();
madcatzinc@0 127 end