comparison CallbackFactory.lua @ 23:3b1c0b676583

Simplified the CallbackFactory object model.
author madcatzinc@35b17cf1-18cd-47ff-9ca3-31d6b526ef09
date Thu, 25 Apr 2013 01:30:36 +0000
parents 6cb9a2936580
children ea423ee3a8c1
comparison
equal deleted inserted replaced
22:0b0f51236a88 23:3b1c0b676583
16 16
17 --~ You should have received a copy of the GNU General Public License 17 --~ You should have received a copy of the GNU General Public License
18 --~ along with this program; if not, write to the Free Software 18 --~ along with this program; if not, write to the Free Software
19 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 19 --~ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
20 20
21 CyborgMMO_CallbackFactory = { 21 ------------------------------------------------------------------------------
22 new = function()
23 local self = {}
24 self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent)
25 self.Callbacks = {}
26 self.Id = 1
27 22
28 self.AddCallback = function(fn) 23 local CallbackFactory_methods = {}
29 local name = "Button"..self.Id 24 local CallbackFactory_mt = {__index=CallbackFactory_methods}
30 self.Callbacks[name] = CreateFrame("Button", name, self.Frame)
31 self.Callbacks[name]:SetScript("OnClick", fn)
32 self.Id = self.Id + 1
33 return self.Callbacks[name],self.Frame,name
34 end
35 25
36 self.RemoveCallback = function(name) 26 local function CallbackFactory()
37 self.Callbacks[name] = nil 27 local self = {}
38 end 28 self.Frame = CreateFrame("Frame", "CallbackFactoryFrame", UIParent)
29 self.Callbacks = {}
30 self.Id = 1
39 31
40 self.GetCallback = function(callbackName) 32 setmetatable(self, CallbackFactory_mt)
41 local callback = nil
42 if callbackName == "Map" then
43 callback = self.ToggleMap
44 elseif callbackName == "CharacterPage" then
45 callback = self.ToggleCharacterPage
46 elseif callbackName == "Spellbook" then
47 callback = self.ToggleSpellbook
48 elseif callbackName == "Macros" then
49 callback = self.ToggleMacros
50 elseif callbackName == "QuestLog" then
51 callback = self.ToggleQuests
52 elseif callbackName == "Achievement" then
53 callback = self.ToggleAchievements
54 elseif callbackName == "Inventory" then
55 callback = self.ToggleBags
56 end
57 return callback
58 end
59 33
34 return self
35 end
60 36
61 self.ToggleMap = function() 37 function CallbackFactory_methods:AddCallback(fn)
62 ToggleFrame(WorldMapFrame) 38 local name = "Button"..self.Id
63 end 39 self.Callbacks[name] = CreateFrame("Button", name, self.Frame)
40 self.Callbacks[name]:SetScript("OnClick", fn)
41 self.Id = self.Id + 1
42 return self.Callbacks[name],self.Frame,name
43 end
64 44
65 self.ToggleCharacterPage = function() 45 function CallbackFactory_methods:RemoveCallback(name)
66 ToggleCharacter("PaperDollFrame") 46 self.Callbacks[name] = nil
67 end 47 end
68 48
69 self.ToggleSpellbook = function() 49 local callbacks = {}
70 ToggleFrame(SpellBookFrame)
71 if SpellBookFrame:IsShown() then
72 SpellbookMicroButton:SetButtonState("PUSHED", 1)
73 else
74 SpellbookMicroButton:SetButtonState("NORMAL")
75 end
76 end
77 50
78 self.ToggleMacros = function() 51 function CallbackFactory_methods:GetCallback(name)
79 if MacroFrame:IsShown() and MacroFrame:IsVisible() then 52 return callbacks[name]
80 HideUIPanel(MacroFrame) 53 end
81 else
82 ShowMacroFrame()
83 end
84 end
85 54
86 self.ToggleQuests = function() 55 ------------------------------------------------------------------------------
87 ToggleFrame(QuestLogFrame)
88 if QuestLogFrame:IsShown() then
89 QuestLogMicroButton:SetButtonState("PUSHED", 1)
90 else
91 QuestLogMicroButton:SetButtonState("NORMAL")
92 end
93 end
94 56
95 self.ToggleAchievements = function() 57 function callbacks.Map()
96 ToggleAchievementFrame() 58 ToggleFrame(WorldMapFrame)
97 if AchievementFrame and AchievementFrame:IsShown() then 59 end
98 AchievementMicroButton:SetButtonState("PUSHED", 1)
99 else
100 if (HasCompletedAnyAchievement() or IsInGuild()) and CanShowAchievementUI() then
101 AchievementMicroButton:Enable()
102 AchievementMicroButton:SetButtonState("NORMAL")
103 else
104 AchievementMicroButton:Disable()
105 end
106 end
107 end
108 60
109 self.ToggleBags = function() 61 function callbacks.CharacterPage()
110 ToggleAllBags() 62 ToggleCharacter("PaperDollFrame")
111 end 63 end
112 return self
113 end,
114 64
115 m_Instance = nil, 65 function callbacks.Spellbook()
66 ToggleFrame(SpellBookFrame)
67 end
116 68
117 Instance = function() 69 function callbacks.Macros()
118 if not CyborgMMO_CallbackFactory.m_Instance then 70 if MacroFrame:IsShown() and MacroFrame:IsVisible() then
119 CyborgMMO_CallbackFactory.m_Instance = CyborgMMO_CallbackFactory.new() 71 HideUIPanel(MacroFrame)
120 end 72 else
121 return CyborgMMO_CallbackFactory.m_Instance 73 ShowMacroFrame()
122 end, 74 end
123 } 75 end
124 76
77 function callbacks.QuestLog()
78 ToggleFrame(QuestLogFrame)
79 end
125 80
81 function callbacks.Achievement()
82 ToggleAchievementFrame()
83 end
84
85 function callbacks.Inventory()
86 ToggleAllBags()
87 end
88
89 ------------------------------------------------------------------------------
90
91 CyborgMMO_CallbackFactory = CallbackFactory()
92