Mercurial > wow > reaction
comparison modules/ReAction_PetAction/ReAction_PetAction.lua @ 102:ad49739d110d
Added feature to lock buttons (per-bar), with optional only-in-combat selector.
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Sun, 26 Oct 2008 02:26:31 +0000 |
parents | 168cae4aa8bd |
children | b2fb8f7dc780 |
comparison
equal
deleted
inserted
replaced
101:3699d7dad312 | 102:ad49739d110d |
---|---|
22 local moduleID = "PetAction" | 22 local moduleID = "PetAction" |
23 local module = ReAction:NewModule( moduleID ) | 23 local module = ReAction:NewModule( moduleID ) |
24 | 24 |
25 -- Button class declaration | 25 -- Button class declaration |
26 local Button = { } | 26 local Button = { } |
27 | |
28 -- private | |
29 local function UpdateButtonLock(bar) | |
30 local f = bar:GetFrame() | |
31 f:SetAttribute("lockbuttons",bar.config.lockButtons) | |
32 f:SetAttribute("lockbuttonscombat",bar.config.lockButtonsCombat) | |
33 f:Execute( | |
34 [[ | |
35 lockButtons = self:GetAttribute("lockbuttons") | |
36 lockButtonsCombat = self:GetAttribute("lockbuttonscombat") | |
37 ]]) | |
38 end | |
27 | 39 |
28 -- module methods | 40 -- module methods |
29 function module:OnInitialize() | 41 function module:OnInitialize() |
30 self.db = ReAction.db:RegisterNamespace( moduleID, | 42 self.db = ReAction.db:RegisterNamespace( moduleID, |
31 { | 43 { |
114 if btnCfg[i] then | 126 if btnCfg[i] then |
115 btnCfg[i] = nil | 127 btnCfg[i] = nil |
116 end | 128 end |
117 end | 129 end |
118 end | 130 end |
131 UpdateButtonLock(bar) | |
119 end | 132 end |
120 end | 133 end |
121 | 134 |
122 function module:OnDestroyBar(event, bar, name) | 135 function module:OnDestroyBar(event, bar, name) |
123 if self.buttons[bar] then | 136 if self.buttons[bar] then |
176 end | 189 end |
177 end | 190 end |
178 | 191 |
179 | 192 |
180 ---- Options ---- | 193 ---- Options ---- |
194 local Handler = { } | |
195 local meta = { __index = Handler } | |
196 | |
197 function Handler:New(bar) | |
198 return setmetatable( | |
199 { | |
200 bar = bar, | |
201 config = bar.config | |
202 }, meta) | |
203 end | |
204 | |
205 function Handler:GetLockButtons() | |
206 return LOCK_ACTIONBAR == "1" or self.config.lockButtons | |
207 end | |
208 | |
209 function Handler:SetLockButtons(info, value) | |
210 self.config.lockButtons = value | |
211 UpdateButtonLock(self.bar) | |
212 end | |
213 | |
214 function Handler:LockButtonsDisabled() | |
215 return LOCK_ACTIONBAR == "1" | |
216 end | |
217 | |
218 function Handler:GetLockButtonsCombat() | |
219 return self.config.lockButtonsCombat | |
220 end | |
221 | |
222 function Handler:SetLockButtonsCombat(info, value) | |
223 self.config.lockButtonsCombat = value | |
224 UpdateButtonLock(self.bar) | |
225 end | |
226 | |
227 function Handler:LockButtonsCombatDisabled() | |
228 return LOCK_ACTIONBAR == "1" or not self.config.lockButtons | |
229 end | |
230 | |
231 | |
181 function module:GetBarOptions(bar) | 232 function module:GetBarOptions(bar) |
182 if bar.config.type == moduleID then | 233 if bar.config.type == moduleID then |
183 return { | 234 return { |
184 type = "group", | 235 type = "group", |
185 name = L["Pet Buttons"], | 236 name = L["Pet Buttons"], |
237 handler = Handler:New(bar), | |
186 args = { | 238 args = { |
239 lockButtons = { | |
240 name = L["Lock Buttons"], | |
241 desc = L["Prevents picking up/dragging actions.|nNOTE: This setting is overridden by the global setting in Blizzard's Action Buttons tab"], | |
242 order = 2, | |
243 type = "toggle", | |
244 disabled = "LockButtonsDisabled", | |
245 get = "GetLockButtons", | |
246 set = "SetLockButtons", | |
247 }, | |
248 lockOnlyCombat = { | |
249 name = L["Only in Combat"], | |
250 desc = L["Only lock the buttons when in combat"], | |
251 order = 3, | |
252 type = "toggle", | |
253 disabled = "LockButtonsCombatDisabled", | |
254 get = "GetLockButtonsCombat", | |
255 set = "SetLockButtonsCombat", | |
256 }, | |
187 } | 257 } |
188 } | 258 } |
189 end | 259 end |
190 end | 260 end |
191 | 261 |
412 else | 482 else |
413 self:Update() | 483 self:Update() |
414 end | 484 end |
415 end) | 485 end) |
416 | 486 |
487 -- install drag wrappers to lock buttons | |
488 bar:GetFrame():WrapScript(f, "OnDragStart", | |
489 -- OnDragStart(self, button, kind, value, ...) | |
490 [[ | |
491 if lockButtons and (PlayerInCombat() or not lockButtonsCombat) and not IsModifiedClick("PICKUPACTION") then | |
492 return "clear" | |
493 end | |
494 ]]) | |
495 | |
417 KBAttach(self) | 496 KBAttach(self) |
418 | 497 |
419 self:Refresh() | 498 self:Refresh() |
420 self:SetKeybindMode(ReAction:GetKeybindMode()) | 499 self:SetKeybindMode(ReAction:GetKeybindMode()) |
421 | 500 |