WoWInterface SVN KeyboardAccess

[/] [trunk/] [core.lua] - Rev 13

Go to most recent revision | Compare with Previous | Blame | View Log

--[[
        ##AddOn   : KeyboardAccess 
        ##Subfile : core.lua
        ##Author  : Hati-EK
--]]
KeyboardAccess = { } --just for personal debugging issues
local KA = KeyboardAccess  -- 4b6579626f617264416363657373 = Hex-CODE for KeyboarAccess
KA.name = 'KeyboardAccess'
KA.ver = GetAddOnMetadata( KA.name, 'Version')
if KA.ver=='rwowi:revision' then KA.ver='SVN' end
KA.MODShift=false
KA.handleT = {}
local events = {}

local function toboolean(x)
        if x==1 then
                return true
        else
                return false
        end
end

local function inTable(tbl,value)
  local b = false
  for i,k in ipairs(tbl) do
    if k==value then
      return i
    end
  end
  return b
end

ReadyCheckFrame.button1 = ReadyCheckFrameYesButton
ReadyCheckFrame.button2 = ReadyCheckFrameNoButton

local allowedPopups = {
        --Invites
        "ARENA_TEAM_INVITE",
        "BFMGR_INVITED_TO_QUEUE",
        "BFMGR_INVITED_TO_ENTER",
        "PARTY_INVITE",
        "GUILD_INVITE",
        --talents
        "CONFIRM_TALENT_WIPE",
        "TALENTS_INVOLUNTARILY_RESET",
        "TALENTS_INVOLUNTARILY_RESET_PET",
        "CONFIRM_REMOVE_GLYPH",
        "CONFIRM_GLYPH_PLACEMENT",
        
        --misc
        "CONFIRM_BINDER",
        "CONFIRM_GUILD_PROMOTE",
}


local function ReadyCheckFrame_OnKeyDown(self,key)
        if ( key=='ESCAPE' ) then
                ReadyCheckFrame.button2:Click()
                ReadyCheckFrame:EnableKeyboard(0)
        elseif ( GetBindingFromClick(key) == "SCREENSHOT" ) then
                RunBinding("SCREENSHOT");
                return;
        elseif key=='LSHIFT' or key=='RSHIFT' then
                self:EnableKeyboard(0)
                KA.MODShift=true
        elseif key=='ENTER' then
                ReadyCheckFrame.button1:Click()
                ReadyCheckFrame:EnableKeyboard(0)
        end
end

local function EnableEnter()
        for _,which in ipairs(allowedPopups) do
                StaticPopupDialogs[which].enterClicksFirstButton = true
        end
        if ReadyCheckFrame:IsVisible() then
                ReadyCheckFrame:EnableKeyboard(1)
                ReadyCheckFrame:SetScript('OnKeyDown',ReadyCheckFrame_OnKeyDown)
        end
end
local function DisableEnter()
        for _,which in ipairs(allowedPopups) do
                StaticPopupDialogs[which].enterClicksFirstButton = false
        end
        if ReadyCheckFrame:GetScript('OnKeyDown') then
                ReadyCheckFrame:SetScript('OnKeyDown',nil)
        end
end



function events:READY_CHECK(initiator,timer)
        if not (UnitName('player')==initiator) and not (KA.MODShift) then
                ReadyCheckFrame:EnableKeyboard(1)
                ReadyCheckFrame:SetScript('OnKeyDown',ReadyCheckFrame_OnKeyDown)
        end
end

function events:READY_CHECK_FINISHED(...)
        --print(...)
        ReadyCheckFrame:SetScript('OnKeyDown',nil)
        ReadyCheckFrame:EnableKeyboard(0)
end

function events:MODIFIER_STATE_CHANGED(modi,state)
        print(modi,state)
        if modi=='LSHIFT' or modi=='RSHIFT' then
                KA.MODShift=toboolean(state)
                if not KA.MODShift then
                        EnableEnter()
                else
                        DisableEnter()
                end
        end
end

KA.handler = CreateFrame('Frame',KA.name.."_Handler")
KA.handler:SetScript('OnEvent',function(self,event,...)
        events[event](self, ...)
end)
for k, v in pairs(events) do
        --print('Registering',k)
        KA.handler:RegisterEvent(k); -- Register all events for which handlers have been defined
end

EnableEnter()

Go to most recent revision | Compare with Previous | Blame