comparison Devian.lua @ 100:790dca545f1d v3.0

- Configuration structure overheal; clearing 'Devian.lua' from SaveVariables will be necessary - Removed dependence on embedded libraries. - Console/dock frames are now implemented as XML mixin structures - Console dropdown menu option to 'Pin' frames - Hold SHIFT while clicking dock buttons will cause all but that tab to be closed
author Nenue
date Tue, 17 Jan 2017 14:25:18 -0500
parents 7d94df3804a7
children 8dc0c1917890
comparison
equal deleted inserted replaced
99:7d94df3804a7 100:790dca545f1d
3 -- @project-revision@ @project-hash@ 3 -- @project-revision@ @project-hash@
4 -- @file-revision@ @file-hash@ 4 -- @file-revision@ @file-hash@
5 5
6 --GLOBALS: Devian, DevianLoadMessage, DEVIAN_WORKSPACE, DEVIAN_PNAME, DEVIAN_PID 6 --GLOBALS: Devian, DevianLoadMessage, DEVIAN_WORKSPACE, DEVIAN_PNAME, DEVIAN_PID
7 7
8 SLASH_RL1 = "/rl"
9 SlashCmdList.RL = function() ReloadUI() end
8 DEVIAN_WORKSPACE = false 10 DEVIAN_WORKSPACE = false
9 DEVIAN_PNAME = 'Dvn' 11 DEVIAN_PNAME = 'Dvn'
10 DEVIAN_PID = 0 12 DEVIAN_PID = 0
11 13
12 local ADDON, D = ... 14 local ADDON, D = ...
20 local playerName = UnitName("player") 22 local playerName = UnitName("player")
21 local playerRealm = playerName .. '-' .. GetRealmName() 23 local playerRealm = playerName .. '-' .. GetRealmName()
22 local num_dock_tabs = 0 24 local num_dock_tabs = 0
23 local charStates ={} 25 local charStates ={}
24 26
27 local channels_report = {}
25 local registeredTags = {} 28 local registeredTags = {}
26 29
27 30
28 DevianCore = {} 31 DevianCore = {}
29 32
712 for id, channel in pairs(sendq) do 715 for id, channel in pairs(sendq) do
713 if channel.width < 250 then 716 if channel.width < 250 then
714 prefix = sub(prefix, 0,2) 717 prefix = sub(prefix, 0,2)
715 end 718 end
716 channel.out:AddMessage('|cFF'.. pcolor..prefix ..'|r ' .. message, 0.8, 0.8, 0.8) 719 channel.out:AddMessage('|cFF'.. pcolor..prefix ..'|r ' .. message, 0.8, 0.8, 0.8)
717 if channel.Dock and not channel.Dock.newMessage then 720 if not channel.newMessage then
718 channel.Dock.newMessage = true 721 channel.newMessage = true
719 channel.Dock.caption.pulse:Play() 722 if channel.Dock then
720 channel.Dock:Update() 723 channel.Dock:Update()
724 end
721 end 725 end
722 end 726 end
723 wipe(buffer) 727 wipe(buffer)
724 end 728 end
725 729
763 D:Print('Tag color cache cleared.') 767 D:Print('Tag color cache cleared.')
764 end 768 end
765 769
766 770
767 function D.ConsoleCommand (cmd) 771 function D.ConsoleCommand (cmd)
768 D:Console_Toggle(cmd) 772 DevianDock:ToggleAll()
769 end 773 end
770 774
771 775
772 function DevianCore:Initialize() 776 function DevianCore:Initialize()
773 L = D.L 777 L = D.L
811 end 815 end
812 end 816 end
813 817
814 --- initialize the current profile 818 --- initialize the current profile
815 local id, name = D.Profile(db.current_profile or 1) 819 local id, name = D.Profile(db.current_profile or 1)
816 D:Print('Using profile |cFFFFFF00'.. id ..'|r: |cFF00FF00'..currentProfile.name..'|r')
817 if currentProfile.workspace then 820 if currentProfile.workspace then
818 D:Print('Workspace: '.. (#currentProfile.channels) .. ' channels, ' .. #currentProfile.tags .. ' tags.') 821 tinsert(channels_report, 'Profile |cFFFFFF00'.. id ..'|r: |cFF00FF00'..currentProfile.name.. '|r')
819 if D.channels[currentProfile.default_channel] then 822 if D.channels[currentProfile.default_channel] then
820 D:Print('Default channel: |cFFFFFF00'..currentProfile.default_channel..'|r: |cFF00FFFF'.. D.channels[currentProfile.default_channel].signature..'|r') 823 tinsert(channels_report, 'Primary: |cFFFFFF00#'..currentProfile.default_channel..'|r |cFF00FFFF'.. D.channels[currentProfile.default_channel].signature..'|r')
821 end 824 end
822 end 825 end
823 826
824 827
825 828
829 D.primary_channel = index 832 D.primary_channel = index
830 end 833 end
831 D:GetOrCreateChannel(index) 834 D:GetOrCreateChannel(index)
832 D.num_channels = #D.channels 835 D.num_channels = #D.channels
833 end 836 end
837 if #channels_report >= 1 then
838 D:Print(concat(channels_report, ', '))
839 end
840
834 D.primary_channel = D.primary_channel or 1 841 D.primary_channel = D.primary_channel or 1
835 D.max_channel = max(D.max_channel, currentProfile.max_channel) 842 D.max_channel = max(D.max_channel, currentProfile.max_channel)
836 if currentProfile.max_channel < D.max_channel then 843 if currentProfile.max_channel < D.max_channel then
837 for i = currentProfile.max_channel, D.max_channel do 844 for i = currentProfile.max_channel, D.max_channel do
838 D.console[i]:Hide() 845 D.console[i]:Hide()
847 D.console[currentProfile.current_channel]:ToFront() 854 D.console[currentProfile.current_channel]:ToFront()
848 -- bring the current channel to the front 855 -- bring the current channel to the front
849 end 856 end
850 DevianDock:Update() 857 DevianDock:Update()
851 end 858 end
852
853 print('devian')
854 end 859 end
855 860
856 function D:Print (...) 861 function D:Print (...)
857 local msg = '|cFF00FF44Devian|r:' 862 local msg = '|cFF00FF44Devian|r:'
858 for i = 1, select('#', ...) do 863 for i = 1, select('#', ...) do
891 end 896 end
892 end 897 end
893 end 898 end
894 899
895 local frame = D.console[id] 900 local frame = D.console[id]
901
896 if not frame then 902 if not frame then
897 903
898 if DEVIAN_WORKSPACE then 904 if DEVIAN_WORKSPACE then
899 D:Print('Adding '.. (info.index) .. ':' .. (info.signature) .. ' (|cFF00FFFF'.. concat(info.tags, '|r; |cFF00FFFF')..'|r)') 905 tinsert(channels_report, (info.index) .. ':' .. (info.signature) .. ' (|cFF00FFFF'.. concat(info.tags, '|r; |cFF00FFFF')..'|r)')
900 end 906 end
901 frame = CreateFrame('Frame', 'DevianConsole'..id, Devian, 'DevianConsoleTemplate') 907 frame = CreateFrame('Frame', 'DevianConsole'..id, Devian, 'DevianConsoleTemplate')
902 frame:SetID(id) 908 frame:SetID(id)
903 D.console[id] = frame 909 D.console[id] = frame
904 D.sigID[info.signature] = id 910 D.sigID[info.signature] = id