Mercurial > wow > reaction
comparison classes/ActionButton.lua @ 123:943eed2c7def
Fixes for new ActionButton implementation
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Mon, 23 Feb 2009 19:41:11 +0000 |
parents | a2d2f23137c8 |
children | 0c5017f6062d |
comparison
equal
deleted
inserted
replaced
122:a2d2f23137c8 | 123:943eed2c7def |
---|---|
153 local Super = ReAction.Button | 153 local Super = ReAction.Button |
154 local Action = setmetatable( { }, { __index = Super } ) | 154 local Action = setmetatable( { }, { __index = Super } ) |
155 ReAction.Button.Action = Action | 155 ReAction.Button.Action = Action |
156 | 156 |
157 function Action:New( idx, config, bar, idHint ) | 157 function Action:New( idx, config, bar, idHint ) |
158 self = Super.New( | 158 local name = format("ReAction_%s_Action_%d",bar:GetName(),idx) |
159 self, | 159 |
160 format("ReAction_%s_Action_%d",bar:GetName(),idx), | 160 self = Super.New(self, name, config, bar, idx, "ActionButtonTemplate, SecureActionButtonTemplate" ) |
161 config, | |
162 bar, | |
163 idx, | |
164 "ActionButtonTemplate, SecureActionButtonTemplate" ) | |
165 | 161 |
166 local f = self:GetFrame() | 162 local f = self:GetFrame() |
167 local barFrame = bar:GetFrame() | 163 local barFrame = bar:GetFrame() |
168 | 164 |
169 local frames = { } | 165 local frames = { } |
205 f:SetScript("OnLeave", function(frame) self:OnLeave() end) | 201 f:SetScript("OnLeave", function(frame) self:OnLeave() end) |
206 f:SetScript("OnAttributeChanged", function(frame, attr, value) self:OnAttributeChanged(attr, value) end) | 202 f:SetScript("OnAttributeChanged", function(frame, attr, value) self:OnAttributeChanged(attr, value) end) |
207 f:SetScript("PostClick", function(frame, ...) self:PostClick(...) end) | 203 f:SetScript("PostClick", function(frame, ...) self:PostClick(...) end) |
208 f:SetScript("OnUpdate", function(frame, elapsed) self:OnUpdate(elapsed) end) | 204 f:SetScript("OnUpdate", function(frame, elapsed) self:OnUpdate(elapsed) end) |
209 f:SetScript("OnDragStart", function(frame) self:OnDragStart() end) | 205 f:SetScript("OnDragStart", function(frame) self:OnDragStart() end) |
210 f:SetScript("OnReceiveDrag", function(frame), self:OnReceiveDrag() end) | 206 f:SetScript("OnReceiveDrag", function(frame) self:OnReceiveDrag() end) |
211 | 207 |
212 -- secure handlers | 208 -- secure handlers |
213 f:SetAttribute("_childupate", _childupdate) | 209 f:SetAttribute("_childupate", _childupdate) |
214 f:SetAttribute("_childupdate-showgrid",_childupdate_showgrid) | 210 f:SetAttribute("_childupdate-showgrid",_childupdate_showgrid) |
215 barFrame:WrapScript(f, "OnDragStart", _onDragStart) | 211 barFrame:WrapScript(f, "OnDragStart", _onDragStart) |
232 | 228 |
233 -- attach to skinner | 229 -- attach to skinner |
234 bar:SkinButton(self) | 230 bar:SkinButton(self) |
235 | 231 |
236 -- initial display | 232 -- initial display |
237 self:ShowGrid(not barFrame:GetConfig().hideEmpty) | 233 self:ShowGrid(not bar:GetConfig().hideEmpty) |
238 if ReAction:GetConfigMode() then | 234 if ReAction:GetConfigMode() then |
239 self:ShowGrid(true) | 235 self:ShowGrid(true) |
240 end | 236 end |
241 | 237 |
238 f:Show() | |
239 | |
242 self:Refresh() | 240 self:Refresh() |
241 | |
242 return self | |
243 end | 243 end |
244 | 244 |
245 function Action:Destroy() | 245 function Action:Destroy() |
246 local f = self:GetFrame() | 246 local f = self:GetFrame() |
247 | 247 |
297 self.showgridPending = false | 297 self.showgridPending = false |
298 -- check if each action has an action or not, and flag an attribute | 298 -- check if each action has an action or not, and flag an attribute |
299 -- so that the showgrid secure handler can make decisions accordingly | 299 -- so that the showgrid secure handler can make decisions accordingly |
300 local f = self:GetFrame() | 300 local f = self:GetFrame() |
301 f:SetAttribute("hasaction-"..self.config.actionID, HasAction(self.config.actionID)) | 301 f:SetAttribute("hasaction-"..self.config.actionID, HasAction(self.config.actionID)) |
302 for i = 1, self.nPages do | 302 if self.config.pageactions then |
303 f:SetAttribute("hasaction-"..self.config.pageactions[i], HasAction(self.config.pageactions[i]) | 303 for i = 1, self.nPages do |
304 f:SetAttribute("hasaction-"..self.config.pageactions[i], HasAction(self.config.pageactions[i])) | |
305 end | |
304 end | 306 end |
305 -- the following is an out-of-combat show/hide to supplement the secure | 307 -- the following is an out-of-combat show/hide to supplement the secure |
306 -- handling and clean up after it when it guesses | 308 -- handling and clean up after it when it guesses |
307 if HasAction(self.actionID) then | 309 if HasAction(self.actionID) then |
308 f:Show() | 310 f:Show() |
328 icon:Hide() | 330 icon:Hide() |
329 self.frames.cooldown:Hide() | 331 self.frames.cooldown:Hide() |
330 self.rangeTimer = nil | 332 self.rangeTimer = nil |
331 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot") | 333 f:SetNormalTexture("Interface\\Buttons\\UI-Quickslot") |
332 hotkey:SetVertexColor(0.6, 0.6, 0.6) | 334 hotkey:SetVertexColor(0.6, 0.6, 0.6) |
333 end | |
334 end | 335 end |
335 end | 336 end |
336 | 337 |
337 function Action:UpdateBorder() | 338 function Action:UpdateBorder() |
338 local action = self.actionID | 339 local action = self.actionID |
453 if IsActionInRange(self.actionID) == 0 then | 454 if IsActionInRange(self.actionID) == 0 then |
454 self.frames.icon:SetVertexColor(1.0,0.1,0.1) | 455 self.frames.icon:SetVertexColor(1.0,0.1,0.1) |
455 else | 456 else |
456 self:UpdateUsable() | 457 self:UpdateUsable() |
457 end | 458 end |
458 frame.rangeTimer = TOOLTIP_UPDATE_TIME | 459 self.rangeTimer = TOOLTIP_UPDATE_TIME |
459 end | 460 end |
460 end | 461 end |
461 end | 462 end |
462 | 463 |
463 function Action:GetActionID(page) | 464 function Action:GetActionID(page) |
524 end | 525 end |
525 self.nPages = nPages | 526 self.nPages = nPages |
526 end | 527 end |
527 end | 528 end |
528 | 529 |
529 function Action:SetupBarHeader( bar ) -- call this as a static method | 530 function Action.SetupBarHeader( bar ) -- call this as a static method |
530 local f = bar:GetFrame() | 531 local f = bar:GetFrame() |
531 local c = bar:GetConfig() | 532 local c = bar:GetConfig() |
532 f:SetAttribute("mindcontrol",c.mindcontrol) | 533 f:SetAttribute("mindcontrol",c.mindcontrol) |
533 f:SetAttribute("vehicle",c.vehicle) | 534 f:SetAttribute("vehicle",c.vehicle) |
534 f:Execute( | 535 f:Execute( |
541 f:SetAttribute("_onstate-mc", _onstate_mc) | 542 f:SetAttribute("_onstate-mc", _onstate_mc) |
542 RegisterStateDriver(f, "mc", "[target=vehicle,exists] vehicle; [bonusbar:5] mc; none") | 543 RegisterStateDriver(f, "mc", "[target=vehicle,exists] vehicle; [bonusbar:5] mc; none") |
543 | 544 |
544 f:SetAttribute("lockbuttons",c.lockButtons) | 545 f:SetAttribute("lockbuttons",c.lockButtons) |
545 f:SetAttribute("lockbuttonscombat",c.lockButtonsCombat) | 546 f:SetAttribute("lockbuttonscombat",c.lockButtonsCombat) |
547 f:Execute( | |
548 [[ | |
549 lockButtons = self:GetAttribute("lockbuttons") | |
550 lockButtonsCombat = self:GetAttribute("lockbuttonscombat") | |
551 ]]) | |
552 end | |
553 | |
554 | |
555 function Action.SetButtonLock( bar, lock, lockCombat ) -- call this as a static method | |
556 local f = bar:GetFrame() | |
557 f:SetAttribute("lockbuttons",lock) | |
558 f:SetAttribute("lockbuttonscombat",lockCombat) | |
546 f:Execute( | 559 f:Execute( |
547 [[ | 560 [[ |
548 lockButtons = self:GetAttribute("lockbuttons") | 561 lockButtons = self:GetAttribute("lockbuttons") |
549 lockButtonsCombat = self:GetAttribute("lockbuttonscombat") | 562 lockButtonsCombat = self:GetAttribute("lockbuttonscombat") |
550 ]]) | 563 ]]) |