Mercurial > wow > buffalo2
comparison Veneer.lua @ 54:ed74c5cabe98
Core
- updated comment notes
Objectives
- force hide blocks when their tracker is hidden
Clock
- convert clock into its own module
- display zone coordinates alongside time
author | Nenue |
---|---|
date | Wed, 01 Jun 2016 20:48:14 -0400 |
parents | 16465f3fd919 |
children | dd9b5f59632c |
comparison
equal
deleted
inserted
replaced
53:5cedcb683eda | 54:ed74c5cabe98 |
---|---|
1 --- Modulizer framework | 1 -------------------------------------------- |
2 -- Veneer | |
3 -- Core | |
4 -- author: Krakyn | |
5 -- @project-revision@ @project-hash@ | |
6 -- @file-revision@ @file-hash@ | |
7 -- Created: 4/27/2016 1:02 AM | |
8 -------------------------------------------- | |
9 --- Implemented methods | |
2 -- OnInitialize | 10 -- OnInitialize |
3 -- OnUpdate | 11 -- OnUpdate |
4 -- OnEnable -- run when GetSpecialization() returns true | 12 -- OnEnable -- runs as soon as GetSpecialization() returns valid data |
5 | 13 |
6 local ADDON, A = ... | 14 local ADDON, A = ... |
7 Veneer = Veneer or CreateFrame('Frame', 'Veneer', UIParent) | |
8 local B = Veneer | |
9 local wipe, min, max, random, tinsert, tremove = table.wipe, math.min, math.max, math.random, table.insert, table.remove | 15 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 | 16 local pairs, ipairs, select, unpack, _G = pairs, ipairs, select, unpack, _G |
11 local type, tostring, format = type, tostring, string.format | 17 local type, tostring, format = type, tostring, string.format |
12 A.frame = B | 18 |
13 | 19 --- Establish presence |
14 --- Cache tables | 20 Veneer = Veneer or CreateFrame('Frame', 'Veneer', UIParent) |
15 local initOnced | 21 local V = Veneer |
16 local modules = {} | 22 A.frame = V |
17 local queuedModules = {} | 23 |
18 local checkForConfig = {} | 24 --- Work variables |
19 local moduleStack = { | 25 local modules = {} -- module collector |
20 } | 26 local queuedModules = {} -- indicates modules that were encountered out of dependency order |
27 local checkForConfig = {} -- indicates frames created from XML that use their own namespace for position control | |
28 local moduleStack = {} -- dictates the order in which module methods are fired | |
29 local initOnced -- internal check for doing bottom-up SV retrieval | |
21 | 30 |
22 --- Utilities | 31 --- Utilities |
23 B.wipeall = function (...) | 32 V.wipeall = function (...) |
24 for i = 1, select('#', ...) do | 33 for i = 1, select('#', ...) do |
25 wipe(select(i, ...)) | 34 wipe(select(i, ...)) |
26 end | 35 end |
27 end | 36 end |
28 | 37 |
29 --- Various region categories | 38 --- Various region categories |
30 B.displays = {} | 39 V.displays = {} |
31 B.configLayers = {} | 40 V.configLayers = {} |
32 B.configLayersRef = {} | 41 V.configLayersRef = {} |
33 | 42 |
34 | 43 |
35 --@debug@ | 44 --- Returns a debug hook for adding generic module information to each message |
36 --- Generates a print handler pointing to a static channel signature | 45 -- @usage func = V.print(sig) |
37 -- @usage func = B.print(sig) | |
38 -- @param sig channel name or number | 46 -- @param sig channel name or number |
47 local debugstack = _G.debugstack | |
48 local Devian = _G.Devian | |
39 local printfuncs = {} | 49 local printfuncs = {} |
40 B.print = function(pref, ...) | 50 V.print = function(pref, ...) |
41 if Devian and Devian.InWorkspace() then | 51 if Devian and Devian.InWorkspace() then |
42 printfuncs[pref] = printfuncs[pref] or function(...) print(pref, ...) end | 52 printfuncs[pref] = printfuncs[pref] or function(...) print(pref, ...) end |
43 | 53 |
44 return printfuncs[pref] | 54 return printfuncs[pref] |
45 else | 55 else |
46 return function () end | 56 return function () end |
47 end | 57 end |
48 end | 58 end |
49 | 59 |
60 --@debug@ | |
50 local rgb = {} | 61 local rgb = {} |
51 local getcolor = function() | 62 local getcolor = function() |
52 local n, p = 0, 4 | 63 local n, p = 0, 4 |
53 for i = 1, 3 do | 64 for i = 1, 3 do |
54 rgb[i] = min(random(n,p) * 64, 255) | 65 rgb[i] = min(random(n,p) * 64, 255) |
61 return unpack(rgb) | 72 return unpack(rgb) |
62 end | 73 end |
63 | 74 |
64 local color = {} | 75 local color = {} |
65 local fprints = {} | 76 local fprints = {} |
66 B.fprint = function() | 77 --- Attempts to generate a debug printer based on the local scope. Results vary by where the originator was invoked. |
78 V.fprint = function() | |
67 if not (Devian and Devian.InWorkspace()) then | 79 if not (Devian and Devian.InWorkspace()) then |
68 return function() end | 80 return function() end |
69 end | 81 end |
70 | |
71 | 82 |
72 local sig = debugstack(2,1) | 83 local sig = debugstack(2,1) |
73 if fprints[sig] then | 84 if fprints[sig] then |
74 return fprints[sig] | 85 return fprints[sig] |
75 end | 86 end |
86 | 97 |
87 local r, g, b = getcolor() | 98 local r, g, b = getcolor() |
88 color[sig] = color[sig] or format('|cFF%02X%02X%02X%s|r', r, g, b, func) | 99 color[sig] = color[sig] or format('|cFF%02X%02X%02X%s|r', r, g, b, func) |
89 | 100 |
90 --print(color[func] .. ' ( ' .. table.concat(args, ', ')..' )' ) | 101 --print(color[func] .. ' ( ' .. table.concat(args, ', ')..' )' ) |
91 func = B.print(func) | 102 func = V.print(func) |
92 fprints[sig] = func | 103 fprints[sig] = func |
93 return func | 104 return func |
94 end | 105 end |
95 | 106 |
96 --@end-debug@ | 107 --@end-debug@ |
97 --[=[@non-debug@ | 108 --[=[@non-debug@ |
98 B.print = function() end | 109 V.print = function() end |
99 --@end-non-debug@]=] | 110 --@end-non-debug@]=] |
100 | 111 |
101 -- for the Mikk script | 112 -- for the Mikk script |
102 -- GLOBALS: NUM_LE_RAID_BUFF_TYPES | 113 -- GLOBALS: NUM_LE_RAID_BUFF_TYPES |
103 -- GLOBALS: BUFF_FLASH_TIME_ON, BUFF_FLASH_TIME_OFF, BUFF_MIN_ALPHA, BUFF_WARNING_TIME, BUFF_DURATION_WARNING_TIME | 114 -- GLOBALS: BUFF_FLASH_TIME_ON, BUFF_FLASH_TIME_OFF, BUFF_MIN_ALPHA, BUFF_WARNING_TIME, BUFF_DURATION_WARNING_TIME |
104 -- GLOBALS: BUFFS_PER_ROW, BUFF_MAX_DISPLAY, BUFF_ACTUAL_DISPLAY, DEBUFF_MAX_DISPLAY, DEBUFF_ACTUAL_DISPLAY, BUFF_ROW_SPACING | 115 -- GLOBALS: BUFFS_PER_ROW, BUFF_MAX_DISPLAY, BUFF_ACTUAL_DISPLAY, DEBUFF_MAX_DISPLAY, DEBUFF_ACTUAL_DISPLAY, BUFF_ROW_SPACING |
105 -- GLOBALS: CONSOLIDATED_BUFFS_PER_ROW, CONSOLIDATED_BUFF_ROW_HEIGHT, NUM_TEMP_ENCHANT_FRAMES | 116 -- GLOBALS: CONSOLIDATED_BUFFS_PER_ROW, CONSOLIDATED_BUFF_ROW_HEIGHT, NUM_TEMP_ENCHANT_FRAMES |
106 -- GLOBALS: BUFF_BUTTON_HEIGHT, BUFF_FRAME_BASE_EXTENT, BUFF_HORIZ_SPACING | 117 -- GLOBALS: BUFF_BUTTON_HEIGHT, BUFF_FRAME_BASE_EXTENT, BUFF_HORIZ_SPACING |
107 | 118 |
108 local print = B.print('Bfl') | 119 local print = V.print('Bfl') |
109 | 120 |
110 --- Template for making perpendicular traversals of the displays structure; also makes sure the table is there | 121 --- Template for making perpendicular traversals of the displays structure; also makes sure the table is there |
111 B.Abstract = function(dest, key, table) | 122 local setmetatable = setmetatable |
123 V.Abstract = function(dest, key, table) | |
112 if table then | 124 if table then |
113 for _, v in pairs(dest) do | 125 for _, v in pairs(dest) do |
114 v[key] = {} | 126 v[key] = {} |
115 end | 127 end |
116 end | 128 end |
117 B[key] = setmetatable({}, { | 129 V[key] = setmetatable({}, { |
118 __index = function(t, k) | 130 __index = function(t, k) |
119 return dest[k][key] | 131 return dest[k][key] |
120 end, | 132 end, |
121 __newindex = function(_, k, v) | 133 __newindex = function(_, k, v) |
122 print('abstract write ('..key..'):', k) | 134 print('abstract write ('..key..'):', k) |
124 end, | 136 end, |
125 __tostring = function() return 'Abstract:'..key..'' end | 137 __tostring = function() return 'Abstract:'..key..'' end |
126 }) | 138 }) |
127 | 139 |
128 | 140 |
129 return B[key] | 141 return V[key] |
130 end | 142 end |
131 | 143 |
132 | 144 |
133 --- localize for speed | 145 --- internal |
134 | |
135 local ModulesCall = function(func, flag) | 146 local ModulesCall = function(func, flag) |
136 | |
137 local n = 0 | 147 local n = 0 |
138 for i = 1, #moduleStack do | 148 for i = 1, #moduleStack do |
139 print('calling level '..i) | 149 print('calling level '..i) |
140 local stackset = moduleStack[i] | 150 local stackset = moduleStack[i] |
141 | |
142 for name, module in pairs(stackset) do | 151 for name, module in pairs(stackset) do |
143 n = n + 1 | 152 n = n + 1 |
144 | |
145 | |
146 if module[func] then | 153 if module[func] then |
147 -- nil = pass | 154 -- nil = pass |
148 if not flag or module.Conf[flag] then | 155 if not flag or (module.Conf and module.Conf[flag]) then |
149 if (flag) then | 156 if (flag) then |
150 print(' check', flag, '=', module.Conf[flag]) | 157 print(' check', flag, '=', module.Conf[flag]) |
151 end | 158 end |
152 | 159 |
153 print(' ',n..' '..name..'.'..func..'()') | 160 print(' ',n..' '..name..'.'..func..'()') |
154 module[func](module, module.Conf) | 161 module[func](module, module.Conf) |
155 end | 162 end |
156 | |
157 end | 163 end |
158 end | 164 end |
159 end | 165 end |
160 end | 166 end |
161 | 167 |
166 --- The things that happen repeatedly | 172 --- The things that happen repeatedly |
167 local Init = function () | 173 local Init = function () |
168 end | 174 end |
169 | 175 |
170 | 176 |
171 local layers, refs, displays = B.configLayers, B.configLayersRef, B.displays | 177 local layers, refs, displays = V.configLayers, V.configLayersRef, V.displays |
172 --- Things that happen immediately upon entering world | 178 --- Things that happen immediately upon entering world |
173 local InitOnce = function() | 179 local InitOnce = function() |
174 print('entering world first time') | 180 print('entering world first time') |
175 local defaults = {} | 181 local defaults = {} |
176 print('|cFFFFFF00Veneer|r') | 182 print('|cFFFFFF00Veneer|r') |
179 for k,v in pairs(defaults) do | 185 for k,v in pairs(defaults) do |
180 VeneerData[k] = v | 186 VeneerData[k] = v |
181 end | 187 end |
182 print('Veneer defaults being used.') | 188 print('Veneer defaults being used.') |
183 end | 189 end |
184 B.Conf = setmetatable(VeneerData, {__index = function(_, k) return defaults[k] end}) | 190 V.Conf = setmetatable(VeneerData, {__index = function(_, k) return defaults[k] end}) |
185 | 191 |
186 -- To ensure that modules are run in controlled order, walk the dependency list; if the dep shows up | 192 -- To ensure that modules are run in controlled order, walk the dependency list; if the dep shows up |
187 -- in the loaded manifest, remove the value. If the dep list isn't empty, move that module to the next | 193 -- in the loaded manifest, remove the value. If the dep list isn't empty, move that module to the next |
188 -- layer. | 194 -- layer. |
189 local loaded = {} | 195 local loaded = {} |
265 | 271 |
266 --- Pull in any XML templates | 272 --- Pull in any XML templates |
267 if #checkForConfig >= 1 then | 273 if #checkForConfig >= 1 then |
268 local queuedFrame = tremove(checkForConfig) | 274 local queuedFrame = tremove(checkForConfig) |
269 while queuedFrame do | 275 while queuedFrame do |
270 B.SetConfigLayers(queuedFrame) | 276 V.SetConfigLayers(queuedFrame) |
271 B.UpdateXMLFrame(queuedFrame) | 277 V.UpdateXMLFrame(queuedFrame) |
272 queuedFrame = tremove(checkForConfig) | 278 queuedFrame = tremove(checkForConfig) |
273 end | 279 end |
274 end | 280 end |
275 end | 281 end |
276 | 282 |
277 --- Fires an update to all modules | 283 --- Fires an update to all modules |
278 local lastUpdate | 284 local lastUpdate |
279 function B.UpdateAll(...) | 285 function V.UpdateAll(...) |
280 lastUpdate = GetTime() | 286 lastUpdate = GetTime() |
281 ModulesCall('OnUpdate') | 287 ModulesCall('OnUpdate') |
282 end | 288 end |
283 | 289 |
284 B:RegisterEvent('PLAYER_ENTERING_WORLD') | 290 V:RegisterEvent('PLAYER_ENTERING_WORLD') |
285 B:SetScript('OnEvent', function(self, event) | 291 V:SetScript('OnEvent', function(self, event) |
286 if event == 'PLAYER_ENTERING_WORLD' then | 292 if event == 'PLAYER_ENTERING_WORLD' then |
287 if not initOnced then | 293 if not initOnced then |
288 InitOnce() | 294 InitOnce() |
289 ModulesCall('OnInitialize') | 295 ModulesCall('OnInitialize') |
290 initOnced = true | 296 initOnced = true |
291 C_Timer.After(1, function() | 297 C_Timer.After(1, function() |
292 if GetSpecialization() then | 298 if GetSpecialization() then |
293 print(GetSpecialization(), 'enabling') | 299 print(GetSpecialization(), 'enabling') |
294 | 300 |
295 ModulesCall('OnEnable', 'enabled') | 301 ModulesCall('OnEnable', 'enabled') |
296 B:SetScript('OnUpdate', nil) | 302 V:SetScript('OnUpdate', nil) |
297 end | 303 end |
298 end) | 304 end) |
299 end | 305 end |
300 end | 306 end |
301 | 307 |
302 B.UpdateAll() | 308 V.UpdateAll() |
303 | 309 |
304 if event == 'PLAYER_ENTERING_WORLD' then | 310 if event == 'PLAYER_ENTERING_WORLD' then |
305 B.UpdateConfigLayers() | 311 V.UpdateConfigLayers() |
306 end | 312 end |
307 | 313 |
308 end) | 314 end) |
309 | 315 |
310 --- Modulizer method | 316 --- Modulizer method |
311 -- | 317 -- |
312 function B:RegisterModule (name, module, ...) | 318 function V:RegisterModule (name, module, ...) |
313 if modules[name] then | 319 if modules[name] then |
314 print('pulling modules[|cFFFF8800'.. tostring(name) ..'|r]') | 320 print('pulling modules[|cFFFF8800'.. tostring(name) ..'|r]') |
315 return modules[name] | 321 return modules[name] |
316 end | 322 end |
317 | 323 |
319 if module then | 325 if module then |
320 if modules[name] then | 326 if modules[name] then |
321 error("Module table for '"..tostring(name).."' already exists.") | 327 error("Module table for '"..tostring(name).."' already exists.") |
322 end | 328 end |
323 else | 329 else |
324 module = CreateFrame('Frame', 'Veneer' .. tostring(name) .. 'Handler', B, 'VeneerHandlerTemplate') | 330 module = CreateFrame('Frame', 'Veneer' .. tostring(name) .. 'Handler', V, 'VeneerHandlerTemplate') |
325 end | 331 end |
326 modules[name] = module | 332 modules[name] = module |
327 B[name] = module | 333 V[name] = module |
328 if select('#', ...) >= 1 then | 334 if select('#', ...) >= 1 then |
329 local numDeps = select('#', ...) | 335 local numDeps = select('#', ...) |
330 print(' '..numDeps..' deps detected') | 336 print(' '..numDeps..' deps detected') |
331 for i = 1, numDeps do | 337 for i = 1, numDeps do |
332 local dep = select(i, ...) | 338 local dep = select(i, ...) |
338 end | 344 end |
339 return module | 345 return module |
340 end | 346 end |
341 | 347 |
342 | 348 |
343 B.SetConfigLayers = function(frame) | 349 V.SetConfigLayers = function(frame) |
344 local print = B.fprint() | 350 local print = V.fprint() |
345 if not frame.config then | 351 if not frame.config then |
346 --print(frame:GetName(), 'has no config layers') | 352 --print(frame:GetName(), 'has no config layers') |
347 return | 353 return |
348 end | 354 end |
349 --print('Registering config layers from', frame:GetName()) | 355 --print('Registering config layers from', frame:GetName()) |
357 end | 363 end |
358 --print(' ', i, subframe:GetName()) | 364 --print(' ', i, subframe:GetName()) |
359 end | 365 end |
360 end | 366 end |
361 | 367 |
362 B.RemoveConfigLayers = function(frame) | 368 V.RemoveConfigLayers = function(frame) |
363 | 369 |
364 local print = B.fprint() | 370 local print = V.fprint() |
365 print('|cFFFF0000RemoveConfigLayers', frame:GetName()) | 371 print('|cFFFF0000RemoveConfigLayers', frame:GetName()) |
366 for i, subframe in pairs(layers) do | 372 for i, subframe in pairs(layers) do |
367 if subframe:GetParent() == frame then | 373 if subframe:GetParent() == frame then |
368 print('|cFFFF8800 ', subframe:GetParent():GetName(), '|cFFFFFF00', subframe:GetName()) | 374 print('|cFFFF8800 ', subframe:GetParent():GetName(), '|cFFFFFF00', subframe:GetName()) |
369 layers[i]:Hide() | 375 layers[i]:Hide() |
371 refs[subframe] = nil | 377 refs[subframe] = nil |
372 end | 378 end |
373 end | 379 end |
374 end | 380 end |
375 | 381 |
376 B.ToggleGuideLayers = function() | 382 V.ToggleGuideLayers = function() |
377 local print = B.fprint() | 383 local print = V.fprint() |
378 local func = B.Conf.GuidesMode and 'Show' or 'Hide' | 384 local func = V.Conf.GuidesMode and 'Show' or 'Hide' |
379 local numAnchors = 0 | 385 local numAnchors = 0 |
380 | 386 |
381 for id, region in pairs(layers) do | 387 for id, region in pairs(layers) do |
382 --print(id, region:GetName(), func) | 388 --print(id, region:GetName(), func) |
383 region[func](region) | 389 region[func](region) |
384 end | 390 end |
385 | 391 |
386 --print('['..func..'] updated', #layers, 'regions,', numAnchors, 'frames') | 392 --print('['..func..'] updated', #layers, 'regions,', numAnchors, 'frames') |
387 end | 393 end |
388 B.UpdateConfigLayers = function() | 394 V.UpdateConfigLayers = function() |
389 print('|cFFFF0000', debugstack()) | 395 print('|cFFFF0000', debugstack()) |
390 B.ToggleGuideLayers() | 396 V.ToggleGuideLayers() |
391 end | 397 end |
392 | 398 |
393 local XMLFrame_Enable = function(self, value) | 399 local XMLFrame_Enable = function(self, value) |
394 local name = self:GetName() | 400 local name = self:GetName() |
395 local print = B.print('XML') | 401 local print = V.print('XML') |
396 | 402 |
397 if not B.Conf[name] then | 403 if not V.Conf[name] then |
398 B.Conf[name] = { | 404 V.Conf[name] = { |
399 enabled = true | 405 enabled = true |
400 } | 406 } |
401 end | 407 end |
402 | 408 |
403 print() | 409 print() |
404 local enabled | 410 local enabled |
405 if value == nil then | 411 if value == nil then |
406 if B.Conf[name].enabled == nil then | 412 if V.Conf[name].enabled == nil then |
407 print('toggle based on visibility') | 413 print('toggle based on visibility') |
408 enabled = (not self:IsVisible()) and true or false | 414 enabled = (not self:IsVisible()) and true or false |
409 else | 415 else |
410 print('toggle a config value =', B.Conf[name].enabled) | 416 print('toggle a config value =', V.Conf[name].enabled) |
411 enabled = B.Conf[name].enabled | 417 enabled = V.Conf[name].enabled |
412 end | 418 end |
413 | 419 |
414 enabled = (enabled ~= true) and true or false | 420 enabled = (enabled ~= true) and true or false |
415 else | 421 else |
416 print('use argument value', value) | 422 print('use argument value', value) |
417 enabled = value | 423 enabled = value |
418 end | 424 end |
419 | 425 |
420 print('arg =', value, 'conf =', B.Conf[name].enabled, 'result=', enabled) | 426 print('arg =', value, 'conf =', V.Conf[name].enabled, 'result=', enabled) |
421 | 427 |
422 B.Conf[name].enabled = enabled | 428 V.Conf[name].enabled = enabled |
423 | 429 |
424 local stateFunc = enabled and 'Show' or 'Hide' | 430 local stateFunc = enabled and 'Show' or 'Hide' |
425 local eventFunc = enabled and 'OnToggle' or 'OnToggle' | 431 local eventFunc = enabled and 'OnToggle' or 'OnToggle' |
426 --- taggled layers | 432 --- taggled layers |
427 if self.toggled then | 433 if self.toggled then |
429 region[stateFunc](region) | 435 region[stateFunc](region) |
430 end | 436 end |
431 end | 437 end |
432 --- toggle action | 438 --- toggle action |
433 if self.OnToggle then | 439 if self.OnToggle then |
434 self:OnToggle(B.Conf[name].enabled) | 440 self:OnToggle(V.Conf[name].enabled) |
435 end | 441 end |
436 --- do enable | 442 --- do enable |
437 if B.Conf[name].enabled then | 443 if V.Conf[name].enabled then |
438 if self.OnEnable then | 444 if self.OnEnable then |
439 self:OnEnable() | 445 self:OnEnable() |
440 end | 446 end |
441 else | 447 else |
442 if self.OnDisable then | 448 if self.OnDisable then |
443 self:OnDisable() | 449 self:OnDisable() |
444 end | 450 end |
445 end | 451 end |
446 end | 452 end |
447 --- Generic handlers for keeping track of XML-defined frames | 453 --- Generic handlers for keeping track of XML-defined frames |
448 local print = B.print('XML') | 454 local print = V.print('XML') |
449 B.prototypes = {} | 455 local prototypes = {} |
450 B.prototypes.OnDragStart = function(self) | 456 prototypes.OnDragStart = function(self) |
451 local print = B.print('XML') | |
452 self.xA = self:GetLeft() | 457 self.xA = self:GetLeft() |
453 self.yA = self:GetBottom() | 458 self.yA = self:GetBottom() |
454 self.anchorTo, self.relativeTo, self.relativePoint, self.x, self.y = self:GetPoint(1) | 459 self.anchorTo, self.relativeTo, self.relativePoint, self.x, self.y = self:GetPoint(1) |
455 print('acquire anchor', self:GetPoint(1)) | 460 print('acquire anchor', self:GetPoint(1)) |
456 print(self:GetName(), 'start moving ('..self.x..', '..self.y..')') | 461 print(self:GetName(), 'start moving ('..self.x..', '..self.y..')') |
457 self:StartMoving() | 462 self:StartMoving() |
458 end | 463 end |
459 | 464 |
460 B.prototypes.OnDragStop = function(self) | 465 prototypes.OnDragStop = function(self) |
461 local print = B.print('XML') | |
462 local name = self:GetName() | 466 local name = self:GetName() |
463 print(name, 'stop moving ('..self:GetLeft()..', '..self:GetBottom()..')') | 467 print(name, 'stop moving ('..self:GetLeft()..', '..self:GetBottom()..')') |
464 local xB = self:GetLeft() - self.xA | 468 local xB = self:GetLeft() - self.xA |
465 local yB = self:GetBottom() - self.yA | 469 local yB = self:GetBottom() - self.yA |
466 print('storing anchor point', self.anchorTo, self.relativePoint, self.x + xB, self.y + yB) | 470 print('storing anchor point', self.anchorTo, self.relativePoint, self.x + xB, self.y + yB) |
467 | |
468 self:StopMovingOrSizing() | 471 self:StopMovingOrSizing() |
469 B.Conf[name].position = {self.anchorTo, self.relativePoint, self.x + xB, self.y + yB} | 472 V.Conf[name].position = {self.anchorTo, self.relativePoint, self.x + xB, self.y + yB} |
470 B.UpdateXMLFrame(self) | 473 V.UpdateXMLFrame(self) |
471 end | 474 end |
472 | 475 |
473 | 476 |
474 B.RegisterModuleFrame = function(self, moduleName) | 477 V.RegisterModuleFrame = function(self, moduleName) |
475 local print = B.print('XML') | |
476 local name = self:GetName() | 478 local name = self:GetName() |
477 tinsert(checkForConfig, self) | 479 tinsert(checkForConfig, self) |
478 self.Enable = XMLFrame_Enable | 480 self.Enable = XMLFrame_Enable |
479 self.moduleName = moduleName | 481 self.moduleName = moduleName |
480 print('|cFF00FF00XML stuff related to '.. tostring(moduleName) .. ':', self:GetName()) | 482 print('|cFF00FF00XML stuff related to '.. tostring(moduleName) .. ':', self:GetName()) |
481 ------------------------------------------------------------------------------------------ | 483 ------------------------------------------------------------------------------------------ |
482 if not B[name] then | 484 if not V[name] then |
483 return | 485 return |
484 end | 486 end |
485 | 487 |
486 local scriptTypes = {'OnUpdate', 'OnEvent', 'OnDragStart', 'OnDragStop'} | 488 local scriptTypes = {'OnUpdate', 'OnEvent', 'OnDragStart', 'OnDragStop'} |
487 for script in next(scriptTypes) do | 489 for script in next(scriptTypes) do |
488 if B[name][script] then | 490 if V[name][script] then |
489 self:SetScript(script, B[name][script]) | 491 self:SetScript(script, V[name][script]) |
490 end | 492 end |
491 end | 493 end |
492 | 494 |
493 end | 495 end |
494 local XMLFrame_OnDragStart = function() end | 496 local XMLFrame_OnDragStart = function() end |
495 local XMLFrame_OnDragStop = function() end | 497 local XMLFrame_OnDragStop = function() end |
496 | 498 |
497 B.UpdateXMLFrame = function(self) | 499 V.UpdateXMLFrame = function(self) |
498 local print = B.print('XML') | 500 local print = V.print('XML') |
499 | 501 |
500 local name = self:GetName() | 502 local name = self:GetName() |
501 | 503 |
502 | 504 |
503 if self.drag then | 505 if self.drag then |
504 self:RegisterForDrag('LeftButton') | 506 self:RegisterForDrag('LeftButton') |
505 self:SetScript('OnDragStart', XMLFrame_OnDragStart) | 507 self:SetScript('OnDragStart', prototypes.OnDragStart) |
506 if self.OnDragStop then | 508 if self.OnDragStop then |
507 self:SetScript('OnDragStop', function(self, ...) | 509 self:SetScript('OnDragStop', function(self, ...) |
508 print('|cFFFF0088end of dragging') | 510 print('|cFFFF0088end of dragging') |
509 self:OnDragStop(self, ...) | 511 self:OnDragStop(self, ...) |
510 XMLFrame_OnDragStop(self, ...) | 512 prototypes.OnDragStop(self, ...) |
511 end) | 513 end) |
512 else | 514 else |
513 self:SetScript('OnDragStop', XMLFrame_OnDragStop) | 515 self:SetScript('OnDragStop', prototypes.OnDragStop) |
514 end | 516 end |
515 else | 517 else |
516 self:EnableMouse(false) | 518 self:EnableMouse(false) |
517 end | 519 end |
518 | 520 |
519 if not B.Conf[name] then | 521 if not V.Conf[name] then |
520 B.Conf[name] = { | 522 V.Conf[name] = { |
521 enabled = self.enabled, | 523 enabled = self.enabled, |
522 } | 524 } |
523 end | 525 end |
524 local c = B.Conf[name] | 526 local c = V.Conf[name] |
525 | 527 |
526 if not c.position then | 528 if not c.position then |
527 local anchor, _, point, x, y = self:GetPoint(1) | 529 local anchor, _, point, x, y = self:GetPoint(1) |
528 print('seeding default position', anchor, point, x, y) | 530 print('seeding default position', anchor, point, x, y) |
529 c.position = {anchor, point, x, y} | 531 c.position = {anchor, point, x, y} |