add keyBound by Tuller for key binding configuration, until there is some GUI/Button to open it, use /kb to bind buttons
This commit is contained in:
@@ -0,0 +1,79 @@
|
||||
local MacroButton = CreateFrame('Frame')
|
||||
|
||||
function MacroButton:Load()
|
||||
local i = 1
|
||||
local button
|
||||
repeat
|
||||
button = getglobal(format('MacroButton%d', i))
|
||||
if button then
|
||||
local OnEnter = button:GetScript('OnEnter')
|
||||
button:SetScript('OnEnter', function(self)
|
||||
KeyBound:Set(self)
|
||||
return OnEnter and OnEnter(self)
|
||||
end)
|
||||
|
||||
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 MacroButton:OnEnter()
|
||||
KeyBound:Set(self)
|
||||
end
|
||||
|
||||
function MacroButton:GetActionName()
|
||||
return GetMacroInfo(MacroFrame.macroBase + self:GetID())
|
||||
end
|
||||
|
||||
-- returns the keybind action of the given button
|
||||
function MacroButton:GetBindAction()
|
||||
return format('MACRO %d', MacroFrame.macroBase + self:GetID())
|
||||
end
|
||||
|
||||
-- binds the given key to the given button
|
||||
function MacroButton:SetKey(key)
|
||||
SetBindingMacro(key, MacroFrame.macroBase + self:GetID())
|
||||
end
|
||||
|
||||
-- removes all keys bound to the given button
|
||||
function MacroButton: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 MacroButton: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 MacroButton:GetHotkey()
|
||||
return KeyBound:ToShortKey(GetBindingKey(self:GetBindAction()))
|
||||
end
|
||||
|
||||
do
|
||||
MacroButton:SetScript('OnEvent', function(self, event, addon)
|
||||
if addon == 'Blizzard_MacroUI' then
|
||||
self:UnregisterAllEvents()
|
||||
self:Load()
|
||||
end
|
||||
end)
|
||||
MacroButton:RegisterEvent('ADDON_LOADED')
|
||||
end
|
||||
Reference in New Issue
Block a user