comparison classes/ActionButton.lua @ 129:28b430de5875

More fixes for new action button
author Flick <flickerstreak@gmail.com>
date Fri, 06 Mar 2009 23:44:33 +0000
parents 729232aeeb5e
children e39d80bb0b7a
comparison
equal deleted inserted replaced
128:729232aeeb5e 129:28b430de5875
1 local ReAction = ReAction 1 local ReAction = ReAction
2 local L = ReAction.L 2 local L = ReAction.L
3 local _G = _G 3 local _G = _G
4 local CreateFrame = CreateFrame 4 local CreateFrame = CreateFrame
5 local GetBindingKey = GetBindingKey
6 local format = string.format 5 local format = string.format
7 local IsUsableAction = IsUsableAction 6 local IsUsableAction = IsUsableAction
8 local IsEquippedAction = IsEquippedAction 7 local IsEquippedAction = IsEquippedAction
9 local IsConsumableAction = IsConsumableAction 8 local IsConsumableAction = IsConsumableAction
10 local IsStackableAction = IsStackableAction 9 local IsStackableAction = IsStackableAction
118 end 117 end
119 ]] 118 ]]
120 119
121 local _onReceiveDrag = -- function(self, button, kind, value, ...) 120 local _onReceiveDrag = -- function(self, button, kind, value, ...)
122 [[ 121 [[
123 if kind == "spell" or kind == "item" or kind == "macro" then 122 if kind ~= "spell" and kind ~= "item" and kind ~= "macro" then
124 -- assume it's a valid action 123 return kind, value, ...
125 self:SetAttribute("hasaction-"..self:GetAttribute("action"),true) 124 end
126 end 125 self:SetAttribute("hasaction-"..self:GetAttribute("action"),true)
127 return "action", self:GetAttribute("action") 126 return "action", self:GetAttribute("action")
128 ]] 127 ]]
129 128
130 -- 129 --
131 -- private 130 -- private
160 ReAction.Button.Action = Action 159 ReAction.Button.Action = Action
161 160
162 function Action:New( idx, barConfig, bar, idHint ) 161 function Action:New( idx, barConfig, bar, idHint )
163 local name = format("ReAction_%s_Action_%d",bar:GetName(),idx) 162 local name = format("ReAction_%s_Action_%d",bar:GetName(),idx)
164 163
165 self = Super.New(self, name, barConfig, bar, idx, "SecureActionButtonTemplate, ActionButtonTemplate" ) 164 self = Super.New(self, name, barConfig.buttons[idx], bar, idx, "SecureActionButtonTemplate, ActionButtonTemplate" )
165 self.barConfig = barConfig
166 166
167 local f = self:GetFrame() 167 local f = self:GetFrame()
168 local barFrame = bar:GetFrame() 168 local barFrame = bar:GetFrame()
169 local config = self:GetConfig() 169 local config = self:GetConfig()
170 170
191 191
192 -- attribute setup 192 -- attribute setup
193 f:SetAttribute("type","action") 193 f:SetAttribute("type","action")
194 f:SetAttribute("checkselfcast", true) 194 f:SetAttribute("checkselfcast", true)
195 f:SetAttribute("checkfocuscast", true) 195 f:SetAttribute("checkfocuscast", true)
196 f:SetAttribute("useparent-unit", true)
197 f:SetAttribute("action", config.actionID) 196 f:SetAttribute("action", config.actionID)
198 f:SetAttribute("default-action", config.actionID) 197 f:SetAttribute("default-action", config.actionID)
199 f:SetAttribute("bar-idx",idx) 198 f:SetAttribute("bar-idx",idx)
200 f:SetAttribute("showgrid-temp",0) 199 f:SetAttribute("showgrid-temp",0)
201 f:SetAttribute("showgrid-event",0) 200 f:SetAttribute("showgrid-event",0)
256 end 255 end
257 256
258 Super.Destroy(self) 257 Super.Destroy(self)
259 end 258 end
260 259
260 function Action:GetBarConfig()
261 -- this is the per-bar Action module config structure,
262 -- not the config structure of the bar itself
263 return self.barConfig
264 end
265
261 function Action:Refresh() 266 function Action:Refresh()
262 self.bar:PlaceButton(self, 36, 36) 267 Super.Refresh(self)
263 self:RefreshPages() 268 self:RefreshPages()
264 self:InstallVehicle() 269 self:InstallVehicle()
265 self:ShowGrid(not self:GetBarConfig().hideEmpty) 270 self:ShowGrid(not self:GetBarConfig().hideEmpty)
266 self:UpdateAction() 271 self:UpdateAction()
267 end 272 end
534 539
535 function Action:SetActionID( id, page ) 540 function Action:SetActionID( id, page )
536 id = tonumber(id) 541 id = tonumber(id)
537 page = tonumber(page) 542 page = tonumber(page)
538 if id == nil or id < 1 or id > 120 then 543 if id == nil or id < 1 or id > 120 then
539 error("Action:SetActionID - invalid action ID") 544 ReAction:UserError(L["Action ID range is 1-120"])
545 return
540 end 546 end
541 if page and page ~= 1 then 547 if page and page ~= 1 then
542 if not self.config.pageactions then 548 if not self.config.pageactions then
543 self.config.pageactions = { } 549 self.config.pageactions = { }
544 end 550 end
572 if i > 1 then 578 if i > 1 then
573 c[i] = self:AcquireActionID(c[i], self.config.actionID + (i-1)*self.bar:GetNumButtons()) 579 c[i] = self:AcquireActionID(c[i], self.config.actionID + (i-1)*self.bar:GetNumButtons())
574 else 580 else
575 c[i] = self.config.actionID -- page 1 is the same as the base actionID 581 c[i] = self.config.actionID -- page 1 is the same as the base actionID
576 end 582 end
577 f:SetAttribute(("action-page%d"):format(i),c[i]) 583 f:SetAttribute("action-page"..i,c[i])
578 end 584 end
579 for i = nPages+1, #c do 585 for i = nPages+1, #c do
580 self:ReleaseActionID(c[i]) 586 self:ReleaseActionID(c[i])
581 c[i] = nil 587 c[i] = nil
582 f:SetAttribute(("action-page%d"):format(i),nil) 588 f:SetAttribute("action-page"..i,nil)
583 end 589 end
584 self.nPages = nPages 590 self.nPages = nPages
585 end 591 end
586 end 592 end
587 593