comparison modules/ReAction_Action/ReAction_Action.lua @ 92:5f1d7a81317c

- Various bugfixes - Switched action bar paging/mc fully to the _childupdate method
author Flick <flickerstreak@gmail.com>
date Fri, 17 Oct 2008 22:43:57 +0000
parents c2504a8b996c
children 567a885cdfad
comparison
equal deleted inserted replaced
91:c2504a8b996c 92:5f1d7a81317c
12 local ReAction = ReAction 12 local ReAction = ReAction
13 local L = ReAction.L 13 local L = ReAction.L
14 local _G = _G 14 local _G = _G
15 local CreateFrame = CreateFrame 15 local CreateFrame = CreateFrame
16 local format = string.format 16 local format = string.format
17 local wipe = wipe
17 18
18 ReAction:UpdateRevision("$Revision$") 19 ReAction:UpdateRevision("$Revision$")
19 20
20 -- libraries 21 -- libraries
21 local KB = LibStub("LibKeyBound-1.0") 22 local KB = LibStub("LibKeyBound-1.0")
257 258
258 if self.config.buttons == nil then 259 if self.config.buttons == nil then
259 self.config.buttons = { } 260 self.config.buttons = { }
260 end 261 end
261 self:Refresh() 262 self:Refresh()
263 self:SetKeybindMode(ReAction:GetKeybindMode())
262 return self 264 return self
263 end 265 end
264 266
265 function Handle:Refresh() 267 function Handle:Refresh()
266 local r, c = self.bar:GetButtonGrid() 268 local r, c = self.bar:GetButtonGrid()
322 324
323 function Handle:SetKeybindMode(mode) 325 function Handle:SetKeybindMode(mode)
324 for _, b in pairs(self.btns) do 326 for _, b in pairs(self.btns) do
325 if mode then 327 if mode then
326 -- set the border for all buttons to the keybind-enable color 328 -- set the border for all buttons to the keybind-enable color
327 local r,g,b,a = KB:GetColorKeyBoundMode() 329 b.border:SetVertexColor(KB:GetColorKeyBoundMode())
328 b.border:SetVertexColor(r,g,b,a)
329 b.border:Show() 330 b.border:Show()
331 elseif IsEquippedAction(b:GetActionID()) then
332 b.border:SetVertexColor(0, 1.0, 0, 0.35) -- from ActionButton.lua
330 else 333 else
331 b.border:Hide() 334 b.border:Hide()
332 end 335 end
333 end 336 end
334 end 337 end
561 564
562 ------ State property options ------ 565 ------ State property options ------
563 do 566 do
564 local pageOptions = { 567 local pageOptions = {
565 page = { 568 page = {
566 name = L["Show Page #"], 569 name = L["Show Page #"],
567 order = 11, 570 order = 11,
568 type = "select", 571 type = "select",
569 width = "half", 572 width = "half",
570 disabled = "IsPageDisabled", 573 disabled = "IsPageDisabled",
571 hidden = "IsPageHidden", 574 hidden = "IsPageHidden",
572 values = "GetPageValues", 575 values = "GetPageValues",
573 set = "SetProp", 576 set = "SetProp",
574 get = "GetPage", 577 get = "GetPage",
592 function PropHandler:IsPageHidden() 595 function PropHandler:IsPageHidden()
593 return not GetBarConfig(self.bar) 596 return not GetBarConfig(self.bar)
594 end 597 end
595 598
596 function PropHandler:GetPageValues() 599 function PropHandler:GetPageValues()
600 if not self._pagevalues then
601 self._pagevalues = { }
602 end
597 local c = GetBarConfig(self.bar) 603 local c = GetBarConfig(self.bar)
598 if c then 604 if c then
599 local n = c.nPages 605 local n = c.nPages
606 -- cache the results
600 if self._npages ~= n then 607 if self._npages ~= n then
601 self._pagevalues = { }
602 self._npages = n 608 self._npages = n
603 -- cache the results 609 wipe(self._pagevalues)
604 for i = 1, n do 610 for i = 1, n do
605 self._pagevalues["page"..i] = i 611 self._pagevalues["page"..i] = i
606 end 612 end
607 end 613 end
608 return self._pagevalues 614 end
609 end 615 return self._pagevalues
610 end 616 end
611 617
612 function PropHandler:GetPage(info) 618 function PropHandler:GetPage(info)
613 return self:GetProp(info) or 1 619 return self:GetProp(info) or 1
614 end 620 end
807 f.ClearBindings = ClearBindings 813 f.ClearBindings = ClearBindings
808 f.GetBindings = GetBindings 814 f.GetBindings = GetBindings
809 buttonLookup[f] = button 815 buttonLookup[f] = button
810 f:SetKey(button:GetConfig().hotkey) 816 f:SetKey(button:GetConfig().hotkey)
811 ReAction:RegisterKeybindFrame(f) 817 ReAction:RegisterKeybindFrame(f)
818 if ReAction:GetKeybindMode() then
819 button.border:SetVertexColor(KB:GetColorKeyBoundMode())
820 button.border:Show()
821 end
812 end 822 end
813 end 823 end
814 824
815 local meta = {__index = Button} 825 local meta = {__index = Button}
816 826
864 -- install mind control actions for all buttons just for simplicity 874 -- install mind control actions for all buttons just for simplicity
865 if self.idx <= 12 then 875 if self.idx <= 12 then
866 f:SetAttribute("*action-mc", 120 + self.idx) 876 f:SetAttribute("*action-mc", 120 + self.idx)
867 end 877 end
868 878
869 -- wrap the OnClick handler to use a pagemap from the header's context
870 parent:WrapScript(f, "OnClick",
871 -- function OnClick(self, button, down)
872 [[
873 if doMindControl and GetBonusBarOffset() == 5 then
874 return "mc"
875 else
876 return state and page and page[state] or button
877 end
878 ]])
879
880 -- set a _childupdate handler, called within the header's context 879 -- set a _childupdate handler, called within the header's context
881 -- SetAttribute() is a brute-force way to trigger ActionButton_UpdateAction(). Setting "*action1"
882 -- will, in the absence of a useful replacement for SecureButton_GetEffectiveButton(), force
883 -- ActionButton_CalculateAction() to use the new action-id for display purposes. It also
884 -- sort of obviates the OnClick handler, but hopefully this is only temporary until
885 -- SecureButton_GetEffectiveButton() gets fixed.
886 f:SetAttribute("_childupdate", 880 f:SetAttribute("_childupdate",
887 -- function _childupdate(self, snippetid, message) 881 -- function _childupdate(self, snippetid, message)
888 [[ 882 [[
889 local action = "action" 883 local action = "action"
890 if doMindControl and GetBonusBarOffset() == 5 then 884 if doMindControl and GetBonusBarOffset() == 5 then
891 action = "*action-mc" 885 action = "*action-mc"
892 elseif page and state and page[state] then 886 elseif page and state and page[state] then
893 action = "*action-"..page[state] 887 action = "*action-"..page[state]
894 end 888 end
895 local value = self:GetAttribute(action) 889 local value = self:GetAttribute(action)
896 self:SetAttribute("*action1",value) 890 self:SetAttribute("action",value)
897 ]]) 891 ]])
898 892
899 self.frame = f 893 self.frame = f
900 self.normalTexture = getglobal(format("%sNormalTexture",f:GetName())) 894 self.normalTexture = getglobal(format("%sNormalTexture",f:GetName()))
901 895