Mercurial > wow > ouroloot
comparison gui.lua @ 79:0235a1695b83
Tweak the manual entry hyperlink handling to use unique tags instead.
author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
---|---|
date | Tue, 12 Jun 2012 17:33:38 +0000 |
parents | f8118aa5fbb8 |
children | 0f6355bcfe68 |
comparison
equal
deleted
inserted
replaced
78:f8118aa5fbb8 | 79:0235a1695b83 |
---|---|
52 ------ Globals | 52 ------ Globals |
53 local GUI = LibStub("AceGUI-3.0") | 53 local GUI = LibStub("AceGUI-3.0") |
54 local flib = LibStub("LibFarmbuyer") | 54 local flib = LibStub("LibFarmbuyer") |
55 | 55 |
56 local g_loot = nil | 56 local g_loot = nil |
57 local g_uniques = nil | |
57 local g_generated = nil | 58 local g_generated = nil |
58 local window_title = "Ouro Loot" | 59 local window_title = "Ouro Loot" |
59 local dirty_tabs = nil | 60 local dirty_tabs = nil |
60 | 61 |
61 local error = addon.error | 62 local error = addon.error |
604 | 605 |
605 do | 606 do |
606 local rebroadcast_map -- XXX weaken this somehow? | 607 local rebroadcast_map -- XXX weaken this somehow? |
607 | 608 |
608 local function onclick (self, ident) | 609 local function onclick (self, ident) |
609 local data = assert(rebroadcast_map[ident]) | 610 -- Since an arbitrary number of insert/delete ops can happen between |
610 eoi_dropdownfuncs["Rebroadcast this loot entry"](data.rowindex) | 611 -- now and (potentially) clicking on the hyperlink, we can't depend on |
611 -- XXX delete the entry maybe? | 612 -- the row index. Force the uniques cache to re-search (research?) it. |
612 end | 613 local u = assert(rebroadcast_map[ident]) |
613 | 614 local cache = g_uniques:SEARCH(u) |
614 function _new_rebroadcast_hyperlink (data) | 615 -- A missing history entry isn't necessarily an error here, but we |
616 -- need a loot entry to go further. | |
617 if cache.loot then | |
618 eoi_dropdownfuncs["Rebroadcast this loot entry"](cache.loot) | |
619 else | |
620 addon:Print("...guh? Entry was recorded with tag <%s> but cannot now be found!", u) | |
621 end | |
622 -- delete the entry maybe? | |
623 end | |
624 | |
625 function _new_rebroadcast_hyperlink (u) | |
615 rebroadcast_map = rebroadcast_map or flib.new() | 626 rebroadcast_map = rebroadcast_map or flib.new() |
616 local clicky, ident = addon.format_hypertext( | 627 local clicky, ident = addon.format_hypertext( |
617 -- same color sequence as what DBM uses to announce pizza timers, | 628 -- same color sequence as what DBM uses to announce pizza timers, |
618 -- which looks reasonably pleasing | 629 -- which looks reasonably pleasing |
619 [[Broadcast this entry]], "|cff3588ff", onclick) | 630 [[Broadcast this entry]], "|cff3588ff", onclick) |
620 rebroadcast_map[ident] = data | 631 rebroadcast_map[ident] = u |
621 return clicky | 632 return clicky |
622 end | 633 end |
623 end | 634 end |
624 | 635 |
625 | 636 |
681 return count | 692 return count |
682 end | 693 end |
683 end | 694 end |
684 | 695 |
685 -- Done at startup, and whenever we've changed the population of tabs. | 696 -- Done at startup, and whenever we've changed the population of tabs. |
686 function addon:gui_init (loot_pointer) | 697 function addon:gui_init (loot_pointer, uniques_pointer) |
687 g_loot = assert(loot_pointer, "something went wrong at startup") | 698 g_loot = assert(loot_pointer, "something went wrong at startup") |
699 g_uniques = assert(uniques_pointer, "something went wrong at startup") | |
688 g_generated = nil | 700 g_generated = nil |
689 tabgroup_tabs = {} | 701 tabgroup_tabs = {} |
690 window_title = "Ouro Loot " .. self.revision | 702 window_title = "Ouro Loot " .. self.revision |
691 -- TabGroup stretches out the tabs to fill the row but only if >75% of the | 703 -- TabGroup stretches out the tabs to fill the row but only if >75% of the |
692 -- row is already full. It turns out that not doing this looks like ass. | 704 -- row is already full. It turns out that not doing this looks like ass. |
2334 -- This probably causes taint... hm. | 2346 -- This probably causes taint... hm. |
2335 local prev_fade_time = UIDROPDOWNMENU_SHOW_TIME | 2347 local prev_fade_time = UIDROPDOWNMENU_SHOW_TIME |
2336 UIDROPDOWNMENU_SHOW_TIME = 4 | 2348 UIDROPDOWNMENU_SHOW_TIME = 4 |
2337 | 2349 |
2338 if dirty_tabs then | 2350 if dirty_tabs then |
2339 self:gui_init(g_loot) -- pointer known to be good by now | 2351 self:gui_init (g_loot, g_uniques) -- pointers known to be good by now |
2340 self:zero_printed_fenceposts() | 2352 self:zero_printed_fenceposts() |
2341 end | 2353 end |
2342 | 2354 |
2343 local display = GUI:Create("Frame") | 2355 local display = GUI:Create("Frame") |
2344 if _d then | 2356 if _d then |
2345 display:SetUserData("eoiST",_d) -- warning! warning! kludge detected! | 2357 display:SetUserData("eoiST",_d) -- warning! warning! kludge detected! |
2346 end | 2358 end |
2347 _d = display | 2359 _d = display |
2348 self.display = display | 2360 self.display = display |
2349 display:SetTitle(window_title) | 2361 display:SetTitle(window_title) |
2350 display:SetStatusText(self.status_text) | 2362 display:SetStatusText(self.status_text) |
2789 local loot_index = assert(addon:CHAT_MSG_LOOT ("manual", data.recipient, data.name, data.notes)) | 2801 local loot_index = assert(addon:CHAT_MSG_LOOT ("manual", data.recipient, data.name, data.notes)) |
2790 local entry = tremove(g_loot,loot_index) | 2802 local entry = tremove(g_loot,loot_index) |
2791 tinsert(g_loot,data.rowindex,entry) | 2803 tinsert(g_loot,data.rowindex,entry) |
2792 addon:_fill_out_eoi_data(data.rowindex) | 2804 addon:_fill_out_eoi_data(data.rowindex) |
2793 addon:BuildMainDisplay() | 2805 addon:BuildMainDisplay() |
2794 local clicky = _new_rebroadcast_hyperlink (data) | 2806 local clicky = _new_rebroadcast_hyperlink (entry.unique) |
2795 dialog.data = nil | 2807 dialog.data = nil |
2796 addon:Print ("Inserted %s %s at entry %d. %s", | 2808 addon:Print ("Inserted %s %s at entry %d. %s", |
2797 data.kind, data.name, data.rowindex, tostring(clicky)) | 2809 data.kind, data.name, data.rowindex, tostring(clicky)) |
2798 return | 2810 return |
2799 end | 2811 end |