comparison gui.lua @ 4:05caaf17b3ca

Get history window in a working state again in prep for redoing orders.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Sun, 24 Apr 2011 07:29:01 +0000
parents 2753b9763882
children 7adbc59de8fe
comparison
equal deleted inserted replaced
3:2753b9763882 4:05caaf17b3ca
17 wipe = { ["r"] = 0.3, ["g"] = 0.3, ["b"] = 0.3}, 17 wipe = { ["r"] = 0.3, ["g"] = 0.3, ["b"] = 0.3},
18 kill = { ["r"] = 0.2, ["g"] = 0.2, ["b"] = 0.2}, 18 kill = { ["r"] = 0.2, ["g"] = 0.2, ["b"] = 0.2},
19 time = { ["r"] = 0x0/255, ["g"] = 0x0/255, ["b"] = 1, ["a"] = 0.3}, 19 time = { ["r"] = 0x0/255, ["g"] = 0x0/255, ["b"] = 1, ["a"] = 0.3},
20 } 20 }
21 eoi_st_otherrow_bgcolortable[""] = eoi_st_otherrow_bgcolortable["kill"] 21 eoi_st_otherrow_bgcolortable[""] = eoi_st_otherrow_bgcolortable["kill"]
22 eoi_st_otherrow_bgcolortable["realm"] = eoi_st_otherrow_bgcolortable["time"] 22 --eoi_st_otherrow_bgcolortable["realm"] = eoi_st_otherrow_bgcolortable["time"]
23 local eoi_st_otherrow_bgcolortable_default 23 local eoi_st_otherrow_bgcolortable_default
24 local eoi_st_lootrow_col3_colortable = { 24 local eoi_st_lootrow_col3_colortable = {
25 [""] = { text = "", r = 1.0, g = 1.0, b = 1.0, a = 1.0 }, 25 [""] = { text = "", r = 1.0, g = 1.0, b = 1.0, a = 1.0 },
26 shard = { text = "shard", r = 0xa3/255, g = 0x35/255, b = 0xee/255, a = 1.0 }, 26 shard = { text = "shard", r = 0xa3/255, g = 0x35/255, b = 0xee/255, a = 1.0 },
27 offspec = { text = "offspec", r = 0.78, g = 0.61, b = 0.43, a = 1.0 }, 27 offspec = { text = "offspec", r = 0.78, g = 0.61, b = 0.43, a = 1.0 },
237 self.loot_clean = #g_loot 237 self.loot_clean = #g_loot
238 end 238 end
239 end 239 end
240 240
241 do 241 do
242 local offset
243 function addon:_fill_out_hist_data (opt_starting_index) 242 function addon:_fill_out_hist_data (opt_starting_index)
244 -- Clearing history finishes this function with #hist==0 and hist_clean==0. 243 -- Clearing history finishes this function with #hist==0 and hist_clean==0.
245 -- The next call typically detects this (#<1) and handles it. If loot is 244 -- The next call typically detects this (#<1) and handles it. If loot is
246 -- recorded before then, it results in hist_clean==0 and #hist==1, which 245 -- recorded before then, it results in hist_clean==0 and #hist==1, which
247 -- breaks the first iteration of the loop. Thus, the "extra" test here: 246 -- breaks the first iteration of the loop. Thus, the "extra" test here:
249 self.hist_clean = nil 248 self.hist_clean = nil
250 opt_starting_index = nil 249 opt_starting_index = nil
251 end 250 end
252 if not self.history.st then 251 if not self.history.st then
253 self.history.st = { 252 self.history.st = {
254 { kind = "realm", 253 --[[{ kind = "realm",
255 cols = setmetatable({ 254 cols = setmetatable({
256 { value = self.history.realm }, 255 { value = self.history.realm },
257 }, time_column1_used_mt) 256 }, time_column1_used_mt)
258 } 257 }]]
259 } 258 }
260 offset = #self.history.st
261 end 259 end
262 local st = self.history.st 260 local st = self.history.st
263 for i = (opt_starting_index or self.hist_clean or 1), #self.history do 261 for i = (opt_starting_index or self.hist_clean or 1), #self.history do
264 local h = self.history[i] 262 local h = self.history[i]
265 local sti = i+offset 263 local sti = i
266 if not st[sti] then 264 if not st[sti] then
267 st[sti] = { kind = "history" } 265 st[sti] = { kind = "history" }
268 end 266 end
269 local sth = st[sti] -- corresponding ST entry for h 267 local sth = st[sti] -- corresponding ST entry for h
270 268
274 {},--{ value = h[1].when }, 272 {},--{ value = h[1].when },
275 } 273 }
276 274
277 if sth.shown ~= h[1].id then 275 if sth.shown ~= h[1].id then
278 -- things have changed, redo the row with new data 276 -- things have changed, redo the row with new data
279 local iname, ilink, iquality, _,_,_,_,_,_, itexture = GetItemInfo(h[1].id) 277 local itexture = GetItemIcon(h[1].id)
280 local textured = eoi_st_textured_item_format:format (itexture, self.quality_hexes[iquality], iname, h[1].count or "") 278 local iname, ilink, iquality = GetItemInfo(h[1].id)
279 local textured
280 if itexture and iname then
281 textured = eoi_st_textured_item_format:format (itexture, self.quality_hexes[iquality], iname, h[1].count or "")
282 sth.shown = h[1].id
283 else
284 textured = eoi_st_textured_item_format:format ([[ICONS\INV_Misc_QuestionMark]], self.quality_hexes[1], 'UNKNOWN', "")
285 end
281 sth.cols[2].value = textured 286 sth.cols[2].value = textured
282 sth.cols[3].value = h[1].when 287 sth.cols[3].value = h[1].when
283 sth.shown = h[1].id
284 end 288 end
285 289
286 end 290 end
287 self.hist_clean = #self.history 291 self.hist_clean = #self.history
288 end 292 end
701 705
702 return true -- do not do anything further 706 return true -- do not do anything further
703 end 707 end
704 708
705 local function hist_st_OnClick (rowFrame, cellFrame, data, cols, row, realrow, column, stable, button, ...) 709 local function hist_st_OnClick (rowFrame, cellFrame, data, cols, row, realrow, column, stable, button, ...)
706 if (row == nil) or (realrow == nil) then return true end -- click column header, suppress reordering FOR NOW 710 if (row == nil) or (realrow == nil) then return false end -- click column header, do default resorting
707 local h = data[realrow] 711 local h = data[realrow]
708 local kind = h.kind 712 local kind = h.kind
709 713
710 714
711 return true -- do not do anything further 715 return true -- do not do anything further
842 ST.OuroLoot_Refresh = function (self, opt_index) 846 ST.OuroLoot_Refresh = function (self, opt_index)
843 addon:_fill_out_eoi_data(opt_index) 847 addon:_fill_out_eoi_data(opt_index)
844 -- safety check begin 848 -- safety check begin
845 for i,e in ipairs(g_loot) do 849 for i,e in ipairs(g_loot) do
846 if type(e.cols) ~= 'table' then 850 if type(e.cols) ~= 'table' then
847 addon:Print("ARGH, index",i,"bad in refresh, refreshed at", opt_index, "type",type(e.cols), 851 addon:Print("ARGH, index",i,"bad in eoi refresh, refreshed at", opt_index, "type",type(e.cols),
848 "entry kind", e.kind, "data", e.itemname or e.bosskill or e.startday.text, 852 "entry kind", e.kind, "data", e.itemname or e.bosskill or e.startday.text,
849 "-- please take a screenshot and send to Farmbuyer.") 853 "-- please take a screenshot and send to Farmbuyer.")
850 tabledump(e) 854 tabledump(e)
851 end 855 end
852 end 856 end
981 _populate_text_specials (box, specials, mkbutton, text_kind) 985 _populate_text_specials (box, specials, mkbutton, text_kind)
982 end 986 end
983 987
984 -- Tab 4: History 988 -- Tab 4: History
985 -- Much of the implementation here follows a similar desgin for the first 989 -- Much of the implementation here follows a similar desgin for the first
986 -- tab's handling of ST objects. 990 -- tab's handling of ST objects. We will even reuse its controlling tables
991 -- when feasible.
987 do 992 do
988 local histST 993 local histST
989 local hist_st_cols = { 994 local hist_st_cols = {
990 { -- col 1 995 { -- col 1
991 name = "Player", 996 name = "Player",
999 }, 1004 },
1000 { -- col 3 1005 { -- col 3
1001 name = "When", 1006 name = "When",
1002 width = 250, 1007 width = 250,
1003 DoCellUpdate = hist_st_col3_DoCellUpdate, 1008 DoCellUpdate = hist_st_col3_DoCellUpdate,
1009 defaultsort = "asc",
1010 sort = "asc",
1011 sortnext = 1,
1004 }, 1012 },
1005 } 1013 }
1006 1014
1007 -- Loot column 1015 -- Loot column
1008 local function hist_st_col2_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable, ...) 1016 local function hist_st_col2_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable, ...)
1058 histST.OuroLoot_Refresh = function (self, opt_index) 1066 histST.OuroLoot_Refresh = function (self, opt_index)
1059 addon:_fill_out_hist_data(opt_index) 1067 addon:_fill_out_hist_data(opt_index)
1060 self:SortData() -- calls hooked refresh 1068 self:SortData() -- calls hooked refresh
1061 end 1069 end
1062 1070
1071 local function reset_current_realm()
1072 local r = assert(GetRealmName())
1073 -- new .history table:
1074 addon.history_all[r] = addon:_prep_new_history_category (nil, r)
1075 addon.history = addon.history_all[r]
1076 addon.hist_clean = nil
1077 -- new .history.st table:
1078 histST:OuroLoot_Refresh()
1079 histST:SetData(addon.history.st)
1080 addon:Print("You've clicked the history erase button!")
1081 end
1082
1063 tabs_OnGroupSelected["hist"] = function(container,specials) 1083 tabs_OnGroupSelected["hist"] = function(container,specials)
1064 local st_widget = GUI:Create("lib-st") 1084 local st_widget = GUI:Create("lib-st")
1065 histST:OuroLoot_Refresh() 1085 histST:OuroLoot_Refresh()
1066 st_widget:WrapST(histST) 1086 st_widget:WrapST(histST)
1087 st_widget.head_offset = 15
1088 st_widget.tail_offset = 0
1067 container:SetLayout("Fill") 1089 container:SetLayout("Fill")
1068 container:AddChild(st_widget) 1090 container:AddChild(st_widget)
1069 1091
1070 local b = mkbutton("Regenerate", 1092 local b
1071 [[Erases all history entries from current realm, and regenerate it from current loot information.]]) 1093 do
1094 local realms,current = {},1
1095 for realmname,histtable in pairs(addon.history_all) do
1096 tinsert(realms,realmname)
1097 if addon.history == histtable then current = #realms end
1098 end
1099 b = mkbutton("Dropdown", nil, "", [[Which realm to display]])
1100 b:SetFullWidth(true)
1101 b:SetLabel() -- required even when empty, see ace3 ticket #234
1102 b:SetList(realms)
1103 b:SetValue(current)
1104 b:SetCallback("OnValueChanged", function(_dd,event,choice)
1105 print("chose realm", choice, realms[choice])
1106 end)
1107 specials:AddChild(b)
1108 end
1109
1110 --[[
1111 b = GUI:Create("Spacer")
1112 b:SetFullWidth(true)
1113 b:SetHeight(10)
1114 specials:AddChild(b)
1115 ]]
1116
1117 b = mkbutton("Regenerate",
1118 [[Erases all history entries from the displayed realm, and regenerates it from current loot information.]])
1072 b:SetFullWidth(true) 1119 b:SetFullWidth(true)
1073 b:SetDisabled (#addon.history == 0) 1120 b:SetDisabled (#addon.history == 0)
1074 b:SetCallback("OnClick", function(_b) 1121 b:SetCallback("OnClick", function(_b)
1075 addon:Print("%s history has been regenerated.", addon.history.realm) 1122 addon:Print("%s history has been regenerated.", addon.history.realm)
1076 return addon:redisplay() 1123 return addon:redisplay()
1077 --return tabs_OnGroupSelected_func(container,"OnGroupSelected","hist") 1124 --return tabs_OnGroupSelected_func(container,"OnGroupSelected","hist")
1078 end) 1125 end)
1079 specials:AddChild(b) 1126 specials:AddChild(b)
1080 1127
1081 b = mkbutton('hist_clear_all', "Clear All History", 1128 b = mkbutton('hist_clear', "Clear Realm History",
1082 [[Erases ALL history entries from all realms.]]) 1129 [[No confirmation! |cffff1010Erases absolutely all> history entries from the displayed realm.]])
1083 b:SetFullWidth(true) 1130 b:SetFullWidth(true)
1084 b:SetCallback("OnClick", function (_b) 1131 b:SetCallback("OnClick", function (_b)
1085 local r = GetRealmName() 1132 reset_current_realm()
1086 -- new .history table:
1087 addon.history_all[r] = addon:_prep_new_history_category (nil, r)
1088 addon.history = addon.history_all[r]
1089 addon.hist_clean = nil
1090 -- new .history.st table:
1091 histST:OuroLoot_Refresh()
1092 histST:SetData(addon.history.st)
1093 addon:Print("You've clicked the history erase button!")
1094 return addon:redisplay() 1133 return addon:redisplay()
1095 --return tabs_OnGroupSelected_func(container,"OnGroupSelected","hist")
1096 end) 1134 end)
1097 specials:AddChild(b) 1135 specials:AddChild(b)
1098 1136
1137 b = mkbutton('hist_clear_all', "Clear All History",
1138 [[No confirmation! |cffff1010Erases absolutely all> history entries from ALL realms.]])
1139 b:SetFullWidth(true)
1140 b:SetCallback("OnClick", function (_b)
1141 addon.history_all = {}
1142 reset_current_realm()
1143 return addon:redisplay()
1144 end)
1145 specials:AddChild(b)
1146
1099 b = mkbutton('hist_clear_old', "Clear Older", 1147 b = mkbutton('hist_clear_old', "Clear Older",
1100 [[Preserves only the latest loot entry for each player, removing all others.]]) 1148 [[Preserves only the latest loot entry for each player on the current realm, removing all earlier ones.]])
1101 b:SetFullWidth(true) 1149 b:SetFullWidth(true)
1102 b:SetCallback("OnClick", function (_b) 1150 b:SetCallback("OnClick", function (_b)
1103 addon:Print("All loot prior to the most recent entries has been erased.") 1151 addon:Print("All loot prior to the most recent entries has been erased.")
1104 return addon:redisplay() 1152 return addon:redisplay()
1105 --return tabs_OnGroupSelected_func(container,"OnGroupSelected","hist") 1153 --return tabs_OnGroupSelected_func(container,"OnGroupSelected","hist")
1628 b:SetCallback("OnValueChanged", function(_dd,event,choice) 1676 b:SetCallback("OnValueChanged", function(_dd,event,choice)
1629 self:SetThreshold(choice) 1677 self:SetThreshold(choice)
1630 end) 1678 end)
1631 control:AddChild(b) 1679 control:AddChild(b)
1632 1680
1633 b = mkbutton("Clear", 1681 b = mkbutton("Clear Loot",
1634 [[+Erases> all current loot information and generated text (but not saved texts).]]) 1682 [[+Erases> all current loot information and generated text (but not saved texts).]])
1635 b:SetFullWidth(true) 1683 b:SetFullWidth(true)
1636 b:SetCallback("OnClick", function() 1684 b:SetCallback("OnClick", function()
1637 StaticPopup_Show("OUROL_CLEAR").data = self 1685 StaticPopup_Show("OUROL_CLEAR").data = self
1638 end) 1686 end)