Mercurial > wow > devian
comparison Devian.lua @ 73:3745540e8996 v2.1.74
- New commands:
- /dvn remove (index|tag) will remove a channel from the current profile
- /dvncolors resets the tag color cache
- Fixed an issue with creating more than one output channel per UI session.
- Performance improvements:
- Color caching now ignores decimal timestamps, removing a source of cache bloat
- Cleaned up a bunch of global variable use in many areas
| author | Nenue |
|---|---|
| date | Sat, 09 Apr 2016 06:34:04 -0400 |
| parents | da5ff1fc9fb6 |
| children | 3a33e47eeca8 |
comparison
equal
deleted
inserted
replaced
| 72:da5ff1fc9fb6 | 73:3745540e8996 |
|---|---|
| 5 | 5 |
| 6 --GLOBALS: Devian, DevCon, DevianLoadMessage | 6 --GLOBALS: Devian, DevCon, DevianLoadMessage |
| 7 local ADDON, D = ... | 7 local ADDON, D = ... |
| 8 local sub, GetTime, print, _G = string.sub, GetTime, print, _G | 8 local sub, GetTime, print, _G = string.sub, GetTime, print, _G |
| 9 local format, setmetatable, getprinthandler, setprinthandler = string.format, setmetatable, getprinthandler, setprinthandler | 9 local format, setmetatable, getprinthandler, setprinthandler = string.format, setmetatable, getprinthandler, setprinthandler |
| 10 local tinsert = tinsert | 10 local tinsert, tremove = tinsert, tremove |
| 11 local currentProfile | 11 local currentProfile |
| 12 local playerName = UnitName("player") | 12 local playerName = UnitName("player") |
| 13 local playerRealm = playerName .. '-' .. GetRealmName() | 13 local playerRealm = playerName .. '-' .. GetRealmName() |
| 14 local num_dock_tabs = 0 | 14 local num_dock_tabs = 0 |
| 15 local in_workspace = false | 15 local in_workspace = false |
| 232 return D:StackFrames() | 232 return D:StackFrames() |
| 233 elseif mode == 'grid' then | 233 elseif mode == 'grid' then |
| 234 return D:DistributeFrames() | 234 return D:DistributeFrames() |
| 235 elseif mode == 'tag' then -- tagging | 235 elseif mode == 'tag' then -- tagging |
| 236 return D.Tag(self, tag, dest) | 236 return D.Tag(self, tag, dest) |
| 237 elseif mode == 'new' then | |
| 238 return D.New(self, tag) | |
| 239 elseif mode == 'remove' then | |
| 240 return D.Remove(self, tag) | |
| 237 elseif tonumber(mode) ~= nil or mode == 'save' then | 241 elseif tonumber(mode) ~= nil or mode == 'save' then |
| 238 -- either a number of the save command | 242 -- either a number of the save command |
| 239 if mode == 'save' then | 243 if mode == 'save' then |
| 240 list_id = tonumber(tag) | 244 list_id = tonumber(tag) |
| 241 if list_id == nil then | 245 if list_id == nil then |
| 368 else | 372 else |
| 369 D:Print(L['Command tag help']) | 373 D:Print(L['Command tag help']) |
| 370 end | 374 end |
| 371 end | 375 end |
| 372 | 376 |
| 373 | 377 D.New = function(self, tag) |
| 378 if tag and not self.sigID[tag] then | |
| 379 local id = D.max_channel + 1 | |
| 380 D.SetChannel(tag, id) | |
| 381 end | |
| 382 end | |
| 383 | |
| 384 D.Remove = function(self, dest) | |
| 385 dest = D.sigID[dest] or tonumber(dest) | |
| 386 if D.console[dest] and D.channels[dest] then | |
| 387 for tag, tagDest in pairs(D.tags) do | |
| 388 for i = #tagDest, 0 do | |
| 389 -- work downward so we aren't skipping entries | |
| 390 if tagDest[i] == dest then | |
| 391 tremove(tagDest, i) | |
| 392 end | |
| 393 end | |
| 394 end | |
| 395 D.console[dest]:Hide() | |
| 396 D.channels[dest] = nil | |
| 397 tremove(D.console, dest) | |
| 398 tremove(D.dock.buttons, dest) | |
| 399 D:UpdateDock() | |
| 400 D:Print('Removed channel #'..dest) | |
| 401 end | |
| 402 end | |
| 374 | 403 |
| 375 --- Creates a Devian-style output. | 404 --- Creates a Devian-style output. |
| 376 -- The first argument describes the channel to output on, and the remaining arguments are concatenated in a manner similar to default print() | 405 -- The first argument describes the channel to output on, and the remaining arguments are concatenated in a manner similar to default print() |
| 377 -- This becomes the print handler when development mode is active. The original print() function is assigned to oldprint(). | 406 -- This becomes the print handler when development mode is active. The original print() function is assigned to oldprint(). |
| 378 -- @param Tag, signature, or numeric index of the channel to output on. Defaults to primary channel. | 407 -- @param Tag, signature, or numeric index of the channel to output on. Defaults to primary channel. |
| 408 end | 437 end |
| 409 | 438 |
| 410 -- color me timbers | 439 -- color me timbers |
| 411 local pcolor | 440 local pcolor |
| 412 if (not db.tagcolor[prefix]) and byName then | 441 if (not db.tagcolor[prefix]) and byName then |
| 413 local c = { | 442 if prefix:match('^%d+%.%d+$') then |
| 414 rand(64,255), rand(64,255), rand(64,255) | 443 pcolor = 'FFFFFF' |
| 415 } | 444 else |
| 416 if c[1] > 223 and c[2] > 223 and c[3] > 223 then | 445 local c = { |
| 417 c[rand(1,3)] = rand(64,223) | 446 rand(64,255), rand(64,255), rand(64,255) |
| 418 end | 447 } |
| 419 | 448 if c[1] > 223 and c[2] > 223 and c[3] > 223 then |
| 420 db.tagcolor[prefix] = format('%02X%02X%02X', unpack(c)) | 449 c[rand(1,3)] = rand(64,223) |
| 421 end | 450 end |
| 422 pcolor = db.tagcolor[prefix] | 451 db.tagcolor[prefix] = format('%02X%02X%02X', unpack(c)) |
| 452 pcolor = db.tagcolor[prefix] | |
| 453 end | |
| 454 else | |
| 455 pcolor = db.tagcolor[prefix] | |
| 456 end | |
| 423 | 457 |
| 424 local buffer = {} | 458 local buffer = {} |
| 425 for i = 1, select('#',...) do | 459 for i = 1, select('#',...) do |
| 426 local var = select(i, ...) | 460 local var = select(i, ...) |
| 427 | 461 |
| 447 local message = concat(buffer, ' ') | 481 local message = concat(buffer, ' ') |
| 448 for id, channel in pairs(sendq) do | 482 for id, channel in pairs(sendq) do |
| 449 if channel.width < 250 then | 483 if channel.width < 250 then |
| 450 prefix = sub(prefix, 0,2) | 484 prefix = sub(prefix, 0,2) |
| 451 end | 485 end |
| 486 --currentProfile.last_channel = channel.index | |
| 452 channel.out:AddMessage('|cFF'.. pcolor..prefix ..'|r ' .. message, 0.8, 0.8, 0.8, nil, nil, prefix, GetTime()) | 487 channel.out:AddMessage('|cFF'.. pcolor..prefix ..'|r ' .. message, 0.8, 0.8, 0.8, nil, nil, prefix, GetTime()) |
| 453 if not D.dock.buttons[id].newMessage then | 488 if not D.dock.buttons[id].newMessage then |
| 454 D.dock.buttons[id].newMessage = true | 489 D.dock.buttons[id].newMessage = true |
| 455 D.UpdateBeacon(D.dock.buttons[id]) | 490 D.UpdateBeacon(D.dock.buttons[id]) |
| 456 end | 491 end |
| 481 for k,v in pairs(defaults) do | 516 for k,v in pairs(defaults) do |
| 482 if not blocked[k] then | 517 if not blocked[k] then |
| 483 DevianDB[k] = v | 518 DevianDB[k] = v |
| 484 end | 519 end |
| 485 end | 520 end |
| 521 | |
| 486 _G.DevianLoadMessage = "Non-user SavedVars have been reset." | 522 _G.DevianLoadMessage = "Non-user SavedVars have been reset." |
| 487 _G.ReloadUI() | 523 _G.ReloadUI() |
| 488 end | 524 end |
| 489 D.SetDefaultsAll = function () | 525 D.SetDefaultsAll = function () |
| 490 _G.DevianDB = nil | 526 _G.DevianDB = nil |
| 491 _G.DevianLoadMessage = "All SavedVars wiped." | 527 _G.DevianLoadMessage = "All SavedVars wiped." |
| 492 _G.ReloadUI() | 528 _G.ReloadUI() |
| 529 end | |
| 530 | |
| 531 D.UnsetColors = function() | |
| 532 db.tagcolor = {} | |
| 533 D:Print('Tag color cache cleared.') | |
| 493 end | 534 end |
| 494 D.ConfigCommand = function(self, input) | 535 D.ConfigCommand = function(self, input) |
| 495 if not self.config then | 536 if not self.config then |
| 496 self.config = DevCon | 537 self.config = DevCon |
| 497 self:EnableModule("Config") | 538 self:EnableModule("Config") |
| 505 local cmdlist = { | 546 local cmdlist = { |
| 506 ['dfs'] = 'FrameHelper_Update', | 547 ['dfs'] = 'FrameHelper_Update', |
| 507 ['dvn'] = "Command", | 548 ['dvn'] = "Command", |
| 508 ['devian'] = "Command", | 549 ['devian'] = "Command", |
| 509 ['dvc'] = "Console_Toggle", | 550 ['dvc'] = "Console_Toggle", |
| 551 ['dvncolors'] = "UnsetColors", | |
| 510 ['cleandvn'] = "SetDefaultsAll", | 552 ['cleandvn'] = "SetDefaultsAll", |
| 511 ['resetdvn'] = "SetDefaults", | 553 ['resetdvn'] = "SetDefaults", |
| 512 ['dvg'] = "ConfigCommand" | 554 ['dvg'] = "ConfigCommand" |
| 513 } | 555 } |
| 514 for cmd, func in pairs(cmdlist) do | 556 for cmd, func in pairs(cmdlist) do |
