76 lines
1.9 KiB
Lua
76 lines
1.9 KiB
Lua
local CastButton = {}
|
|
|
|
function CastButton:Load()
|
|
local i = 1
|
|
local button
|
|
repeat
|
|
button = getglobal('SpellButton' .. i)
|
|
if button then
|
|
button:HookScript('OnEnter', self.OnEnter)
|
|
|
|
button.GetBindAction = self.GetBindAction
|
|
button.GetActionName = self.GetActionName
|
|
button.SetKey = self.SetKey
|
|
button.GetHotkey = self.GetHotkey
|
|
button.ClearBindings = self.ClearBindings
|
|
button.GetBindings = self.GetBindings
|
|
i = i + 1
|
|
end
|
|
until not button
|
|
end
|
|
|
|
function CastButton:OnEnter()
|
|
local id = SpellBook_GetSpellID(self:GetID())
|
|
local bookType = SpellBookFrame.bookType
|
|
|
|
if not(bookType == BOOKTYPE_PET or IsPassiveSpell(id, bookType)) then
|
|
KeyBound:Set(self)
|
|
end
|
|
end
|
|
|
|
function CastButton:GetActionName()
|
|
local name, subName = GetSpellName(SpellBook_GetSpellID(self:GetID()), SpellBookFrame.bookType)
|
|
if(subName and subName ~= '') then
|
|
return format('%s(%s)', name, subName)
|
|
end
|
|
return name
|
|
end
|
|
|
|
-- returns the keybind action of the given button
|
|
function CastButton:GetBindAction()
|
|
return format('SPELL %s', self:GetActionName())
|
|
end
|
|
|
|
-- binds the given key to the given button
|
|
function CastButton:SetKey(key)
|
|
SetBindingSpell(key, self:GetActionName())
|
|
end
|
|
|
|
-- removes all keys bound to the given button
|
|
function CastButton:ClearBindings()
|
|
local binding = self:GetBindAction()
|
|
while GetBindingKey(binding) do
|
|
SetBinding(GetBindingKey(binding), nil)
|
|
end
|
|
end
|
|
|
|
-- returns a string listing all bindings of the given button
|
|
function CastButton:GetBindings()
|
|
local keys
|
|
local binding = self:GetBindAction()
|
|
for i = 1, select('#', GetBindingKey(binding)) do
|
|
local hotKey = select(i, GetBindingKey(binding))
|
|
if keys then
|
|
keys = keys .. ', ' .. GetBindingText(hotKey, 'KEY_')
|
|
else
|
|
keys = GetBindingText(hotKey, 'KEY_')
|
|
end
|
|
end
|
|
return keys
|
|
end
|
|
|
|
function CastButton:GetHotkey()
|
|
return KeyBound:ToShortKey(GetBindingKey(self:GetBindAction()))
|
|
end
|
|
|
|
CastButton:Load() |