Mercurial > wow > reaction
view classes/ReBinder.lua @ 4:dfd829db3ad0
(none)
author | Flick <flickerstreak@gmail.com> |
---|---|
date | Tue, 20 Mar 2007 21:19:34 +0000 |
parents | ReBinder.lua@8e0ff8ae4c08 |
children |
line wrap: on
line source
-- ReBinder.lua -- ReBinder = { } -- initial values ReBinder.active = false ReBinder.targets = { } function ReBinder:AddKeybindTarget( t ) if t then self.targets[t] = CreateFrame("Button", nil, t, "ReBinderClickBindingTemplate") self.targets[t].keybindTarget = t:GetName() end end function ReBinder:RemoveKeybindTarget( t ) if t then self.targets[t] = nil end end function ReBinder:ShowClickBindingButtons() for _, clickFrame in pairs(self.targets) do clickFrame:Show() end end function ReBinder:HideClickBindingButtons() for _, clickFrame in pairs(self.targets) do clickFrame:Hide() end end function ReBinder:ClearSelectedKey() self.selectedKey = nil end function ReBinder:ToggleEnabled() if self:IsEnabled() then self:Disable() else self:Enable() end end function ReBinder:IsEnabled() return ReBinderFrame:IsVisible() end function ReBinder:Enable() ReBinderFrame:Show() end function ReBinder:Disable() ReBinderFrame:Hide() end function ReBinder:HandleKeyPressed( key ) if key == nil or key == "UNKNOWN" or key == "SHIFT" or key == "CTRL" or key == "ALT" then return end if IsShiftKeyDown() then key = "SHIFT-"..key end if IsControlKeyDown() then key = "CTRL-"..key end if IsAltKeyDown() then key = "ALT-"..key end if key == "ESCAPE" or GetBindingAction(key) == "REBINDER_TOGGLEBINDINGMODE" then ReBinderFrame:Hide() return nil, nil end self.selectedKey = key local keyTxt = GetBindingText(key, "KEY_") local cmd = GetBindingAction(key) local cmdTxt if cmd then cmdTxt = GetBindingText(cmd, "BINDING_NAME_") end -- make click-bindings look prettier local btnName if cmdTxt then btnName = string.match(cmdTxt,"CLICK (.+)\:LeftButton") btnName = btnName or string.match(cmdTxt,"CLICK (.+)\:RightButton") end return keyTxt, btnName or cmdTxt end -- TODO: move to override-binding model and store data in profile function ReBinder:BindSelectedKeyTo( btnName ) if self.selectedKey and btnName then self:ClearBinding(btnName) SetBindingClick(self.selectedKey, btnName, "LeftButton") SaveBindings(2) -- 2 = character-specific ReBinderFrame.statusMsg:SetText(GetBindingText(self.selectedKey, "KEY_") .. " is now bound to " .. btnName) ReBinderFrame.selectedKey:SetText("(none)") ReBinderFrame.currentAction:SetText("(none)") self.selectedKey = nil end end function ReBinder:ClearBinding( btnName ) if btnName then local current = GetBindingKey("CLICK "..btnName..":LeftButton") if current then SetBinding(current, nil) ReBinderFrame.statusMsg:SetText("|cFFFF3333"..btnName .. " is now unbound|r") end end end function ReBinder:UpdateCurrentTarget( btnName ) local msg = "" if btnName then msg = btnName.." is currently " local current = GetBindingKey("CLICK "..btnName..":LeftButton") if current then msg = msg .. "bound to " .. GetBindingText(current, "KEY_") else msg = msg .. " not bound" end end ReBinderFrame.statusMsg:SetText(msg) end