Mercurial > wow > ouroloot
comparison gui.lua @ 114:67bf97136273
- Start paying attention to cross-realm names. New 'fname' and 'realm' keys
in snapshot (now indexed by name only), 'person_realm' key in loot entries.
Realm data not stored if it's the same as the player's realm. Manual
rebroadcasting does not include realm data (do we care?).
- New history_suppress_LFR and history_ignore_xrealm options.
- This implementation depends on no two cross-realm players sharing the same
player name. Is that guaranteed by Blizzard, or merely "unlikely"?
- Gather history suppression knobs into a single function.
- If restoring loot data, make sure the item cache has their values; fix up
any missing data on load.
- Memory tweaks for player history sorting.
- Handle some long-standing FIXME's: reassigning loot to the same player,
using expunge() for history, no partial duplication of effort for
addHistoryEntry.
- Try to be more graceful when discovering messed up history during column 3
display loops. Don't leave History tab in player-focused mode when all
that player's data have been removed elsewhere.
| author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
|---|---|
| date | Mon, 13 Aug 2012 21:49:08 -0400 |
| parents | cfbaf001fd52 |
| children | fc2ff128835a |
comparison
equal
deleted
inserted
replaced
| 113:d1b914bbed8b | 114:67bf97136273 |
|---|---|
| 338 for i = (opt_starting_index or self.loot_clean or 1), #g_loot do | 338 for i = (opt_starting_index or self.loot_clean or 1), #g_loot do |
| 339 local e = g_loot[i] | 339 local e = g_loot[i] |
| 340 if e == nil then | 340 if e == nil then |
| 341 self.loot_clean = nil | 341 self.loot_clean = nil |
| 342 pprint('_f_o_e_d', "index",i,"somehow still in loop past",#g_loot,"bailing") | 342 pprint('_f_o_e_d', "index",i,"somehow still in loop past",#g_loot,"bailing") |
| 343 return | 343 -- hmm. used to bail here. does restarting cause problems? |
| 344 return self:_fill_out_eoi_data(1) | |
| 344 end | 345 end |
| 345 | 346 |
| 346 local display_bcast_from = self.db.profile.display_bcast_from | 347 local display_bcast_from = self.db.profile.display_bcast_from |
| 347 -- XXX FIXME a major weakness here is that we're constantly replacing | 348 -- XXX FIXME a major weakness here is that we're constantly replacing |
| 348 -- what's already been created. Lots of garbage. Trying to detect what | 349 -- what's already been created. Lots of garbage. Trying to detect what |
| 349 -- actually needs to be replaced is even worse. We'll live with | 350 -- actually needs to be replaced is even worse. We'll live with |
| 350 -- garbage for now. | 351 -- garbage for now. |
| 351 if e.kind == 'loot' then | 352 if e.kind == 'loot' then |
| 352 local textured = eoi_st_textured_item_format:format (e.itexture, ITEM_QUALITY_COLORS[e.quality].hex, e.itemname, e.count or "") | 353 local textured = eoi_st_textured_item_format:format (e.itexture, ITEM_QUALITY_COLORS[e.quality].hex, e.itemname, e.count or "") |
| 354 local pdisplay = e.person_realm | |
| 355 and (e.person .. FOREIGN_SERVER_LABEL) or e.person | |
| 353 e.cols = { | 356 e.cols = { |
| 354 {value = textured}, | 357 {value = textured}, |
| 355 {value = e.person}, | 358 {value = pdisplay}, |
| 356 {} | 359 {} |
| 357 } | 360 } |
| 358 -- This is horrible. Must do better. | 361 -- This is horrible. Must do better. |
| 359 if e.extratext then | 362 if e.extratext then |
| 360 for disp,text in self:_iter_dispositions('from_notes_text') do | 363 for disp,text in self:_iter_dispositions('from_notes_text') do |
| 458 for li,unique in ipairs(player.unique) do | 461 for li,unique in ipairs(player.unique) do |
| 459 local col2 = new() | 462 local col2 = new() |
| 460 col2.OLi = li | 463 col2.OLi = li |
| 461 col2.OLu = unique | 464 col2.OLu = unique |
| 462 local col3 = new() | 465 local col3 = new() |
| 463 col3.value = assert(player.when[unique]) | 466 col3.value = player.when[unique] |
| 467 | |
| 468 if not col3.value then | |
| 469 col3.hist_miss = true | |
| 470 col3.value = '??' | |
| 471 end | |
| 464 | 472 |
| 465 local id = assert(player.id[unique]) | 473 local id = assert(player.id[unique]) |
| 466 local itexture = GetItemIcon(id) | 474 local itexture = GetItemIcon(id) |
| 467 local iname, ilink, iquality = GetItemInfo(id) | 475 local iname, ilink, iquality = GetItemInfo(id) |
| 468 local textured | 476 local textured |
| 1053 local function eoi_st_OnEnter (rowFrame, cellFrame, data, cols, row, realrow, column, stable, motion) | 1061 local function eoi_st_OnEnter (rowFrame, cellFrame, data, cols, row, realrow, column, stable, motion) |
| 1054 if (row == nil) or (realrow == nil) then return end -- mouseover column header | 1062 if (row == nil) or (realrow == nil) then return end -- mouseover column header |
| 1055 local e = data[realrow] | 1063 local e = data[realrow] |
| 1056 if e == nil then return end -- something horrible has happened | 1064 if e == nil then return end -- something horrible has happened |
| 1057 local kind = e.kind | 1065 local kind = e.kind |
| 1066 local cell = e.cols[column] | |
| 1058 local tt = GameTooltip -- can this be hoisted? does GT ever get securely replaced? | 1067 local tt = GameTooltip -- can this be hoisted? does GT ever get securely replaced? |
| 1059 | 1068 |
| 1060 if gui._do_debugging_tooltip and column == 1 and kind ~= 'hist' then | 1069 if gui._do_debugging_tooltip and column == 1 and kind ~= 'hist' then |
| 1061 _build_debugging_tooltip (cellFrame, realrow) | 1070 _build_debugging_tooltip (cellFrame, realrow) |
| 1062 end | 1071 end |
| 1074 end | 1083 end |
| 1075 | 1084 |
| 1076 elseif kind == 'loot' and column == 2 then | 1085 elseif kind == 'loot' and column == 2 then |
| 1077 tt:SetOwner (cellFrame, "ANCHOR_BOTTOMRIGHT", -50, 5) | 1086 tt:SetOwner (cellFrame, "ANCHOR_BOTTOMRIGHT", -50, 5) |
| 1078 tt:ClearLines() | 1087 tt:ClearLines() |
| 1079 tt:AddLine(e.person.." Loot:") | 1088 tt:AddLine(("%s Loot:"):format(e.person_realm |
| 1089 and (e.person .. "-" .. e.person_realm) or e.person)) | |
| 1080 local counter = 0 | 1090 local counter = 0 |
| 1081 for i,e2 in ipairs(data) do | 1091 for i,e2 in ipairs(data) do |
| 1082 if e2.person == e.person then -- would be awesome to test for alts | 1092 if e2.person == e.person then -- would be awesome to test for alts |
| 1083 if counter > 10 then | 1093 if counter > 10 then |
| 1084 tt:AddLine("...") | 1094 tt:AddLine("...") |
| 1093 end | 1103 end |
| 1094 end | 1104 end |
| 1095 tt:Show() | 1105 tt:Show() |
| 1096 | 1106 |
| 1097 elseif kind == 'loot' and column == 3 then | 1107 elseif kind == 'loot' and column == 3 then |
| 1098 setstatus(e.cols[column].value) | 1108 setstatus(cell.value) |
| 1109 | |
| 1110 elseif kind == 'hist' and column == 3 and cell.hist_miss then | |
| 1111 tt:SetOwner (cellFrame, "ANCHOR_RIGHT", -20, 0) | |
| 1112 tt:ClearLines() | |
| 1113 tt:AddLine("Corrupted History Data") | |
| 1114 tt:AddLine([[Close this window, then type]], 0.8, 0.8, 0.8, 1) | |
| 1115 tt:AddLine([[/ouroloot fix history]], 0, 1, 64/255, nil) | |
| 1116 tt:AddLine([[and redisplay this window.]], 0.8, 0.8, 0.8, 1) | |
| 1117 tt:Show() | |
| 1099 | 1118 |
| 1100 end | 1119 end |
| 1101 | 1120 |
| 1102 return false -- continue with default highlighting behavior | 1121 return false -- continue with default highlighting behavior |
| 1103 end | 1122 end |
| 1142 gui.dropdown.eoi_loot[1].text = e.itemlink | 1161 gui.dropdown.eoi_loot[1].text = e.itemlink |
| 1143 EasyMenu (gui.dropdown.eoi_loot, dropdownmenuframe, cellFrame, 0, 0, "MENU") | 1162 EasyMenu (gui.dropdown.eoi_loot, dropdownmenuframe, cellFrame, 0, 0, "MENU") |
| 1144 | 1163 |
| 1145 elseif kind == 'loot' and column == 2 then | 1164 elseif kind == 'loot' and column == 2 then |
| 1146 local ddep = gui.dropdown.eoi_player | 1165 local ddep = gui.dropdown.eoi_player |
| 1147 ddep[1].text = e.person | 1166 ddep[1].text = e.person -- FIXME realm this too |
| 1148 local raiders = {} | 1167 local raiders = {} |
| 1149 for i = 1, GetNumRaidMembers() do | 1168 for i = 1, GetNumRaidMembers() do |
| 1150 tinsert (raiders, (GetRaidRosterInfo(i))) | 1169 tinsert (raiders, (GetRaidRosterInfo(i))) |
| 1151 end | 1170 end |
| 1152 table.sort(raiders) | 1171 table.sort(raiders) |
| 1810 st_widget:WrapST(histST) | 1829 st_widget:WrapST(histST) |
| 1811 st_widget.head_offset = 15 | 1830 st_widget.head_offset = 15 |
| 1812 st_widget.tail_offset = 0 | 1831 st_widget.tail_offset = 0 |
| 1813 container:SetLayout("Fill") | 1832 container:SetLayout("Fill") |
| 1814 container:AddChild(st_widget) | 1833 container:AddChild(st_widget) |
| 1815 setstatus(hist_normal_status) | 1834 -- If we're focused on one player, but have deleted all entries for |
| 1835 -- that player, don't sit there stuck on a blank grid. | |
| 1836 if history_filter_who and #histST.filtered < 1 then | |
| 1837 history_filter_who = nil | |
| 1838 histST:SetFilter(history_filter_by_recent) | |
| 1839 setstatus(hist_normal_status) | |
| 1840 else | |
| 1841 setstatus(hist_name_status) | |
| 1842 end | |
| 1816 | 1843 |
| 1817 local b | 1844 local b |
| 1818 do | 1845 do |
| 1819 local realms,current = {},1 | 1846 local realms,current = {},1 |
| 1820 for realmname,histtable in pairs(addon.history_all) do | 1847 for realmname,histtable in pairs(addon.history_all) do |
