Mercurial > wow > ouroloot
comparison gui.lua @ 74:5edaac60449b
Replace kludgey debug tooltip toggle with a dropdown, workable at runtime.
| author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
|---|---|
| date | Thu, 31 May 2012 00:06:20 +0000 |
| parents | 32eb24fb2ebf |
| children | 676fb79a4ae2 |
comparison
equal
deleted
inserted
replaced
| 73:32eb24fb2ebf | 74:5edaac60449b |
|---|---|
| 430 --print("finished history loop, #st ==", #st) | 430 --print("finished history loop, #st ==", #st) |
| 431 self.hist_clean = cache_okay and #self.history or nil | 431 self.hist_clean = cache_okay and #self.history or nil |
| 432 end | 432 end |
| 433 end | 433 end |
| 434 | 434 |
| 435 -- Debugging tooltip | 435 -- Debugging tooltip (unfortunately managed by global and semi-global state |
| 436 if true then | 436 -- rather than passing around stack parameters) |
| 437 local tt | 437 do |
| 438 local debug_tt | |
| 439 | |
| 440 local _creators, _builders = {}, {} | |
| 438 local function _create_tooltip() | 441 local function _create_tooltip() |
| 439 tt = CreateFrame("GameTooltip") | 442 local which = assert(tonumber(_do_debugging_tooltip)) |
| 443 if type(_creators[which]) == 'function' then | |
| 444 _creators[which]() | |
| 445 end | |
| 446 debug_tt = _creators[which] | |
| 447 end | |
| 448 function _build_debugging_tooltip (parent, index) | |
| 449 local which = assert(tonumber(_do_debugging_tooltip)) | |
| 450 if type(_builders[which]) == 'function' then | |
| 451 _builders[which](parent,index) | |
| 452 end | |
| 453 end | |
| 454 function _hide_debugging_tooltip() | |
| 455 if debug_tt then debug_tt:Hide() end | |
| 456 end | |
| 457 | |
| 458 -- 2 == /dump | |
| 459 _creators[2] = function() | |
| 460 local tt = CreateFrame("GameTooltip") | |
| 440 UIParentLoadAddOn("Blizzard_DebugTools") | 461 UIParentLoadAddOn("Blizzard_DebugTools") |
| 441 | 462 |
| 442 tt:SetBackdrop{ | 463 tt:SetBackdrop{ |
| 443 bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], | 464 bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], |
| 444 edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], | 465 edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], |
| 482 end | 503 end |
| 483 right:SetPoint("RIGHT",left,"LEFT") | 504 right:SetPoint("RIGHT",left,"LEFT") |
| 484 end | 505 end |
| 485 tt.AddMessage = tt.AddLine | 506 tt.AddMessage = tt.AddLine |
| 486 | 507 |
| 487 _create_tooltip = nil | 508 _creators[2] = tt |
| 488 end | 509 end |
| 489 | 510 |
| 490 function _build_debugging_tooltip (parent, index) | 511 _builders[2] = function (parent, index) |
| 491 local e = g_loot[index]; assert(type(e)=='table') | 512 local e = g_loot[index]; assert(type(e)=='table') |
| 492 if not tt then _create_tooltip() end | 513 _create_tooltip() |
| 493 tt:SetOwner (parent, "ANCHOR_LEFT", -15, -5) | 514 debug_tt:SetOwner (parent, "ANCHOR_LEFT", -15, -5) |
| 494 tt:ClearLines() | 515 debug_tt:ClearLines() |
| 495 | 516 |
| 496 local real = DEFAULT_CHAT_FRAME | 517 local real = DEFAULT_CHAT_FRAME |
| 497 DEFAULT_CHAT_FRAME = tt | 518 DEFAULT_CHAT_FRAME = debug_tt |
| 498 DevTools_Dump{ [index] = e } | 519 DevTools_Dump{ [index] = e } |
| 499 DEFAULT_CHAT_FRAME = real | 520 DEFAULT_CHAT_FRAME = real |
| 500 | 521 |
| 501 tt:Show() | 522 debug_tt:Show() |
| 502 end | 523 end |
| 503 | |
| 504 function _hide_debugging_tooltip() | |
| 505 if tt then tt:Hide() end | |
| 506 end | |
| 507 else | |
| 508 -- Fields to put in the tooltip (maybe move these into the options window | |
| 509 -- if I spend too much time fiddling). | |
| 510 local loot = {'person', 'id', 'unique', 'disposition', 'count', 'variant'} | |
| 511 local boss = {'bossname', 'reason', 'instance', 'maxsize', 'duration', 'raidersnap'} | |
| 512 | 524 |
| 513 -- Now here's a thing unheard-of. A tooltip not inheriting from the big | 525 -- Now here's a thing unheard-of. A tooltip not inheriting from the big |
| 514 -- memory-wasteful template, but also not intended merely for scanning | 526 -- memory-wasteful template, but also not intended merely for scanning |
| 515 -- invisible tooltips. | 527 -- invisible tooltips. |
| 516 -- (If this ever grows beyond a text dump, then replace it with libqtip.) | 528 -- (If this ever grows beyond a text dump, then replace it with libqtip.) |
| 517 local tt | 529 -- |
| 518 local function _create_tooltip() | 530 -- Fields to put in the fixed-fields tooltip (maybe move these into the |
| 519 tt = CreateFrame("GameTooltip") | 531 -- options window if I spend too much time fiddling). |
| 532 local loot = {'person', 'id', 'unique', 'disposition', 'count', 'variant'} | |
| 533 local boss = {'bossname', 'reason', 'instance', 'maxsize', 'duration', 'raidersnap'} | |
| 534 | |
| 535 -- 3 == fixed fields | |
| 536 _creators[3] = function() | |
| 537 local tt = CreateFrame("GameTooltip") | |
| 520 | 538 |
| 521 tt:SetBackdrop{ | 539 tt:SetBackdrop{ |
| 522 bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], | 540 bgFile = [[Interface\Tooltips\UI-Tooltip-Background]], |
| 523 edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], | 541 edgeFile = [[Interface\Tooltips\UI-Tooltip-Border]], |
| 524 tile = true, | 542 tile = true, |
| 553 left:SetPoint("TOPLEFT",10,-10) -- top line | 571 left:SetPoint("TOPLEFT",10,-10) -- top line |
| 554 end | 572 end |
| 555 right:SetPoint("RIGHT",left,"LEFT") | 573 right:SetPoint("RIGHT",left,"LEFT") |
| 556 end | 574 end |
| 557 | 575 |
| 558 _create_tooltip = nil | 576 _creators[3] = tt |
| 559 end | 577 end |
| 560 | 578 |
| 561 function _build_debugging_tooltip (parent, index) | 579 _builders[3] = function (parent, index) |
| 562 local e = g_loot[index]; assert(type(e)=='table') | 580 local e = g_loot[index]; assert(type(e)=='table') |
| 563 if not tt then _create_tooltip() end | 581 _create_tooltip() |
| 564 tt:SetOwner (parent, "ANCHOR_LEFT", -15, -5) | 582 debug_tt:SetOwner (parent, "ANCHOR_LEFT", -15, -5) |
| 565 tt:ClearLines() | 583 debug_tt:ClearLines() |
| 566 | 584 |
| 567 -- change these, change the +2 above | 585 -- change these, change the +2 above |
| 568 tt:AddDoubleLine (tostring(index), tostring(e), 1,1,1) | 586 debug_tt:AddDoubleLine (tostring(index), tostring(e), 1,1,1) |
| 569 tt:AddDoubleLine ('kind', e.kind, 1,1,1) | 587 debug_tt:AddDoubleLine ('kind', e.kind, 1,1,1) |
| 570 | 588 |
| 571 local source = (e.kind == 'loot' and loot) or (e.kind == 'boss' and boss) | 589 local source = (e.kind == 'loot' and loot) or (e.kind == 'boss' and boss) |
| 572 if source then | 590 if source then |
| 573 for _,field in ipairs(source) do | 591 for _,field in ipairs(source) do |
| 574 tt:AddDoubleLine (field, tostring(e[field]), 1,1,1, 0,156/255,1) | 592 debug_tt:AddDoubleLine (field, tostring(e[field]), 1,1,1, 0,156/255,1) |
| 575 end | 593 end |
| 576 end | 594 end |
| 577 tt:Show() | 595 debug_tt:Show() |
| 578 end | |
| 579 function _hide_debugging_tooltip() | |
| 580 if tt then tt:Hide() end | |
| 581 end | 596 end |
| 582 end | 597 end |
| 583 | 598 |
| 584 | 599 |
| 585 ------ Main GUI Window | 600 ------ Main GUI Window |
| 1784 w = GUI:Create("Spacer") w:SetFullWidth(true) w:SetHeight(1) grp:AddChild(w) | 1799 w = GUI:Create("Spacer") w:SetFullWidth(true) w:SetHeight(1) grp:AddChild(w) |
| 1785 | 1800 |
| 1786 local simple = GUI:Create("SimpleGroup") | 1801 local simple = GUI:Create("SimpleGroup") |
| 1787 simple:SetLayout("List") | 1802 simple:SetLayout("List") |
| 1788 simple:SetRelativeWidth(0.3) | 1803 simple:SetRelativeWidth(0.3) |
| 1804 w = mkbutton("Dropdown", nil, "", [[hovering over Item column only]]) | |
| 1805 w:SetFullWidth(true) | |
| 1806 w:SetLabel("loot debugging tooltip") | |
| 1807 w:SetList{ | |
| 1808 [1] = "Off", | |
| 1809 [2] = "/dump into tooltip", | |
| 1810 [3] = "small fixed fields", | |
| 1811 } | |
| 1812 w:SetValue(_do_debugging_tooltip or 1) | |
| 1813 w:SetCallback("OnValueChanged", function(_w,event,choice) | |
| 1814 _do_debugging_tooltip = choice > 1 and choice or nil | |
| 1815 end) | |
| 1816 simple:AddChild(w) | |
| 1817 | |
| 1818 w = GUI:Create("Spacer") w:SetFullWidth(true) w:SetHeight(10) simple:AddChild(w) | |
| 1819 | |
| 1789 w = GUI:Create("CheckBoxSmallLabel") | 1820 w = GUI:Create("CheckBoxSmallLabel") |
| 1790 w:SetFullWidth(true) | 1821 w:SetFullWidth(true) |
| 1791 w:SetType("checkbox") | 1822 w:SetType("checkbox") |
| 1792 w:SetLabel("loot debugging tooltip") | 1823 w:SetLabel("debug toggle --->") |
| 1793 w:SetValue(_do_debugging_tooltip) | |
| 1794 w:SetCallback("OnValueChanged", function(_w,event,value) | |
| 1795 _do_debugging_tooltip = value | |
| 1796 end) | |
| 1797 simple:AddChild(w) | |
| 1798 w = GUI:Create("CheckBoxSmallLabel") | |
| 1799 w:SetFullWidth(true) | |
| 1800 w:SetType("checkbox") | |
| 1801 w:SetLabel("debug toggle") | |
| 1802 w:SetValue(addon.DEBUG_PRINT) | 1824 w:SetValue(addon.DEBUG_PRINT) |
| 1803 w:SetCallback("OnValueChanged", function(_w,event,value) | 1825 w:SetCallback("OnValueChanged", function(_w,event,value) |
| 1804 addon.DEBUG_PRINT = value | 1826 addon.DEBUG_PRINT = value |
| 1805 addon:redisplay() | 1827 addon:redisplay() |
| 1806 end) | 1828 end) |
