Mercurial > wow > ouroloot
comparison gui.lua @ 78:f8118aa5fbb8
Manually inserting loot entries now (1) uses autocomplete dropdowns for the recipient name (raid members if in a raid, online guild members otherwise), and (2) adds a rebroadcasting hyperlink to the text response. Clicking the link rebroadcasts just like the context menu.
| author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
|---|---|
| date | Tue, 12 Jun 2012 03:46:00 +0000 |
| parents | a07c9dd79f3a |
| children | 0235a1695b83 |
comparison
equal
deleted
inserted
replaced
| 77:a07c9dd79f3a | 78:f8118aa5fbb8 |
|---|---|
| 64 local pairs, ipairs, tinsert, tremove, tostring, tonumber = | 64 local pairs, ipairs, tinsert, tremove, tostring, tonumber = |
| 65 pairs, ipairs, table.insert, table.remove, tostring, tonumber | 65 pairs, ipairs, table.insert, table.remove, tostring, tonumber |
| 66 | 66 |
| 67 local pprint, tabledump = addon.pprint, flib.tabledump | 67 local pprint, tabledump = addon.pprint, flib.tabledump |
| 68 local GetItemInfo, ITEM_QUALITY_COLORS = GetItemInfo, ITEM_QUALITY_COLORS | 68 local GetItemInfo, ITEM_QUALITY_COLORS = GetItemInfo, ITEM_QUALITY_COLORS |
| 69 local GetNumRaidMembers = GetNumRaidMembers | |
| 69 | 70 |
| 70 -- En masse forward decls of symbols defined inside local blocks | 71 -- En masse forward decls of symbols defined inside local blocks |
| 71 local _generate_text, _populate_text_specials | 72 local _generate_text, _populate_text_specials |
| 72 local _tabtexts, _taborder -- filled out in gui block scope | 73 local eoi_dropdownfuncs, _tabtexts, _taborder -- filled out in gui block scope |
| 73 local _do_debugging_tooltip, _hide_debugging_tooltip, _build_debugging_tooltip | 74 local _do_debugging_tooltip, _hide_debugging_tooltip, _build_debugging_tooltip |
| 75 local _new_rebroadcast_hyperlink | |
| 74 | 76 |
| 75 --[[ | 77 --[[ |
| 76 This is a table of callback functions, each responsible for drawing a tab | 78 This is a table of callback functions, each responsible for drawing a tab |
| 77 into the container passed in the first argument. Special-purpose buttons | 79 into the container passed in the first argument. Special-purpose buttons |
| 78 can optionally be created (mkbutton) and added to the container in the second | 80 can optionally be created (mkbutton) and added to the container in the second |
| 598 end | 600 end |
| 599 debug_tt:Show() | 601 debug_tt:Show() |
| 600 end | 602 end |
| 601 end | 603 end |
| 602 | 604 |
| 605 do | |
| 606 local rebroadcast_map -- XXX weaken this somehow? | |
| 607 | |
| 608 local function onclick (self, ident) | |
| 609 local data = assert(rebroadcast_map[ident]) | |
| 610 eoi_dropdownfuncs["Rebroadcast this loot entry"](data.rowindex) | |
| 611 -- XXX delete the entry maybe? | |
| 612 end | |
| 613 | |
| 614 function _new_rebroadcast_hyperlink (data) | |
| 615 rebroadcast_map = rebroadcast_map or flib.new() | |
| 616 local clicky, ident = addon.format_hypertext( | |
| 617 -- same color sequence as what DBM uses to announce pizza timers, | |
| 618 -- which looks reasonably pleasing | |
| 619 [[Broadcast this entry]], "|cff3588ff", onclick) | |
| 620 rebroadcast_map[ident] = data | |
| 621 return clicky | |
| 622 end | |
| 623 end | |
| 624 | |
| 603 | 625 |
| 604 ------ Main GUI Window | 626 ------ Main GUI Window |
| 605 local _d -- display when it's open, eoiST when it's not | 627 local _d -- display when it's open, eoiST when it's not |
| 606 local function setstatus(txt) _d:SetStatusText(txt) end | 628 local function setstatus(txt) _d:SetStatusText(txt) end |
| 607 local function statusy_OnLeave() setstatus("") end | 629 local function statusy_OnLeave() setstatus("") end |
| 744 local dropdownmenuframe = CreateFrame("Frame", "OuroLootDropDownMenu", nil, "UIDropDownMenuTemplate") | 766 local dropdownmenuframe = CreateFrame("Frame", "OuroLootDropDownMenu", nil, "UIDropDownMenuTemplate") |
| 745 | 767 |
| 746 | 768 |
| 747 -- Tab 1: Events Of Interest | 769 -- Tab 1: Events Of Interest |
| 748 -- This actually takes up quite a bit of the file. | 770 -- This actually takes up quite a bit of the file. |
| 749 local eoi_dropdownfuncs | |
| 750 eoi_dropdownfuncs = dropdownfuncs{ | 771 eoi_dropdownfuncs = dropdownfuncs{ |
| 751 df_INSERT = function(rowi,text) | 772 df_INSERT = function(rowi,text) |
| 752 local which = (text == 'loot') and "OUROL_EOI_INSERT_LOOT" or "OUROL_EOI_INSERT" | 773 local which = (text == 'loot') and "OUROL_EOI_INSERT_LOOT" or "OUROL_EOI_INSERT" |
| 753 local dialog = StaticPopup_Show(which,text) | 774 local dialog = StaticPopup_Show(which,text) |
| 754 dialog.editBox:SetScript("OnTextChanged",StaticPopup_EditBoxOnTextChanged) | 775 dialog.editBox:SetScript("OnTextChanged",StaticPopup_EditBoxOnTextChanged) |
| 2718 local entry = tremove(g_loot,boss_index) | 2739 local entry = tremove(g_loot,boss_index) |
| 2719 tinsert(g_loot,data.rowindex,entry) | 2740 tinsert(g_loot,data.rowindex,entry) |
| 2720 addon:_mark_boss_kill(data.rowindex) | 2741 addon:_mark_boss_kill(data.rowindex) |
| 2721 data.display:GetUserData("eoiST"):OuroLoot_Refresh(data.rowindex) | 2742 data.display:GetUserData("eoiST"):OuroLoot_Refresh(data.rowindex) |
| 2722 dialog.data = nil -- free up memory | 2743 dialog.data = nil -- free up memory |
| 2723 addon:Print("Inserted %s %s (entry %d).", data.kind, data.name, data.rowindex) | 2744 addon:Print("Inserted %s %s at entry %d.", data.kind, data.name, data.rowindex) |
| 2724 return | 2745 return |
| 2725 end | 2746 end |
| 2726 | 2747 |
| 2727 -- third click | 2748 -- third click |
| 2728 if data.name and data.instance then | 2749 if data.name and data.instance then |
| 2762 end | 2783 end |
| 2763 end | 2784 end |
| 2764 | 2785 |
| 2765 local function eoi_st_insert_OnAccept_loot (dialog, data) | 2786 local function eoi_st_insert_OnAccept_loot (dialog, data) |
| 2766 if data.all_done then | 2787 if data.all_done then |
| 2767 --local real_rebroadcast, real_enabled = addon.rebroadcast, addon.enabled | |
| 2768 --g_rebroadcast, g_enabled = false, true | |
| 2769 data.display:Hide() | 2788 data.display:Hide() |
| 2770 local loot_index = assert(addon:CHAT_MSG_LOOT ("manual", data.recipient, data.name, data.notes)) | 2789 local loot_index = assert(addon:CHAT_MSG_LOOT ("manual", data.recipient, data.name, data.notes)) |
| 2771 --g_rebroadcast, g_enabled = real_g_rebroadcast, real_g_enabled | |
| 2772 local entry = tremove(g_loot,loot_index) | 2790 local entry = tremove(g_loot,loot_index) |
| 2773 tinsert(g_loot,data.rowindex,entry) | 2791 tinsert(g_loot,data.rowindex,entry) |
| 2774 --data.display:GetUserData("eoiST"):OuroLoot_Refresh(data.rowindex) | |
| 2775 addon:_fill_out_eoi_data(data.rowindex) | 2792 addon:_fill_out_eoi_data(data.rowindex) |
| 2776 addon:BuildMainDisplay() | 2793 addon:BuildMainDisplay() |
| 2794 local clicky = _new_rebroadcast_hyperlink (data) | |
| 2777 dialog.data = nil | 2795 dialog.data = nil |
| 2778 addon:Print("Inserted %s %s (entry %d).", data.kind, data.name, data.rowindex) | 2796 addon:Print ("Inserted %s %s at entry %d. %s", |
| 2797 data.kind, data.name, data.rowindex, tostring(clicky)) | |
| 2779 return | 2798 return |
| 2780 end | 2799 end |
| 2781 | 2800 |
| 2782 local text = dialog.editBox:GetText():trim() | 2801 local text = dialog.editBox:GetText():trim() |
| 2783 | 2802 |
| 2800 | 2819 |
| 2801 -- first click | 2820 -- first click |
| 2802 if text then | 2821 if text then |
| 2803 data.name = text | 2822 data.name = text |
| 2804 dialog:Hide() -- technically a "different" one about to be shown | 2823 dialog:Hide() -- technically a "different" one about to be shown |
| 2824 StaticPopupDialogs["OUROL_EOI_INSERT"].autoCompleteParams = | |
| 2825 AUTOCOMPLETE_LIST_TEMPLATES[GetNumRaidMembers() > 0 and "IN_GROUP" or "IN_GUILD"] | |
| 2805 local getrecipient = StaticPopup_Show("OUROL_EOI_INSERT","recipient") | 2826 local getrecipient = StaticPopup_Show("OUROL_EOI_INSERT","recipient") |
| 2827 StaticPopupDialogs["OUROL_EOI_INSERT"].autoCompleteParams = nil | |
| 2806 getrecipient.data = data | 2828 getrecipient.data = data |
| 2807 getrecipient.editBox:SetText("") | 2829 getrecipient.editBox:SetText("") |
| 2808 return true | 2830 return true |
| 2809 end | 2831 end |
| 2810 end | 2832 end |
| 2826 button2 = CANCEL, | 2848 button2 = CANCEL, |
| 2827 hasEditBox = true, | 2849 hasEditBox = true, |
| 2828 editBoxWidth = 350, | 2850 editBoxWidth = 350, |
| 2829 maxLetters = 50, | 2851 maxLetters = 50, |
| 2830 noCancelOnReuse = true, | 2852 noCancelOnReuse = true, |
| 2831 --[[ XXX still needed? | |
| 2832 OnShow = function(dialog) | |
| 2833 dialog.wideEditBox:SetText("") | |
| 2834 dialog.wideEditBox:SetFocus() | |
| 2835 end,]] | |
| 2836 } | 2853 } |
| 2837 t.EditBoxOnEnterPressed = function(editbox) | 2854 t.EditBoxOnEnterPressed = function(editbox) |
| 2838 if editbox:GetText() == "" then return end | 2855 if editbox:GetText() == "" then return end |
| 2839 local dialog = editbox:GetParent() | 2856 local dialog = editbox:GetParent() |
| 2840 if not eoi_st_insert_OnAccept (dialog, dialog.data) then | 2857 if not eoi_st_insert_OnAccept (dialog, dialog.data) then |
