Mercurial > wow > devian
comparison Devian.lua @ 89:b3ed963f482d v.2.1.92
- /dvc command needed a pre-defined enclosure to properly work through SlashCmdList
- /dvn <profile name> and /dvn save <profile name> should resolve to and update the correct profile.
- set some globals indicating the name and index of the workspace in use
- DEVIAN_WORKSPACE (bool)
- DEVIAN_PNAME (string)
- DEVIAN_PID (number)
author | Nenue |
---|---|
date | Wed, 10 Aug 2016 06:58:27 -0400 |
parents | e80723841888 |
children | bb403e03d82d |
comparison
equal
deleted
inserted
replaced
88:7ff0579e5a6e | 89:b3ed963f482d |
---|---|
16 local currentProfile | 16 local currentProfile |
17 local playerName = UnitName("player") | 17 local playerName = UnitName("player") |
18 local playerRealm = playerName .. '-' .. GetRealmName() | 18 local playerRealm = playerName .. '-' .. GetRealmName() |
19 local num_dock_tabs = 0 | 19 local num_dock_tabs = 0 |
20 DEVIAN_WORKSPACE = false | 20 DEVIAN_WORKSPACE = false |
21 DEVIAN_PNAME = 'Dvn' | |
22 DEVIAN_PID = 0 | |
21 | 23 |
22 | 24 |
23 DevianLoadMessage = setmetatable({}, { | 25 DevianLoadMessage = setmetatable({}, { |
24 __call = function(t, msg) | 26 __call = function(t, msg) |
25 rawset(t, #t+1, msg) | 27 rawset(t, #t+1, msg) |
222 | 224 |
223 | 225 |
224 currentProfile.char[playerRealm] = currentProfile.char[playerRealm] or {} | 226 currentProfile.char[playerRealm] = currentProfile.char[playerRealm] or {} |
225 if currentProfile.workspace then | 227 if currentProfile.workspace then |
226 DEVIAN_WORKSPACE = true | 228 DEVIAN_WORKSPACE = true |
229 DEVIAN_PNAME = name | |
230 DEVIAN_PID = id | |
227 setprinthandler(D.Message) | 231 setprinthandler(D.Message) |
228 else | 232 else |
229 DEVIAN_WORKSPACE = false | 233 DEVIAN_WORKSPACE = false |
234 DEVIAN_PNAME = '' | |
230 print = function() end | 235 print = function() end |
231 end | 236 end |
237 DEVIAN_PID =id | |
232 | 238 |
233 D.unlisted = currentProfile.unlisted | 239 D.unlisted = currentProfile.unlisted |
234 D.channels = currentProfile.channels | 240 D.channels = currentProfile.channels |
235 D.tags = currentProfile.tags | 241 D.tags = currentProfile.tags |
236 D.channelinfo = currentProfile.channels | 242 D.channelinfo = currentProfile.channels |
276 return D.Tag(self, tag, dest) | 282 return D.Tag(self, tag, dest) |
277 elseif mode == 'new' then | 283 elseif mode == 'new' then |
278 return D.New(self, tag) | 284 return D.New(self, tag) |
279 elseif mode == 'remove' then | 285 elseif mode == 'remove' then |
280 return D.Remove(self, tag) | 286 return D.Remove(self, tag) |
281 elseif tonumber(mode) ~= nil or mode == 'save' then | 287 elseif mode ~= nil then |
282 -- either a number of the save command | 288 -- profile selector or save command |
283 if mode == 'save' then | 289 if mode == 'save' then |
284 list_id = tonumber(tag) | 290 list_id = tonumber(tag) |
285 if list_id == nil then | 291 else |
286 D:Print(L('Invalid ID from arg', tag)) | 292 list_id = tonumber(mode) |
287 end | 293 end |
294 | |
295 if not list_id then | |
296 if db.profilesName[tostring(list_id)] then | |
297 list_id = db.profilesName[tostring(list_id)] | |
298 else | |
299 | |
300 D:Print(L('Unable to resolve profile ID/name', list_id, dest)) | |
301 return | |
302 end | |
303 end | |
304 | |
305 | |
306 if mode == 'save' then | |
288 D.Profile(list_id, dest) | 307 D.Profile(list_id, dest) |
289 scan_func = D.Save | 308 scan_func = D.Save |
290 D:Print("Profile |cFFFFFF00".. list_id .."|r saved.") | 309 |
291 else | 310 |
292 | 311 local name = currentProfile.name |
293 D.LoadMessage "Switched profiles." | 312 if dest then |
294 | 313 dest = dest:gsub("$%s+", ''):gsub("%s+^", '') |
295 list_id = tonumber(mode) | 314 if dest then |
296 if list_id ~= db.main_profile then | 315 if name then |
297 db.last_profile = list_id | 316 db.profilesName[name] = nil |
298 end | 317 end |
299 db.current_profile = list_id | 318 db.profiles[list_id].name = dest |
300 scan_func = D.Load | 319 db.profilesName[dest] = list_id |
320 end | |
321 end | |
322 | |
323 | |
324 D:Print("Profile |cFFFFFF00".. list_id .."|r:|cFF00FFFF".. name .."|r saved.") | |
325 else | |
326 | |
327 if db.profiles[list_id] then | |
328 D.LoadMessage ("Switched profiles.") | |
329 if list_id ~= db.main_profile then | |
330 db.last_profile = list_id | |
331 end | |
332 db.current_profile = list_id | |
333 scan_func = D.Load | |
334 else | |
335 return D:PrintHelp() | |
336 end | |
337 | |
301 end | 338 end |
302 elseif mode == nil then | 339 elseif mode == nil then |
303 list_id = (db.current_profile ~= db.main_profile) and db.main_profile or db.last_profile | 340 list_id = (db.current_profile ~= db.main_profile) and db.main_profile or db.last_profile |
304 D.LoadMessage ("Switched between main and recent profile ("..db.current_profile..' and '..list_id..')') | 341 D.LoadMessage ("Switched between main and recent profile ("..db.current_profile..' and '..list_id..')') |
305 db.current_profile = list_id | 342 db.current_profile = list_id |
306 scan_func = D.Load | 343 scan_func = D.Load |
307 else | 344 else |
345 | |
346 | |
308 return D:PrintHelp() | 347 return D:PrintHelp() |
309 end | 348 end |
310 | 349 |
311 if not db.profiles[list_id] then | 350 if not db.profiles[list_id] then |
312 db.profiles[list_id] = {global = {}, char = {} } | 351 db.profiles[list_id] = {global = {}, char = {} } |
593 D.UnsetColors = function() | 632 D.UnsetColors = function() |
594 db.tagcolor = {} | 633 db.tagcolor = {} |
595 D:Print('Tag color cache cleared.') | 634 D:Print('Tag color cache cleared.') |
596 end | 635 end |
597 | 636 |
598 function D:OnEnable() | 637 |
638 function D.ConsoleCommand (cmd) | |
639 D:Console_Toggle(cmd) | |
640 end | |
641 | |
642 | |
643 function D:OnInitialize() | |
644 L = D.L | |
645 | |
646 -- pull defaults | |
647 if not _G.DevianDB then | |
648 _G.DevianDB = defaults | |
649 end | |
650 db = _G.DevianDB | |
651 self.db = db | |
652 | |
653 --- | |
654 if #_G.DevianLoadMessage >= 1 then | |
655 for i, msg in ipairs(_G.DevianLoadMessage) do | |
656 D:Print(msg) | |
657 end | |
658 | |
659 table.wipe(_G.DevianLoadMessage) | |
660 end | |
661 | |
599 | 662 |
600 -- commands | 663 -- commands |
601 local cmdlist = { | 664 local cmdlist = { |
602 ['dfs'] = 'FrameHelper_Update', | |
603 ['dvn'] = "Command", | 665 ['dvn'] = "Command", |
604 ['devian'] = "Command", | 666 ['devian'] = "Command", |
605 ['dvc'] = function() D:Console_Toggle() end, | 667 ['dvc'] = "ConsoleCommand", |
606 ['dvncolors'] = "UnsetColors", | 668 ['dvncolors'] = "UnsetColors", |
607 ['cleandvn'] = "SetDefaultsAll", | 669 ['cleandvn'] = "SetDefaultsAll", |
608 ['resetdvn'] = "SetDefaults", | 670 ['resetdvn'] = "SetDefaults", |
609 } | 671 } |
610 for cmd, func in pairs(cmdlist) do | 672 for cmd, func in pairs(cmdlist) do |
611 local CMD = cmd:upper() | 673 local CMD = cmd:upper() |
612 _G['SLASH_' .. CMD:upper() .. '1'] = "/"..cmd | 674 _G['SLASH_' .. CMD .. '1'] = "/"..cmd |
675 | |
613 if type(func == 'string') then | 676 if type(func == 'string') then |
677 print('SLASH_' .. CMD .. '1','/'.. cmd, func) | |
614 SlashCmdList[CMD] = D[func] | 678 SlashCmdList[CMD] = D[func] |
615 else | 679 else |
680 print('SLASH_' .. CMD .. '1','/'.. cmd, func) | |
616 SlashCmdList[CMD] = func | 681 SlashCmdList[CMD] = func |
617 end | 682 end |
618 | 683 end |
619 end | |
620 end | |
621 | |
622 function D:OnInitialize() | |
623 L = D.L | |
624 | |
625 -- pull defaults | |
626 if not _G.DevianDB then | |
627 _G.DevianDB = defaults | |
628 end | |
629 db = _G.DevianDB | |
630 self.db = db | |
631 | |
632 --- | |
633 if #_G.DevianLoadMessage >= 1 then | |
634 for i, msg in ipairs(_G.DevianLoadMessage) do | |
635 D:Print(msg) | |
636 end | |
637 | |
638 table.wipe(_G.DevianLoadMessage) | |
639 end | |
640 | |
641 | 684 |
642 --- initialize the current profile | 685 --- initialize the current profile |
643 local id, name = D.Profile(db.current_profile or 1) | 686 local id, name = D.Profile(db.current_profile or 1) |
644 D:Print('Using profile |cFFFFFF00'.. id ..'|r: |cFF00FF00'..currentProfile.name..'|r') | 687 D:Print('Using profile |cFFFFFF00'.. id ..'|r: |cFF00FF00'..currentProfile.name..'|r') |
645 if currentProfile.workspace then | 688 if currentProfile.workspace then |
675 end | 718 end |
676 _G.DevianDock:Show() | 719 _G.DevianDock:Show() |
677 D:UpdateDock() | 720 D:UpdateDock() |
678 end | 721 end |
679 end | 722 end |
723 |