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