comparison gui.lua @ 83:940e53dd18c3

- More cosmetic cleanup. - Implement "GUI noob" option. Basic entries for Loot and History tabs. - Disable wipe->kill toggling once the entry is actually a kill. Duh.
author Farmbuyer of US-Kilrogg <farmbuyer@gmail.com>
date Mon, 18 Jun 2012 03:02:10 +0000
parents 0f6355bcfe68
children c87bf3e756f3
comparison
equal deleted inserted replaced
82:ae17128ef3f2 83:940e53dd18c3
10 ------ Popup dialogs 10 ------ Popup dialogs
11 ]] 11 ]]
12 12
13 ------ Constants 13 ------ Constants
14 local eoi_st_rowheight = 20 14 local eoi_st_rowheight = 20
15 local eoi_st_displayed_rows = math.floor(416/eoi_st_rowheight) --math.floor(366/eoi_st_rowheight) 15 local eoi_st_displayed_rows = math.floor(416/eoi_st_rowheight)
16 local eoi_st_textured_item_format = "|T%s:"..(eoi_st_rowheight-2).."|t %s[%s]|r%s" 16 local eoi_st_textured_item_format = "|T%s:"..(eoi_st_rowheight-2).."|t %s[%s]|r%s"
17 local eoi_st_otherrow_bgcolortable = { 17 local eoi_st_otherrow_bgcolortable = {
18 wipe = { ["r"] = 0.3, ["g"] = 0.3, ["b"] = 0.3}, 18 wipe = { ["r"] = 0.3, ["g"] = 0.3, ["b"] = 0.3},
19 kill = { ["r"] = 0.2, ["g"] = 0.2, ["b"] = 0.2}, 19 kill = { ["r"] = 0.2, ["g"] = 0.2, ["b"] = 0.2},
20 time = { ["r"] = 0x0/255, ["g"] = 0x0/255, ["b"] = 1, ["a"] = 0.3}, 20 time = { ["r"] = 0x0/255, ["g"] = 0x0/255, ["b"] = 1, ["a"] = 0.3},
68 local pprint, tabledump = addon.pprint, flib.tabledump 68 local pprint, tabledump = addon.pprint, flib.tabledump
69 local GetItemInfo, ITEM_QUALITY_COLORS = GetItemInfo, ITEM_QUALITY_COLORS 69 local GetItemInfo, ITEM_QUALITY_COLORS = GetItemInfo, ITEM_QUALITY_COLORS
70 local GetNumRaidMembers = GetNumRaidMembers 70 local GetNumRaidMembers = GetNumRaidMembers
71 71
72 -- En masse forward decls of symbols defined inside local blocks 72 -- En masse forward decls of symbols defined inside local blocks
73 local _generate_text, _populate_text_specials 73 local _generate_text, _populate_text_specials, _markup
74 local eoi_dropdownfuncs, _tabtexts, _taborder -- filled out in gui block scope 74 local eoi_dropdownfuncs, _tabtexts, _taborder -- filled out in gui block scope
75 local _do_debugging_tooltip, _hide_debugging_tooltip, _build_debugging_tooltip 75 local _do_debugging_tooltip, _hide_debugging_tooltip, _build_debugging_tooltip
76 local _new_rebroadcast_hyperlink 76 local _new_rebroadcast_hyperlink
77 77
78 --[[ 78 --[[
82 argument. 82 argument.
83 ]] 83 ]]
84 local tabs_OnGroupSelected = {} 84 local tabs_OnGroupSelected = {}
85 local mkbutton 85 local mkbutton
86 local tabs_OnGroupSelected_func, tabs_generated_text_OGS 86 local tabs_OnGroupSelected_func, tabs_generated_text_OGS
87 -- Similarly for the popup tips on the right side of the window.
88 local noob_tips = {}
87 89
88 -- Class color support 90 -- Class color support
89 local class_colors-- = {} 91 local class_colors-- = {}
90 do 92 do
91 local function fill_out_class_colors() 93 local function fill_out_class_colors()
102 fill_out_class_colors() 104 fill_out_class_colors()
103 if CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS.RegisterCallback then 105 if CUSTOM_CLASS_COLORS and CUSTOM_CLASS_COLORS.RegisterCallback then
104 CUSTOM_CLASS_COLORS:RegisterCallback(fill_out_class_colors) 106 CUSTOM_CLASS_COLORS:RegisterCallback(fill_out_class_colors)
105 end 107 end
106 addon.class_colors = class_colors 108 addon.class_colors = class_colors
109 end
110
111 do
112 local replacement_colors = {
113 ["+"]="|cffffffff", -- white
114 ["<"]="|cff00ff00", -- light green
115 [">"]="|r" }
116 function _markup (t)
117 -- wonder if it would be worth memoizing this also
118 return t:gsub("[%+<>]",replacement_colors)
119 :gsub("([^\n])\n([^\n])", "%1 %2")
120 :gsub("|r\n\n", "|r\n")
121 end
107 end 122 end
108 123
109 -- Working around this bug: 124 -- Working around this bug:
110 -- http://forums.wowace.com/showpost.php?p=295202&postcount=31 125 -- http://forums.wowace.com/showpost.php?p=295202&postcount=31
111 do 126 do
629 -- which looks reasonably pleasing 644 -- which looks reasonably pleasing
630 [[Broadcast this entry]], "|cff3588ff", onclick) 645 [[Broadcast this entry]], "|cff3588ff", onclick)
631 rebroadcast_map[ident] = u 646 rebroadcast_map[ident] = u
632 return clicky 647 return clicky
633 end 648 end
649 end
650
651 -- UI tips window
652 local hide_noobtips_frame = flib.nullfunc
653 local function get_noobtips_frame()
654 local f = CreateFrame("Frame")
655 f:SetBackdrop{
656 bgFile = [[Interface\Tooltips\UI-Tooltip-Background]],
657 --bgFile = [[Interface\DialogFrame\UI-DialogBox-Background]],
658 edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]],
659 --edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]],
660 tile = true,
661 tileSize = 8,
662 --tileSize = 32,
663 edgeSize = 12,
664 --edgeSize = 32,
665 insets = { left = 2, right = 2, top = 2, bottom = 2 }
666 --insets = { left = 11, right = 12, top = 12, bottom = 11 }
667 }
668 f:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r,
669 TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
670 f:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g,
671 TOOLTIP_DEFAULT_COLOR.b)
672 f:SetMovable(false)
673 f:EnableMouse(false)
674 f:SetFrameStrata("TOOLTIP")
675 f:SetToplevel(true)
676 f:SetClampedToScreen(true)
677 f:SetWidth(220)
678 local t = f:CreateFontString (nil, "ARTWORK", "GameFontHighlightSmall")
679 --t:SetPoint ("TOPLEFT", f, "TOPLEFT", 14, -15)
680 t:SetPoint ("TOPLEFT", f, "TOPLEFT", 10, -10)
681 t:SetJustifyH("LEFT")
682
683 f.text = t
684 f.DoTextWork = function (self, text)
685 self.text:SetText(text)
686 self.text:SetWidth (self:GetWidth() - 20)
687 self:SetHeight (self.text:GetHeight() + 20)
688 end
689
690 get_noobtips_frame = function() return f end
691 hide_noobtips_frame = function() f:Hide() end
692 return f
634 end 693 end
635 694
636 695
637 ------ Main GUI Window 696 ------ Main GUI Window
638 local _d -- display when it's open, eoiST when it's not 697 local _d -- display when it's open, eoiST when it's not
939 isTitle = true, 998 isTitle = true,
940 notClickable = true, 999 notClickable = true,
941 notCheckable = true, 1000 notCheckable = true,
942 }}, 1001 }},
943 { 1002 {
944 "Change from 'wipe' to 'kill'|Also collapses previous wipe entries.", 1003 "Change from 'wipe' to 'kill'|Also collapses previous wipe entries.", -- KILLWIPE
945 "Rebroadcast this boss%boss|Broadcasts the kill event and all subsequent loot until next boss.", 1004 "Rebroadcast this boss%boss|Broadcasts the kill event and all subsequent loot until next boss.",
946 "Delete this boss event|Permanent, no going back!", 1005 "Delete this boss event|Permanent, no going back!",
947 "Delete remaining entries for this boss%boss|Erases everything from here down until a new boss/day.\n\nHold down the Shift key to also delete the player's corresponding History entry.", 1006 "Delete remaining entries for this boss%boss|Erases everything from here down until a new boss/day.\n\nHold down the Shift key to also delete the player's corresponding History entry.",
948 "Insert new loot entry%loot|Inserts new loot above this one, prompting you for information.", 1007 "Insert new loot entry%loot|Inserts new loot above this one, prompting you for information.",
949 "Insert new boss kill event%boss|Inserts new event above this one, prompting you for information.", 1008 "Insert new boss kill event%boss|Inserts new event above this one, prompting you for information.",
1076 end 1135 end
1077 EasyMenu (eoi_player_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU") 1136 EasyMenu (eoi_player_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU")
1078 1137
1079 elseif kind == 'boss' then 1138 elseif kind == 'boss' then
1080 eoi_boss_dropdown[1].text = e.bossname 1139 eoi_boss_dropdown[1].text = e.bossname
1140 -- KILLWIPE: update '2' if this is not the 2nd entry in eoi_boss_dropdown
1141 eoi_boss_dropdown[2].tooltipWhileDisabled = nil
1142 eoi_boss_dropdown[2].disabled = e.reason ~= 'wipe' and true or nil
1081 EasyMenu (eoi_boss_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU") 1143 EasyMenu (eoi_boss_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU")
1082 1144
1083 elseif kind == 'time' then 1145 elseif kind == 'time' then
1084 eoi_time_dropdown[1].text = e.startday.text 1146 eoi_time_dropdown[1].text = e.startday.text
1085 EasyMenu (eoi_time_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU") 1147 EasyMenu (eoi_time_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU")
1362 specials:AddChild(b) 1424 specials:AddChild(b)
1363 end 1425 end
1364 -- ...and call it. 1426 -- ...and call it.
1365 return tabs_OnGroupSelected["eoi"](ocontainer,specials) 1427 return tabs_OnGroupSelected["eoi"](ocontainer,specials)
1366 end 1428 end
1429 noob_tips["eoi"] = _markup[[
1430 <Shift-Left> while over an item link to paste it into chat.
1431
1432 <Right>-click any row to display a dropdown menu. The menu is different for
1433 the Player column than it is for the Item/Notes columns, and different for
1434 loot entries than it is for other rows.]]
1367 1435
1368 1436
1369 -- Tab 2/3 (generated text) 1437 -- Tab 2/3 (generated text)
1370 function tabs_generated_text_OGS (container, specials, text_kind) 1438 function tabs_generated_text_OGS (container, specials, text_kind)
1371 container:SetLayout("Fill") 1439 container:SetLayout("Fill")
1409 g_loot.printed[text_kind] = 0 1477 g_loot.printed[text_kind] = 0
1410 g_generated.last_instance = nil 1478 g_generated.last_instance = nil
1411 g_generated[pos] = nil 1479 g_generated[pos] = nil
1412 addon:Print("'%s' has been regenerated.", _tabtexts[text_kind].title) 1480 addon:Print("'%s' has been regenerated.", _tabtexts[text_kind].title)
1413 return addon:redisplay() 1481 return addon:redisplay()
1414 --return tabs_OnGroupSelected_func(container,"OnGroupSelected",text_kind)
1415 end) 1482 end)
1416 specials:AddChild(w) 1483 specials:AddChild(w)
1417 if addon:is_plugin(text_kind) then 1484 if addon:is_plugin(text_kind) then
1418 local pname = addon:is_plugin(text_kind):GetName() 1485 local pname = addon:is_plugin(text_kind):GetName()
1419 w = mkbutton("Reset SVs & ReloadUI", 1486 w = mkbutton("Reset SVs & ReloadUI",
1690 end) 1757 end)
1691 specials:AddChild(b) 1758 specials:AddChild(b)
1692 end 1759 end
1693 return tabs_OnGroupSelected["hist"](container,specials) 1760 return tabs_OnGroupSelected["hist"](container,specials)
1694 end 1761 end
1762 noob_tips["hist"] = _markup[[
1763 <Left>-click a row to see all history for that player. <Right>-click any row
1764 to return to showing all players.
1765
1766 <Shift-Left> while over an item link to paste it into chat. <Shift-Right>
1767 any row to display a dropdown menu.]]
1695 1768
1696 1769
1697 -- Tab 5: Help (content in verbage.lua) 1770 -- Tab 5: Help (content in verbage.lua)
1698 do 1771 do
1699 local tabs_help_OnGroupSelected_func = function (treeg,event,category) 1772 local tabs_help_OnGroupSelected_func = function (treeg,event,category)
1947 spacer:SetHeight(5) 2020 spacer:SetHeight(5)
1948 container:AddChild(spacer) 2021 container:AddChild(spacer)
1949 local speedbump = GUI:Create("InteractiveLabel") 2022 local speedbump = GUI:Create("InteractiveLabel")
1950 speedbump:SetFullWidth(true) 2023 speedbump:SetFullWidth(true)
1951 speedbump:SetFontObject(GameFontHighlightLarge) 2024 speedbump:SetFontObject(GameFontHighlightLarge)
1952 speedbump:SetImage("Interface\\DialogFrame\\DialogAlertIcon") 2025 speedbump:SetImage[[Interface\DialogFrame\DialogAlertIcon]]
1953 speedbump:SetImageSize(50,50) 2026 speedbump:SetImageSize(50,50)
1954 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.") 2027 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.")
1955 speedbump:SetCallback("OnClick", function (_sb) 2028 speedbump:SetCallback("OnClick", function (_sb)
1956 adv_lower = adv_real 2029 adv_lower = adv_real
1957 return addon:redisplay() 2030 return addon:redisplay()
1958 --return tabs_OnGroupSelected_func(container.parent,"OnGroupSelected","opt")
1959 end) 2031 end)
1960 container:AddChild(speedbump) 2032 container:AddChild(speedbump)
1961 spacer = GUI:Create("Spacer") 2033 spacer = GUI:Create("Spacer")
1962 spacer:SetFullWidth(true) 2034 spacer:SetFullWidth(true)
1963 spacer:SetHeight(5) 2035 spacer:SetHeight(5)
1966 end 2038 end
1967 2039
1968 tabs_OnGroupSelected["opt"] = function(container,specials) 2040 tabs_OnGroupSelected["opt"] = function(container,specials)
1969 opts = OuroLootSV_opts 2041 opts = OuroLootSV_opts
1970 2042
1971 --container:SetLayout("List")
1972 container:SetLayout("Fill") 2043 container:SetLayout("Fill")
1973 local scroll, grp, w 2044 local scroll, grp, w
1974 2045
1975 scroll = GUI:Create("ScrollFrame") 2046 scroll = GUI:Create("ScrollFrame")
1976 scroll:SetLayout("Flow") 2047 scroll:SetLayout("Flow")
1978 grp = GUI:Create("InlineGroup") 2049 grp = GUI:Create("InlineGroup")
1979 grp:SetLayout("Flow") 2050 grp:SetLayout("Flow")
1980 grp:SetFullWidth(true) 2051 grp:SetFullWidth(true)
1981 grp:SetTitle("User Options [these are saved across sessions]") 2052 grp:SetTitle("User Options [these are saved across sessions]")
1982 2053
1983 -- The relative width fields used to be done to take up less vertical space, but 2054 -- The relative width fields used to be done to take up less vertical
1984 -- that turned out to look messy. Now they're just a straight line for the most part. 2055 -- space, but that turned out to look messy. Now they're just a
2056 -- straight line for the most part.
2057
2058 -- the nubtoggle!
2059 w = mkoption('gui_noob', [[Show UI Tips]], 0.85,
2060 [[Toggles display of the "helpful tips" box on the right side. Useful if you've just installed/upgraded.]])
2061 w:SetImage[[Interface\OptionsFrame\UI-OptionsFrame-NewFeatureIcon]]
2062 grp:AddChild(w)
2063 w = GUI:Create("Spacer") w:SetFullWidth(true) w:SetHeight(10) grp:AddChild(w)
1985 2064
1986 -- reminder popup 2065 -- reminder popup
1987 w = mkoption ('popup_on_join', "Show reminder popup", 0.49, 2066 w = mkoption ('popup_on_join', "Show reminder popup on new raid", 0.49,
1988 [[When joining a raid and not already tracking, display a dialog asking for instructions.]]) 2067 [[When joining a raid and not already tracking, display a dialog asking for instructions.]])
1989 grp:AddChild(w) 2068 grp:AddChild(w)
1990 2069
1991 -- toggle scroll-to-bottom on first tab 2070 -- toggle scroll-to-bottom on first tab
1992 w = mkoption('scroll_to_bottom', "Scroll to bottom when opening display", 0.49, 2071 w = mkoption('scroll_to_bottom', "Scroll to bottom when opening display", 0.49,
1998 [[Register "/loot" as a slash command in addition to the normal "/ouroloot". Relog to take effect.]]) 2077 [[Register "/loot" as a slash command in addition to the normal "/ouroloot". Relog to take effect.]])
1999 grp:AddChild(w) 2078 grp:AddChild(w)
2000 2079
2001 -- chatty boss mode 2080 -- chatty boss mode
2002 w = mkoption('chatty_on_kill', "Be chatty on boss kill", 0.49, 2081 w = mkoption('chatty_on_kill', "Be chatty on boss kill", 0.49,
2003 [[Print something to chat output when DBM tells Ouro Loot about a successful boss kill.]]) 2082 [[Print something to chat output when the boss mod tells Ouro Loot about a successful boss kill.]])
2004 grp:AddChild(w) 2083 grp:AddChild(w)
2005 2084
2006 -- less noise in main panel 2085 -- less noise in main panel
2007 w = mkoption('no_tracking_wipes', "Do not track wipes", 0.49, 2086 w = mkoption('no_tracking_wipes', "Do not track wipes", 0.49,
2008 [[Do not add 'wipe' entries on the main loot grid, or generate any text for them.]]) 2087 [[Do not add 'wipe' entries on the main loot grid, or generate any text for them.]])
2009 grp:AddChild(w) 2088 grp:AddChild(w)
2010 2089
2011 -- cutesy abbrevs 2090 -- cutesy abbrevs
2012 w = mkoption('snarky_boss', "Use snarky boss names", 0.49, 2091 w = mkoption('snarky_boss', "Use snarky boss names", 0.49,
2013 [[Irreverent replacement names for boss events.]]) 2092 [[Irreverent replacement names for boss events. See abbreviations.lua for details.]])
2014 grp:AddChild(w) 2093 grp:AddChild(w)
2015 2094
2016 -- LOD plugins in all cases 2095 -- LOD plugins in all cases
2017 w = mkoption('display_disabled_LODs', "Include disabled plugins", 0.49, 2096 w = mkoption('display_disabled_LODs', "Include disabled plugins", 0.49,
2018 [[Show loadable plugins even if they've been disabled (and offer to enable them). Relog to take effect.]]) 2097 [[Show loadable plugins even if they've been disabled (and offer to enable them). Relog to take effect.]])
2039 local pair = GUI:Create("InlineGroup") 2118 local pair = GUI:Create("InlineGroup")
2040 pair:SetLayout("List") 2119 pair:SetLayout("List")
2041 pair:SetRelativeWidth(0.49) 2120 pair:SetRelativeWidth(0.49)
2042 local editbox, checkbox 2121 local editbox, checkbox
2043 editbox = mkbutton("EditBox", nil, opts.keybinding_text, 2122 editbox = mkbutton("EditBox", nil, opts.keybinding_text,
2044 [[Keybinding text format is fragile! Relog to take effect.]]) 2123 [[Keybinding text format is fragile (ALT then CTRL then SHIFT)! Relog to take effect.]])
2045 editbox:SetFullWidth(true) 2124 editbox:SetFullWidth(true)
2046 editbox:SetLabel("Keybinding text") 2125 editbox:SetLabel("Keybinding text")
2047 editbox:SetCallback("OnEnterPressed", function(_w,event,value) 2126 editbox:SetCallback("OnEnterPressed", function(_w,event,value)
2048 opts.keybinding_text = value 2127 opts.keybinding_text = value
2049 end) 2128 end)
2255 _w:SetDisabled(true) 2334 _w:SetDisabled(true)
2256 addon:DoPing() 2335 addon:DoPing()
2257 addon:ScheduleTimer(function(b) 2336 addon:ScheduleTimer(function(b)
2258 if b:IsVisible() then 2337 if b:IsVisible() then
2259 return addon:redisplay() 2338 return addon:redisplay()
2260 --return tabs_OnGroupSelected_func(container,"OnGroupSelected","opt")
2261 end 2339 end
2262 end, 5, _w) 2340 end, 5, _w)
2263 end) 2341 end)
2264 specials:AddChild(w) 2342 specials:AddChild(w)
2265 2343
2275 -- Simply to avoid recreating the same function over and over 2353 -- Simply to avoid recreating the same function over and over
2276 local tabs_OnGroupSelected_func_args = { [2] = "OnGroupSelected" } 2354 local tabs_OnGroupSelected_func_args = { [2] = "OnGroupSelected" }
2277 tabs_OnGroupSelected_func = function (tabs,event,group) 2355 tabs_OnGroupSelected_func = function (tabs,event,group)
2278 tabs_OnGroupSelected_func_args[1] = tabs 2356 tabs_OnGroupSelected_func_args[1] = tabs
2279 tabs_OnGroupSelected_func_args[3] = group 2357 tabs_OnGroupSelected_func_args[3] = group
2358 hide_noobtips_frame()
2280 tabs:ReleaseChildren() 2359 tabs:ReleaseChildren()
2281 local spec = tabs:GetUserData("special buttons group") 2360 local spec = tabs:GetUserData("special buttons group")
2282 spec:ReleaseChildren() 2361 spec:ReleaseChildren()
2283 local h = GUI:Create("Heading") 2362 local h = GUI:Create("Heading")
2284 h:SetFullWidth(true) 2363 h:SetFullWidth(true)
2295 end 2374 end
2296 local status,err = pcall (tabs_OnGroupSelected[group], tabs, spec, group) 2375 local status,err = pcall (tabs_OnGroupSelected[group], tabs, spec, group)
2297 if not status then 2376 if not status then
2298 addon:horrible_horrible_error(err) 2377 addon:horrible_horrible_error(err)
2299 end 2378 end
2379 if OuroLootSV_opts.gui_noob then
2380 local tip = noob_tips[group]
2381 if type(tip) == 'function' then
2382 tip = tip()
2383 end
2384 if type(tip) == 'string' and tip ~= "" then
2385 local w = get_noobtips_frame()
2386 w:SetParent (_d.content)
2387 w:ClearAllPoints()
2388 w:SetPoint("BOTTOMLEFT", _d.frame, "BOTTOMRIGHT", 3, 3)
2389 w:Show()
2390 w:DoTextWork(tip)
2391 end
2392 end
2300 --[====[ 2393 --[====[
2301 Unfortunately, :GetHeight() called on anything useful out of a TabGroup 2394 Unfortunately, :GetHeight() called on anything useful out of a TabGroup
2302 returns the static default size (about 50 pixels) until the refresh 2395 returns the static default size (about 50 pixels) until the refresh
2303 cycle *after* all the frames are shown. Trying to fix it up after a 2396 cycle *after* all the frames are shown. Trying to fix it up after a
2304 single OnUpdate doesn't work either. So for now it's all hardcoded. 2397 single OnUpdate doesn't work either. So for now it's all hardcoded.
2305 2398
2306 Using this to determine the actual height of the usable area. 2399 Using this to determine the actual height of the usable area. (Will
2307 366 pixels 2400 error until an ST is shown, which only happens if it's tracking, etc.)
2401 416 pixels
2308 if group == "eoi" then 2402 if group == "eoi" then
2309 local stframe = tabs.children[1].frame 2403 local stframe = tabs.children[1].frame
2310 print(stframe:GetTop(),"-",stframe:GetBottom(),"=", 2404 print(stframe:GetTop(),"-",stframe:GetBottom(),"=",
2311 stframe:GetTop()-stframe:GetBottom()) 2405 stframe:GetTop()-stframe:GetBottom())
2312 print(stframe:GetRight(),"-",stframe:GetLeft(),"=", 2406 print(stframe:GetRight(),"-",stframe:GetLeft(),"=",
2318 --[[ 2412 --[[
2319 mkbutton ("WidgetType", 'display key', "Text On Widget", "the mouseover display text") 2413 mkbutton ("WidgetType", 'display key', "Text On Widget", "the mouseover display text")
2320 mkbutton ( [Button] 'display key', "Text On Widget", "the mouseover display text") 2414 mkbutton ( [Button] 'display key', "Text On Widget", "the mouseover display text")
2321 mkbutton ( [Button] [text] "Text On Widget", "the mouseover display text") 2415 mkbutton ( [Button] [text] "Text On Widget", "the mouseover display text")
2322 ]] 2416 ]]
2323 do 2417 function mkbutton (opt_widget_type, opt_key, label, status)
2324 local replacement_colors = { ["+"]="|cffffffff", ["<"]="|cff00ff00", [">"]="|r" } 2418 if not label then
2325 function mkbutton (opt_widget_type, opt_key, label, status) 2419 opt_widget_type, opt_key, label, status = "Button", opt_widget_type, opt_widget_type, opt_key
2326 if not label then 2420 elseif not status then
2327 opt_widget_type, opt_key, label, status = "Button", opt_widget_type, opt_widget_type, opt_key 2421 opt_widget_type, opt_key, label, status = "Button", opt_widget_type, opt_key, label
2328 elseif not status then 2422 end
2329 opt_widget_type, opt_key, label, status = "Button", opt_widget_type, opt_key, label 2423 local button = assert(GUI:Create(opt_widget_type))
2330 end 2424 if button.SetText then button:SetText(tostring(label)) end
2331 local button = assert(GUI:Create(opt_widget_type)) 2425 status = _markup(status)
2332 if button.SetText then button:SetText(tostring(label)) end 2426 button:SetCallback("OnEnter", function() setstatus(status) end) -- maybe factor that closure out
2333 status = status:gsub("[%+<>]",replacement_colors) 2427 button:SetCallback("OnLeave", statusy_OnLeave)
2334 button:SetCallback("OnEnter", function() setstatus(status) end) -- maybe factor that closure out 2428 -- retrieval key may be specified as nil if all the parameters are given
2335 button:SetCallback("OnLeave", statusy_OnLeave) 2429 if opt_key then _d:SetUserData (opt_key, button) end
2336 -- retrieval key may be specified as nil if all the parameters are given 2430 return button
2337 if opt_key then _d:SetUserData (opt_key, button) end
2338 return button
2339 end
2340 end 2431 end
2341 2432
2342 --[[ 2433 --[[
2343 Creates the main window. 2434 Creates the main window.
2344 ]] 2435 ]]
2369 display:SetLayout("Flow") 2460 display:SetLayout("Flow")
2370 display:SetStatusTable{width=900,height=550} -- default height is 500 2461 display:SetStatusTable{width=900,height=550} -- default height is 500
2371 display:EnableResize(false) 2462 display:EnableResize(false)
2372 display:SetCallback("OnClose", function(_display) 2463 display:SetCallback("OnClose", function(_display)
2373 UIDROPDOWNMENU_SHOW_TIME = prev_fade_time 2464 UIDROPDOWNMENU_SHOW_TIME = prev_fade_time
2465 hide_noobtips_frame()
2374 _d = _display:GetUserData("eoiST") 2466 _d = _display:GetUserData("eoiST")
2375 self.display = nil 2467 self.display = nil
2376 GUI:Release(_display) 2468 GUI:Release(_display)
2377 flib.clear() 2469 flib.clear()
2378 collectgarbage() 2470 collectgarbage()