comparison modules/Action.lua @ 113:77bb68eb402b

Fixed bug with mindcontrol actions: simplified action attributes
author Flick <flickerstreak@gmail.com>
date Fri, 09 Jan 2009 18:11:12 +0000
parents 410d036c43b2
children fb48811a8736
comparison
equal deleted inserted replaced
112:a66595385917 113:77bb68eb402b
934 934
935 self.hotkey = f.hotkey 935 self.hotkey = f.hotkey
936 self.border = _G[name.."Border"] 936 self.border = _G[name.."Border"]
937 937
938 f:SetAttribute("action", config.actionID) 938 f:SetAttribute("action", config.actionID)
939 f:SetAttribute("default-action", config.actionID)
939 -- install mind control actions for all buttons just for simplicity 940 -- install mind control actions for all buttons just for simplicity
940 if self.idx <= 12 then 941 if self.idx <= 12 then
941 f:SetAttribute("*action-mc", 120 + self.idx) 942 f:SetAttribute("mindcontrol-action", 120 + self.idx)
942 end 943 end
943 944
944 -- set a _childupdate handler, called within the header's context 945 -- set a _childupdate handler, called within the header's context
945 f:SetAttribute("_childupdate", 946 f:SetAttribute("_childupdate",
946 -- function _childupdate(self, snippetid, message) 947 -- function _childupdate(self, snippetid, message)
947 [[ 948 [[
948 local action = "action" 949 local action = "default-action"
949 if doMindControl and GetBonusBarOffset() == 5 then 950 if doMindControl and GetBonusBarOffset() == 5 then
950 action = "*action-mc" 951 action = "mindcontrol-action"
951 elseif page and state and page[state] then 952 elseif page and state and page[state] then
952 action = "*action-"..page[state] 953 action = "action-"..page[state]
953 end 954 end
954 local value = self:GetAttribute(action) 955 local value = self:GetAttribute(action)
955 self:SetAttribute("action",value) 956 if value then
957 self:SetAttribute("action",value)
958 end
956 ]]) 959 ]])
957 960
958 -- install drag wrappers to lock buttons 961 -- install drag wrappers to lock buttons
959 bar:GetFrame():WrapScript(f, "OnDragStart", 962 bar:GetFrame():WrapScript(f, "OnDragStart",
960 -- OnDragStart(self, button, kind, value, ...) 963 -- OnDragStart(self, button, kind, value, ...)
1057 if self.config.pageactions[page] then 1060 if self.config.pageactions[page] then
1058 IDAlloc:Release(self.config.pageactions[page]) 1061 IDAlloc:Release(self.config.pageactions[page])
1059 end 1062 end
1060 self.config.pageactions[page] = id 1063 self.config.pageactions[page] = id
1061 IDAlloc:Acquire(self.config.pageactions[page]) 1064 IDAlloc:Acquire(self.config.pageactions[page])
1062 self.frame:SetAttribute(("*action-page%d"):format(page),id) 1065 self.frame:SetAttribute(("action-page%d"):format(page),id)
1063 else 1066 else
1064 IDAlloc:Release(self.config.actionID) 1067 IDAlloc:Release(self.config.actionID)
1065 self.config.actionID = id 1068 self.config.actionID = id
1066 IDAlloc:Acquire(self.config.actionID) 1069 IDAlloc:Acquire(self.config.actionID)
1067 self.frame:SetAttribute("action",id) 1070 self.frame:SetAttribute("action",id)
1068 if self.config.pageactions then 1071 if self.config.pageactions then
1069 self.config.pageactions[1] = id 1072 self.config.pageactions[1] = id
1070 self.frame:SetAttribute("*action-page1",id) 1073 self.frame:SetAttribute("action-page1",id)
1071 end 1074 end
1072 end 1075 end
1073 end 1076 end
1074 1077
1075 function Button:RefreshPages( force ) 1078 function Button:RefreshPages( force )
1085 if i > 1 then 1088 if i > 1 then
1086 c[i] = IDAlloc:Acquire(c[i], self.config.actionID + (i-1)*self.bar:GetNumButtons()) 1089 c[i] = IDAlloc:Acquire(c[i], self.config.actionID + (i-1)*self.bar:GetNumButtons())
1087 else 1090 else
1088 c[i] = self.config.actionID -- page 1 is the same as the base actionID 1091 c[i] = self.config.actionID -- page 1 is the same as the base actionID
1089 end 1092 end
1090 f:SetAttribute(("*action-page%d"):format(i),c[i]) 1093 f:SetAttribute(("action-page%d"):format(i),c[i])
1091 end 1094 end
1092 for i = nPages+1, #c do 1095 for i = nPages+1, #c do
1093 IDAlloc:Release(c[i]) 1096 IDAlloc:Release(c[i])
1094 c[i] = nil 1097 c[i] = nil
1095 f:SetAttribute(("*action-page%d"):format(i),nil) 1098 f:SetAttribute(("action-page%d"):format(i),nil)
1096 end 1099 end
1097 self.nPages = nPages 1100 self.nPages = nPages
1098 end 1101 end
1099 end 1102 end
1100 1103