Mercurial > wow > reaction
diff 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 |
line wrap: on
line diff
--- a/classes/ReBound.lua Tue Mar 20 21:20:20 2007 +0000 +++ b/classes/ReBound.lua Tue Mar 20 21:25:29 2007 +0000 @@ -1,43 +1,49 @@ --- ReBinder.lua +-- ReBound.lua -- -ReBinder = { } + +local AceEvent = AceLibrary("AceEvent-2.0") + +ReBound = { } -- initial values -ReBinder.active = false +ReBound.active = false -ReBinder.targets = { } +ReBound.targets = { } -function ReBinder:AddKeybindTarget( t ) +function ReBound:AddKeybindTarget( t ) if t then - self.targets[t] = CreateFrame("Button", nil, t, "ReBinderClickBindingTemplate") + self.targets[t] = CreateFrame("Button", nil, t, "ReBoundClickBindingTemplate") self.targets[t].keybindTarget = t:GetName() end end -function ReBinder:RemoveKeybindTarget( t ) +function ReBound:RemoveKeybindTarget( t ) if t then self.targets[t] = nil end end -function ReBinder:ShowClickBindingButtons() - for _, clickFrame in pairs(self.targets) do +function ReBound:ShowClickBindingButtons() + AceEvent:TriggerEvent("EVENT_REBOUND_KEYBINDING_MODE", true) + for tgt, clickFrame in pairs(self.targets) do clickFrame:Show() end end -function ReBinder:HideClickBindingButtons() - for _, clickFrame in pairs(self.targets) do +function ReBound:HideClickBindingButtons() + AceEvent:TriggerEvent("EVENT_REBOUND_KEYBINDING_MODE", false) + for tgt, clickFrame in pairs(self.targets) do clickFrame:Hide() end end -function ReBinder:ClearSelectedKey() +function ReBound:ClearSelectedKey() self.selectedKey = nil + SetCursor(nil) -- reset cursor to default state end -function ReBinder:ToggleEnabled() +function ReBound:ToggleEnabled() if self:IsEnabled() then self:Disable() else @@ -45,20 +51,32 @@ end end -function ReBinder:IsEnabled() - return ReBinderFrame:IsVisible() +function ReBound:IsEnabled() + return ReBoundFrame:IsVisible() end -function ReBinder:Enable() - ReBinderFrame:Show() +function ReBound:Enable() + if InCombatLockdown() then + UIErrorsFrame:AddMessage("Can't set keybindings in combat") + else + ReBoundFrame:Show() + end end -function ReBinder:Disable() - ReBinderFrame:Hide() +function ReBound:Disable() + ReBoundFrame:Hide() end -function ReBinder:HandleKeyPressed( key ) +local mouseButtonConvert = { + LeftButton = "BUTTON1", + RightButton = "BUTTON2", + MiddleButton = "BUTTON3", + Button4 = "BUTTON4", + Button5 = "BUTTON5" +} + +function ReBound:HandleKeyPressed( key ) if key == nil or key == "UNKNOWN" or key == "SHIFT" or key == "CTRL" or key == "ALT" then return end @@ -71,12 +89,16 @@ if IsAltKeyDown() then key = "ALT-"..key end - if key == "ESCAPE" or GetBindingAction(key) == "REBINDER_TOGGLEBINDINGMODE" then - ReBinderFrame:Hide() + if key == "ESCAPE" or GetBindingAction(key) == "ReBound_TOGGLEBINDINGMODE" then + ReBoundFrame:Hide() return nil, nil end - + key = mouseButtonConvert[key] or key + self.selectedKey = key + + -- change cursor to glowing hand + SetCursor("CAST_CURSOR") local keyTxt = GetBindingText(key, "KEY_") local cmd = GetBindingAction(key) @@ -97,31 +119,31 @@ end -- TODO: move to override-binding model and store data in profile -function ReBinder:BindSelectedKeyTo( btnName ) +function ReBound: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 + ReBoundFrame.statusMsg:SetText(GetBindingText(self.selectedKey, "KEY_") .. " is now bound to " .. btnName) + ReBoundFrame.selectedKey:SetText("(none)") + ReBoundFrame.currentAction:SetText("(none)") + self:ClearSelectedKey() end end -function ReBinder:ClearBinding( btnName ) +function ReBound: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") + ReBoundFrame.statusMsg:SetText("|cFFFF3333"..btnName .. " is now unbound|r") end end end -function ReBinder:UpdateCurrentTarget( btnName ) +function ReBound:UpdateCurrentTarget( btnName ) local msg = "" if btnName then msg = btnName.." is currently " @@ -132,5 +154,5 @@ msg = msg .. " not bound" end end - ReBinderFrame.statusMsg:SetText(msg) + ReBoundFrame.statusMsg:SetText(msg) end