Mercurial > wow > reaction
comparison modules/ReAction_Action/ReAction_Action.lua @ 63:768be7eb22a0
Converted several ReAction APIs to event-driven model instead of 'call-method-on-all-modules' model. Cleaned up a number of other architectural issues.
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Thu, 22 May 2008 22:02:08 +0000 |
parents | 44649a10378d |
children | 06cd74bdc7da |
comparison
equal
deleted
inserted
replaced
62:f9cdb920470a | 63:768be7eb22a0 |
---|---|
25 buttons = { } | 25 buttons = { } |
26 } | 26 } |
27 } | 27 } |
28 ) | 28 ) |
29 self.buttons = { } | 29 self.buttons = { } |
30 self.options = setmetatable({},{__mode="k"}) | |
31 | 30 |
32 ReAction:RegisterOptions(self, { | 31 ReAction:RegisterOptions(self, { |
33 [moduleID] = { | 32 [moduleID] = { |
34 type = "group", | 33 type = "group", |
35 name = L["Action Bars"], | 34 name = L["Action Bars"], |
41 set = function(info, val) module:SetHideEmptyButtons(val) end, | 40 set = function(info, val) module:SetHideEmptyButtons(val) end, |
42 } | 41 } |
43 } | 42 } |
44 } | 43 } |
45 }) | 44 }) |
45 | |
46 ReAction:RegisterBarOptionGenerator(self, "GetBarOptions") | |
47 | |
48 ReAction.RegisterCallback(self, "OnCreateBar", "OnRefreshBar") | |
49 ReAction.RegisterCallback(self, "OnDestroyBar") | |
50 ReAction.RegisterCallback(self, "OnRefreshBar") | |
51 ReAction.RegisterCallback(self, "OnEraseBar") | |
52 ReAction.RegisterCallback(self, "OnRenameBar") | |
53 ReAction.RegisterCallback(self, "OnConfigModeChanged") | |
54 | |
46 end | 55 end |
47 | 56 |
48 function module:OnEnable() | 57 function module:OnEnable() |
49 ReAction:RegisterBarType(L["Action Bar"], | 58 ReAction:RegisterBarType(L["Action Bar"], |
50 { | 59 { |
58 | 67 |
59 function module:OnDisable() | 68 function module:OnDisable() |
60 ReAction:UnregisterBarType(L["Action Bar"]) | 69 ReAction:UnregisterBarType(L["Action Bar"]) |
61 end | 70 end |
62 | 71 |
63 function module:ApplyToBar(bar) | 72 function module:OnRefreshBar(event, bar, name) |
64 self:RefreshBar(bar) | |
65 end | |
66 | |
67 function module:RefreshBar(bar) | |
68 if bar.config.type == moduleID then | 73 if bar.config.type == moduleID then |
69 if self.buttons[bar] == nil then | 74 if self.buttons[bar] == nil then |
70 self.buttons[bar] = { } | 75 self.buttons[bar] = { } |
71 end | 76 end |
72 local btns = self.buttons[bar] | 77 local btns = self.buttons[bar] |
73 local profile = self.db.profile | 78 local profile = self.db.profile |
74 local barName = bar:GetName() | 79 if profile.buttons[name] == nil then |
75 if profile.buttons[barName] == nil then | 80 profile.buttons[name] = {} |
76 profile.buttons[barName] = {} | 81 end |
77 end | 82 local btnCfg = profile.buttons[name] |
78 local btnCfg = profile.buttons[barName] | |
79 | 83 |
80 local r, c = bar:GetButtonGrid() | 84 local r, c = bar:GetButtonGrid() |
81 local n = r*c | 85 local n = r*c |
82 for i = 1, n do | 86 for i = 1, n do |
83 if btnCfg[i] == nil then | 87 if btnCfg[i] == nil then |
101 end | 105 end |
102 end | 106 end |
103 end | 107 end |
104 end | 108 end |
105 | 109 |
106 function module:RemoveFromBar(bar) | 110 function module:OnDestroyBar(event, bar, name) |
107 if self.buttons[bar] then | 111 if self.buttons[bar] then |
108 local btns = self.buttons[bar] | 112 local btns = self.buttons[bar] |
109 for _,b in pairs(btns) do | 113 for _,b in pairs(btns) do |
110 if b then | 114 if b then |
111 b:Destroy() | 115 b:Destroy() |
113 end | 117 end |
114 self.buttons[bar] = nil | 118 self.buttons[bar] = nil |
115 end | 119 end |
116 end | 120 end |
117 | 121 |
118 function module:EraseBarConfig(barName) | 122 function module:OnEraseBar(event, bar, name) |
119 self.db.profile.buttons[barName] = nil | 123 self.db.profile.buttons[name] = nil |
120 end | 124 end |
121 | 125 |
122 function module:RenameBarConfig(oldname, newname) | 126 function module:OnRenameBar(event, bar, oldname, newname) |
123 local b = self.db.profile.buttons | 127 local b = self.db.profile.buttons |
124 b[newname], b[oldname] = b[oldname], nil | 128 b[newname], b[oldname] = b[oldname], nil |
125 end | 129 end |
126 | 130 |
127 function module:SetHideEmptyButtons(hide) | 131 function module:SetHideEmptyButtons(hide) |
137 end | 141 end |
138 self.db.profile.hideEmptyButtons = hide | 142 self.db.profile.hideEmptyButtons = hide |
139 end | 143 end |
140 end | 144 end |
141 | 145 |
142 function module:ApplyConfigMode(mode,bars) | 146 function module:OnConfigModeChanged(event, mode) |
143 for _, bar in pairs(bars) do | 147 for _, bar in ReAction:IterateBars() do |
144 if bar and self.buttons[bar] then | 148 if bar and self.buttons[bar] then |
145 for _, b in pairs(self.buttons[bar]) do | 149 for _, b in pairs(self.buttons[bar]) do |
146 if b then | 150 if b then |
147 if mode then | 151 if mode then |
148 ActionButton_ShowGrid(b.frame) | 152 ActionButton_ShowGrid(b.frame) |
177 end | 181 end |
178 | 182 |
179 | 183 |
180 ---- Options ---- | 184 ---- Options ---- |
181 function module:GetBarOptions(bar) | 185 function module:GetBarOptions(bar) |
182 if not self.options[bar] then | 186 return { |
183 self.options[bar] = { | 187 type = "group", |
184 type = "group", | 188 name = L["Action Buttons"], |
185 name = L["Action Buttons"], | 189 hidden = function() return bar.config.type ~= moduleID end, |
186 hidden = function() return bar.config.type ~= moduleID end, | 190 args = { |
187 args = { | |
188 } | |
189 } | 191 } |
190 end | 192 } |
191 return self.options[bar] | |
192 end | 193 end |
193 | 194 |
194 | 195 |
195 -- use-count of action IDs | 196 -- use-count of action IDs |
196 local nActionIDs = 120 | 197 local nActionIDs = 120 |