comparison Init.lua @ 3:3397aae1f44d

- use the correct key value when searching for action buttons - handle pre-built frames from XML
author Nenue
date Thu, 31 Mar 2016 07:32:05 -0400
parents 3dbcad2b387d
children 9455693fc290
comparison
equal deleted inserted replaced
2:a2396b03ce63 3:3397aae1f44d
4 -- OnEnable -- run when GetSpecialization() returns true 4 -- OnEnable -- run when GetSpecialization() returns true
5 5
6 local ADDON, A = ... 6 local ADDON, A = ...
7 Veneer = Veneer or CreateFrame('Frame', 'Veneer', UIParent) 7 Veneer = Veneer or CreateFrame('Frame', 'Veneer', UIParent)
8 local B = Veneer 8 local B = Veneer
9 local wipe, min, max, random, tinsert = table.wipe, math.min, math.max, math.random, table.insert 9 local wipe, min, max, random, tinsert, tremove = table.wipe, math.min, math.max, math.random, table.insert, table.remove
10 local pairs, ipairs, select, unpack, _G = pairs, ipairs, select, unpack, _G 10 local pairs, ipairs, select, unpack, _G = pairs, ipairs, select, unpack, _G
11 local type, tostring, format = type, tostring, string.format 11 local type, tostring, format = type, tostring, string.format
12 A.frame = B 12 A.frame = B
13 13
14 --- Cache tables 14 --- Cache tables
15 local initOnced 15 local initOnced
16 local modules = {} 16 local modules = {}
17 local queuedModules = {} 17 local queuedModules = {}
18 local checkForConfig = {}
18 local moduleStack = { 19 local moduleStack = {
19 } 20 }
20 21
21 --- Various region categories 22 --- Various region categories
22 B.displays = {} 23 B.displays = {}
243 print('Adding defaults from module ', name) 244 print('Adding defaults from module ', name)
244 VeneerData[name] = module.default 245 VeneerData[name] = module.default
245 --[===[@non-debug@ 246 --[===[@non-debug@
246 end 247 end
247 --@end-non-debug@]===] 248 --@end-non-debug@]===]
249 end
250 end
251
252
253 if #checkForConfig >= 1 then
254 local queuedFrame = tremove(checkForConfig)
255 while queuedFrame do
256 B.SetConfigLayers(queuedFrame)
257 B.InitXMLFrame(queuedFrame)
258 queuedFrame = tremove(checkForConfig)
248 end 259 end
249 end 260 end
250 -- remove from existing 261 -- remove from existing
251 end 262 end
252 263
294 end 305 end
295 else 306 else
296 module = CreateFrame('Frame', 'Veneer' .. tostring(name) .. 'Handler', B, 'VeneerHandlerTemplate') 307 module = CreateFrame('Frame', 'Veneer' .. tostring(name) .. 'Handler', B, 'VeneerHandlerTemplate')
297 end 308 end
298 modules[name] = module 309 modules[name] = module
310 B[name] = module
299 if select('#', ...) >= 1 then 311 if select('#', ...) >= 1 then
300 local numDeps = select('#', ...) 312 local numDeps = select('#', ...)
301 print(' '..numDeps..' deps detected') 313 print(' '..numDeps..' deps detected')
302 for i = 1, numDeps do 314 for i = 1, numDeps do
303 local dep = select(i, ...) 315 local dep = select(i, ...)
329 print(' ', i, subframe:GetName()) 341 print(' ', i, subframe:GetName())
330 end 342 end
331 end 343 end
332 344
333 B.RemoveConfigLayers = function(frame) 345 B.RemoveConfigLayers = function(frame)
346
334 local print = B.fprint() 347 local print = B.fprint()
335 print('|cFFFF0000RemoveConfigLayers', frame:GetName()) 348 print('|cFFFF0000RemoveConfigLayers', frame:GetName())
336 for i, subframe in pairs(layers) do 349 for i, subframe in pairs(layers) do
337 if subframe:GetParent() == frame then 350 if subframe:GetParent() == frame then
338 print('|cFFFF8800 ', subframe:GetParent():GetName(), '|cFFFFFF00', subframe:GetName()) 351 print('|cFFFF8800 ', subframe:GetParent():GetName(), '|cFFFFFF00', subframe:GetName())
367 region[func](region) 380 region[func](region)
368 end 381 end
369 382
370 print('['..func..'] updated', #layers, 'regions,', numAnchors, 'frames') 383 print('['..func..'] updated', #layers, 'regions,', numAnchors, 'frames')
371 end 384 end
385
386 --- Generic handlers for keeping track of XML-defined frames
387 B.OnLoad = function(self)
388 tinsert(checkForConfig, self)
389 end
390
391 B.InitXMLFrame = function(self)
392 print('|cFF00FF00hello from '..self:GetName())
393
394 self:RegisterForDrag('LeftButton')
395 if not B.Conf.FramePosition then
396 B.Conf.FramePosition = {}
397 end
398 if B.Conf.FramePosition[self:GetName()] then
399 print('restoring frame position', unpack(B.Conf.FramePosition[self:GetName()]))
400 self:ClearAllPoints()
401 local anchorTo, relativePoint, x, y = unpack(B.Conf.FramePosition[self:GetName()])
402 self:SetPoint(anchorTo, UIParent, relativePoint, x, y)
403 end
404 end
405
406 B.OnDragStart = function(self)
407 self.xA = self:GetLeft()
408 self.yA = self:GetBottom()
409 self.anchorTo, self.relativeTo, self.relativePoint, self.x, self.y = self:GetPoint(1)
410 print('acquire anchor', self:GetPoint(1))
411 print(self:GetName(), 'start moving ('..self.x..', '..self.y..')')
412 self:StartMoving()
413 end
414
415 B.OnDragStop = function(self)
416 print(self:GetName(), 'stop moving ('..self:GetLeft()..', '..self:GetBottom()..')')
417 local xB = self:GetLeft() - self.xA
418 local yB = self:GetBottom() - self.yA
419 print('storing anchor point', self.anchorTo, self.relativePoint, self.x + xB, self.y + yB)
420
421 self:StopMovingOrSizing()
422 B.Conf.FramePosition[self:GetName()] = {self.anchorTo, self.relativePoint, self.x + xB, self.y + yB}
423 B.InitXMLFrame(self)
424
425 end