comparison SkeletonKey/KeySlot.lua @ 19:67db6b712bf3

- option checkbutton literals are stored by enclosure - detect and save any old keybindings when a slot is assigned (anything that begins with 'CLICK KeyBinder*' is ours) - mouseover mode key input will stay active after leaving a button - button border flashes when a non-modifier key is pressed
author Nenue
date Sat, 30 Jul 2016 19:08:11 -0400
parents 91398d284a99
children 564015ef0317
comparison
equal deleted inserted replaced
18:91398d284a99 19:67db6b712bf3
234 end 234 end
235 local binding = modifier..key 235 local binding = modifier..key
236 236
237 if key == 'ESCAPE' then 237 if key == 'ESCAPE' then
238 else 238 else
239 if kb.SystemBinds[binding] then 239 if kb.SystemBindings[binding] then
240 kb.statustext:SetText(L('BINDING_FAILED_PROTECTED', binding, kb.SystemBinds[binding])) 240 kb.statustext:SetText(L('BINDING_FAILED_PROTECTED', binding, kb.SystemBindings[binding]))
241 return 241 return
242 end 242 end
243 243
244 244
245 if self.command then 245 if self.command then
246 246
247 local previousKeys
248 local previousAction = GetBindingAction(binding) 247 local previousAction = GetBindingAction(binding)
249 local binding1, binding2, new1, new2
250 print(type(previousAction), previousAction)
251 if previousAction ~= "" and previousAction ~= self.command then 248 if previousAction ~= "" and previousAction ~= self.command then
252 if kb.SystemBindings[binding] then 249 if kb.SystemBindings[binding] then
253 -- bounce out if trying to use a protected key 250 -- bounce out if trying to use a protected key
254 kb.statustext:SetText(L('BINDING_FAILED_PROTECTED', key, GetBindingAction(binding))) 251 kb.statustext:SetText(L('BINDING_FAILED_PROTECTED', key, GetBindingAction(binding)))
255 kb.bindingstext:SetText(nil) 252 kb.bindingstext:SetText(nil)
256 return 253 return false
257 else 254 else
258 kb:print('Discarding keybind for', previousAction) 255 kb:print('Discarding keybind for', previousAction)
259 -- todo: sort out retcon'd talent spells 256 -- todo: sort out retcon'd talent spells
260 end 257 end
261 end 258 end
296 293
297 kb:print(L('BINDING_ASSIGNED', self.binding, self.actionName, kb.currentHeader)) 294 kb:print(L('BINDING_ASSIGNED', self.binding, self.actionName, kb.currentHeader))
298 end 295 end
299 end 296 end
300 kb.UpdateSlot(self, true) 297 kb.UpdateSlot(self, true)
298 return true
301 end 299 end
302 300
303 301
304 --- Updates profile assignment and button contents 302 --- Updates profile assignment and button contents
305 kb.UpdateSlot = function(self, force) 303 kb.UpdateSlot = function(self, force)
367 365
368 self.statusText = '|cFF00FFFF'.. TALENT .. '|r' 366 self.statusText = '|cFF00FFFF'.. TALENT .. '|r'
369 if self.isAvailable then 367 if self.isAvailable then
370 self.bindingText = kb.BindingString(GetBindingKey(self.command)) 368 self.bindingText = kb.BindingString(GetBindingKey(self.command))
371 else 369 else
372 if kb.inactiveTalentBindings[self.actionID] then 370 if kb.TalentBindings[self.actionID] then
373 print(self.actionID, #kb.inactiveTalentBindings[self.actionID]) 371 print(self.actionID, #kb.TalentBindings[self.actionID])
374 self.bindingText= kb.BindingString(unpack(kb.inactiveTalentBindings[self.actionID])) 372 self.bindingText= kb.BindingString(unpack(kb.TalentBindings[self.actionID]))
375 end 373 end
376 374
377 end 375 end
378 elseif self.isDynamic == 'petaction' and self.command:match("special") then 376 elseif self.isDynamic == 'petaction' then
379 self.statusText = '|cFF00FF00Pet Special|r' 377 local specialNum = self.command:match("special(%d)")
378 if specialNum then
379 self.statusText = L('Pet Special %%d'):format(specialNum)
380 else
381 self.statusText = L('Pet Action')
382 end
380 self.bindingText = kb.BindingString(GetBindingKey(self.command)) 383 self.bindingText = kb.BindingString(GetBindingKey(self.command))
381 else 384 else
382 self.statusText = '|cFF00FF00'.. (BUTTON_HEADERS[self.actionType] and BUTTON_HEADERS[self.actionType] or self.actionType) .. '|r' 385 self.statusText = '|cFF00FF00'.. (BUTTON_HEADERS[self.actionType] and BUTTON_HEADERS[self.actionType] or self.actionType) .. '|r'
383 self.bindingText = kb.BindingString(GetBindingKey(self.command)) 386 self.bindingText = kb.BindingString(GetBindingKey(self.command))
384 end 387 end
533 536
534 537
535 actionID = actionID or 0 538 actionID = actionID or 0
536 self:EnableKeyboard(true) 539 self:EnableKeyboard(true)
537 print(' |cFF00FF00kb.currentProfile.buttons['..slot..'] |cFF00FFFF=|r |cFF00FFFF"'.. command.. '"|r |cFF00FF00"'.. name.. '"|r |cFFFFFF00icon:'.. tostring(icon) .. '|r |cFFFF8800"'.. actionType, '"|r |cFFFF0088id:'.. actionID ..'|r |cFF00FF00"'.. macroName .. '"|r') 540 print(' |cFF00FF00kb.currentProfile.buttons['..slot..'] |cFF00FFFF=|r |cFF00FFFF"'.. command.. '"|r |cFF00FF00"'.. name.. '"|r |cFFFFFF00icon:'.. tostring(icon) .. '|r |cFFFF8800"'.. actionType, '"|r |cFFFF0088id:'.. actionID ..'|r |cFF00FF00"'.. macroName .. '"|r')
538 kb.currentProfile.buttons[slot] = {command, name, icon, actionType, actionID, macroName, macroText, pickupSlot, pickupBook} 541 kb.currentProfile.buttons[slot] = {command, name, icon, actionType, actionID, macroName, macroText, pickupSlot, pickupBook }
542
539 543
540 -- Clean up conflicting entries for loaded button 544 -- Clean up conflicting entries for loaded button
541 local previous = kb.currentProfile.commands[command] 545 local previous = kb.currentProfile.commands[command]
542 if previous ~= slot and kb.buttons[previous] then 546 if previous ~= slot and kb.buttons[previous] then
543 kb.ReleaseSlot(kb.buttons[previous]) 547 kb.ReleaseSlot(kb.buttons[previous])
544 end 548 end
549
550 if not (kb.IsCommandBound(self, command) or kb.currentProfile.bound[command]) then
551
552 local binds = {GetBindingKey(command) }
553 if #binds >= 1 then
554 kb:print('Recovered key binding for', name)
555 for i, key in ipairs(binds) do
556 kb.currentProfile.bindings[key] = command
557 kb.currentProfile.bound[command] = true
558 end
559 end
560 end
561
562
545 kb.currentProfile.commands[command] = slot 563 kb.currentProfile.commands[command] = slot
564
546 end 565 end
547 566
548 self.isAvailable = isAvailable 567 self.isAvailable = isAvailable
549 self.isDynamic = isDynamic 568 self.isDynamic = isDynamic
550 569