annotate 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
rev   line source
flickerstreak@2 1 -- ReBinder.lua
flickerstreak@2 2 --
flickerstreak@2 3
flickerstreak@2 4 ReBinder = { }
flickerstreak@2 5
flickerstreak@2 6 -- initial values
flickerstreak@2 7 ReBinder.active = false
flickerstreak@2 8
flickerstreak@2 9 ReBinder.targets = { }
flickerstreak@2 10
flickerstreak@2 11 function ReBinder:AddKeybindTarget( t )
flickerstreak@2 12 if t then
flickerstreak@2 13 self.targets[t] = CreateFrame("Button", nil, t, "ReBinderClickBindingTemplate")
flickerstreak@2 14 self.targets[t].keybindTarget = t:GetName()
flickerstreak@2 15 end
flickerstreak@2 16 end
flickerstreak@2 17
flickerstreak@2 18 function ReBinder:RemoveKeybindTarget( t )
flickerstreak@2 19 if t then
flickerstreak@2 20 self.targets[t] = nil
flickerstreak@2 21 end
flickerstreak@2 22 end
flickerstreak@2 23
flickerstreak@2 24 function ReBinder:ShowClickBindingButtons()
flickerstreak@2 25 for _, clickFrame in pairs(self.targets) do
flickerstreak@2 26 clickFrame:Show()
flickerstreak@2 27 end
flickerstreak@2 28 end
flickerstreak@2 29
flickerstreak@2 30 function ReBinder:HideClickBindingButtons()
flickerstreak@2 31 for _, clickFrame in pairs(self.targets) do
flickerstreak@2 32 clickFrame:Hide()
flickerstreak@2 33 end
flickerstreak@2 34 end
flickerstreak@2 35
flickerstreak@2 36 function ReBinder:ClearSelectedKey()
flickerstreak@2 37 self.selectedKey = nil
flickerstreak@2 38 end
flickerstreak@2 39
flickerstreak@2 40 function ReBinder:ToggleEnabled()
flickerstreak@2 41 if self:IsEnabled() then
flickerstreak@2 42 self:Disable()
flickerstreak@2 43 else
flickerstreak@2 44 self:Enable()
flickerstreak@2 45 end
flickerstreak@2 46 end
flickerstreak@2 47
flickerstreak@2 48 function ReBinder:IsEnabled()
flickerstreak@2 49 return ReBinderFrame:IsVisible()
flickerstreak@2 50 end
flickerstreak@2 51
flickerstreak@2 52 function ReBinder:Enable()
flickerstreak@2 53 ReBinderFrame:Show()
flickerstreak@2 54 end
flickerstreak@2 55
flickerstreak@2 56 function ReBinder:Disable()
flickerstreak@2 57 ReBinderFrame:Hide()
flickerstreak@2 58 end
flickerstreak@2 59
flickerstreak@2 60
flickerstreak@2 61 function ReBinder:HandleKeyPressed( key )
flickerstreak@2 62 if key == nil or key == "UNKNOWN" or key == "SHIFT" or key == "CTRL" or key == "ALT" then
flickerstreak@2 63 return
flickerstreak@2 64 end
flickerstreak@2 65 if IsShiftKeyDown() then
flickerstreak@2 66 key = "SHIFT-"..key
flickerstreak@2 67 end
flickerstreak@2 68 if IsControlKeyDown() then
flickerstreak@2 69 key = "CTRL-"..key
flickerstreak@2 70 end
flickerstreak@2 71 if IsAltKeyDown() then
flickerstreak@2 72 key = "ALT-"..key
flickerstreak@2 73 end
flickerstreak@2 74 if key == "ESCAPE" or GetBindingAction(key) == "REBINDER_TOGGLEBINDINGMODE" then
flickerstreak@2 75 ReBinderFrame:Hide()
flickerstreak@2 76 return nil, nil
flickerstreak@2 77 end
flickerstreak@2 78
flickerstreak@2 79 self.selectedKey = key
flickerstreak@2 80
flickerstreak@2 81 local keyTxt = GetBindingText(key, "KEY_")
flickerstreak@2 82 local cmd = GetBindingAction(key)
flickerstreak@2 83 local cmdTxt
flickerstreak@2 84
flickerstreak@2 85 if cmd then
flickerstreak@2 86 cmdTxt = GetBindingText(cmd, "BINDING_NAME_")
flickerstreak@2 87 end
flickerstreak@2 88
flickerstreak@2 89 -- make click-bindings look prettier
flickerstreak@2 90 local btnName
flickerstreak@2 91 if cmdTxt then
flickerstreak@2 92 btnName = string.match(cmdTxt,"CLICK (.+)\:LeftButton")
flickerstreak@2 93 btnName = btnName or string.match(cmdTxt,"CLICK (.+)\:RightButton")
flickerstreak@2 94 end
flickerstreak@2 95
flickerstreak@2 96 return keyTxt, btnName or cmdTxt
flickerstreak@2 97 end
flickerstreak@2 98
flickerstreak@2 99 -- TODO: move to override-binding model and store data in profile
flickerstreak@2 100 function ReBinder:BindSelectedKeyTo( btnName )
flickerstreak@2 101 if self.selectedKey and btnName then
flickerstreak@2 102 self:ClearBinding(btnName)
flickerstreak@2 103 SetBindingClick(self.selectedKey, btnName, "LeftButton")
flickerstreak@2 104 SaveBindings(2) -- 2 = character-specific
flickerstreak@2 105 ReBinderFrame.statusMsg:SetText(GetBindingText(self.selectedKey, "KEY_") .. " is now bound to " .. btnName)
flickerstreak@2 106 ReBinderFrame.selectedKey:SetText("(none)")
flickerstreak@2 107 ReBinderFrame.currentAction:SetText("(none)")
flickerstreak@2 108 self.selectedKey = nil
flickerstreak@2 109 end
flickerstreak@2 110 end
flickerstreak@2 111
flickerstreak@2 112
flickerstreak@2 113 function ReBinder:ClearBinding( btnName )
flickerstreak@2 114 if btnName then
flickerstreak@2 115 local current = GetBindingKey("CLICK "..btnName..":LeftButton")
flickerstreak@2 116 if current then
flickerstreak@2 117 SetBinding(current, nil)
flickerstreak@2 118 ReBinderFrame.statusMsg:SetText("|cFFFF3333"..btnName .. " is now unbound|r")
flickerstreak@2 119 end
flickerstreak@2 120 end
flickerstreak@2 121 end
flickerstreak@2 122
flickerstreak@2 123
flickerstreak@2 124 function ReBinder:UpdateCurrentTarget( btnName )
flickerstreak@2 125 local msg = ""
flickerstreak@2 126 if btnName then
flickerstreak@2 127 msg = btnName.." is currently "
flickerstreak@2 128 local current = GetBindingKey("CLICK "..btnName..":LeftButton")
flickerstreak@2 129 if current then
flickerstreak@2 130 msg = msg .. "bound to " .. GetBindingText(current, "KEY_")
flickerstreak@2 131 else
flickerstreak@2 132 msg = msg .. " not bound"
flickerstreak@2 133 end
flickerstreak@2 134 end
flickerstreak@2 135 ReBinderFrame.statusMsg:SetText(msg)
flickerstreak@2 136 end