comparison classes/ReBound.lua @ 7:f920db5fc6b1

version 0.3
author Flick <flickerstreak@gmail.com>
date Tue, 20 Mar 2007 21:25:29 +0000
parents 27aeec452e7f
children
comparison
equal deleted inserted replaced
6:2da5089ab7ff 7:f920db5fc6b1
1 -- ReBinder.lua 1 -- ReBound.lua
2 -- 2 --
3 3
4 ReBinder = { } 4
5 local AceEvent = AceLibrary("AceEvent-2.0")
6
7 ReBound = { }
5 8
6 -- initial values 9 -- initial values
7 ReBinder.active = false 10 ReBound.active = false
8 11
9 ReBinder.targets = { } 12 ReBound.targets = { }
10 13
11 function ReBinder:AddKeybindTarget( t ) 14 function ReBound:AddKeybindTarget( t )
12 if t then 15 if t then
13 self.targets[t] = CreateFrame("Button", nil, t, "ReBinderClickBindingTemplate") 16 self.targets[t] = CreateFrame("Button", nil, t, "ReBoundClickBindingTemplate")
14 self.targets[t].keybindTarget = t:GetName() 17 self.targets[t].keybindTarget = t:GetName()
15 end 18 end
16 end 19 end
17 20
18 function ReBinder:RemoveKeybindTarget( t ) 21 function ReBound:RemoveKeybindTarget( t )
19 if t then 22 if t then
20 self.targets[t] = nil 23 self.targets[t] = nil
21 end 24 end
22 end 25 end
23 26
24 function ReBinder:ShowClickBindingButtons() 27 function ReBound:ShowClickBindingButtons()
25 for _, clickFrame in pairs(self.targets) do 28 AceEvent:TriggerEvent("EVENT_REBOUND_KEYBINDING_MODE", true)
29 for tgt, clickFrame in pairs(self.targets) do
26 clickFrame:Show() 30 clickFrame:Show()
27 end 31 end
28 end 32 end
29 33
30 function ReBinder:HideClickBindingButtons() 34 function ReBound:HideClickBindingButtons()
31 for _, clickFrame in pairs(self.targets) do 35 AceEvent:TriggerEvent("EVENT_REBOUND_KEYBINDING_MODE", false)
36 for tgt, clickFrame in pairs(self.targets) do
32 clickFrame:Hide() 37 clickFrame:Hide()
33 end 38 end
34 end 39 end
35 40
36 function ReBinder:ClearSelectedKey() 41 function ReBound:ClearSelectedKey()
37 self.selectedKey = nil 42 self.selectedKey = nil
43 SetCursor(nil) -- reset cursor to default state
38 end 44 end
39 45
40 function ReBinder:ToggleEnabled() 46 function ReBound:ToggleEnabled()
41 if self:IsEnabled() then 47 if self:IsEnabled() then
42 self:Disable() 48 self:Disable()
43 else 49 else
44 self:Enable() 50 self:Enable()
45 end 51 end
46 end 52 end
47 53
48 function ReBinder:IsEnabled() 54 function ReBound:IsEnabled()
49 return ReBinderFrame:IsVisible() 55 return ReBoundFrame:IsVisible()
50 end 56 end
51 57
52 function ReBinder:Enable() 58 function ReBound:Enable()
53 ReBinderFrame:Show() 59 if InCombatLockdown() then
60 UIErrorsFrame:AddMessage("Can't set keybindings in combat")
61 else
62 ReBoundFrame:Show()
63 end
54 end 64 end
55 65
56 function ReBinder:Disable() 66 function ReBound:Disable()
57 ReBinderFrame:Hide() 67 ReBoundFrame:Hide()
58 end 68 end
59 69
60 70
61 function ReBinder:HandleKeyPressed( key ) 71 local mouseButtonConvert = {
72 LeftButton = "BUTTON1",
73 RightButton = "BUTTON2",
74 MiddleButton = "BUTTON3",
75 Button4 = "BUTTON4",
76 Button5 = "BUTTON5"
77 }
78
79 function ReBound:HandleKeyPressed( key )
62 if key == nil or key == "UNKNOWN" or key == "SHIFT" or key == "CTRL" or key == "ALT" then 80 if key == nil or key == "UNKNOWN" or key == "SHIFT" or key == "CTRL" or key == "ALT" then
63 return 81 return
64 end 82 end
65 if IsShiftKeyDown() then 83 if IsShiftKeyDown() then
66 key = "SHIFT-"..key 84 key = "SHIFT-"..key
69 key = "CTRL-"..key 87 key = "CTRL-"..key
70 end 88 end
71 if IsAltKeyDown() then 89 if IsAltKeyDown() then
72 key = "ALT-"..key 90 key = "ALT-"..key
73 end 91 end
74 if key == "ESCAPE" or GetBindingAction(key) == "REBINDER_TOGGLEBINDINGMODE" then 92 if key == "ESCAPE" or GetBindingAction(key) == "ReBound_TOGGLEBINDINGMODE" then
75 ReBinderFrame:Hide() 93 ReBoundFrame:Hide()
76 return nil, nil 94 return nil, nil
77 end 95 end
78 96 key = mouseButtonConvert[key] or key
97
79 self.selectedKey = key 98 self.selectedKey = key
99
100 -- change cursor to glowing hand
101 SetCursor("CAST_CURSOR")
80 102
81 local keyTxt = GetBindingText(key, "KEY_") 103 local keyTxt = GetBindingText(key, "KEY_")
82 local cmd = GetBindingAction(key) 104 local cmd = GetBindingAction(key)
83 local cmdTxt 105 local cmdTxt
84 106
95 117
96 return keyTxt, btnName or cmdTxt 118 return keyTxt, btnName or cmdTxt
97 end 119 end
98 120
99 -- TODO: move to override-binding model and store data in profile 121 -- TODO: move to override-binding model and store data in profile
100 function ReBinder:BindSelectedKeyTo( btnName ) 122 function ReBound:BindSelectedKeyTo( btnName )
101 if self.selectedKey and btnName then 123 if self.selectedKey and btnName then
102 self:ClearBinding(btnName) 124 self:ClearBinding(btnName)
103 SetBindingClick(self.selectedKey, btnName, "LeftButton") 125 SetBindingClick(self.selectedKey, btnName, "LeftButton")
104 SaveBindings(2) -- 2 = character-specific 126 SaveBindings(2) -- 2 = character-specific
105 ReBinderFrame.statusMsg:SetText(GetBindingText(self.selectedKey, "KEY_") .. " is now bound to " .. btnName) 127 ReBoundFrame.statusMsg:SetText(GetBindingText(self.selectedKey, "KEY_") .. " is now bound to " .. btnName)
106 ReBinderFrame.selectedKey:SetText("(none)") 128 ReBoundFrame.selectedKey:SetText("(none)")
107 ReBinderFrame.currentAction:SetText("(none)") 129 ReBoundFrame.currentAction:SetText("(none)")
108 self.selectedKey = nil 130 self:ClearSelectedKey()
109 end 131 end
110 end 132 end
111 133
112 134
113 function ReBinder:ClearBinding( btnName ) 135 function ReBound:ClearBinding( btnName )
114 if btnName then 136 if btnName then
115 local current = GetBindingKey("CLICK "..btnName..":LeftButton") 137 local current = GetBindingKey("CLICK "..btnName..":LeftButton")
116 if current then 138 if current then
117 SetBinding(current, nil) 139 SetBinding(current, nil)
118 ReBinderFrame.statusMsg:SetText("|cFFFF3333"..btnName .. " is now unbound|r") 140 ReBoundFrame.statusMsg:SetText("|cFFFF3333"..btnName .. " is now unbound|r")
119 end 141 end
120 end 142 end
121 end 143 end
122 144
123 145
124 function ReBinder:UpdateCurrentTarget( btnName ) 146 function ReBound:UpdateCurrentTarget( btnName )
125 local msg = "" 147 local msg = ""
126 if btnName then 148 if btnName then
127 msg = btnName.." is currently " 149 msg = btnName.." is currently "
128 local current = GetBindingKey("CLICK "..btnName..":LeftButton") 150 local current = GetBindingKey("CLICK "..btnName..":LeftButton")
129 if current then 151 if current then
130 msg = msg .. "bound to " .. GetBindingText(current, "KEY_") 152 msg = msg .. "bound to " .. GetBindingText(current, "KEY_")
131 else 153 else
132 msg = msg .. " not bound" 154 msg = msg .. " not bound"
133 end 155 end
134 end 156 end
135 ReBinderFrame.statusMsg:SetText(msg) 157 ReBoundFrame.statusMsg:SetText(msg)
136 end 158 end