comparison ReAction.lua @ 116:fb48811a8736

Convert to standard keybindings
author Flick <flickerstreak@gmail.com>
date Fri, 23 Jan 2009 23:44:55 +0000
parents d39cfbdde301
children a2d2f23137c8
comparison
equal deleted inserted replaced
115:af0172ed7037 116:fb48811a8736
55 local L = LibStub("AceLocale-3.0"):GetLocale("ReAction") 55 local L = LibStub("AceLocale-3.0"):GetLocale("ReAction")
56 ReAction.L = L 56 ReAction.L = L
57 57
58 ------ PRIVATE ------ 58 ------ PRIVATE ------
59 local weak = {__mode="k"} 59 local weak = {__mode="k"}
60 local private = { 60 local private = { }
61 allKB = setmetatable({}, weak),
62 kbHooked = setmetatable({}, weak),
63 }
64 local bars = {} 61 local bars = {}
65 local defaultBarConfig = {} 62 local defaultBarConfig = {}
66 local barOptionGenerators = { } 63 local barOptionGenerators = { }
67 local options = { 64 local options = {
68 type = "group", 65 type = "group",
84 name = L["Unlock Bars"], 81 name = L["Unlock Bars"],
85 desc = L["Unlock bars for dragging and resizing with the mouse"], 82 desc = L["Unlock bars for dragging and resizing with the mouse"],
86 handler = ReAction, 83 handler = ReAction,
87 get = "GetConfigMode", 84 get = "GetConfigMode",
88 set = function(info, value) ReAction:SetConfigMode(value) end, 85 set = function(info, value) ReAction:SetConfigMode(value) end,
86 width = "double",
89 disabled = InCombatLockdown, 87 disabled = InCombatLockdown,
90 order = 1 88 order = 1
89 },
90 skipProfileWarning = {
91 type = "toggle",
92 name = L["Skip profile keybind warning"],
93 desc = L["Don't show a warning about updating keybinds when switching profiles"],
94 get = function() return ReAction.db.global.skipKeybindWarning end,
95 set = function(info, value) ReAction.db.global.skipKeybindWarning = value end,
96 width = "double",
97 order = 2,
91 }, 98 },
92 }, 99 },
93 plugins = { }, 100 plugins = { },
94 order = 2, 101 order = 2,
95 }, 102 },
105 }, 112 },
106 plugins = { } 113 plugins = { }
107 } 114 }
108 ReAction.options = options 115 ReAction.options = options
109 116
110 local SelectBar, DestroyBar, InitializeBars, TearDownBars, DeepCopy, CallModuleMethod, SlashHandler, KBAttach 117 -- insert an entry into the WoW static popup dialogs list
118 StaticPopupDialogs["REACTION_KB_WARN"] = {
119 text = L["ReAction profile changed: check your keybinds, they may need to be updated."],
120 button1 = L["OK"],
121 hideOnEscape = true,
122 enterClicksFirstButton = true,
123 timeout = 0,
124 showAlert = true,
125 whileDead = true,
126 }
127
128 local SelectBar, DestroyBar, InitializeBars, TearDownBars, DeepCopy, CallModuleMethod, SlashHandler
111 do 129 do
112 local pcall = pcall 130 local pcall = pcall
113 local geterrorhandler = geterrorhandler 131 local geterrorhandler = geterrorhandler
114 local self = ReAction 132 local self = ReAction
115 local inited = false 133 local inited = false
116
117 local function kb_onEnter( self )
118 if ReAction:GetKeybindMode() then
119 KB:Set(self)
120 end
121 end
122 134
123 function SelectBar(x) 135 function SelectBar(x)
124 local bar, name 136 local bar, name
125 if type(x) == "string" then 137 if type(x) == "string" then
126 name = x 138 name = x
210 self:Print("/rxn config") 222 self:Print("/rxn config")
211 self:Print("/rxn edit") 223 self:Print("/rxn edit")
212 self:Print("/rxn lock") 224 self:Print("/rxn lock")
213 self:Print("/rxn unlock") 225 self:Print("/rxn unlock")
214 self:Print("/rxn kb") 226 self:Print("/rxn kb")
215 end
216 end
217
218 function KBAttach( frame )
219 if not private.kbHooked[frame] then
220 -- avoid taint, particularly with SecureAnchorEnterTemplate
221 -- don't hook scripts multiple times, there isn't any unhook!
222 frame:HookScript("OnEnter",kb_onEnter)
223 private.kbHooked[frame] = true
224 end 227 end
225 end 228 end
226 229
227 end 230 end
228 231
261 end 264 end
262 265
263 function ReAction:OnProfileChanged() 266 function ReAction:OnProfileChanged()
264 TearDownBars() 267 TearDownBars()
265 InitializeBars() 268 InitializeBars()
269 self:PopKeybindWarning()
266 end 270 end
267 271
268 function ReAction:PLAYER_REGEN_DISABLED() 272 function ReAction:PLAYER_REGEN_DISABLED()
269 if private.configMode == true then 273 if private.configMode == true then
270 self:UserError(L["ReAction config mode disabled during combat."]) 274 self:UserError(L["ReAction config mode disabled during combat."])
499 end 503 end
500 504
501 function ReAction:SetKeybindMode( mode ) 505 function ReAction:SetKeybindMode( mode )
502 if mode ~= private.kbMode then 506 if mode ~= private.kbMode then
503 if mode then 507 if mode then
504 for f in pairs(private.allKB) do
505 KBAttach(f)
506 end
507 KB:Activate() 508 KB:Activate()
508 else 509 else
509 KB:Deactivate() 510 KB:Deactivate()
510 end 511 end
511 private.kbMode = KB:IsShown() or false 512 private.kbMode = KB:IsShown() or false
514 515
515 function ReAction:GetKeybindMode( mode ) 516 function ReAction:GetKeybindMode( mode )
516 return private.kbMode 517 return private.kbMode
517 end 518 end
518 519
519 function ReAction:RegisterKeybindFrame( f ) 520 function ReAction:PopKeybindWarning()
520 private.allKB[f] = true 521 if not self.db.global.skipKeybindWarning then
521 if private.kbMode then 522 StaticPopup_Show("REACTION_KB_WARN")
522 KBAttach(f) 523 end
523 end 524 end
524 end
525
526 function ReAction:FreeOverrideHotkey( key )
527 for f in pairs(private.allKB) do
528 if f.GetBindings then
529 for i = 1, select('#', f:GetBindings()) do
530 if select(i, f:GetBindings()) == key then
531 if f.FreeKey then
532 return f:FreeKey(key)
533 else
534 local action = f.GetActionName and f:GetActionName() or f:GetName()
535 SetOverrideBinding(f, false, key, nil)
536 return action
537 end
538 end
539 end
540 end
541 end
542 end