comparison SkeletonKey/HotKey.lua @ 63:2409fe9b81e1

- check macro spells when considering whether a binding should be treated as a talent - clean up talent binding data when releasing/unbinding slots with a related macro/spell
author Nenue
date Thu, 08 Sep 2016 16:52:55 -0400
parents 04c23ceaf9e0
children
comparison
equal deleted inserted replaced
62:04c23ceaf9e0 63:2409fe9b81e1
111 -- requires all these arguments since non-actionbar buttons don't have all of said methods 111 -- requires all these arguments since non-actionbar buttons don't have all of said methods
112 local kprint = (DEVIAN_WORKSPACE and function(...) _G.print('HotKeyUpdate', ...) end) or function() end 112 local kprint = (DEVIAN_WORKSPACE and function(...) _G.print('HotKeyUpdate', ...) end) or function() end
113 hotkey.UpdateHotKey = function(frame, actionType, actionID, hasAction) 113 hotkey.UpdateHotKey = function(frame, actionType, actionID, hasAction)
114 bindings = kb.GetBindings() 114 bindings = kb.GetBindings()
115 115
116 local indexKey = kb.FormatActionID(actionType, actionID) 116 if hasAction then
117 --kprint(frame:GetName(), '|cFF88FF00'..indexKey..'|r', hasAction) 117 local indexKey = kb.FormatActionID(actionType, actionID)
118 118 kprint(frame:GetName(), '|cFF88FF00'..indexKey..'|r', hasAction)
119 119
120 if bindings[indexKey] then 120
121 kprint(' |cFFFF0088', actionType ..'|r', actionID, hasAction) 121 local actionName
122 if actionType == 'spell' then
123 actionName = GetSpellInfo(actionID)
124 elseif actionType == 'macro' then
125 actionName = GetMacroInfo(actionID)
126 elseif actionType == 'summonmount' then
127 actionName = C_MountJournal.GetMountInfoByID(actionID)
128 elseif actionType == 'item' then
129 actionName = GetItemInfo(actionID)
130 end
131 kprint(' ', actionName)
132
122 local binds = bindings[indexKey] 133 local binds = bindings[indexKey]
134 kprint(binds)
123 if binds and (not frame.HotKey:IsVisible()) then 135 if binds and (not frame.HotKey:IsVisible()) then
124 if hasAction then 136 local bindingsText = kb.BindingString(unpack(binds))
125 local bindingsText = kb.BindingString(unpack(binds)) 137
126 138 if not hotkeyText[frame] then
127 if not hotkeyText[frame] then 139 kprint('-new hotkey element')
128 kprint('-new hotkey element') 140 hotkeyText[frame] = frame:CreateFontString(frame:GetName()..'SkeletonKey', 'OVERLAY')
129 hotkeyText[frame] = frame:CreateFontString(frame:GetName()..'SkeletonKey', 'OVERLAY') 141 hotkeyText[frame]:SetFont(frame.HotKey:GetFont())
130 hotkeyText[frame]:SetFont(frame.HotKey:GetFont()) 142 hotkeyText[frame]:SetTextColor(frame.HotKey:GetTextColor())
131 hotkeyText[frame]:SetTextColor(frame.HotKey:GetTextColor()) 143 hotkeyText[frame]:SetPoint('TOPRIGHT', frame.HotKey, 'TOPRIGHT')
132 hotkeyText[frame]:SetPoint('TOPRIGHT', frame.HotKey, 'TOPRIGHT') 144
133 145 hooksecurefunc(frame.HotKey, 'SetVertexColor', function(self, r,g,b,a)
134 hooksecurefunc(frame.HotKey, 'SetVertexColor', function(self, r,g,b,a) 146 hotkeyText[frame]:SetTextColor(r,g,b,a)
135 hotkeyText[frame]:SetTextColor(r,g,b,a) 147 end)
136 end) 148 end
137 end 149
138 150 hotkeyText[frame]:SetText(bindingsText)
139 hotkeyText[frame]:SetText(bindingsText) 151 hotkeyText[frame]:Show()
140 hotkeyText[frame]:Show() 152 kprint(' |cFF00FFFF', frame:GetName(), '|cFFFFFF00'..tostring(bindingsText)..'|r')
141 kprint(' |cFF00FFFF', frame:GetName(), '|cFFFFFF00'..tostring(bindingsText)..'|r') 153
142 154 return
143 return
144 end
145 end 155 end
146 end 156 end
147 157
148 if hotkeyText[frame] then 158 if hotkeyText[frame] then
159 local oldText = hotkeyText[frame]:GetText()
160 if oldText then
149 hotkeyText[frame]:SetText(nil) 161 hotkeyText[frame]:SetText(nil)
150 print('|cFFFF4400' .. frame:GetName() .. '|r', 'remove text') 162 print('|cFFFF4400' .. frame:GetName() .. '|r', 'removed text', oldText)
163 end
164
151 end 165 end
152 end 166 end
153 167
154 hotkey.actionbar = function() 168 hotkey.actionbar = function()
155 wipe(actionFrames)
156 -- reset frames list 169 -- reset frames list
157 print('actionbar') 170 print('actionbar')
171 wipe(actionFrames)
158 if ActionBarButtonEventsFrame.frames then 172 if ActionBarButtonEventsFrame.frames then
159 for index, frame in ipairs(ActionBarButtonEventsFrame.frames) do 173 for index, frame in ipairs(ActionBarButtonEventsFrame.frames) do
160
161 local slot = frame.action 174 local slot = frame.action
162 local actionType, actionID = GetActionInfo(slot) 175 local actionType, actionID = GetActionInfo(slot)
163 local hasAction = HasAction(slot) 176 local hasAction = HasAction(slot)
164 local indexKey = kb.FormatActionID(actionType, actionID)
165 177
166 actionSlots[slot] = frame 178 actionSlots[slot] = frame
167 actionFrames[indexKey] = actionFrames[indexKey] or {} 179 if hasAction then
168 if not tContains(actionFrames[indexKey]) then 180 local indexKey = kb.FormatActionID(actionType, actionID)
169 tinsert(actionFrames[indexKey], frame) 181
170 actionIndex[slot] = indexKey 182 actionFrames[indexKey] = actionFrames[indexKey] or {}
171 end 183 local result = ''
184 if not tContains(actionFrames[indexKey], frame) then
185 tinsert(actionFrames[indexKey], frame)
186 actionIndex[slot] = indexKey
187 result = 'added'
188 end
189 print('#'..index, frame:GetName(), indexKey, result)
190 end
191
172 192
173 hotkey.UpdateHotKey(frame, actionType, actionID, hasAction) 193 hotkey.UpdateHotKey(frame, actionType, actionID, hasAction)
174 end 194 end
175 end 195 end
176 end 196 end