comparison classes/ReBound.lua @ 5:27aeec452e7f

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