comparison gui.lua @ 76:124da015c4a2

- Some more debugging aids (logging error/assert, auto-enable of testing panel, reminder of GOP history mode) - Move (finally!) hypertext handling code out to each call site. - Fix some bugs in previous alpha code. - Initial-but-mostly-tested code to handle items that have a "unique" field which are in fact always the same (for example, elementium gem cluster). Still need to test the case in which a remote tracker sees them first. - The rest of the variable-cutoff history cleanup.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Fri, 08 Jun 2012 08:05:37 +0000
parents 676fb79a4ae2
children a07c9dd79f3a
comparison
equal deleted inserted replaced
75:676fb79a4ae2 76:124da015c4a2
56 local g_loot = nil 56 local g_loot = nil
57 local g_generated = nil 57 local g_generated = nil
58 local window_title = "Ouro Loot" 58 local window_title = "Ouro Loot"
59 local dirty_tabs = nil 59 local dirty_tabs = nil
60 60
61 local error = addon.error
62 local assert = addon.assert
63
61 local pairs, ipairs, tinsert, tremove, tostring, tonumber = 64 local pairs, ipairs, tinsert, tremove, tostring, tonumber =
62 pairs, ipairs, table.insert, table.remove, tostring, tonumber 65 pairs, ipairs, table.insert, table.remove, tostring, tonumber
63 66
64 local pprint, tabledump = addon.pprint, flib.tabledump 67 local pprint, tabledump = addon.pprint, flib.tabledump
65 local GetItemInfo, ITEM_QUALITY_COLORS = GetItemInfo, ITEM_QUALITY_COLORS 68 local GetItemInfo, ITEM_QUALITY_COLORS = GetItemInfo, ITEM_QUALITY_COLORS
162 end 165 end
163 g_generated = g_generated or {} 166 g_generated = g_generated or {}
164 g_loot[text_type] = g_loot[text_type] or "" 167 g_loot[text_type] = g_loot[text_type] or ""
165 168
166 if g_loot.printed[text_type] >= #g_loot then return false end 169 if g_loot.printed[text_type] >= #g_loot then return false end
167 assert(addon.loot_clean == #g_loot, tostring(addon.loot_clean) .. " ~= " .. #g_loot) 170 assert (addon.loot_clean == #g_loot,
171 tostring(addon.loot_clean) .. " ~= " .. #g_loot)
168 -- if glc is nil, #==0 test already returned 172 -- if glc is nil, #==0 test already returned
169 173
170 local ok,ret = pcall (f, text_type, g_loot, g_loot.printed[text_type], g_generated, accumulator) 174 local ok,ret = pcall (f, text_type, g_loot, g_loot.printed[text_type], g_generated, accumulator)
171 if not ok then 175 if not ok then
172 error(("ERROR: text generator '%s' failed: %s"):format(text_type, ret)) 176 error(("ERROR: text generator '%s' failed: %s"):format(text_type, ret))
173 return false 177 return false -- why is this here again?
174 end 178 end
175 if ret then 179 if ret then
176 g_loot.printed[text_type] = #g_loot 180 g_loot.printed[text_type] = #g_loot
177 g_generated[text_type] = (g_generated[text_type] or "") .. table.concat(accumulator,'\n') .. '\n' 181 g_generated[text_type] = (g_generated[text_type] or "") .. table.concat(accumulator,'\n') .. '\n'
178 end 182 end
1886 container:AddChild(grp) 1890 container:AddChild(grp)
1887 GUI:ClearFocus() 1891 GUI:ClearFocus()
1888 container:SetScroll(1000) -- scrollframe's max value 1892 container:SetScroll(1000) -- scrollframe's max value
1889 end 1893 end
1890 1894
1891 -- Initial lower panel function 1895 -- Initial lower panel function (unless debug mode is on during load, which
1892 local function adv_lower (container, specials) 1896 -- means it was almost certainly hardcoded that way, which means it's
1893 local spacer = GUI:Create("Spacer") 1897 -- probably me testing).
1894 spacer:SetFullWidth(true) 1898 local adv_lower
1895 spacer:SetHeight(5) 1899 if addon.DEBUG_PRINT then
1896 container:AddChild(spacer) 1900 adv_lower = adv_real
1897 local speedbump = GUI:Create("InteractiveLabel") 1901 else
1898 speedbump:SetFullWidth(true) 1902 function adv_lower (container, specials)
1899 speedbump:SetFontObject(GameFontHighlightLarge) 1903 local spacer = GUI:Create("Spacer")
1900 speedbump:SetImage("Interface\\DialogFrame\\DialogAlertIcon") 1904 spacer:SetFullWidth(true)
1901 speedbump:SetImageSize(50,50) 1905 spacer:SetHeight(5)
1902 speedbump:SetText("The debugging/testing settings on the rest of this panel can" 1906 container:AddChild(spacer)
1903 .." seriously bork up the addon if you make a mistake. If you're okay" 1907 local speedbump = GUI:Create("InteractiveLabel")
1904 .." with the possibility of losing data, click this warning to load the panel.") 1908 speedbump:SetFullWidth(true)
1905 speedbump:SetCallback("OnClick", function (_sb) 1909 speedbump:SetFontObject(GameFontHighlightLarge)
1906 adv_lower = adv_real 1910 speedbump:SetImage("Interface\\DialogFrame\\DialogAlertIcon")
1907 return addon:redisplay() 1911 speedbump:SetImageSize(50,50)
1908 --return tabs_OnGroupSelected_func(container.parent,"OnGroupSelected","opt") 1912 speedbump:SetText("The debugging/testing settings on the rest of this panel can seriously bork up the addon if you make a mistake. If you're okay with the possibility of losing data, click this warning to load the panel.")
1909 end) 1913 speedbump:SetCallback("OnClick", function (_sb)
1910 container:AddChild(speedbump) 1914 adv_lower = adv_real
1911 spacer = GUI:Create("Spacer") 1915 return addon:redisplay()
1912 spacer:SetFullWidth(true) 1916 --return tabs_OnGroupSelected_func(container.parent,"OnGroupSelected","opt")
1913 spacer:SetHeight(5) 1917 end)
1914 container:AddChild(spacer) 1918 container:AddChild(speedbump)
1919 spacer = GUI:Create("Spacer")
1920 spacer:SetFullWidth(true)
1921 spacer:SetHeight(5)
1922 container:AddChild(spacer)
1923 end
1915 end 1924 end
1916 1925
1917 tabs_OnGroupSelected["opt"] = function(container,specials) 1926 tabs_OnGroupSelected["opt"] = function(container,specials)
1918 opts = OuroLootSV_opts 1927 opts = OuroLootSV_opts
1919 1928
2231 spec:ReleaseChildren() 2240 spec:ReleaseChildren()
2232 local h = GUI:Create("Heading") 2241 local h = GUI:Create("Heading")
2233 h:SetFullWidth(true) 2242 h:SetFullWidth(true)
2234 h:SetText(_tabtexts[group].title) 2243 h:SetText(_tabtexts[group].title)
2235 spec:AddChild(h) 2244 spec:AddChild(h)
2245 do
2246 addon.sender_list.sort()
2247 local fmt = "Received broadcast data from %d |4player:players;."
2248 if addon.history_suppress then
2249 -- this is the druid class color reworked into hex
2250 fmt = fmt .. " |cffff7d0aHistory recording suppressed.|r"
2251 end
2252 tabs.titletext:SetFormattedText (fmt, addon.sender_list.activeI)
2253 end
2236 return tabs_OnGroupSelected[group](tabs,spec,group) 2254 return tabs_OnGroupSelected[group](tabs,spec,group)
2237 --[====[ 2255 --[====[
2238 Unfortunately, :GetHeight() called on anything useful out of a TabGroup 2256 Unfortunately, :GetHeight() called on anything useful out of a TabGroup
2239 returns the static default size (about 50 pixels) until the refresh 2257 returns the static default size (about 50 pixels) until the refresh
2240 cycle *after* all the frames are shown. Trying to fix it up after a 2258 cycle *after* all the frames are shown. Trying to fix it up after a
2476 local titletext_orig_fo = tabs.titletext:GetFontObject() 2494 local titletext_orig_fo = tabs.titletext:GetFontObject()
2477 tabs.titletext:SetFontObject(GameFontNormalSmall) 2495 tabs.titletext:SetFontObject(GameFontNormalSmall)
2478 tabs:SetCallback("OnRelease", function(_tabs) 2496 tabs:SetCallback("OnRelease", function(_tabs)
2479 tabs.titletext:SetFontObject(titletext_orig_fo) 2497 tabs.titletext:SetFontObject(titletext_orig_fo)
2480 end) 2498 end)
2481 do
2482 self.sender_list.sort()
2483 tabs.titletext:SetFormattedText("Received broadcast data from %d |4player:players;.",
2484 self.sender_list.activeI)
2485 end
2486 tabs:SetRelativeWidth(0.99-rhs_width) 2499 tabs:SetRelativeWidth(0.99-rhs_width)
2487 tabs:SetFullHeight(true) 2500 tabs:SetFullHeight(true)
2488 tabs:SetTabs(tabgroup_tabs) 2501 tabs:SetTabs(tabgroup_tabs)
2489 tabs:SetCallback("OnGroupSelected", tabs_OnGroupSelected_func) 2502 tabs:SetCallback("OnGroupSelected", tabs_OnGroupSelected_func)
2490 tabs:SetCallback("OnTabEnter", function(_tabs,event,value,tab) 2503 tabs:SetCallback("OnTabEnter", function(_tabs,event,value,tab)
2491 setstatus(_tabtexts[value].desc) 2504 setstatus(_tabtexts[value].desc)
2492 end) 2505 end)
2493 tabs:SetCallback("OnTabLeave", statusy_OnLeave) 2506 tabs:SetCallback("OnTabLeave", statusy_OnLeave)
2494 tabs:SetUserData("special buttons group",tab_specials) 2507 tabs:SetUserData("special buttons group",tab_specials)
2495 tabs:SelectTab(opt_tabselect or "eoi") 2508 tabs:SelectTab((opt_tabselect and #opt_tabselect>0)
2509 and opt_tabselect or "eoi")
2496 2510
2497 display:AddChildren (tabs, control) 2511 display:AddChildren (tabs, control)
2498 display:ApplyStatus() 2512 display:ApplyStatus()
2499 2513
2500 display:Show() -- without this, only appears every *other* function call 2514 display:Show() -- without this, only appears every *other* function call