Mercurial > wow > skeletonkey
comparison BindingsFrame.lua @ 76:6623b7f2c1ca v7.1.5-78-release
Added:
- key assignment and unbinding for inactive talents
Bug Fixes:
- fixed spell access check for talents
- fixed detection of Legion PvP talents
- fixed unbind command not clearing assigned key text
- fixed frame content not loading after combat
Miscellaneous:
- bindings are determined from the button's assignment list
- increment profile version to remove deprecated talents list
| author | Nenue |
|---|---|
| date | Mon, 23 Jan 2017 20:07:30 -0500 |
| parents | 9824d524a661 |
| children | d4c100b0fd01 |
comparison
equal
deleted
inserted
replaced
| 75:e75a2fd448c0 | 76:6623b7f2c1ca |
|---|---|
| 166 | 166 |
| 167 self:Update(true) | 167 self:Update(true) |
| 168 print(self.zoomScale, self.scrollOffset) | 168 print(self.zoomScale, self.scrollOffset) |
| 169 end | 169 end |
| 170 | 170 |
| 171 function SkeletonKeyMixin:OnShow() | |
| 172 self:Update() | |
| 173 end | |
| 171 function SkeletonKeyMixin:OnHide() | 174 function SkeletonKeyMixin:OnHide() |
| 172 KeyBinderImportLog:Hide() | 175 |
| 173 end | 176 end |
| 174 | 177 |
| 175 | 178 |
| 176 local tabID = 0 | 179 local tabID = 0 |
| 177 local prevTab | 180 local prevTab |
| 510 | 513 |
| 511 if not tContains(self.assignedKeys, binding) then | 514 if not tContains(self.assignedKeys, binding) then |
| 512 tinsert(self.assignedKeys, 1, binding) | 515 tinsert(self.assignedKeys, 1, binding) |
| 513 end | 516 end |
| 514 | 517 |
| 515 local talentInfo = kb.DynamicSpells[spellName] | |
| 516 if spellName and talentInfo then | |
| 517 print('store dynamicType talent') | |
| 518 if talentInfo.dynamicType == 'talent' then | |
| 519 talentInfo = { | |
| 520 macroName = self.macroName, | |
| 521 actionName = self.actionName, | |
| 522 actionType = self.actionType, | |
| 523 actionID = self.actionID, | |
| 524 assignedKeys = self.assignedKeys | |
| 525 } | |
| 526 kb.currentProfile.talents[spellName] = talentInfo | |
| 527 end | |
| 528 end | |
| 529 | 518 |
| 530 for _, key in ipairs(self.assignedKeys) do | 519 for _, key in ipairs(self.assignedKeys) do |
| 531 if not kb.currentProfile.bindings[key] then | 520 if not kb.currentProfile.bindings[key] then |
| 532 kb.currentProfile.bindings[key] = self.command | 521 kb.currentProfile.bindings[key] = self.command |
| 533 end | 522 end |
| 536 for level, profile in ipairs(kb.orderedProfiles) do | 525 for level, profile in ipairs(kb.orderedProfiles) do |
| 537 if (level > kb.db.bindMode) then | 526 if (level > kb.db.bindMode) then |
| 538 profile.bindings[binding] = nil | 527 profile.bindings[binding] = nil |
| 539 profile.commands[self.command] = nil | 528 profile.commands[self.command] = nil |
| 540 profile.bound[self.command] = nil | 529 profile.bound[self.command] = nil |
| 541 if spellName then | |
| 542 profile.talents[spellName] = nil | |
| 543 end | |
| 544 end | 530 end |
| 545 end | 531 end |
| 546 | 532 |
| 547 kb.UpdateBindingsCache(self.actionType, self.actionID, self.assignedKeys) | 533 kb.UpdateBindingsCache(self.actionType, self.actionID, self.assignedKeys) |
| 548 | 534 |
| 564 self:StopMovingOrSizing() | 550 self:StopMovingOrSizing() |
| 565 end | 551 end |
| 566 | 552 |
| 567 function ActionListPanel:UnbindSlot (button) | 553 function ActionListPanel:UnbindSlot (button) |
| 568 | 554 |
| 555 local configTable = kb.currentProfile.buttons[button:GetID()] | |
| 569 local button = button or kb.saveTarget | 556 local button = button or kb.saveTarget |
| 570 if not button then | 557 if not button then |
| 571 return | 558 return |
| 572 end | 559 end |
| 573 | 560 |
| 574 local command = button.command | 561 local command = button.command |
| 575 local actionType = button.actionType | 562 local actionType = button.actionType |
| 576 local actionID = button.actionID | 563 local actionID = button.actionID |
| 577 | 564 |
| 578 local keys = {GetBindingKey(command) } | |
| 579 if #keys >= 1 then | |
| 580 kb.UpdateBindingsCache(actionType, actionID, {}) | |
| 581 end | |
| 582 | 565 |
| 583 local talentName = button.actionName | 566 local talentName = button.actionName |
| 584 if actionType == 'macro' then | 567 if actionType == 'macro' then |
| 585 local spellName, _, spellID = GetMacroSpell(actionID) | 568 local spellName, _, spellID = GetMacroSpell(actionID) |
| 586 talentName = spellName | 569 talentName = spellName |
| 587 end | 570 end |
| 588 | 571 |
| 589 | 572 local keys = {GetBindingKey(command) } |
| 590 --print('detected', #keys, 'bindings') | 573 if configTable and configTable.assignedKeys then |
| 591 for i, key in pairs(keys) do | 574 for _, key in ipairs(configTable.assignedKeys) do |
| 592 --print('clearing', key) | 575 if not tContains(keys, key) then |
| 593 SetBinding(key, nil) | 576 tinsert(keys, key) |
| 577 end | |
| 578 end | |
| 579 end | |
| 580 | |
| 581 -- only manipulate bindings if its an available ability | |
| 582 if button.isAvailable then | |
| 583 --print('detected', #keys, 'bindings') | |
| 584 | |
| 585 if #keys >= 1 then | |
| 586 kb.UpdateBindingsCache(actionType, actionID, {}) | |
| 587 end | |
| 588 | |
| 589 for i, key in pairs(keys) do | |
| 590 --print('clearing', key) | |
| 591 SetBinding(key, nil) | |
| 592 kb.bindings[tostring(actionType)..'_'..tostring(actionID)] = nil | |
| 593 end | |
| 594 SaveBindings(GetCurrentBindingSet()) | 594 SaveBindings(GetCurrentBindingSet()) |
| 595 if kb.currentProfile.bindings[key] then | 595 end |
| 596 --kb:print(L('BINDING_REMOVED', self.actionName, kb.currentHeader)) | 596 |
| 597 kb.currentProfile.bindings[key] = nil | 597 |
| 598 end | 598 if configTable and configTable.assignedKeys then |
| 599 if kb.currentProfile.talents[talentName] then | 599 table.wipe(configTable.assignedKeys) |
| 600 kb.currentProfile.talents[talentName] = nil | 600 end |
| 601 end | 601 |
| 602 | |
| 603 kb.bindings[tostring(actionType)..'_'..tostring(actionID)] = nil | |
| 604 end | |
| 605 if kb.currentProfile.bound[command] then | 602 if kb.currentProfile.bound[command] then |
| 606 kb.currentProfile.bound[command] = nil | 603 kb.currentProfile.bound[command] = nil |
| 607 --kb:print(BINDING_REMOVED:format(self.actionName, configHeaders[db.bindMode])) | 604 --kb:print(BINDING_REMOVED:format(self.actionName, configHeaders[db.bindMode])) |
| 608 end | 605 end |
| 609 kb.saveTarget = nil | 606 kb.saveTarget = nil |
| 610 | 607 button:UpdateSlot(true) |
| 611 return true | 608 return true |
| 612 end | 609 end |
| 613 | 610 |
| 614 kb.AcceptAssignment = function(self, ...) | 611 kb.AcceptAssignment = function(self, ...) |
| 615 local popup = StaticPopupDialogs["SKELETONKEY_CONFIRM_ASSIGN_SLOT"] | 612 local popup = StaticPopupDialogs["SKELETONKEY_CONFIRM_ASSIGN_SLOT"] |
