Mercurial > wow > devian
comparison Devian.lua @ 93:f6fae1a4c66c v2.2.95-rc1
- revision and simplification dock layout
- fixed character-specific addon choices getting erroneously toggled
The XML template was missing header information; that has been filled in, and it should be easier to catch problems arising from that area.
author | Nenue |
---|---|
date | Wed, 19 Oct 2016 16:47:38 -0400 |
parents | 4370eefcecdd |
children | 33bc8baba858 |
comparison
equal
deleted
inserted
replaced
92:4370eefcecdd | 93:f6fae1a4c66c |
---|---|
19 local tinsert, tremove, rawset = tinsert, tremove, rawset | 19 local tinsert, tremove, rawset = tinsert, tremove, rawset |
20 local currentProfile | 20 local currentProfile |
21 local playerName = UnitName("player") | 21 local playerName = UnitName("player") |
22 local playerRealm = playerName .. '-' .. GetRealmName() | 22 local playerRealm = playerName .. '-' .. GetRealmName() |
23 local num_dock_tabs = 0 | 23 local num_dock_tabs = 0 |
24 | 24 local charStates ={} |
25 | 25 |
26 DevianLoadMessage = setmetatable({}, { | 26 DevianLoadMessage = setmetatable({}, { |
27 __call = function(t, msg) | 27 __call = function(t, msg) |
28 rawset(t, #t+1, msg) | 28 rawset(t, #t+1, msg) |
29 end, | 29 end, |
41 end | 41 end |
42 | 42 |
43 if D.debugmode then | 43 if D.debugmode then |
44 return print('Dvn', ...) | 44 return print('Dvn', ...) |
45 else | 45 else |
46 return function() end | 46 return nop |
47 end | 47 end |
48 end | 48 end |
49 local print = D.print | 49 local print = D.print |
50 | 50 |
51 D.L = setmetatable({}, { | 51 D.L = setmetatable({}, { |
167 -- If he value is a function, then it will invoke f(...) and use whatever gets returned | 167 -- If he value is a function, then it will invoke f(...) and use whatever gets returned |
168 function D.DeepCopy(src, dest, ...) | 168 function D.DeepCopy(src, dest, ...) |
169 | 169 |
170 for k,v in pairs(src) do | 170 for k,v in pairs(src) do |
171 if not dest[k] then | 171 if not dest[k] then |
172 oldprint('Rebuilding conf value', k) | 172 --oldprint('Rebuilding conf value', k) |
173 if type(v) == 'table' then | 173 if type(v) == 'table' then |
174 dest[k] = {} | 174 dest[k] = {} |
175 D.DeepCopy(v, dest[k], ...) | 175 D.DeepCopy(v, dest[k], ...) |
176 | 176 |
177 else | 177 else |
230 DEVIAN_PNAME = currentProfile.name | 230 DEVIAN_PNAME = currentProfile.name |
231 DEVIAN_PID = id | 231 DEVIAN_PID = id |
232 setprinthandler(D.Message) | 232 setprinthandler(D.Message) |
233 else | 233 else |
234 DEVIAN_WORKSPACE = false | 234 DEVIAN_WORKSPACE = false |
235 DEVIAN_PNAME = '' | 235 DEVIAN_PNAME = nil |
236 print = function() end | 236 print = nop |
237 end | 237 end |
238 DEVIAN_PID =id | 238 DEVIAN_PID =id |
239 | 239 |
240 D.unlisted = currentProfile.unlisted | 240 D.unlisted = currentProfile.unlisted |
241 D.channels = currentProfile.channels | 241 D.channels = currentProfile.channels |
272 local mode, tag, dest = unpack(args) | 272 local mode, tag, dest = unpack(args) |
273 | 273 |
274 | 274 |
275 -- no args, toggle ui | 275 -- no args, toggle ui |
276 if mode == 'rc' then | 276 if mode == 'rc' then |
277 return D.ResetChannels(self, tag) | 277 return D:ResetChannels(tag) |
278 elseif mode == 'stack' then | 278 elseif mode == 'stack' then |
279 return D:StackFrames() | 279 return D:StackFrames() |
280 elseif mode == 'grid' then | 280 elseif mode == 'grid' then |
281 return D:DistributeFrames() | 281 return D:DistributeFrames() |
282 elseif mode == 'tag' then -- tagging | 282 elseif mode == 'tag' then -- tagging |
283 return D.Tag(self, tag, dest) | 283 return D:Tag(tag, dest) |
284 elseif mode == 'new' then | 284 elseif mode == 'new' then |
285 return D.New(self, tag) | 285 return D:New(tag) |
286 elseif mode == 'dock' then | |
287 D.db.dockPoint = tag | |
288 return D:UpdateDock() | |
286 elseif mode == 'remove' then | 289 elseif mode == 'remove' then |
287 return D.Remove(self, tag) | 290 return D:Remove(tag) |
288 elseif mode ~= nil then | 291 elseif mode ~= nil then |
289 -- profile selector or save command | 292 -- profile selector or save command |
290 if mode == 'save' then | 293 if mode == 'save' then |
291 list_id = tonumber(tag) | 294 list_id = tonumber(tag) |
292 else | 295 else |
361 targetGlobal = db.profiles[list_id].global | 364 targetGlobal = db.profiles[list_id].global |
362 targetChar = db.profiles[list_id].char[playerRealm] | 365 targetChar = db.profiles[list_id].char[playerRealm] |
363 | 366 |
364 | 367 |
365 if scan_func then | 368 if scan_func then |
369 wipe(charStates) | |
366 for id, name, enableState, globalState in D.Addons() do | 370 for id, name, enableState, globalState in D.Addons() do |
367 scan_func(id, name, enableState, globalState) | 371 scan_func(id, name, enableState, globalState) |
368 end | 372 end |
369 end | 373 end |
370 | 374 |
371 if scan_func == D.Load then | 375 if scan_func == D.Load then |
372 _G.ReloadUI() | 376 _G.ReloadUI() |
373 end | 377 if AddonList_Update then |
378 AddonList_Update() | |
379 end | |
380 elseif (scan_func == D.Save) then | |
381 print('reckoning') | |
382 local updated = {} | |
383 for addon, newState in pairs(charStates) do | |
384 for character, addons in pairs(db.profiles[list_id].char) do | |
385 if addons[addon] then | |
386 print(addon, addons[addon], '::', newState) | |
387 if (addons[addon] ~= newState) then | |
388 addons[addon] = newState | |
389 updated[character] = (updated[character] or 0) + 1 | |
390 end | |
391 | |
392 end | |
393 | |
394 end | |
395 end | |
396 for character, numAddons in pairs(updated) do | |
397 print(character, numAddons, 'settings') | |
398 end | |
399 | |
400 end | |
401 | |
402 | |
374 D.Profile(db.current_profile) | 403 D.Profile(db.current_profile) |
375 end | 404 end |
376 | 405 |
377 D.Addons = function() | 406 D.Addons = function() |
378 local playername = UnitName("player") | 407 local playername = UnitName("player") |
387 return i, name, enableState, globalState | 416 return i, name, enableState, globalState |
388 end, GetNumAddOns(), 0 | 417 end, GetNumAddOns(), 0 |
389 end | 418 end |
390 | 419 |
391 D.Load = function(id, name, charState, globalState) | 420 D.Load = function(id, name, charState, globalState) |
392 if targetChar[name] or targetGlobal[name] then | 421 print('load', tostring(name), tostring(charState), tostring(globalState)) |
393 if targetGlobal[name] == 2 then | 422 if targetGlobal[name] == 2 then |
394 EnableAddOn(id, true) | 423 EnableAddOn(id, true) |
395 elseif targetChar[name] == 2 then | 424 elseif targetChar[name] == 2 then |
396 EnableAddOn(id, playerName) | 425 EnableAddOn(id, playerName) |
397 else | 426 elseif targetGlobal[name] == 0 then |
398 if targetChar[name] == 2 and targetGlobal[name] ~= 2 then | 427 DisableAddOn(id, true) |
399 DisableAddOn(id) | 428 elseif targetChar[name] == 0 then |
400 else | 429 DisableAddOn(id, playerName) |
401 DisableAddOn(id, true) | 430 end |
402 end | 431 |
403 end | 432 if not (targetChar[name] or targetGlobal[name]) then |
404 --print('load', name, 'global =', targetGlobal[name], 'char =', targetChar[name]) | |
405 else | |
406 tinsert(D.unlisted, name) | 433 tinsert(D.unlisted, name) |
407 end | 434 end |
408 end | 435 |
436 end | |
437 | |
438 | |
409 D.Save = function(id, name, charState, globalState) | 439 D.Save = function(id, name, charState, globalState) |
410 --print('save', id, name, charState, globalState) | 440 if (charState ~= 0) or (globalState ~= 0) then |
441 print('save', id, name, playerRealm .. ': '.. charState, 'All: '.. globalState) | |
442 end | |
443 | |
411 targetGlobal[name] = globalState | 444 targetGlobal[name] = globalState |
412 targetChar[name] = charState | 445 targetChar[name] = charState |
446 | |
447 -- if enabling/disabling globally | |
448 if globalState ~= 1 then | |
449 charStates[name] = globalState | |
450 end | |
413 end | 451 end |
414 | 452 |
415 D.Tag = function(self, tag, dest) | 453 D.Tag = function(self, tag, dest) |
416 local sig | 454 local sig |
417 if tag ~= nil and dest ~= nil then | 455 if tag ~= nil and dest ~= nil then |
490 end | 528 end |
491 end | 529 end |
492 D.console[dest]:Hide() | 530 D.console[dest]:Hide() |
493 D.channels[dest] = nil | 531 D.channels[dest] = nil |
494 tremove(D.console, dest) | 532 tremove(D.console, dest) |
495 tremove(D.dock.buttons, dest) | 533 D.dock.buttons[dest]:SetShown(false) |
496 D:UpdateDock() | 534 D:UpdateDock() |
497 D:Print('Removed channel #'..dest) | 535 D:Print('Removed channel #'..dest) |
498 end | 536 end |
499 end | 537 end |
500 | 538 |
587 if channel.width < 250 then | 625 if channel.width < 250 then |
588 prefix = sub(prefix, 0,2) | 626 prefix = sub(prefix, 0,2) |
589 end | 627 end |
590 --currentProfile.last_channel = channel.index | 628 --currentProfile.last_channel = channel.index |
591 channel.out:AddMessage('|cFF'.. pcolor..prefix ..'|r ' .. message, 0.8, 0.8, 0.8, nil, nil, prefix, GetTime()) | 629 channel.out:AddMessage('|cFF'.. pcolor..prefix ..'|r ' .. message, 0.8, 0.8, 0.8, nil, nil, prefix, GetTime()) |
592 if not D.dock.buttons[id].newMessage then | 630 if not D.dock.usedButtons[id].newMessage then |
593 D.dock.buttons[id].newMessage = true | 631 D.dock.usedButtons[id].newMessage = true |
594 D.UpdateBeacon(D.dock.buttons[id]) | 632 D.dock.usedButtons[id].caption.pulse:Play() |
633 D.dock.usedButtons[id]:Update() | |
595 end | 634 end |
596 end | 635 end |
597 wipe(buffer) | 636 wipe(buffer) |
598 end | 637 end |
599 | 638 |
675 for cmd, func in pairs(cmdlist) do | 714 for cmd, func in pairs(cmdlist) do |
676 local CMD = cmd:upper() | 715 local CMD = cmd:upper() |
677 _G['SLASH_' .. CMD .. '1'] = "/"..cmd | 716 _G['SLASH_' .. CMD .. '1'] = "/"..cmd |
678 | 717 |
679 if type(func == 'string') then | 718 if type(func == 'string') then |
680 print('SLASH_' .. CMD .. '1','/'.. cmd, func) | 719 --print('SLASH_' .. CMD .. '1','/'.. cmd, func) |
681 SlashCmdList[CMD] = D[func] | 720 SlashCmdList[CMD] = D[func] |
682 else | 721 else |
683 print('SLASH_' .. CMD .. '1','/'.. cmd, func) | 722 --print('SLASH_' .. CMD .. '1','/'.. cmd, func) |
684 SlashCmdList[CMD] = func | 723 SlashCmdList[CMD] = func |
685 end | 724 end |
686 end | 725 end |
687 | 726 |
688 --- initialize the current profile | 727 --- initialize the current profile |