Mercurial > wow > ouroloot
comparison gui.lua @ 75:676fb79a4ae2
StaticPopupDialog + Slider = controllable threshold for how far back to preserve events when preening history tables. (Updated preen routine written but not with this commit.)
author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
---|---|
date | Fri, 01 Jun 2012 02:17:57 +0000 |
parents | 5edaac60449b |
children | 124da015c4a2 |
comparison
equal
deleted
inserted
replaced
74:5edaac60449b | 75:676fb79a4ae2 |
---|---|
1635 end | 1635 end |
1636 end) | 1636 end) |
1637 specials:AddChild(b) | 1637 specials:AddChild(b) |
1638 | 1638 |
1639 b = mkbutton('hist_clear_old', "Clear Older", | 1639 b = mkbutton('hist_clear_old', "Clear Older", |
1640 [[Preserves only the latest loot entry for each player on the displayed realm, removing all earlier ones.]]) | 1640 [[Preserves only the latest loot entries for players on the displayed realm, removing all earlier ones.]]) |
1641 b:SetFullWidth(true) | 1641 b:SetFullWidth(true) |
1642 b:SetCallback("OnClick", function (_b) | 1642 b:SetCallback("OnClick", function (_b) |
1643 local dialog = StaticPopup_Show("OUROL_HIST_PREEN", addon.history.realm) | 1643 local dialog = StaticPopup_Show("OUROL_HIST_PREEN", '', addon.history.realm, addon) |
1644 dialog.data = addon | 1644 dialog.data = addon |
1645 dialog.data2 = function(_addon) | 1645 dialog.data2 = function (_addon, howmany) |
1646 _addon:preen_history(_addon.history.realm) | 1646 _addon:preen_history (_addon.history.realm, howmany) |
1647 _addon.hist_clean = nil | 1647 _addon.hist_clean = nil |
1648 histST:OuroLoot_Refresh() | 1648 histST:OuroLoot_Refresh() |
1649 end | 1649 end |
1650 end) | 1650 end) |
1651 specials:AddChild(b) | 1651 specials:AddChild(b) |
2516 tabs_OnGroupSelected_func (unpack(tabs_OnGroupSelected_func_args)) | 2516 tabs_OnGroupSelected_func (unpack(tabs_OnGroupSelected_func_args)) |
2517 end | 2517 end |
2518 | 2518 |
2519 | 2519 |
2520 ------ Popup dialogs | 2520 ------ Popup dialogs |
2521 local function build_my_slider_widget() | |
2522 local s = CreateFrame("Slider", "OuroLootSlider", nil, "OptionsSliderTemplate") | |
2523 s.text = OuroLootSliderText | |
2524 s.low = OuroLootSliderLow | |
2525 s.high = OuroLootSliderHigh | |
2526 s:SetScript("OnValueChanged", function (_s, value) | |
2527 _s.value = value -- conveniently, this is already of numeric type | |
2528 --_s.text:SetText(tostring(value)) | |
2529 if _s.DoOnValueChanged then | |
2530 _s:DoOnValueChanged() | |
2531 end | |
2532 end) | |
2533 build_my_slider_widget = nil | |
2534 return s | |
2535 end | |
2536 | |
2521 StaticPopupDialogs["OUROL_CLEAR"] = flib.StaticPopup{ | 2537 StaticPopupDialogs["OUROL_CLEAR"] = flib.StaticPopup{ |
2522 text = "Clear current loot information and text?", | 2538 text = "Clear current loot information and text?", |
2523 button1 = YES, | 2539 button1 = YES, |
2524 button2 = NO, | 2540 button2 = NO, |
2525 OnAccept = function (dialog, addon) | 2541 OnAccept = function (dialog, addon) |
2527 end, | 2543 end, |
2528 } | 2544 } |
2529 | 2545 |
2530 StaticPopupDialogs["OUROL_HIST_REGEN"] = flib.StaticPopup{ | 2546 StaticPopupDialogs["OUROL_HIST_REGEN"] = flib.StaticPopup{ |
2531 -- Concatenate this once at load time. There is no ITEM_QUALITY_LEGENDARY constant. | 2547 -- Concatenate this once at load time. There is no ITEM_QUALITY_LEGENDARY constant. |
2532 text = "Erase all history entries from " .. ITEM_QUALITY_COLORS[5].hex .. "%s|r, and generate it anew from current loot?", | 2548 text = "Erase all history entries from " .. ITEM_QUALITY_COLORS[5].hex |
2549 .. "%s|r, and generate it anew from current loot?", | |
2533 button1 = YES, | 2550 button1 = YES, |
2534 button2 = NO, | 2551 button2 = NO, |
2535 OnAccept = function (dialog, addon, data2) | 2552 OnAccept = function (dialog, addon, data2) |
2536 data2(addon) | 2553 data2(addon) |
2537 addon:Print("%s history has been regenerated.", addon.history.realm) | 2554 addon:Print("%s history has been regenerated.", addon.history.realm) |
2551 end, | 2568 end, |
2552 } | 2569 } |
2553 | 2570 |
2554 StaticPopupDialogs["OUROL_HIST_PREEN"] = flib.StaticPopup{ | 2571 StaticPopupDialogs["OUROL_HIST_PREEN"] = flib.StaticPopup{ |
2555 -- Concatenate this once at load time. There is no ITEM_QUALITY_LEGENDARY constant. | 2572 -- Concatenate this once at load time. There is no ITEM_QUALITY_LEGENDARY constant. |
2556 text = "Erase all but the latest entry for players on " .. ITEM_QUALITY_COLORS[5].hex .. "%s|r?", | 2573 text = "This will erase all but the latest " |
2574 .. ITEM_QUALITY_COLORS[ITEM_QUALITY_UNCOMMON].hex | |
2575 .. "%s|r for each player on " | |
2576 .. ITEM_QUALITY_COLORS[5].hex .. "%s|r. " .. CONTINUE .. "?", | |
2557 button1 = YES, | 2577 button1 = YES, |
2558 button2 = NO, | 2578 button2 = NO, |
2559 OnAccept = function (dialog, addon, data2) | 2579 OnShow = function (dialog, addon) |
2560 data2(addon) | 2580 local thistable = StaticPopupDialogs[dialog.which] |
2561 addon:Print("All loot prior to the most recent entries has been erased.") | 2581 -- StaticPopup_Resize does not take extraFrame into account, so we |
2582 -- hook the sizing method that _Resize calls at the end. | |
2583 dialog.saved_setheight = dialog.SetHeight | |
2584 dialog.SetHeight = function (d, h) | |
2585 return d.saved_setheight(d,h+35) | |
2586 end | |
2587 dialog.extraFrame:ClearAllPoints() | |
2588 dialog.extraFrame:SetPoint("TOP", dialog.text, "BOTTOM") | |
2589 dialog.extraFrame:SetWidth(150) | |
2590 dialog.extraFrame:SetHeight(35) | |
2591 dialog.extraFrame:Show() | |
2592 local slider = _G.OuroLootSlider or build_my_slider_widget() | |
2593 slider.DoOnValueChanged = function(s) | |
2594 dialog.text:SetFormattedText (thistable.text, | |
2595 s.value == 1 and "single entry" or (s.value .. " entries"), | |
2596 addon.history.realm) | |
2597 StaticPopup_Resize (dialog, "OUROL_HIST_PREEN") | |
2598 end | |
2599 slider:SetOrientation('HORIZONTAL') | |
2600 slider:SetMinMaxValues(1,30) | |
2601 slider:SetValueStep(1) | |
2602 slider.low:SetText("1") | |
2603 slider.high:SetText("30") | |
2604 --slider.tooltipText = ??? | |
2605 slider:SetParent(dialog.extraFrame) | |
2606 slider:ClearAllPoints() | |
2607 slider:SetPoint("TOPLEFT",dialog.extraFrame,"TOPLEFT",0, -15) | |
2608 slider:SetPoint("BOTTOMRIGHT",dialog.extraFrame,"BOTTOMRIGHT",0, 0) | |
2609 slider:Show() | |
2610 -- This causes OnValueChanged to fire, reformatting the text. Except | |
2611 -- IF the slider has already been shown, and IF at the time it was hidden | |
2612 -- it had the same value here, THEN there is technically no "change" | |
2613 -- and no event is fired. We work around this clever optimization by | |
2614 -- doing a pair of set's, forcing the last one to fire OVC. | |
2615 slider:SetValue(1) | |
2616 slider:SetValue(5) | |
2617 end, | |
2618 OnAccept = function (dialog, addon, callback) | |
2619 local howmany = assert(tonumber(_G.OuroLootSlider.value)) | |
2620 callback (addon, howmany) | |
2621 addon:Print("All loot prior to the most recent %d |4entry:entries; has been erased.", howmany) | |
2562 addon:redisplay() | 2622 addon:redisplay() |
2623 end, | |
2624 OnHide = function (dialog, addon) | |
2625 dialog.SetHeight = nil | |
2626 dialog.saved_setheight = nil | |
2627 dialog.extraFrame:ClearAllPoints() | |
2628 _G.OuroLootSlider:Hide() -- parent is hidden, why is this required? | |
2629 _G.OuroLootSlider:ClearAllPoints() | |
2630 _G.OuroLootSlider:SetParent(nil) | |
2563 end, | 2631 end, |
2564 } | 2632 } |
2565 | 2633 |
2566 StaticPopupDialogs["OUROL_URL"] = { --flib.StaticPopup{ | 2634 StaticPopupDialogs["OUROL_URL"] = { --flib.StaticPopup{ |
2567 text = "Use Control-C or equivalent to copy this URL to your system clipboard:", | 2635 text = "Use Control-C or equivalent to copy this URL to your system clipboard:", |
2731 | 2799 |
2732 -- The data member here is a table built with: | 2800 -- The data member here is a table built with: |
2733 -- {rowindex=<GUI row receiving click>, display=_d, kind=<loot/boss>} | 2801 -- {rowindex=<GUI row receiving click>, display=_d, kind=<loot/boss>} |
2734 do | 2802 do |
2735 local t = flib.StaticPopup{ | 2803 local t = flib.StaticPopup{ |
2736 text = "Enter name of new %s, then click Next or press Enter:", | 2804 text = "Enter name of new %s, then click "..CONTINUE.." or press Enter:", |
2737 button1 = "Next >", | 2805 button1 = CONTINUE.." ->", |
2738 button2 = CANCEL, | 2806 button2 = CANCEL, |
2739 hasEditBox = true, | 2807 hasEditBox = true, |
2740 editBoxWidth = 350, | 2808 editBoxWidth = 350, |
2741 maxLetters = 50, | 2809 maxLetters = 50, |
2742 noCancelOnReuse = true, | 2810 noCancelOnReuse = true, |
2757 t.OnAccept = eoi_st_insert_OnAccept | 2825 t.OnAccept = eoi_st_insert_OnAccept |
2758 StaticPopupDialogs["OUROL_EOI_INSERT"] = t | 2826 StaticPopupDialogs["OUROL_EOI_INSERT"] = t |
2759 | 2827 |
2760 -- This seems to be gratuitous use of metatables, really. | 2828 -- This seems to be gratuitous use of metatables, really. |
2761 local OEIL = { | 2829 local OEIL = { |
2762 text = "Paste the new item into here, then click Next or press Enter:", | 2830 text = "Paste the new item into here, then click "..CONTINUE.." or press Enter:", |
2763 __index = StaticPopupDialogs["OUROL_EOI_INSERT"] | 2831 __index = StaticPopupDialogs["OUROL_EOI_INSERT"] |
2764 } | 2832 } |
2765 StaticPopupDialogs["OUROL_EOI_INSERT_LOOT"] = setmetatable(OEIL,OEIL) | 2833 StaticPopupDialogs["OUROL_EOI_INSERT_LOOT"] = setmetatable(OEIL,OEIL) |
2766 | 2834 |
2767 hooksecurefunc("ChatEdit_InsertLink", function (link,...) | 2835 hooksecurefunc("ChatEdit_InsertLink", function (link,...) |