update Bind

This commit is contained in:
Crum
2018-02-23 22:12:41 -06:00
parent ef014f0e1a
commit 54ec0d89b4
+35 -37
View File
@@ -1,4 +1,4 @@
local E, L, V, P, G = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
local AB = E:GetModule("ActionBars"); local AB = E:GetModule("ActionBars");
--Cache global variables --Cache global variables
@@ -6,7 +6,7 @@ local AB = E:GetModule("ActionBars");
local _G = _G local _G = _G
local select, tonumber, pairs, getn = select, tonumber, pairs, getn local select, tonumber, pairs, getn = select, tonumber, pairs, getn
local floor, mod = math.floor, math.mod local floor, mod = math.floor, math.mod
local find, format = string.find, string.format local find, format, upper = string.find, string.format, string.upper
--WoW API / Variables --WoW API / Variables
local hooksecurefunc = hooksecurefunc local hooksecurefunc = hooksecurefunc
local EnumerateFrames = EnumerateFrames local EnumerateFrames = EnumerateFrames
@@ -16,10 +16,9 @@ local LoadBindings, SaveBindings = LoadBindings, SaveBindings
local GetCurrentBindingSet = GetCurrentBindingSet local GetCurrentBindingSet = GetCurrentBindingSet
local SetBinding = SetBinding local SetBinding = SetBinding
local GetBindingKey = GetBindingKey local GetBindingKey = GetBindingKey
local IsAltKeyDown, IsControlKeyDown = IsAltKeyDown, IsControlKeyDown local IsAltKeyDown = IsAltKeyDown
local IsShiftKeyDown, IsModifiedClick = IsShiftKeyDown, IsModifiedClick local IsControlKeyDown = IsControlKeyDown
local InCombatLockdown = InCombatLockdown local IsShiftKeyDown = IsShiftKeyDown
local GameTooltip_ShowCompareItem = GameTooltip_ShowCompareItem
local GetMacroInfo = GetMacroInfo local GetMacroInfo = GetMacroInfo
local GameTooltip_Hide = GameTooltip_Hide local GameTooltip_Hide = GameTooltip_Hide
local CHARACTER_SPECIFIC_KEYBINDING_TOOLTIP = CHARACTER_SPECIFIC_KEYBINDING_TOOLTIP local CHARACTER_SPECIFIC_KEYBINDING_TOOLTIP = CHARACTER_SPECIFIC_KEYBINDING_TOOLTIP
@@ -80,13 +79,12 @@ function AB:BindListener(key)
if key == "MiddleButton" then key = "BUTTON3" end if key == "MiddleButton" then key = "BUTTON3" end
if find(key, "Button%d") then if find(key, "Button%d") then
key = key:upper() key = upper(key)
end end
local alt = IsAltKeyDown() and "ALT-" or "" local alt = IsAltKeyDown() and "ALT-" or ""
local ctrl = IsControlKeyDown() and "CTRL-" or "" local ctrl = IsControlKeyDown() and "CTRL-" or ""
local shift = IsShiftKeyDown() and "SHIFT-" or "" local shift = IsShiftKeyDown() and "SHIFT-" or ""
if not bind.spellmacro or bind.spellmacro == "PET" or bind.spellmacro == "SHAPESHIFT" then if not bind.spellmacro or bind.spellmacro == "PET" or bind.spellmacro == "SHAPESHIFT" then
SetBinding(alt..ctrl..shift..key, bind.button.bindstring) SetBinding(alt..ctrl..shift..key, bind.button.bindstring)
else else
@@ -98,7 +96,7 @@ function AB:BindListener(key)
end end
function AB:BindUpdate(button, spellmacro) function AB:BindUpdate(button, spellmacro)
if not bind.active or InCombatLockdown() then return end if not bind.active then return end
bind.button = button bind.button = button
bind.spellmacro = spellmacro bind.spellmacro = spellmacro
@@ -116,7 +114,7 @@ function AB:BindUpdate(button, spellmacro)
if spellmacro == "MACRO" then if spellmacro == "MACRO" then
bind.button.id = bind.button:GetID() bind.button.id = bind.button:GetID()
if floor(.5+select(2,MacroFrameTab1Text:GetTextColor())*10)/10==.8 then bind.button.id = bind.button.id + MAX_ACCOUNT_MACROS end if floor(.5 + select(2,MacroFrameTab1Text:GetTextColor()) * 10) / 10 == .8 then bind.button.id = bind.button.id + MAX_MACROS end
bind.button.name = GetMacroInfo(bind.button.id) bind.button.name = GetMacroInfo(bind.button.id)
@@ -148,21 +146,21 @@ function AB:BindUpdate(button, spellmacro)
GameTooltip:AddLine(L["Trigger"]) GameTooltip:AddLine(L["Trigger"])
GameTooltip:Show() GameTooltip:Show()
GameTooltip:SetScript("OnHide", function(tt) GameTooltip:SetScript("OnHide", function()
tt:SetOwner(bind, "ANCHOR_NONE") this:SetOwner(bind, "ANCHOR_NONE")
tt:SetPoint("BOTTOM", bind, "TOP", 0, 1) this:SetPoint("BOTTOM", bind, "TOP", 0, 1)
tt:AddLine(bind.button.name, 1, 1, 1) this:AddLine(bind.button.name, 1, 1, 1)
bind.button.bindings = {GetBindingKey(bind.button.bindstring)} bind.button.bindings = {GetBindingKey(bind.button.bindstring)}
if getn(bind.button.bindings) == 0 then if getn(bind.button.bindings) == 0 then
tt:AddLine(L["No bindings set."], .6, .6, .6) this:AddLine(L["No bindings set."], .6, .6, .6)
else else
tt:AddDoubleLine(L["Binding"], L["Key"], .6, .6, .6, .6, .6, .6) this:AddDoubleLine(L["Binding"], L["Key"], .6, .6, .6, .6, .6, .6)
for i = 1, getn(bind.button.bindings) do for i = 1, getn(bind.button.bindings) do
tt:AddDoubleLine(i, bind.button.bindings[i]) this:AddDoubleLine(i, bind.button.bindings[i])
end end
end end
tt:Show() this:Show()
tt:SetScript("OnHide", nil) this:SetScript("OnHide", nil)
end) end)
else else
bind.button.action = tonumber(button.action) bind.button.action = tonumber(button.action)
@@ -174,7 +172,7 @@ function AB:BindUpdate(button, spellmacro)
elseif bind.button.keyBoundTarget then elseif bind.button.keyBoundTarget then
bind.button.bindstring = bind.button.keyBoundTarget bind.button.bindstring = bind.button.keyBoundTarget
else else
local modact = mod(1+(bind.button.action-1),12) local modact = mod(1 + (bind.button.action - 1), 12)
if bind.button.action < 25 or bind.button.action > 72 then if bind.button.action < 25 or bind.button.action > 72 then
bind.button.bindstring = "ACTIONBUTTON"..modact bind.button.bindstring = "ACTIONBUTTON"..modact
elseif bind.button.action < 73 and bind.button.action > 60 then elseif bind.button.action < 73 and bind.button.action > 60 then
@@ -190,21 +188,21 @@ function AB:BindUpdate(button, spellmacro)
GameTooltip:AddLine(L["Trigger"]) GameTooltip:AddLine(L["Trigger"])
GameTooltip:Show() GameTooltip:Show()
GameTooltip:SetScript("OnHide", function(tt) GameTooltip:SetScript("OnHide", function()
tt:SetOwner(bind, "ANCHOR_TOP") this:SetOwner(bind, "ANCHOR_TOP")
tt:SetPoint("BOTTOM", bind, "TOP", 0, 4) this:SetPoint("BOTTOM", bind, "TOP", 0, 4)
tt:AddLine(bind.button.name, 1, 1, 1) this:AddLine(bind.button.name, 1, 1, 1)
bind.button.bindings = {GetBindingKey(bind.button.bindstring)} bind.button.bindings = {GetBindingKey(bind.button.bindstring)}
if getn(bind.button.bindings) == 0 then if getn(bind.button.bindings) == 0 then
tt:AddLine(L["No bindings set."], .6, .6, .6) this:AddLine(L["No bindings set."], .6, .6, .6)
else else
tt:AddDoubleLine(L["Binding"], L["Key"], .6, .6, .6, .6, .6, .6) this:AddDoubleLine(L["Binding"], L["Key"], .6, .6, .6, .6, .6, .6)
for i = 1, getn(bind.button.bindings) do for i = 1, getn(bind.button.bindings) do
tt:AddDoubleLine(i, bind.button.bindings[i]) this:AddDoubleLine(i, bind.button.bindings[i])
end end
end end
tt:Show() this:Show()
tt:SetScript("OnHide", nil) this:SetScript("OnHide", nil)
end) end)
end end
end end
@@ -230,15 +228,15 @@ end
function AB:RegisterMacro(addon) function AB:RegisterMacro(addon)
if addon == "Blizzard_MacroUI" then if addon == "Blizzard_MacroUI" then
for i=1, MAX_ACCOUNT_MACROS do for i = 1, MAX_MACROS do
local b = _G["MacroButton"..i] local b = _G["MacroButton"..i]
HookScript(b, "OnEnter", function(b) AB:BindUpdate(b, "MACRO") end) HookScript(b, "OnEnter", function() AB:BindUpdate(this, "MACRO") end)
end end
end end
end end
function AB:ChangeBindingProfile() function AB:ChangeBindingProfile()
if ( ElvUIBindPopupWindowCheckButton:GetChecked() ) then if ElvUIBindPopupWindowCheckButton:GetChecked() then
LoadBindings(2) LoadBindings(2)
SaveBindings(2) SaveBindings(2)
else else
@@ -258,11 +256,11 @@ function AB:LoadKeyBinder()
bind.texture:SetTexture(0, 0, 0, .25) bind.texture:SetTexture(0, 0, 0, .25)
bind:Hide() bind:Hide()
bind:SetScript("OnEnter", function(self) local db = self.button:GetParent().db if db and db.mouseover then AB:Button_OnEnter(self.button) end end) bind:SetScript("OnEnter", function() local db = this.button:GetParent().db if db and db.mouseover then AB:Button_OnEnter(this.button) end end)
bind:SetScript("OnLeave", function(self) AB:BindHide() local db = self.button:GetParent().db if db and db.mouseover then AB:Button_OnLeave(self.button) end end) bind:SetScript("OnLeave", function() AB:BindHide() local db = this.button:GetParent().db if db and db.mouseover then AB:Button_OnLeave(this.button) end end)
bind:SetScript("OnKeyUp", function(_, key) self:BindListener(key) end) bind:SetScript("OnKeyUp", function() self:BindListener(arg1) end)
bind:SetScript("OnMouseUp", function(_, key) self:BindListener(key) end) bind:SetScript("OnMouseUp", function() self:BindListener(arg1) end)
bind:SetScript("OnMouseWheel", function(_, delta) if delta>0 then self:BindListener("MOUSEWHEELUP") else self:BindListener("MOUSEWHEELDOWN") end end) bind:SetScript("OnMouseWheel", function() if arg1 > 0 then self:BindListener("MOUSEWHEELUP") else self:BindListener("MOUSEWHEELDOWN") end end)
local b = EnumerateFrames() local b = EnumerateFrames()
while b do while b do