Mercurial > wow > ouroloot
comparison gui.lua @ 6:df3e27edbd60
Much work on history tab.
author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
---|---|
date | Wed, 15 Jun 2011 03:59:13 +0000 |
parents | 7adbc59de8fe |
children | 9a37bd40eb5e |
comparison
equal
deleted
inserted
replaced
5:7adbc59de8fe | 6:df3e27edbd60 |
---|---|
1 local addon = select(2,...) | 1 local addon = select(2,...) |
2 | 2 |
3 --[[ | 3 --[[ |
4 Purely the AceGUI-related routines, and the subroutines needed for support. | 4 Purely the AceGUI-related routines, and the subroutines needed for support. |
5 ------ Constants | 5 ------ Constants |
6 ------ Locals | 6 ------ Globals |
7 ------ Behind the scenes routines | 7 ------ Behind the scenes routines |
8 ------ Main GUI Window | 8 ------ Main GUI Window |
9 ------ Popup dialogs | 9 ------ Popup dialogs |
10 ]] | 10 ]] |
11 | 11 |
36 [3] = {value=""}, | 36 [3] = {value=""}, |
37 } } | 37 } } |
38 local time_column1_used_mt = addon.time_column1_used_mt | 38 local time_column1_used_mt = addon.time_column1_used_mt |
39 | 39 |
40 | 40 |
41 ------ Locals | 41 ------ Globals |
42 local GUI = LibStub("AceGUI-3.0") | 42 local GUI = LibStub("AceGUI-3.0") |
43 local flib = LibStub("LibFarmbuyer") | 43 local flib = LibStub("LibFarmbuyer") |
44 | 44 |
45 local g_loot = nil | 45 local g_loot = nil |
46 local g_generated = nil | 46 local g_generated = nil |
238 end | 238 end |
239 end | 239 end |
240 | 240 |
241 do | 241 do |
242 function addon:_fill_out_hist_data (opt_starting_index) | 242 function addon:_fill_out_hist_data (opt_starting_index) |
243 local new, del = flib.new, flib.del | |
244 | |
243 -- Clearing history finishes this function with #hist==0 and hist_clean==0. | 245 -- Clearing history finishes this function with #hist==0 and hist_clean==0. |
244 -- The next call typically detects this (#<1) and handles it. If loot is | 246 -- The next call typically detects this (#<1) and handles it. If loot is |
245 -- recorded before then, it results in hist_clean==0 and #hist==1, which | 247 -- recorded before then, it results in hist_clean==0 and #hist==1, which |
246 -- breaks the first iteration of the loop. Thus, the "extra" test here: | 248 -- breaks the first iteration of the loop. Thus, the "extra" test here: |
247 if #self.history < 1 or self.hist_clean == 0 then | 249 if #self.history < 1 or self.hist_clean == 0 then |
248 self.hist_clean = nil | 250 self.hist_clean = nil |
249 opt_starting_index = nil | 251 opt_starting_index = nil |
250 end | 252 end |
251 if not self.history.st then | 253 if not self.history.st then |
254 --print"creating ST!" | |
252 self.history.st = { | 255 self.history.st = { |
253 --[[{ kind = "realm", | 256 --[[{ kind = "realm", |
254 cols = setmetatable({ | 257 cols = setmetatable({ |
255 { value = self.history.realm }, | 258 { value = self.history.realm }, |
256 }, time_column1_used_mt) | 259 }, time_column1_used_mt) |
257 }]] | 260 }]] |
258 } | 261 } |
259 end | 262 end |
263 | |
264 -- for now | |
265 if self.hist_clean == #self.history then return end | |
266 | |
260 local st = self.history.st | 267 local st = self.history.st |
261 for i = (opt_starting_index or self.hist_clean or 1), #self.history do | 268 --print("starting history loop, #st ==", #st, "#history ==", #self.history) |
262 local h = self.history[i] | 269 for i,t in ipairs(st) do |
263 local sti = i | 270 del(t.cols[1]) |
264 if not st[sti] then | 271 del(t.cols[2]) |
265 st[sti] = { kind = "history" } | 272 del(t.cols[3]) |
266 end | 273 del(t.cols) |
267 local sth = st[sti] -- corresponding ST entry for h | 274 del(t) |
268 | 275 st[i] = nil |
269 sth.cols = sth.cols or { | 276 end |
270 { value = h.name }, | 277 |
271 {},--{ value = h[1].id }, | 278 --for i = (opt_starting_index or self.hist_clean or 1), #self.history do |
272 {},--{ value = h[1].when }, | 279 local cache_okay = true |
273 } | 280 for pi,player in ipairs(self.history) do |
274 | 281 local col1 = new() |
275 if sth.shown ~= h[1].id then | 282 col1.OLi = pi |
276 -- things have changed, redo the row with new data | 283 col1.OLn = #player |
277 local itexture = GetItemIcon(h[1].id) | 284 col1.value = player.name -- may spiffy this up in future |
278 local iname, ilink, iquality = GetItemInfo(h[1].id) | 285 |
286 for li,loot in ipairs(player) do | |
287 local col2 = new() | |
288 col2.OLi = li | |
289 local col3 = new() | |
290 col3.value = loot.when | |
291 | |
292 local itexture = GetItemIcon(loot.id) | |
293 local iname, ilink, iquality = GetItemInfo(loot.id) | |
279 local textured | 294 local textured |
280 if itexture and iname then | 295 if itexture and iname then |
281 textured = eoi_st_textured_item_format:format (itexture, self.quality_hexes[iquality], iname, h[1].count or "") | 296 textured = eoi_st_textured_item_format:format (itexture, |
282 sth.shown = h[1].id | 297 self.quality_hexes[iquality], iname, loot.count or "") |
283 else | 298 else |
284 textured = eoi_st_textured_item_format:format ([[ICONS\INV_Misc_QuestionMark]], self.quality_hexes[1], 'UNKNOWN', "") | 299 textured = eoi_st_textured_item_format:format ([[ICONS\INV_Misc_QuestionMark]], |
300 self.quality_hexes[ITEM_QUALITY_COMMON], 'UNKNOWN - TRY AGAIN', "") | |
301 cache_okay = false | |
285 end | 302 end |
286 sth.cols[2].value = textured | 303 col2.value = textured |
287 sth.cols[3].value = h[1].when | 304 |
305 local dotcols = new (col1, col2, col3) | |
306 local st_entry = new() | |
307 st_entry.kind = 'history' | |
308 st_entry.OLwho = player.name | |
309 st_entry.cols = dotcols | |
310 tinsert (st, st_entry) | |
288 end | 311 end |
289 | 312 end |
290 end | 313 |
291 self.hist_clean = #self.history | 314 --print("finished history loop, #st ==", #st) |
292 end | 315 self.hist_clean = cache_okay and #self.history or nil |
316 end | |
317 | |
318 | |
293 end | 319 end |
294 | 320 |
295 | 321 |
296 ------ Main GUI Window | 322 ------ Main GUI Window |
297 -- Lots of shared data here, kept in a large local scope. For readability, | 323 -- Lots of shared data here, kept in a large local scope. For readability, |
310 ["hist"] = {title=[[History]], desc=[[A short semi-permanent record]]}, | 336 ["hist"] = {title=[[History]], desc=[[A short semi-permanent record]]}, |
311 ["help"] = {title=[[Help]], desc=[[Instructions, reminders, and tips for non-obvious features]]}, | 337 ["help"] = {title=[[Help]], desc=[[Instructions, reminders, and tips for non-obvious features]]}, |
312 ["opt"] = {title=[[Options]], desc=[[Options for fine-tuning behavior]]}, | 338 ["opt"] = {title=[[Options]], desc=[[Options for fine-tuning behavior]]}, |
313 --["adv"] = {title=[[Advanced]], desc=[[Debugging and testing]]}, | 339 --["adv"] = {title=[[Advanced]], desc=[[Debugging and testing]]}, |
314 } | 340 } |
315 if addon.author_debug then | 341 --if addon.author_debug then |
316 _taborder = { "eoi", "hist", "help", "opt" } | 342 _taborder = { "eoi", "hist", "help", "opt" } |
317 else _taborder = { "eoi", "help", "opt" } end | 343 --else _taborder = { "eoi", "help", "opt" } end |
318 | 344 |
319 --[[ | 345 --[[ |
320 This is a table of callback functions, each responsible for drawing a tab | 346 This is a table of callback functions, each responsible for drawing a tab |
321 into the container passed in the first argument. Special-purpose buttons | 347 into the container passed in the first argument. Special-purpose buttons |
322 can optionally be created (mkbutton) and added to the container in the second | 348 can optionally be created (mkbutton) and added to the container in the second |
354 local name, arg, tiptext | 380 local name, arg, tiptext |
355 name, tiptext = strsplit('|',tag) | 381 name, tiptext = strsplit('|',tag) |
356 name, arg = strsplit('%',name) | 382 name, arg = strsplit('%',name) |
357 if name == "--" then | 383 if name == "--" then |
358 tinsert (initial, { | 384 tinsert (initial, { |
359 disabled = true, text = "", | 385 disabled = true, notCheckable = true, text = "", |
360 }) | 386 }) |
361 else | 387 else |
362 if not funcs[name] then | 388 if not funcs[name] then |
363 error(("'%s' not defined as a dropdown function"):format(name)) | 389 error(("'%s' not defined as a dropdown function"):format(name)) |
364 end | 390 end |
704 end | 730 end |
705 | 731 |
706 return true -- do not do anything further | 732 return true -- do not do anything further |
707 end | 733 end |
708 | 734 |
709 local function hist_st_OnClick (rowFrame, cellFrame, data, cols, row, realrow, column, stable, button, ...) | |
710 if (row == nil) or (realrow == nil) then return false end -- click column header, do default resorting | |
711 local h = data[realrow] | |
712 local kind = h.kind | |
713 | |
714 | |
715 return true -- do not do anything further | |
716 end | |
717 | |
718 local function hist_st_OnDoubleClick (rowFrame, cellFrame, data, cols, row, realrow, column, stable, button, ...) | |
719 if (row == nil) or (realrow == nil) then return true end -- they clicked on column header, suppress reordering | |
720 local h = data[realrow] | |
721 local kind = h.kind | |
722 | |
723 return true -- do not do anything further | |
724 end | |
725 | |
726 -- Used for EOI column 2 and Hist column 1. Both are player name columns. | 735 -- Used for EOI column 2 and Hist column 1. Both are player name columns. |
727 local function eoi_st_col2_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable, ...) | 736 local function eoi_st_col2_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable, ...) |
728 if not fShow then | 737 if not fShow then |
729 cellFrame.text:SetText("") | 738 cellFrame.text:SetText("") |
730 if cellFrame.icontexture then | 739 if cellFrame.icontexture then |
731 cellFrame.icontexture:Hide() | 740 cellFrame.icontexture:Hide() |
732 end | 741 end |
782 name = "Notes", | 791 name = "Notes", |
783 width = 250, | 792 width = 250, |
784 }, | 793 }, |
785 } | 794 } |
786 | 795 |
787 local rowfilter_all | 796 local player_filter_all |
788 local rowfilter_by_name = function (st, e) | 797 local player_filter_by_name = function (st, e) |
789 if e.kind ~= 'loot' then return true end | 798 if e.kind ~= 'loot' then return true end |
790 return e.person == _d:GetUserData("player filter name") | 799 return e.person == _d:GetUserData("player filter name") |
791 end | 800 end |
792 | 801 |
793 -- Tab 1: Events Of Interest (implementation) | 802 -- Tab 1: Events Of Interest (implementation) |
859 end | 868 end |
860 | 869 |
861 -- No need to keep creating function closures that all just "return true", | 870 -- No need to keep creating function closures that all just "return true", |
862 -- instead we grab the one made inside lib-st. There's no "get filter" API | 871 -- instead we grab the one made inside lib-st. There's no "get filter" API |
863 -- so we just reach inside. | 872 -- so we just reach inside. |
864 rowfilter_all = ST.Filter | 873 player_filter_all = ST.Filter |
865 | 874 |
866 -- Now set up the future drawing function... | 875 -- Now set up the future drawing function... |
867 tabs_OnGroupSelected["eoi"] = function(container,specials) | 876 tabs_OnGroupSelected["eoi"] = function(container,specials) |
868 local st_widget = GUI:Create("lib-st") | 877 local st_widget = GUI:Create("lib-st") |
869 local st = _d:GetUserData("eoiST") | 878 local st = _d:GetUserData("eoiST") |
870 | 879 |
871 -- This is actually required each time | 880 -- This is actually required each time |
872 _d:SetUserData ("player filter clear", rowfilter_all) | 881 _d:SetUserData ("player filter clear", player_filter_all) |
873 _d:SetUserData ("player filter by name", rowfilter_by_name) | 882 _d:SetUserData ("player filter by name", player_filter_by_name) |
874 | 883 |
875 st:OuroLoot_Refresh() | 884 st:OuroLoot_Refresh() |
876 st_widget:WrapST(st) | 885 st_widget:WrapST(st) |
877 st_widget.head_offset = 15 | 886 st_widget.head_offset = 15 |
878 st_widget.tail_offset = 0 | 887 st_widget.tail_offset = 0 |
891 local b = mkbutton('eoi_filter_reset', "Reset Player Filter", | 900 local b = mkbutton('eoi_filter_reset', "Reset Player Filter", |
892 [[Return to showing complete loot information.]]) | 901 [[Return to showing complete loot information.]]) |
893 b:SetFullWidth(true) | 902 b:SetFullWidth(true) |
894 b:SetCallback("OnClick", function (_b) | 903 b:SetCallback("OnClick", function (_b) |
895 local st = _d:GetUserData("eoiST") | 904 local st = _d:GetUserData("eoiST") |
896 st:SetFilter(rowfilter_all) | 905 st:SetFilter(player_filter_all) |
897 _b:SetDisabled(true) | 906 _b:SetDisabled(true) |
898 end) | 907 end) |
899 b:SetDisabled(st.Filter == rowfilter_all) | 908 b:SetDisabled(st.Filter == player_filter_all) |
900 specials:AddChild(b) | 909 specials:AddChild(b) |
901 | 910 |
902 local people = { "<nobody>" } | 911 local people = { "<nobody>" } |
903 for i=1,GetNumRaidMembers() do | 912 for i=1,GetNumRaidMembers() do |
904 tinsert(people,(GetRaidRosterInfo(i))) | 913 tinsert(people,(GetRaidRosterInfo(i))) |
1010 sort = "asc", | 1019 sort = "asc", |
1011 sortnext = 1, | 1020 sortnext = 1, |
1012 }, | 1021 }, |
1013 } | 1022 } |
1014 | 1023 |
1024 local hist_normal_status = [[Click on a row to view all history for that player only. (Click column headers to re-sort.)]] | |
1025 local hist_name_status = [[Right-click on any row to return to normal history display.]] | |
1026 | |
1027 local history_filter_by_recent = function (st, e) | |
1028 if e.kind ~= 'history' then return true end | |
1029 return e.cols[2].OLi == 1 | |
1030 end | |
1031 | |
1032 local history_filter_who | |
1033 local history_filter_by_name = function (st, e) | |
1034 if e.kind ~= 'history' then return true end | |
1035 return e.OLwho == history_filter_who | |
1036 end | |
1037 | |
1015 -- Loot column | 1038 -- Loot column |
1016 local function hist_st_col2_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable, ...) | 1039 local function hist_st_col2_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable, ...) |
1040 print("col2 DCU", realrow) | |
1017 end | 1041 end |
1018 | 1042 |
1019 -- Formatted timestamp column | 1043 -- Formatted timestamp column |
1020 local function hist_st_col3_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable, ...) | 1044 local function hist_st_col3_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable, ...) |
1045 print("col3 DCU", realrow) | |
1021 if not fShow then | 1046 if not fShow then |
1022 cellFrame.text:SetText("") | 1047 cellFrame.text:SetText("") |
1023 return | 1048 return |
1024 end | 1049 end |
1025 | 1050 |
1033 stable:SetHighLightColor (rowFrame, eoi_st_otherrow_bgcolortable[d.kind]) | 1058 stable:SetHighLightColor (rowFrame, eoi_st_otherrow_bgcolortable[d.kind]) |
1034 --else | 1059 --else |
1035 -- table:SetHighLightColor (rowFrame, table:GetDefaultHighlightBlank()) | 1060 -- table:SetHighLightColor (rowFrame, table:GetDefaultHighlightBlank()) |
1036 --end | 1061 --end |
1037 end | 1062 end |
1063 | |
1064 local function hist_st_OnClick (rowFrame, cellFrame, data, cols, row, realrow, column, stable, button, ...) | |
1065 if (row == nil) or (realrow == nil) then return false end -- click column header, do default resorting | |
1066 local h = data[realrow] | |
1067 local kind = h.kind | |
1068 | |
1069 if history_filter_who and button == "RightButton" then -- now filtering and wanting not to | |
1070 history_filter_who = nil | |
1071 stable:SetFilter(history_filter_by_recent) | |
1072 setstatus(hist_normal_status) | |
1073 elseif (not history_filter_who) and button == "LeftButton" then -- not filtering and wanting to | |
1074 history_filter_who = h.OLwho | |
1075 stable:SetFilter(history_filter_by_name) | |
1076 setstatus(hist_name_status) | |
1077 end | |
1078 | |
1079 return true -- do not do anything further | |
1080 end | |
1081 | |
1082 --[[ | |
1083 local function hist_st_OnDoubleClick (rowFrame, cellFrame, data, cols, row, realrow, column, stable, button, ...) | |
1084 if (row == nil) or (realrow == nil) then return true end -- they clicked on column header, suppress reordering | |
1085 local h = data[realrow] | |
1086 local kind = h.kind | |
1087 | |
1088 return true -- do not do anything further | |
1089 end]] | |
1038 | 1090 |
1039 tabs_OnGroupSelected["hist"] = function(container,specials) | 1091 tabs_OnGroupSelected["hist"] = function(container,specials) |
1040 histST = LibStub("ScrollingTable"):CreateST(hist_st_cols,eoi_st_displayed_rows,eoi_st_rowheight) | 1092 histST = LibStub("ScrollingTable"):CreateST(hist_st_cols,eoi_st_displayed_rows,eoi_st_rowheight) |
1041 if addon.author_debug then | 1093 if addon.author_debug then |
1042 _G.OLHST = histST | 1094 _G.OLHST = histST |
1054 histST:SetData(addon.history.st) | 1106 histST:SetData(addon.history.st) |
1055 histST:RegisterEvents{ | 1107 histST:RegisterEvents{ |
1056 OnEnter = eoi_st_OnEnter, | 1108 OnEnter = eoi_st_OnEnter, |
1057 OnLeave = eoi_st_OnLeave, | 1109 OnLeave = eoi_st_OnLeave, |
1058 OnClick = hist_st_OnClick, | 1110 OnClick = hist_st_OnClick, |
1059 --OnDoubleClick = eoi_st_OnDoubleClick, | 1111 --OnDoubleClick = hist_st_OnDoubleClick, |
1060 } | 1112 } |
1061 local oldrefresh = histST.Refresh | 1113 local oldrefresh = histST.Refresh |
1062 histST.Refresh = function (self, opt_index) | 1114 histST.Refresh = function (self, opt_index) |
1063 addon:_fill_out_hist_data(opt_index) | 1115 addon:_fill_out_hist_data(opt_index) |
1064 return oldrefresh(self) | 1116 return oldrefresh(self) |
1066 histST.OuroLoot_Refresh = function (self, opt_index) | 1118 histST.OuroLoot_Refresh = function (self, opt_index) |
1067 addon:_fill_out_hist_data(opt_index) | 1119 addon:_fill_out_hist_data(opt_index) |
1068 self:SortData() -- calls hooked refresh | 1120 self:SortData() -- calls hooked refresh |
1069 end | 1121 end |
1070 | 1122 |
1071 local function reset_current_realm() | 1123 histST:SetFilter(history_filter_by_recent) |
1072 local r = assert(GetRealmName()) | 1124 |
1125 -- Zaps history for the given realm, or the current (current-playing | |
1126 -- realm, not currently-displayed realm) one if not specified. | |
1127 local function reset_current_realm (opt_realmname) | |
1128 local r = assert(opt_realmname or GetRealmName()) | |
1073 -- new .history table: | 1129 -- new .history table: |
1074 addon.history_all[r] = addon:_prep_new_history_category (nil, r) | 1130 addon.history_all[r] = addon:_prep_new_history_category (nil, r) |
1075 addon.history = addon.history_all[r] | 1131 addon.history = addon.history_all[r] |
1076 addon.hist_clean = nil | 1132 addon.hist_clean = nil |
1077 -- new .history.st table: | 1133 -- new .history.st table: |
1078 histST:OuroLoot_Refresh() | 1134 histST:OuroLoot_Refresh() |
1079 histST:SetData(addon.history.st) | 1135 histST:SetData(addon.history.st) |
1080 addon:Print("You've clicked the history erase button!") | |
1081 end | 1136 end |
1082 | 1137 |
1083 tabs_OnGroupSelected["hist"] = function(container,specials) | 1138 tabs_OnGroupSelected["hist"] = function(container,specials) |
1084 local st_widget = GUI:Create("lib-st") | 1139 local st_widget = GUI:Create("lib-st") |
1085 histST:OuroLoot_Refresh() | 1140 histST:OuroLoot_Refresh() |
1086 st_widget:WrapST(histST) | 1141 st_widget:WrapST(histST) |
1087 st_widget.head_offset = 15 | 1142 st_widget.head_offset = 15 |
1088 st_widget.tail_offset = 0 | 1143 st_widget.tail_offset = 0 |
1089 container:SetLayout("Fill") | 1144 container:SetLayout("Fill") |
1090 container:AddChild(st_widget) | 1145 container:AddChild(st_widget) |
1146 setstatus(hist_normal_status) | |
1091 | 1147 |
1092 local b | 1148 local b |
1093 do | 1149 do |
1094 local realms,current = {},1 | 1150 local realms,current = {},1 |
1095 for realmname,histtable in pairs(addon.history_all) do | 1151 for realmname,histtable in pairs(addon.history_all) do |
1100 b:SetFullWidth(true) | 1156 b:SetFullWidth(true) |
1101 b:SetLabel() -- required even when empty, see ace3 ticket #234 | 1157 b:SetLabel() -- required even when empty, see ace3 ticket #234 |
1102 b:SetList(realms) | 1158 b:SetList(realms) |
1103 b:SetValue(current) | 1159 b:SetValue(current) |
1104 b:SetCallback("OnValueChanged", function(_dd,event,choice) | 1160 b:SetCallback("OnValueChanged", function(_dd,event,choice) |
1105 print("chose realm", choice, realms[choice]) | 1161 local r = realms[choice] |
1162 addon.history = addon:_prep_new_history_category (addon.history_all[r], r) | |
1163 addon.hist_clean = nil | |
1164 histST:OuroLoot_Refresh() | |
1165 histST:SetData(addon.history.st) | |
1166 -- Reset filters to normal | |
1167 history_filter_who = nil | |
1168 histST:SetFilter(history_filter_by_recent) | |
1169 setstatus(hist_normal_status) | |
1170 return addon:redisplay() | |
1106 end) | 1171 end) |
1107 specials:AddChild(b) | 1172 specials:AddChild(b) |
1108 end | 1173 end |
1109 | 1174 |
1110 --[[ | 1175 --[[ b = GUI:Create("Spacer") b:SetFullWidth(true) b:SetHeight(10) specials:AddChild(b) ]] |
1111 b = GUI:Create("Spacer") | |
1112 b:SetFullWidth(true) | |
1113 b:SetHeight(10) | |
1114 specials:AddChild(b) | |
1115 ]] | |
1116 | 1176 |
1117 b = mkbutton("Regenerate", | 1177 b = mkbutton("Regenerate", |
1118 [[Erases all history entries from the displayed realm, and regenerates it from current loot information.]]) | 1178 [[Erases all history entries from the displayed realm, and regenerates it from current loot information.]]) |
1119 b:SetFullWidth(true) | 1179 b:SetFullWidth(true) |
1120 b:SetDisabled (#addon.history == 0) | 1180 b:SetDisabled (#addon.history == 0) |
1121 b:SetCallback("OnClick", function(_b) | 1181 b:SetCallback("OnClick", function(_b) |
1182 addon:rewrite_history (addon.history.realm) | |
1183 histST:OuroLoot_Refresh() | |
1184 histST:SetData(addon.history.st) | |
1122 addon:Print("%s history has been regenerated.", addon.history.realm) | 1185 addon:Print("%s history has been regenerated.", addon.history.realm) |
1123 return addon:redisplay() | 1186 return addon:redisplay() |
1124 --return tabs_OnGroupSelected_func(container,"OnGroupSelected","hist") | |
1125 end) | 1187 end) |
1126 specials:AddChild(b) | 1188 specials:AddChild(b) |
1127 | 1189 |
1128 b = mkbutton('hist_clear', "Clear Realm History", | 1190 b = mkbutton('hist_clear', "Clear Realm History", |
1129 [[No confirmation! |cffff1010Erases absolutely all> history entries from the displayed realm.]]) | 1191 [[No confirmation! |cffff1010Erases absolutely all> history entries from the displayed realm.]]) |
1130 b:SetFullWidth(true) | 1192 b:SetFullWidth(true) |
1131 b:SetCallback("OnClick", function (_b) | 1193 b:SetCallback("OnClick", function (_b) |
1132 reset_current_realm() | 1194 reset_current_realm(addon.history.realm) |
1195 addon:Print("Stimpy, you idiot! You've pushed the history erase button!") | |
1133 return addon:redisplay() | 1196 return addon:redisplay() |
1134 end) | 1197 end) |
1135 specials:AddChild(b) | 1198 specials:AddChild(b) |
1136 | 1199 |
1137 b = mkbutton('hist_clear_all', "Clear All History", | 1200 b = mkbutton('hist_clear_all', "Clear All History", |
1138 [[No confirmation! |cffff1010Erases absolutely all> history entries from ALL realms.]]) | 1201 [[No confirmation! |cffff1010Erases absolutely all> history entries from ALL realms.]]) |
1139 b:SetFullWidth(true) | 1202 b:SetFullWidth(true) |
1140 b:SetCallback("OnClick", function (_b) | 1203 b:SetCallback("OnClick", function (_b) |
1141 addon.history_all = {} | 1204 addon.history_all = {} |
1142 reset_current_realm() | 1205 reset_current_realm() |
1206 addon:Print("Stimpy, you idiot! You've pushed the history erase button!") | |
1143 return addon:redisplay() | 1207 return addon:redisplay() |
1144 end) | 1208 end) |
1145 specials:AddChild(b) | 1209 specials:AddChild(b) |
1146 | 1210 |
1147 b = mkbutton('hist_clear_old', "Clear Older", | 1211 b = mkbutton('hist_clear_old', "Clear Older", |
1148 [[Preserves only the latest loot entry for each player on the current realm, removing all earlier ones.]]) | 1212 [[Preserves only the latest loot entry for each player on the displayed realm, removing all earlier ones.]]) |
1149 b:SetFullWidth(true) | 1213 b:SetFullWidth(true) |
1150 b:SetCallback("OnClick", function (_b) | 1214 b:SetCallback("OnClick", function (_b) |
1215 addon:preen_history(addon.history.realm) | |
1151 addon:Print("All loot prior to the most recent entries has been erased.") | 1216 addon:Print("All loot prior to the most recent entries has been erased.") |
1217 addon.hist_clean = nil | |
1218 histST:OuroLoot_Refresh() | |
1152 return addon:redisplay() | 1219 return addon:redisplay() |
1153 --return tabs_OnGroupSelected_func(container,"OnGroupSelected","hist") | |
1154 end) | 1220 end) |
1155 specials:AddChild(b) | 1221 specials:AddChild(b) |
1156 end | 1222 end |
1157 return tabs_OnGroupSelected["hist"](container,specials) | 1223 return tabs_OnGroupSelected["hist"](container,specials) |
1158 end | 1224 end |
1159 end | 1225 end |
1160 | 1226 |
1161 -- Tab 5: Help (content in lootaux.lua) | 1227 -- Tab 5: Help (content in verbage.lua) |
1162 do | 1228 do |
1163 local tabs_help_OnGroupSelected_func = function (treeg,event,category) | 1229 local tabs_help_OnGroupSelected_func = function (treeg,event,category) |
1164 treeg:ReleaseChildren() | 1230 treeg:ReleaseChildren() |
1165 local txt = GUI:Create("Label") | 1231 local txt = GUI:Create("Label") |
1166 txt:SetFullWidth(true) | 1232 txt:SetFullWidth(true) |
1485 addon:Print("No longer filtering out", val_name) | 1551 addon:Print("No longer filtering out", val_name) |
1486 end) | 1552 end) |
1487 grp:AddChild(w) | 1553 grp:AddChild(w) |
1488 end | 1554 end |
1489 | 1555 |
1490 scroll:AddChild(grp) | |
1491 | |
1492 addon.sender_list.sort() | 1556 addon.sender_list.sort() |
1493 if #addon.sender_list.namesI > 0 then | 1557 if #addon.sender_list.namesI > 0 then |
1494 local senders = table.concat(addon.sender_list.namesI,'\n') -- sigh | 1558 local senders = table.concat(addon.sender_list.namesI,'\n') -- sigh |
1495 -- If 39 other people in the raid are running this, the label will | 1559 -- If 39 other people in the raid are running this, the label will |
1496 -- explode... is it likely enough to care about? No. | 1560 -- explode... is it likely enough to care about? No. |
1501 w = GUI:Create("Label") | 1565 w = GUI:Create("Label") |
1502 w:SetRelativeWidth(0.4) | 1566 w:SetRelativeWidth(0.4) |
1503 w:SetText(addon.quality_hexes[3].."Echo from latest ping:|r\n"..senders) | 1567 w:SetText(addon.quality_hexes[3].."Echo from latest ping:|r\n"..senders) |
1504 grp:AddChild(w) | 1568 grp:AddChild(w) |
1505 end | 1569 end |
1570 | |
1571 scroll:AddChild(grp) | |
1506 | 1572 |
1507 w = mkbutton("ReloadUI", [[Does what you think it does. Loot information is written out and restored.]]) | 1573 w = mkbutton("ReloadUI", [[Does what you think it does. Loot information is written out and restored.]]) |
1508 w:SetFullWidth(true) | 1574 w:SetFullWidth(true) |
1509 w:SetCallback("OnClick", ReloadUI) | 1575 w:SetCallback("OnClick", ReloadUI) |
1510 specials:AddChild(w) | 1576 specials:AddChild(w) |
1623 ]] | 1689 ]] |
1624 display:SetCallback("OnClose", function(_display) | 1690 display:SetCallback("OnClose", function(_display) |
1625 _d = _display:GetUserData("eoiST") | 1691 _d = _display:GetUserData("eoiST") |
1626 self.display = nil | 1692 self.display = nil |
1627 GUI:Release(_display) | 1693 GUI:Release(_display) |
1694 flib.clear() | |
1628 collectgarbage() | 1695 collectgarbage() |
1629 end) | 1696 end) |
1630 | 1697 |
1631 ----- Right-hand panel | 1698 ----- Right-hand panel |
1632 local rhs_width = 0.20 | 1699 local rhs_width = 0.20 |