comparison gd.lua @ 2:fb9a91642a60

Warn on large logfile. Avoid reporting to minimized frames.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Fri, 05 Nov 2010 03:57:42 +0000
parents f7c747904387
children 7b31138c3c8e
comparison
equal deleted inserted replaced
1:f7c747904387 2:fb9a91642a60
65 --func = print_chatframes filled in below 65 --func = print_chatframes filled in below
66 order = 10, 66 order = 10,
67 }, 67 },
68 chatframe_num = { 68 chatframe_num = {
69 name = "Output Chatframe", 69 name = "Output Chatframe",
70 desc = "Which chat window to use for printing all the output during login", 70 desc = "Which chat window to prefer for printing all the output during login",
71 type = 'range', 71 type = 'range',
72 min = 1, 72 min = 1,
73 max = NUM_CHAT_WINDOWS, 73 max = NUM_CHAT_WINDOWS,
74 step = 1, 74 step = 1,
75 get = function() return tonumber(SV.chatframe) or --[[in case of custom name]]DEFAULT_CHAT end, 75 get = function() return tonumber(SV.chatframe) or --[[in case of custom name]]DEFAULT_CHAT end,
218 return ret 218 return ret
219 end 219 end
220 220
221 function addon.options.args.print_chatframes.func() 221 function addon.options.args.print_chatframes.func()
222 for i = 1, NUM_CHAT_WINDOWS do 222 for i = 1, NUM_CHAT_WINDOWS do
223 local cf = _G["ChatFrame"..i] 223 local cf = _G['ChatFrame'..i]
224 if not cf then break end 224 if not cf then break end
225 addon:Print(cf, "This is frame number", i) 225 addon:Print(cf, "This is frame number", i)
226 end 226 end
227 end 227 end
228 228
237 "Enabling logging will accumulate the text of the 'deltas' as you see them. ".. 237 "Enabling logging will accumulate the text of the 'deltas' as you see them. "..
238 "This can grow large over time, depending on the activity of your guilds, so you ".. 238 "This can grow large over time, depending on the activity of your guilds, so you "..
239 "should use the Reset Log button below from time to time.\n\n".. 239 "should use the Reset Log button below from time to time.\n\n"..
240 "If you click inside the text area below, you can use Control-A to select all ".. 240 "If you click inside the text area below, you can use Control-A to select all "..
241 "the text, and Control-C to copy it to your computer's clipboard. If you make ".. 241 "the text, and Control-C to copy it to your computer's clipboard. If you make "..
242 "any changes to the text, they will be preserved. (You can remove uninteresting ".. 242 "any changes to the text, the changes will be preserved. (You can remove uninteresting "..
243 "changes, add reminders to yourself, and so forth.)\n\n" 243 "changes, add reminders to yourself, and so forth.)\n\n"
244 244
245 245
246 ----------------------------------------------------------------------------- 246 -----------------------------------------------------------------------------
247 addon = LibStub("AceAddon-3.0"):NewAddon(addon, "GuildDelta", 247 addon = LibStub("AceAddon-3.0"):NewAddon(addon, "GuildDelta",
267 self.unload = nil 267 self.unload = nil
268 self.logquay = nil 268 self.logquay = nil
269 self.AddLogNote = nil 269 self.AddLogNote = nil
270 self.FinishLog = nil 270 self.FinishLog = nil
271 end 271 end
272 -- Remove everything.
272 function addon:unload() 273 function addon:unload()
273 self:cleanup() 274 self:cleanup()
274 LibStub("AceAddon-3.0").addons["GuildDelta"] = nil 275 LibStub("AceAddon-3.0").addons["GuildDelta"] = nil
275 l10n = nil; addon = nil; 276 l10n = nil; addon = nil;
276 -- put the userdata back so it counts as a Frame object again 277 -- put the userdata back so it counts as a Frame object again
292 self.options.args.version.name = 293 self.options.args.version.name =
293 "|cff30adffVersion " .. (GetAddOnMetadata("GuildDelta", "Version") or "?") .. "|r" 294 "|cff30adffVersion " .. (GetAddOnMetadata("GuildDelta", "Version") or "?") .. "|r"
294 LibStub("AceConfig-3.0"):RegisterOptionsTable("GuildDelta", self.options) 295 LibStub("AceConfig-3.0"):RegisterOptionsTable("GuildDelta", self.options)
295 --[[self.optionsFrame =]] LibStub("AceConfigDialog-3.0"):AddToBlizOptions("GuildDelta", "Guild Delta") 296 --[[self.optionsFrame =]] LibStub("AceConfigDialog-3.0"):AddToBlizOptions("GuildDelta", "Guild Delta")
296 self:RegisterChatCommand("guilddelta", "OnChatCommand") 297 self:RegisterChatCommand("guilddelta", "OnChatCommand")
297 self:SetChat(false) 298 self:SetChat(self)
298 log_ever_shown = SV.logging 299 log_ever_shown = SV.logging
299 self.OnEnable = nil 300 self.OnEnable = nil
300 end 301 end
301 302
302 303
307 LibStub("AceConfigCmd-3.0").HandleCommand(self, "guilddelta", "GuildDelta", input) 308 LibStub("AceConfigCmd-3.0").HandleCommand(self, "guilddelta", "GuildDelta", input)
308 end 309 end
309 end 310 end
310 311
311 312
312 -- 0 args: called during startup to initialize 313 -- 1 arg: (self) called during startup to initialize
313 -- 1 arg: resetting via menus to defaults (see arg field) 314 -- (other) resetting via menus to defaults (see arg field)
314 -- 2 args: setting via menus to new value, number or custom name 315 -- 2 args: setting via menus to new value, number or custom name (see value)
315 function addon:SetChat (info, value) 316 function addon:SetChat (info, value)
316 local n, nframe 317 local n, nframe
317 if info then -- coming via menu 318 local isauto = info == self
319 if isauto then
320 n = SV.chatframe
321 else -- coming via menu
318 n = info.arg or value 322 n = info.arg or value
323 end
324 if type(n) == 'number' then
325 if isauto then
326 -- start at the preferred number and find a non-minimized and
327 -- potentially visible frame
328 n = math.min(n,NUM_CHAT_WINDOWS)
329 local cf,cft
330 for i = n, 1, -1 do
331 cf = _G['ChatFrame'..i]
332 cft = _G[cf:GetName()..'Tab']
333 if cft:IsVisible() then
334 n = i
335 break
336 end
337 end
338 end
339 nframe = _G['ChatFrame'..n]
319 else 340 else
320 n = SV.chatframe 341 nframe = _G[n] -- advanced name
321 end
322 if type(n) == 'number' then
323 nframe = _G["ChatFrame"..n]
324 else
325 nframe = _G[n]
326 end 342 end
327 if type(nframe) == 'table' and type(nframe.AddMessage) == 'function' then 343 if type(nframe) == 'table' and type(nframe.AddMessage) == 'function' then
328 if type(info) ~= 'boolean' then 344 if not isauto then
345 SV.chatframe = n
329 self:Print("Now printing to chat frame", n, 346 self:Print("Now printing to chat frame", n,
330 (type(nframe.name)=='string' and ("(".. nframe.name .. ")") or "")) 347 (type(nframe.name)=='string' and ("(".. nframe.name .. ")") or ""))
331 end 348 end
332 SV.chatframe = n
333 chatframe = nframe 349 chatframe = nframe
334 else 350 else
335 self:Printf("EEEEEEEK! '%s' was not a valid chat frame number/name, no change has been made.", n) 351 self:Printf("EEEEEEEK! '%s' was not a valid chat frame number/name, no change has been made.", n)
336 end 352 end
337 end 353 end
354 end 370 end
355 self:UnregisterEvent("GUILD_ROSTER_UPDATE") 371 self:UnregisterEvent("GUILD_ROSTER_UPDATE")
356 self:SetScript("OnEvent", self.PLAYER_LOGOUT) -- keepin' it real^H^H^H^Hsmall and kludgey 372 self:SetScript("OnEvent", self.PLAYER_LOGOUT) -- keepin' it real^H^H^H^Hsmall and kludgey
357 self:RegisterEvent("PLAYER_LOGOUT") 373 self:RegisterEvent("PLAYER_LOGOUT")
358 self.GuildUpdate = nil 374 self.GuildUpdate = nil
375
376 if SV.logtext and #SV.logtext > 20000 then
377 self:Print("Your accumulated logfile has grown rather large; you should consider copying it out and clearing it.")
378 end
359 379
360 local guild, realm = (GetGuildInfo("player")), GetRealmName() 380 local guild, realm = (GetGuildInfo("player")), GetRealmName()
361 local members = SV.members 381 local members = SV.members
362 if members[realm] 382 if members[realm]
363 and members[realm][guild] 383 and members[realm][guild]
367 else 387 else
368 -- new user, or new guild, or any number of things 388 -- new user, or new guild, or any number of things
369 self:Print("GuildDelta initializing roster...") 389 self:Print("GuildDelta initializing roster...")
370 members[realm] = members[realm] or {} 390 members[realm] = members[realm] or {}
371 members[realm][guild] = self:current_guild_info(current_n) 391 members[realm][guild] = self:current_guild_info(current_n)
372 return 392 return self:cleanup()
373 end 393 end
374 394
375 -- table.insert with notes if available 395 -- table.insert with notes if available
376 -- concatentation of all strings faster than string.format 396 -- concatentation of all strings faster than string.format
377 local function tins (t, x) 397 local function tins (t, x)
468 end 488 end
469 end 489 end
470 490
471 if SV.logging then self:FinishLog(guild,realm) end 491 if SV.logging then self:FinishLog(guild,realm) end
472 members[realm][guild] = current 492 members[realm][guild] = current
493 self:cleanup()
473 end 494 end
474 495
475 496
476 function addon:MakeFieldList() 497 function addon:MakeFieldList()
477 if not fieldlist then 498 if not fieldlist then