annotate ExtraActionButton.lua @ 303:86f99ec6d3e5 1.1 beta 12

TOC update 5.04
author Flick
date Wed, 14 Nov 2012 16:46:10 -0800
parents e337b39dc491
children
rev   line source
Flick@299 1 local _, ns = ...
Flick@299 2 local ReAction = ns.ReAction
Flick@299 3 local L = ReAction.L
Flick@299 4 local format = string.format
Flick@299 5
Flick@299 6 --
Flick@299 7 -- ExtraAction Button class
Flick@299 8 --
Flick@299 9 local buttonTypeID = "ExtraAction"
Flick@299 10 local Super = ReAction.Button.Action
Flick@299 11 local ExtraAction = setmetatable(
Flick@299 12 {
Flick@299 13 defaultBarConfig = {
Flick@299 14 type = buttonTypeID ,
Flick@299 15 btnWidth = 52,
Flick@299 16 btnHeight = 52,
Flick@299 17 btnRows = 1,
Flick@299 18 btnColumns = 1,
Flick@299 19 spacing = 3,
Flick@299 20 buttons = { }
Flick@299 21 },
Flick@299 22
Flick@299 23 barType = L["Special Action Button"],
Flick@299 24 buttonTypeID = buttonTypeID
Flick@299 25 },
Flick@299 26 { __index = Super } )
Flick@299 27
Flick@299 28 ReAction.Button.ExtraAction = ExtraAction
Flick@299 29 ReAction:RegisterBarType(ExtraAction)
Flick@299 30
Flick@299 31 function ExtraAction:New( config, bar, idx, idHint )
Flick@299 32 -- don't invoke the base ActionButton constructor, since it does a bunch of stuff that
Flick@299 33 -- we don't need. Instead, call the Button base constructor directly instead and
Flick@299 34 -- re-implement the bits of the ActionButton constructor that we actually need.
Flick@299 35 self = ReAction.Button.New(self, config, bar, idx, "SecureActionButtonTemplate, ActionButtonTemplate" )
Flick@299 36
Flick@299 37 self.barConfig = bar:GetConfig()
Flick@299 38
Flick@299 39 local f = self:GetFrame()
Flick@299 40 local barFrame = bar:GetFrame()
Flick@299 41
Flick@299 42 self.rangeTimer = TOOLTIP_UPDATE_TIME
Flick@299 43
Flick@299 44 self:SetActionIDPool("special-action",1)
Flick@299 45 config.actionID = self:AcquireActionID(config.actionID, idHint, true)
Flick@299 46 self.nPages = 1
Flick@299 47
Flick@299 48 -- compute the actual game action-ID from the extra bar offset page
Flick@299 49 local actionID = config.actionID + (GetExtraBarIndex() - 1)*NUM_ACTIONBAR_BUTTONS
Flick@299 50 self.actionID = actionID
Flick@299 51 f.action = actionID
Flick@299 52
Flick@299 53 -- attribute setup
Flick@299 54 f:SetAttribute("type","action")
Flick@299 55 f:SetAttribute("checkselfcast", true)
Flick@299 56 f:SetAttribute("checkfocuscast", true)
Flick@299 57 f:SetAttribute("action", actionID)
Flick@299 58 f:SetAttribute("default-action", actionID)
Flick@299 59 f:SetAttribute("bar-idx",idx)
Flick@299 60
Flick@299 61 -- non secure scripts
Flick@299 62 f:SetScript("OnEvent", function(frame, ...) self:OnEvent(...) end)
Flick@299 63 f:SetScript("OnEnter", function(frame) self:OnEnter() end)
Flick@299 64 f:SetScript("OnLeave", function(frame) self:OnLeave() end)
Flick@299 65 f:SetScript("OnAttributeChanged", function(frame, attr, value) self:OnAttributeChanged(attr, value) end)
Flick@299 66 f:SetScript("PostClick", function(frame, ...) self:PostClick(...) end)
Flick@299 67 f:SetScript("OnUpdate", function(frame, elapsed) self:OnUpdate(elapsed) end)
Flick@299 68
Flick@299 69 -- event registration
Flick@299 70 for _, evt in pairs(self.eventList) do
Flick@299 71 f:RegisterEvent(evt)
Flick@299 72 end
Flick@299 73
Flick@299 74 -- register to use the C cooldown implementation
Flick@299 75 SetActionUIButton(f, actionID, f.cooldown)
Flick@299 76
Flick@299 77 -- attach to skinner
Flick@299 78 bar:SkinButton(self)
Flick@299 79
Flick@299 80 self:Refresh()
Flick@299 81
Flick@299 82 return self
Flick@299 83 end
Flick@299 84
Flick@299 85 function ExtraAction:Destroy()
Flick@299 86 -- similarly, don't call the ActionButton destructor function, call the Button destructor function
Flick@299 87 ReAction.Button.Destroy(self)
Flick@299 88 end
Flick@299 89
Flick@299 90 function ExtraAction:SetupBar(bar)
Flick@299 91 -- again don't call the ActionButton:SetupBar method, because it does a lot of things we don't need/want.
Flick@299 92 -- however the Button base class SetupBar method does need to be called.
Flick@299 93 ReAction.Button.SetupBar(self,bar)
Flick@299 94
Flick@299 95 -- show/hide the bar based on whether we have an extrabar. Hook into the unitexists mechanism that the pet bar uses.
Flick@299 96 RegisterStateDriver(bar:GetFrame(), "unitexists", "[extrabar] show ; hide")
Flick@299 97 end
Flick@299 98
Flick@299 99 function ExtraAction:ShowGrid()
Flick@299 100 -- override: do nothing
Flick@299 101 end
Flick@299 102
Flick@299 103 function ExtraAction:ShowGridTemp( show )
Flick@299 104 -- override: do nothing
Flick@299 105 end
Flick@299 106
Flick@299 107 function ExtraAction:SetActionID()
Flick@299 108 -- override: action ID never changes
Flick@299 109 end
Flick@299 110
Flick@299 111 function ExtraAction:RefreshPages()
Flick@299 112 -- override: action ID never changes
Flick@299 113 end
Flick@299 114