Quantcast

delay check for option group

Darthpred [10-19-14 - 11:27]
delay check for option group
allowing the lib to have all info when the check is  executed to prevent false result every time
Filename
ElvUI_SLE/options/dev_c.lua
diff --git a/ElvUI_SLE/options/dev_c.lua b/ElvUI_SLE/options/dev_c.lua
index 07dc2e9..058f0e1 100644
--- a/ElvUI_SLE/options/dev_c.lua
+++ b/ElvUI_SLE/options/dev_c.lua
@@ -13,236 +13,242 @@ function SLE:GetBNetInfo()
 	end
 end

-if SLE:Auth() then
-	local selectedChannel = ''
-	local UserListCache = {}
-	local highestVersion = tonumber(SLE.version)
-	local flag = 'SLE_DEV_SAYS'
-	local addonChannel = 'GUILD'
-	local addonTarget = ""
-	local output = 'SAY'
-	local text = ''
-	local wtarget = ""
-	local bnetP
-
-	function SLE:delete(...)
-		local _, id = ...
-		id = tostring(id)
-		bnettesttbl[id] = nil
-	end
-	SLE:RegisterEvent('BN_FRIEND_ACCOUNT_OFFLINE', 'delete')
-
-	RegisterAddonMessagePrefix('SLE_DEV_INFO')
-
-	local f = CreateFrame('Frame')
-	f:RegisterEvent('CHAT_MSG_ADDON')
-	f:RegisterEvent('BN_CHAT_MSG_ADDON')
-	f:RegisterEvent('BN_FRIEND_ACCOUNT_ONLINE')
-	f:RegisterEvent('PLAYER_ENTERING_WORLD')
-	f:SetScript('OnEvent', function(self, event, prefix, message, channel, sender)
-		if event == 'BN_FRIEND_ACCOUNT_ONLINE' or event == 'BN_FRIEND_ACCOUNT_OFFLINE' then
-			SLE:GetBNetInfo()
+local function Login(self, event)
+	self:UnregisterEvent(event)
+	if SLE:Auth() then
+		local selectedChannel = ''
+		local UserListCache = {}
+		local highestVersion = tonumber(SLE.version)
+		local flag = 'SLE_DEV_SAYS'
+		local addonChannel = 'GUILD'
+		local addonTarget = ""
+		local output = 'SAY'
+		local text = ''
+		local wtarget = ""
+		local bnetP
+
+		function SLE:delete(...)
+			local _, id = ...
+			id = tostring(id)
+			bnettesttbl[id] = nil
 		end
+		SLE:RegisterEvent('BN_FRIEND_ACCOUNT_OFFLINE', 'delete')
+
+		RegisterAddonMessagePrefix('SLE_DEV_INFO')
+
+		local f = CreateFrame('Frame')
+		f:RegisterEvent('CHAT_MSG_ADDON')
+		f:RegisterEvent('BN_CHAT_MSG_ADDON')
+		f:RegisterEvent('BN_FRIEND_ACCOUNT_ONLINE')
+		f:RegisterEvent('PLAYER_ENTERING_WORLD')
+		f:SetScript('OnEvent', function(self, event, prefix, message, channel, sender)
+			if event == 'BN_FRIEND_ACCOUNT_ONLINE' or event == 'BN_FRIEND_ACCOUNT_OFFLINE' then
+				SLE:GetBNetInfo()
+			end

-		if event == 'PLAYER_ENTERING_WORLD' then
-			SLE:GetBNetInfo()
-		end
+			if event == 'PLAYER_ENTERING_WORLD' then
+				SLE:GetBNetInfo()
+			end

-		if prefix == 'SLE_DEV_INFO' then
-			if event == 'CHAT_MSG_ADDON' or event == 'BN_CHAT_MSG_ADDON' then
-				if not message:find("SLEinfo") then
-					local userLevel, userClass, userName, userRealm, userVersion = strsplit('#', message)
-					if (userName == E.myname and userRealm == E.myrealm) then return end;
+			if prefix == 'SLE_DEV_INFO' then
+				if event == 'CHAT_MSG_ADDON' or event == 'BN_CHAT_MSG_ADDON' then
+					if not message:find("SLEinfo") then
+						local userLevel, userClass, userName, userRealm, userVersion = strsplit('#', message)
+						if (userName == E.myname and userRealm == E.myrealm) then return end;

-					userVersion = tonumber(userVersion)
+						userVersion = tonumber(userVersion)

-					if userVersion > highestVersion then
-						highestVersion = userVersion
-					end
+						if userVersion > highestVersion then
+							highestVersion = userVersion
+						end

-					local id = #UserListCache + 1;
+						local id = #UserListCache + 1;

-					for i=1,#UserListCache do
-						if (UserListCache[i].userName == userName and UserListCache[i].userRealm == userRealm) then
-							id = i;
-							break;
+						for i=1,#UserListCache do
+							if (UserListCache[i].userName == userName and UserListCache[i].userRealm == userRealm) then
+								id = i;
+								break;
+							end
 						end
-					end

-					UserListCache[id] = {
-						['userLevel'] = userLevel,
-						['userClass'] = userClass,
-						['userName'] = userName,
-						['userRealm'] = userRealm,
-						['userVersion'] = userVersion,
-					}
+						UserListCache[id] = {
+							['userLevel'] = userLevel,
+							['userClass'] = userClass,
+							['userName'] = userName,
+							['userRealm'] = userRealm,
+							['userVersion'] = userVersion,
+						}

-					if (IsAddOnLoaded("ElvUI_Config")) then
-						ACD:SelectGroup('ElvUI', 'sle', 'developer', 'userList')
-					end
-				else
-					local _, numBNetOnline = BNGetNumFriends()
-					for i = 1, numBNetOnline do
-						local presenceID, presenceName, _, _, toon, _, _, _ = BNGetFriendInfo(i)
-						message = message:gsub("SLEinfo", '')
-						local pid = tonumber(message)
-						if pid == presenceID then
-							bnettesttbl[message] = presenceName;
+						if (IsAddOnLoaded("ElvUI_Config")) then
+							ACD:SelectGroup('ElvUI', 'sle', 'developer', 'userList')
+						end
+					else
+						local _, numBNetOnline = BNGetNumFriends()
+						for i = 1, numBNetOnline do
+							local presenceID, presenceName, _, _, toon, _, _, _ = BNGetFriendInfo(i)
+							message = message:gsub("SLEinfo", '')
+							local pid = tonumber(message)
+							if pid == presenceID then
+								bnettesttbl[message] = presenceName;
+							end
 						end
 					end
 				end
 			end
-		end
-	end)
-
-	local function configTable()
-		E.Options.args.sle.args.developer = {
-			order = 999,
-			type = 'group',
-			name = "Developer",
-			childGroups = 'tab',
-			args = {
-				header = {
-					order = 1,
-					type = "header",
-					name = "Evil Overlord Control Panel",
-				},
-				testdesc = {
-					order = 2,
-					type = "description",
-					name = "WTF are you doing here, asshole?!",
-				},
-				userList = {
-					order = 3,
-					type = "group",
-					name = "User List",
-					args = {
-						listheader = {
-							order = 1,
-							type = "header",
-							name = "List of possible victims",
-						},
-						List = {
-							type = 'select',
-							name = 'Choose a channel',
-							order = 2,
-							get = function() return selectedChannel end,
-							set = function(_, value)
-								selectedChannel = value
-							end,
-							values = {
-								[''] = ' ',
-								['GUILD'] = 'Guild',
-								['INSTANCE_CHAT'] = 'Instance',
-								['PARTY'] = 'Party',
-								['RAID'] = 'Raid',
-								['BNET'] = 'BNet',
+		end)
+
+		local function configTable()
+			E.Options.args.sle.args.developer = {
+				order = 999,
+				type = 'group',
+				name = "Developer",
+				childGroups = 'tab',
+				args = {
+					header = {
+						order = 1,
+						type = "header",
+						name = "Evil Overlord Control Panel",
+					},
+					testdesc = {
+						order = 2,
+						type = "description",
+						name = "WTF are you doing here, asshole?!",
+					},
+					userList = {
+						order = 3,
+						type = "group",
+						name = "User List",
+						args = {
+							listheader = {
+								order = 1,
+								type = "header",
+								name = "List of possible victims",
 							},
-						},
-						submitbutton = {
-							type = 'execute',
-							order = 3,
-							name = function()
-								return selectedChannel ~= '' and "Update List" or "Clear List"
-							end,
-							func = function(info, value)
-								UserListCache = {} -- Clear Cache
-
-								if selectedChannel == 'BNET' then
-									local _, numBNetOnline = BNGetNumFriends()
-									for i = 1, numBNetOnline do
-										local presenceID, _, _, _, _, _, client, isOnline = BNGetFriendInfo(i)
-										if isOnline and client == BNET_CLIENT_WOW then
-											BNSendGameData(presenceID, 'SLE_DEV_REQ', 'userlist')
+							List = {
+								type = 'select',
+								name = 'Choose a channel',
+								order = 2,
+								get = function() return selectedChannel end,
+								set = function(_, value)
+									selectedChannel = value
+								end,
+								values = {
+									[''] = ' ',
+									['GUILD'] = 'Guild',
+									['INSTANCE_CHAT'] = 'Instance',
+									['PARTY'] = 'Party',
+									['RAID'] = 'Raid',
+									['BNET'] = 'BNet',
+								},
+							},
+							submitbutton = {
+								type = 'execute',
+								order = 3,
+								name = function()
+									return selectedChannel ~= '' and "Update List" or "Clear List"
+								end,
+								func = function(info, value)
+									UserListCache = {} -- Clear Cache
+
+									if selectedChannel == 'BNET' then
+										local _, numBNetOnline = BNGetNumFriends()
+										for i = 1, numBNetOnline do
+											local presenceID, _, _, _, _, _, client, isOnline = BNGetFriendInfo(i)
+											if isOnline and client == BNET_CLIENT_WOW then
+												BNSendGameData(presenceID, 'SLE_DEV_REQ', 'userlist')
+											end
 										end
+									elseif selectedChannel ~= '' then
+										SendAddonMessage('SLE_DEV_REQ', 'userlist', selectedChannel)
 									end
-								elseif selectedChannel ~= '' then
-									SendAddonMessage('SLE_DEV_REQ', 'userlist', selectedChannel)
-								end
-							end,
-						},
-						Space = {
-							type = 'description',
-							name = ' ',
-							order = 4,
-						},
-						userList = {
-							type = 'group',
-							name = function()
-								return 'Userlist : '..selectedChannel
-							end,
-							order = 5,
-							guiInline = true,
-							args = {},
-							hidden = function() return selectedChannel == '' end,
+								end,
+							},
+							Space = {
+								type = 'description',
+								name = ' ',
+								order = 4,
+							},
+							userList = {
+								type = 'group',
+								name = function()
+									return 'Userlist : '..selectedChannel
+								end,
+								order = 5,
+								guiInline = true,
+								args = {},
+								hidden = function() return selectedChannel == '' end,
+							},
 						},
 					},
-				},
-				devdiaggroup = {
-					order = 5,
-					type = "group",
-					name = "Tech and shit",
-					args = {
-						subgroup = {
-							order = 1,
-							type = "header",
-							name = "Some tech stuff",
-						},
-						cpuprofiling = {
-							order = 2,
-							type = 'execute',
-							name = "CPU Profiling",
-							func = function() SetCVar("scriptProfile", GetCVar("scriptProfile") == "1" and 0 or 1); ReloadUI() end,
+					devdiaggroup = {
+						order = 5,
+						type = "group",
+						name = "Tech and shit",
+						args = {
+							subgroup = {
+								order = 1,
+								type = "header",
+								name = "Some tech stuff",
+							},
+							cpuprofiling = {
+								order = 2,
+								type = 'execute',
+								name = "CPU Profiling",
+								func = function() SetCVar("scriptProfile", GetCVar("scriptProfile") == "1" and 0 or 1); ReloadUI() end,
+							},
 						},
 					},
-				},
-				devgroupone = {
-					order = 500,
-					type = "group",
-					name = "Test Group",
-					args = {
-						subgroup = {
-							order = 1,
-							type = "header",
-							name = "Dafuq we have this?",
+					devgroupone = {
+						order = 500,
+						type = "group",
+						name = "Test Group",
+						args = {
+							subgroup = {
+								order = 1,
+								type = "header",
+								name = "Dafuq we have this?",
+							},
 						},
 					},
 				},
-			},
-		}
-
-		for i = 1, 40 do
-			E.Options.args.sle.args.developer.args.userList.args.userList.args[tostring(i)] = {
-				type = 'description',
-				order = i,
-				name = function()
-					if UserListCache[i] then
-						local Level = GetQuestDifficultyColor(UserListCache[i]['userLevel'])
-						Level = format('|cff%02x%02x%02x%s|r', Level.r *255, Level.g *255, Level.b *255, UserListCache[i]['userLevel'])
-
-						local ClassColor = '|c'..RAID_CLASS_COLORS[(UserListCache[i]['userClass'])]['colorStr']
-						local UserName = ClassColor..UserListCache[i]['userName']..'|r'
-
-						local UserRealm = UserListCache[i]['userRealm']
-
-						local UserVersion = UserListCache[i]['userVersion']
-						UserVersion = (UserVersion == highestVersion and '|cffceff00' or '|cffff5678')..UserVersion
-
-						local Icon = '';
-						local realm = UserRealm:gsub(' ','');
-						if (SLE.SpecialChatIcons[realm] and SLE.SpecialChatIcons[realm][UserListCache[i]['userName']]) then
-							Icon = SLE.SpecialChatIcons[realm][UserListCache[i]['userName']];
-
-						end
-						return Level..'  '..UserName.. '|cffffffff - '..UserRealm..' : '..UserVersion..Icon
-					else
-						return ' '
-					end
-				end,
-				hidden = function() return not UserListCache[i] end,
 			}
+
+			for i = 1, 40 do
+				E.Options.args.sle.args.developer.args.userList.args.userList.args[tostring(i)] = {
+					type = 'description',
+					order = i,
+					name = function()
+						if UserListCache[i] then
+							local Level = GetQuestDifficultyColor(UserListCache[i]['userLevel'])
+							Level = format('|cff%02x%02x%02x%s|r', Level.r *255, Level.g *255, Level.b *255, UserListCache[i]['userLevel'])
+
+							local ClassColor = '|c'..RAID_CLASS_COLORS[(UserListCache[i]['userClass'])]['colorStr']
+							local UserName = ClassColor..UserListCache[i]['userName']..'|r'
+
+							local UserRealm = UserListCache[i]['userRealm']
+
+							local UserVersion = UserListCache[i]['userVersion']
+							UserVersion = (UserVersion == highestVersion and '|cffceff00' or '|cffff5678')..UserVersion
+
+							local Icon = '';
+							local realm = UserRealm:gsub(' ','');
+							if (SLE.SpecialChatIcons[realm] and SLE.SpecialChatIcons[realm][UserListCache[i]['userName']]) then
+								Icon = SLE.SpecialChatIcons[realm][UserListCache[i]['userName']];
+
+							end
+							return Level..'  '..UserName.. '|cffffffff - '..UserRealm..' : '..UserVersion..Icon
+						else
+							return ' '
+						end
+					end,
+					hidden = function() return not UserListCache[i] end,
+				}
+			end
 		end
-	end

-	table.insert(E.SLEConfigs, configTable)
-end
\ No newline at end of file
+		table.insert(E.SLEConfigs, configTable)
+	end
+end
+local f = CreateFrame("Frame", "SLE_Dev_load", UIParent)
+f:RegisterEvent("PLAYER_ENTERING_WORLD")
+f:SetScript("OnEvent", Login)
\ No newline at end of file