comparison gui.lua @ 125:a9cf9b2fbf9b

- Fix interactions with AddonLoader. - Plugins get a :Print with a clickable prefix, with overrideable behaviors. - 'Deactivate' event gets a [wrapper around] current raiders table. - Fix sorting bug in player history data. - Smarter status line text when viewing unfiltered history. - Do not disable history regeneration button when current history is empty. - :BuildMainDisplay can handle the CLI args now.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Sun, 19 Aug 2012 21:08:59 -0400
parents fb4bda3ad05c
children 9232cacc9136
comparison
equal deleted inserted replaced
124:1a248faf1a3b 125:a9cf9b2fbf9b
456 456
457 do 457 do
458 function addon:_fill_out_hist_data (opt_starting_index) 458 function addon:_fill_out_hist_data (opt_starting_index)
459 local new, del = flib.new, flib.del 459 local new, del = flib.new, flib.del
460 460
461 if not self.history.st then
462 self.history.st = {}
463 self.hist_clean = nil
464 end
461 -- Clearing history finishes this function with #hist==0 and hist_clean==0. 465 -- Clearing history finishes this function with #hist==0 and hist_clean==0.
462 -- The next call typically detects this (#<1) and handles it. If loot is 466 -- The next call typically detects this (#<1) and handles it. If loot is
463 -- recorded before then, it results in hist_clean==0 and #hist==1, which 467 -- recorded before then, it results in hist_clean==0 and #hist==1, which
464 -- breaks the first iteration of the loop. Thus, the "extra" test here: 468 -- breaks the first iteration of the loop. Thus, the "extra" test here:
465 if #self.history < 1 or self.hist_clean == 0 then 469 if #self.history < 1 or self.hist_clean == 0 then
466 self.hist_clean = nil 470 self.hist_clean = nil
467 opt_starting_index = nil 471 opt_starting_index = nil
468 end
469 if not self.history.st then
470 self.history.st = {}
471 end 472 end
472 473
473 -- for now 474 -- for now
474 if self.hist_clean == #self.history then return end 475 if self.hist_clean == #self.history then return end
475 476
1863 st_widget.tail_offset = 0 1864 st_widget.tail_offset = 0
1864 container:SetLayout("Fill") 1865 container:SetLayout("Fill")
1865 container:AddChild(st_widget) 1866 container:AddChild(st_widget)
1866 -- If we're focused on one player, but have deleted all entries for 1867 -- If we're focused on one player, but have deleted all entries for
1867 -- that player, don't sit there stuck on a blank grid. 1868 -- that player, don't sit there stuck on a blank grid.
1868 if history_filter_who and #histST.filtered < 1 then 1869 if history_filter_who and #histST.filtered > 0 then
1870 setstatus(hist_name_status)
1871 else
1869 history_filter_who = nil 1872 history_filter_who = nil
1870 histST:SetFilter(history_filter_by_recent) 1873 histST:SetFilter(history_filter_by_recent)
1871 setstatus(hist_normal_status) 1874 setstatus(hist_normal_status)
1872 else
1873 setstatus(hist_name_status)
1874 end 1875 end
1875 1876
1876 local b 1877 local b
1877 do 1878 do
1878 local realms,current = {},1 1879 local realms,current = {},1
1905 --[[ b = AceGUI:Create("Spacer") b:SetFullWidth(true) b:SetHeight(10) specials:AddChild(b) ]] 1906 --[[ b = AceGUI:Create("Spacer") b:SetFullWidth(true) b:SetHeight(10) specials:AddChild(b) ]]
1906 1907
1907 b = mkbutton("Regenerate", 1908 b = mkbutton("Regenerate",
1908 [[Erases all history entries from the displayed realm, and regenerates it from current loot information.]]) 1909 [[Erases all history entries from the displayed realm, and regenerates it from current loot information.]])
1909 b:SetFullWidth(true) 1910 b:SetFullWidth(true)
1910 b:SetDisabled (#addon.history == 0)
1911 b:SetCallback("OnClick", function(_b) 1911 b:SetCallback("OnClick", function(_b)
1912 local dialog = StaticPopup_Show("OUROL_HIST_REGEN", addon.history.realm) 1912 local dialog = StaticPopup_Show("OUROL_HIST_REGEN", addon.history.realm)
1913 dialog.data = addon 1913 dialog.data = addon
1914 dialog.data2 = function(_addon) 1914 dialog.data2 = function(_addon)
1915 _addon:rewrite_history (_addon.history.realm) 1915 _addon:rewrite_history (_addon.history.realm)
2068 return button 2068 return button
2069 end 2069 end
2070 gui.mkbutton = mkbutton 2070 gui.mkbutton = mkbutton
2071 2071
2072 --[[ 2072 --[[
2073 Creates the main window. 2073 Creates the main window. Can jump directly to a tab (and feed it CLI
2074 routine arguments), if given the appropriate tab code.
2074 ]] 2075 ]]
2075 function addon:BuildMainDisplay (opt_tabselect) 2076 function addon:BuildMainDisplay (opt_tabselect, opt_tabselect_CLI_arg)
2076 if self.display then 2077 if self.display then
2077 -- try to get everything to update, rebuild, refresh... ugh, no 2078 -- try to get everything to update, rebuild, refresh... ugh, no
2078 self.display:Hide() 2079 self.display:Hide()
2079 end 2080 end
2080 if self.NOLOAD then 2081 if self.NOLOAD then
2282 tabs:SetCallback("OnTabEnter", function(_tabs,event,value,tab) 2283 tabs:SetCallback("OnTabEnter", function(_tabs,event,value,tab)
2283 setstatus(gui.tabtexts[value].desc) 2284 setstatus(gui.tabtexts[value].desc)
2284 end) 2285 end)
2285 tabs:SetCallback("OnTabLeave", statusy_OnLeave) 2286 tabs:SetCallback("OnTabLeave", statusy_OnLeave)
2286 tabs:SetUserData("special buttons group",tab_specials) 2287 tabs:SetUserData("special buttons group",tab_specials)
2287 tabs:SelectTab((opt_tabselect and #opt_tabselect>0) 2288
2288 and opt_tabselect or "eoi") 2289 local whichtab, tabargs = "eoi"
2290 if opt_tabselect and #opt_tabselect > 0 then
2291 whichtab, tabargs = opt_tabselect, opt_tabselect_CLI_arg
2292 end
2293 tabs:SelectTab(whichtab)
2289 2294
2290 display:AddChildren (tabs, control) 2295 display:AddChildren (tabs, control)
2291 display:ApplyStatus() 2296 display:ApplyStatus()
2292
2293 display:Show() -- without this, only appears every *other* function call 2297 display:Show() -- without this, only appears every *other* function call
2298
2299 if tabargs and tabs_CLI_special[whichtab] then
2300 tabs_CLI_special[whichtab](tabargs)
2301 end
2294 return display 2302 return display
2295 end 2303 end
2296 2304
2297 -- Searches tab titles from left to right. 2305 -- Searches tab title texts from left to right.
2298 function addon:OpenMainDisplayToTab (text, opt_arg) 2306 function addon:OpenMainDisplayToTab (text, opt_arg)
2299 text = '^'..text:lower() 2307 text = '^'..text:lower()
2300 for _,tab in ipairs(gui.taborder) do 2308 for _,tab in ipairs(gui.taborder) do
2301 local v = gui.tabtexts[tab] 2309 local v = gui.tabtexts[tab]
2302 if v and v.title:lower():find(text) then 2310 if v and v.title:lower():find(text) then
2303 self:BuildMainDisplay(tab) 2311 self:BuildMainDisplay (tab, opt_arg)
2304 if opt_arg and tabs_CLI_special[tab] then
2305 tabs_CLI_special[tab](opt_arg)
2306 end
2307 return true 2312 return true
2308 end 2313 end
2309 end 2314 end
2310 end 2315 end
2311 2316
2382 } 2387 }
2383 2388
2384 StaticPopupDialogs["OUROL_HIST_REGEN"] = flib.StaticPopup{ 2389 StaticPopupDialogs["OUROL_HIST_REGEN"] = flib.StaticPopup{
2385 -- Concatenate this once at load time. There is no ITEM_QUALITY_LEGENDARY constant. 2390 -- Concatenate this once at load time. There is no ITEM_QUALITY_LEGENDARY constant.
2386 text = "Erase all history entries from " .. ITEM_QUALITY_COLORS[5].hex 2391 text = "Erase all history entries from " .. ITEM_QUALITY_COLORS[5].hex
2387 .. "%s|r, and generate it anew from current loot?", 2392 .. "%s|r, and generate it anew from current loot?|n|nNote this obeys the current setting of the 'Suppress history for cross-realm players' option.",
2388 button1 = YES, 2393 button1 = YES,
2389 button2 = NO, 2394 button2 = NO,
2390 OnAccept = function (dialog, addon, data2) 2395 OnAccept = function (dialog, addon, data2)
2391 data2(addon) 2396 data2(addon)
2392 addon:Print("%s history has been regenerated.", addon.history.realm) 2397 addon:Print("%s history has been regenerated.", addon.history.realm)