comparison classes/ReAction.lua @ 21:90bf38d48efd

committing changes to obsolete 0.4 series
author Flick <flickerstreak@gmail.com>
date Fri, 07 Mar 2008 21:54:26 +0000
parents f3a7bfebc283
children
comparison
equal deleted inserted replaced
20:2f3e45fcb9e2 21:90bf38d48efd
20 -- The base config structure is as follows: 20 -- The base config structure is as follows:
21 -- 21 --
22 -- config = { 22 -- config = {
23 -- type = "ReAction", -- static string (used by ReBar) 23 -- type = "ReAction", -- static string (used by ReBar)
24 -- subtype = "string", -- ReAction implementation identifier (index into ReAction.buttonTypes) 24 -- subtype = "string", -- ReAction implementation identifier (index into ReAction.buttonTypes)
25 -- ids = { {paged list}, {paged list}, ... } -- indexed by self.barIdx 25 -- buttons = {
26 -- id = n, -- global button ID number
27 -- actions = { {paged list}, {paged list}, ... } -- indexed by self.barIdx
28 -- }
26 -- } 29 -- }
27 -- 30 --
28 31
29 32
30 local AceOO = AceLibrary("AceOO-2.0") 33 local AceOO = AceLibrary("AceOO-2.0")
166 169
167 local ids = { } 170 local ids = { }
168 local primary = nil 171 local primary = nil
169 172
170 for i = 1, pages do 173 for i = 1, pages do
171 local hint = config.ids[barIdx] and config.ids[barIdx][i] 174 local hint = config.buttons and config.buttons.actions[barIdx]
172 if hint == nil and i > 1 and ids[i-1] then 175 if hint == nil and i > 1 and ids[i-1] then
173 hint = ids[i-1] + (buttonsPerPage or 0) 176 hint = ids[i-1] + (buttonsPerPage or 0)
174 end 177 end
175 local id, p = self:GetAvailableID(config.subtype, hint) 178 local id, p = self:GetAvailableID(config.subtype, hint)
176 if id == nil then 179 if id == nil then
185 if primary then 188 if primary then
186 if not primary.button then 189 if not primary.button then
187 primary.button = btnType:new(ids[1]) 190 primary.button = btnType:new(ids[1])
188 end 191 end
189 if primary.button then 192 if primary.button then
190 config.ids[barIdx] = ids 193 config.buttons.actions[barIdx] = ids
191 primary.button:Configure(config,barIdx) 194 primary.button:Configure(config,barIdx)
192 end 195 end
193 end 196 end
194 197
195 return primary and primary.button 198 return primary and primary.button
196 end 199 end
197 200
198 function ReAction:Release( b ) 201 function ReAction:Release( b )
199 if b then 202 if b then
200 for i = 1, #b.config.ids[b.barIdx] do 203 for i = 1, #b.config.buttons.actions[b.barIdx] do
201 local id = b:GetID(i) 204 local id = b:GetID(i)
202 if id then 205 if id then
203 b.class._idTbl[id].inUse = false 206 b.class._idTbl[id].inUse = false
204 end 207 end
205 end 208 end
265 b:SetPoint(point,x/scale,y/scale) 268 b:SetPoint(point,x/scale,y/scale)
266 end 269 end
267 270
268 function ReAction.prototype:SetPages( n ) 271 function ReAction.prototype:SetPages( n )
269 n = tonumber(n) 272 n = tonumber(n)
270 local ids = self.config.ids[self.barIdx] 273 local ids = self.config.buttons.actions[self.barIdx]
271 if n and n >= 1 then 274 if n and n >= 1 then
272 -- note that as long as n >= 1 then id[1] will never be modified, which is what we want 275 -- note that as long as n >= 1 then id[1] will never be modified, which is what we want
273 -- because then the button frame ID would be out of sync with the static button name 276 -- because then the button frame ID would be out of sync with the static button name
274 while #ids < n do 277 while #ids < n do
275 local id = ReAction:GetAvailableID(self.config.subtype, ids[#ids] + #self.config.ids) 278 local id = ReAction:GetAvailableID(self.config.subtype, ids[#ids] + #self.config.buttons.actions)
276 if id == nil then 279 if id == nil then
277 break 280 break
278 end 281 end
279 self:SetID( id, #ids + 1 ) 282 self:SetID( id, #ids + 1 )
280 table.insert(ids, id) 283 table.insert(ids, id)
310 313
311 function ReAction.prototype:Configure( config, barIdx ) 314 function ReAction.prototype:Configure( config, barIdx )
312 self.config = config 315 self.config = config
313 self.barIdx = barIdx 316 self.barIdx = barIdx
314 317
315 local ids = config.ids[barIdx] 318 local ids = config.buttons.actions[barIdx]
316 self:SetID(ids[1]) -- default id 319 self:SetID(ids[1]) -- default id
317 for i = 1, #ids do 320 for i = 1, #ids do
318 self:SetID(ids[i], i) -- paged ids 321 self:SetID(ids[i], i) -- paged ids
319 end 322 end
320 self:UpdateAction() 323 self:UpdateAction()