Mercurial > wow > ouroloot
comparison gui.lua @ 16:5ee4edd24c13
- new blizz methods for editboxes in dialog popups
- initial code for dropdowns in history (not active yet)
- hovering and shift-clicking to link out of history
- proper confirmations for history rewriting
- options checkboxes more grid-like
- saved texts get a scrollbar instead of expanding indefinitely (duh)
- rearranged savedvars a bit (and added transition code)
- stores raider join/leave times and "demographic" info, all for MLEQDKP
- minor bugfixes and tweaks
author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
---|---|
date | Thu, 25 Aug 2011 00:45:31 +0000 |
parents | 952c3ac0e783 |
children | d929c40cdb09 |
comparison
equal
deleted
inserted
replaced
15:d8fee518ce5d | 16:5ee4edd24c13 |
---|---|
9 ------ Popup dialogs | 9 ------ Popup dialogs |
10 ]] | 10 ]] |
11 | 11 |
12 ------ Constants | 12 ------ Constants |
13 local eoi_st_rowheight = 20 | 13 local eoi_st_rowheight = 20 |
14 local eoi_st_displayed_rows = math.floor(366/eoi_st_rowheight) | 14 local eoi_st_displayed_rows = math.floor(416/eoi_st_rowheight) --math.floor(366/eoi_st_rowheight) |
15 local eoi_st_textured_item_format = "|T%s:"..(eoi_st_rowheight-2).."|t %s[%s]|r%s" | 15 local eoi_st_textured_item_format = "|T%s:"..(eoi_st_rowheight-2).."|t %s[%s]|r%s" |
16 local eoi_st_otherrow_bgcolortable = { | 16 local eoi_st_otherrow_bgcolortable = { |
17 wipe = { ["r"] = 0.3, ["g"] = 0.3, ["b"] = 0.3}, | 17 wipe = { ["r"] = 0.3, ["g"] = 0.3, ["b"] = 0.3}, |
18 kill = { ["r"] = 0.2, ["g"] = 0.2, ["b"] = 0.2}, | 18 kill = { ["r"] = 0.2, ["g"] = 0.2, ["b"] = 0.2}, |
19 time = { ["r"] = 0x0/255, ["g"] = 0x0/255, ["b"] = 1, ["a"] = 0.3}, | 19 time = { ["r"] = 0x0/255, ["g"] = 0x0/255, ["b"] = 1, ["a"] = 0.3}, |
212 local v | 212 local v |
213 if e.reason == 'kill' then | 213 if e.reason == 'kill' then |
214 if e.attempts == 1 then | 214 if e.attempts == 1 then |
215 v = "one-shot" | 215 v = "one-shot" |
216 else | 216 else |
217 v = ("kill on %d%s attempt"):format(e.attempts, grammar[e.attempts] or "th") | 217 v = ("kill on %d%s attempt"):format(e.attempts or 0, grammar[e.attempts] or "th") |
218 end | 218 end |
219 v = ("%s (%d:%.2d)"):format(v, math.floor(e.duration/60), math.floor(e.duration%60)) | 219 v = ("%s (%d:%.2d)"):format(v, math.floor(e.duration/60), math.floor(e.duration%60)) |
220 elseif e.reason == 'wipe' then | 220 elseif e.reason == 'wipe' then |
221 v = ("wipe (%d:%.2d)"):format(math.floor(e.duration/60), math.floor(e.duration%60)) | 221 v = ("wipe (%d:%.2d)"):format(math.floor(e.duration/60), math.floor(e.duration%60)) |
222 end | 222 end |
309 local dotcols = new (col1, col2, col3) | 309 local dotcols = new (col1, col2, col3) |
310 local st_entry = new() | 310 local st_entry = new() |
311 st_entry.kind = 'history' | 311 st_entry.kind = 'history' |
312 st_entry.OLwho = player.name | 312 st_entry.OLwho = player.name |
313 st_entry.cols = dotcols | 313 st_entry.cols = dotcols |
314 st_entry.itemlink = ilink -- for onenter and onclick | |
314 tinsert (st, st_entry) | 315 tinsert (st, st_entry) |
315 end | 316 end |
316 end | 317 end |
317 | 318 |
318 --print("finished history loop, #st ==", #st) | 319 --print("finished history loop, #st ==", #st) |
412 [CLOSE] = function() CloseDropDownMenus() end, | 413 [CLOSE] = function() CloseDropDownMenus() end, |
413 | 414 |
414 df_INSERT = function(rowi,text) | 415 df_INSERT = function(rowi,text) |
415 local which = (text == 'loot') and "OUROL_EOI_INSERT_LOOT" or "OUROL_EOI_INSERT" | 416 local which = (text == 'loot') and "OUROL_EOI_INSERT_LOOT" or "OUROL_EOI_INSERT" |
416 local dialog = StaticPopup_Show(which,text) | 417 local dialog = StaticPopup_Show(which,text) |
417 dialog.wideEditBox:SetScript("OnTextChanged",StaticPopup_EditBoxOnTextChanged) | 418 dialog.editBox:SetScript("OnTextChanged",StaticPopup_EditBoxOnTextChanged) |
418 dialog.data = {rowindex=rowi, display=_d, kind=text} | 419 dialog.data = {rowindex=rowi, display=_d, kind=text} |
419 end, | 420 end, |
420 | 421 |
421 df_DELETE = function(rowi) | 422 df_DELETE = function(rowi) |
422 local gone = tremove(g_loot,rowi) | 423 local gone = tremove(g_loot,rowi) |
423 addon:Print("Removed %s.", | 424 addon:Print("Removed %s.", |
424 gone.itemlink or gone.bosskill or gone.startday.text) | 425 gone.itemlink or gone.bosskill or gone.startday.text) |
426 end, | |
427 | |
428 ["Delete this history event"] = function(rowi) | |
429 --local gone = tremove(g_loot,rowi) | |
430 --addon:Print("Removed %s.", | |
431 --gone.itemlink or gone.bosskill or gone.startday.text) | |
425 end, | 432 end, |
426 | 433 |
427 -- if kind is boss, also need to stop at new timestamp | 434 -- if kind is boss, also need to stop at new timestamp |
428 ["Delete remaining entries for this day"] = function(rowi,kind) | 435 ["Delete remaining entries for this day"] = function(rowi,kind) |
429 local fencepost | 436 local fencepost |
482 end, | 489 end, |
483 | 490 |
484 df_REASSIGN = function(rowi,to_whom) | 491 df_REASSIGN = function(rowi,to_whom) |
485 g_loot[rowi].person = to_whom | 492 g_loot[rowi].person = to_whom |
486 g_loot[rowi].person_class = select(2,UnitClass(to_whom)) | 493 g_loot[rowi].person_class = select(2,UnitClass(to_whom)) |
494 -- FIXME also update history | |
487 CloseDropDownMenus() -- also need to close parent menu | 495 CloseDropDownMenus() -- also need to close parent menu |
488 end, | 496 end, |
489 ["Enter name..."] = function(rowi) | 497 ["Enter name..."] = function(rowi) |
490 local dialog = StaticPopup_Show "OUROL_REASSIGN_ENTER" | 498 local dialog = StaticPopup_Show "OUROL_REASSIGN_ENTER" |
491 dialog.data = {index=rowi, display=_d} | 499 dialog.data = {index=rowi, display=_d} |
570 "Insert new loot entry%loot|Inserts new loot above this one, prompting you for information", | 578 "Insert new loot entry%loot|Inserts new loot above this one, prompting you for information", |
571 "Insert new boss kill event%boss|Inserts new event above this one, prompting you for information", | 579 "Insert new boss kill event%boss|Inserts new event above this one, prompting you for information", |
572 "--", | 580 "--", |
573 CLOSE | 581 CLOSE |
574 }, dropdownfuncs) | 582 }, dropdownfuncs) |
583 local hist_dropdown = gen_easymenu_table( | |
584 {{ | |
585 -- this is the dropdown title, text filled in on the fly | |
586 notClickable = true, | |
587 notCheckable = true, | |
588 }}, | |
589 { | |
590 "Delete this history event|Permanent, no going back!", | |
591 --"Delete remaining entries for this boss%boss|Erases everything from here down until a new boss/day", | |
592 "--", | |
593 CLOSE | |
594 }, dropdownfuncs) | |
575 | 595 |
576 --[[ quoted verbatim from lib-st docs: | 596 --[[ quoted verbatim from lib-st docs: |
577 rowFrame This is the UI Frame table for the row. | 597 rowFrame This is the UI Frame table for the row. |
578 cellFrame This is the UI Frame table for the cell in the row. | 598 cellFrame This is the UI Frame table for the cell in the row. |
579 data This is the data table supplied to the scrolling table (in case you lost it :) ) | 599 data This is the data table supplied to the scrolling table (in case you lost it :) ) |
587 local function eoi_st_OnEnter (rowFrame, cellFrame, data, cols, row, realrow, column, table, button, ...) | 607 local function eoi_st_OnEnter (rowFrame, cellFrame, data, cols, row, realrow, column, table, button, ...) |
588 if (row == nil) or (realrow == nil) then return end -- mouseover column header | 608 if (row == nil) or (realrow == nil) then return end -- mouseover column header |
589 local e = data[realrow] | 609 local e = data[realrow] |
590 local kind = e.kind | 610 local kind = e.kind |
591 | 611 |
592 if kind == 'loot' and column == 1 then | 612 if (kind == 'loot' and column == 1) or (kind == 'history' and column == 2) then |
593 GameTooltip:SetOwner (cellFrame, "ANCHOR_RIGHT", -20, 0) | 613 if e.itemlink then |
594 GameTooltip:SetHyperlink (e.itemlink) | 614 GameTooltip:SetOwner (cellFrame, "ANCHOR_RIGHT", -20, 0) |
615 GameTooltip:SetHyperlink (e.itemlink) | |
616 end | |
595 | 617 |
596 elseif kind == 'loot' and column == 2 then | 618 elseif kind == 'loot' and column == 2 then |
597 GameTooltip:SetOwner (cellFrame, "ANCHOR_BOTTOMRIGHT", -50, 5) | 619 GameTooltip:SetOwner (cellFrame, "ANCHOR_BOTTOMRIGHT", -50, 5) |
598 GameTooltip:ClearLines() | 620 GameTooltip:ClearLines() |
599 GameTooltip:AddLine(e.person.." Loot:") | 621 GameTooltip:AddLine(e.person.." Loot:") |
636 if (row == nil) or (realrow == nil) then return true end -- click column header, suppress reordering | 658 if (row == nil) or (realrow == nil) then return true end -- click column header, suppress reordering |
637 local e = data[realrow] | 659 local e = data[realrow] |
638 local kind = e.kind | 660 local kind = e.kind |
639 | 661 |
640 -- Check for shift-clicking a loot line | 662 -- Check for shift-clicking a loot line |
641 if IsModifiedClick("CHATLINK") and kind == 'loot' and column == 1 then | 663 if IsModifiedClick("CHATLINK") and |
664 ((kind == 'loot' and column == 1) or (kind == 'history' and column == 2)) | |
665 then | |
642 ChatEdit_InsertLink (e.itemlink) | 666 ChatEdit_InsertLink (e.itemlink) |
643 return true -- do not do anything further | 667 return true -- do not do anything further |
644 end | 668 end |
645 | 669 |
646 -- Remaining actions are all right-click | 670 -- Remaining actions are all right-click |
680 | 704 |
681 elseif kind == 'time' then | 705 elseif kind == 'time' then |
682 eoi_time_dropdown[1].text = e.startday.text | 706 eoi_time_dropdown[1].text = e.startday.text |
683 EasyMenu (eoi_time_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU") | 707 EasyMenu (eoi_time_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU") |
684 | 708 |
709 elseif kind == 'history' then -- XXX need to move this into new onclick handler | |
710 _d:SetUserData("DD loot cell", cellFrame) | |
711 hist_dropdown[1].text = e.itemlink | |
712 EasyMenu (hist_dropdown, dropdownmenuframe, cellFrame, 0, 0, "MENU") | |
685 end | 713 end |
686 | 714 |
687 return true -- do not do anything further | 715 return true -- do not do anything further |
688 end | 716 end |
689 | 717 |
1192 return addon:redisplay() | 1220 return addon:redisplay() |
1193 end) | 1221 end) |
1194 specials:AddChild(b) | 1222 specials:AddChild(b) |
1195 | 1223 |
1196 b = mkbutton('hist_clear', "Clear Realm History", | 1224 b = mkbutton('hist_clear', "Clear Realm History", |
1197 [[No confirmation! |cffff1010Erases absolutely all> history entries from the displayed realm.]]) | 1225 [[|cffff1010Erases absolutely all> history entries from the displayed realm.]]) |
1198 b:SetFullWidth(true) | 1226 b:SetFullWidth(true) |
1199 b:SetCallback("OnClick", function (_b) | 1227 b:SetCallback("OnClick", function (_b) |
1200 reset_current_realm(addon.history.realm) | 1228 local dialog = StaticPopup_Show("OUROL_HIST_CLEAR", addon.history.realm) |
1201 addon:Print("Stimpy, you eeediot, you've pushed the history erase button!") | 1229 dialog.data = addon |
1202 return addon:redisplay() | 1230 dialog.data2 = function(_addon) |
1231 reset_current_realm(_addon.history.realm) | |
1232 end | |
1203 end) | 1233 end) |
1204 specials:AddChild(b) | 1234 specials:AddChild(b) |
1205 | 1235 |
1206 b = mkbutton('hist_clear_all', "Clear All History", | 1236 b = mkbutton('hist_clear_all', "Clear All History", |
1207 [[No confirmation! |cffff1010Erases absolutely all> history entries from ALL realms.]]) | 1237 [[|cffff1010Erases absolutely all> history entries from ALL realms.]]) |
1208 b:SetFullWidth(true) | 1238 b:SetFullWidth(true) |
1209 b:SetCallback("OnClick", function (_b) | 1239 b:SetCallback("OnClick", function (_b) |
1210 addon.history_all = {} | 1240 local dialog = StaticPopup_Show("OUROL_HIST_CLEAR", "ALL realms") |
1211 reset_current_realm() | 1241 dialog.data = addon |
1212 addon:Print("Stimpy, you eeediot, you've pushed the history erase button!") | 1242 dialog.data2 = function(_addon) |
1213 return addon:redisplay() | 1243 _addon.history_all = {} |
1244 reset_current_realm() | |
1245 end | |
1214 end) | 1246 end) |
1215 specials:AddChild(b) | 1247 specials:AddChild(b) |
1216 | 1248 |
1217 b = mkbutton('hist_clear_old', "Clear Older", | 1249 b = mkbutton('hist_clear_old', "Clear Older", |
1218 [[Preserves only the latest loot entry for each player on the displayed realm, removing all earlier ones.]]) | 1250 [[Preserves only the latest loot entry for each player on the displayed realm, removing all earlier ones.]]) |
1219 b:SetFullWidth(true) | 1251 b:SetFullWidth(true) |
1220 b:SetCallback("OnClick", function (_b) | 1252 b:SetCallback("OnClick", function (_b) |
1221 addon:preen_history(addon.history.realm) | 1253 local dialog = StaticPopup_Show("OUROL_HIST_PREEN", addon.history.realm) |
1222 addon:Print("All loot prior to the most recent entries has been erased.") | 1254 dialog.data = addon |
1223 addon.hist_clean = nil | 1255 dialog.data2 = function(_addon) |
1224 histST:OuroLoot_Refresh() | 1256 _addon:preen_history(_addon.history.realm) |
1225 return addon:redisplay() | 1257 _addon.hist_clean = nil |
1258 histST:OuroLoot_Refresh() | |
1259 end | |
1226 end) | 1260 end) |
1227 specials:AddChild(b) | 1261 specials:AddChild(b) |
1228 end | 1262 end |
1229 return tabs_OnGroupSelected["hist"](container,specials) | 1263 return tabs_OnGroupSelected["hist"](container,specials) |
1230 end | 1264 end |
1460 | 1494 |
1461 -- The relative width fields used to be done to take up less vertical space, but | 1495 -- The relative width fields used to be done to take up less vertical space, but |
1462 -- that turned out to look messy. Now they're just a straight line for the most part. | 1496 -- that turned out to look messy. Now they're just a straight line for the most part. |
1463 | 1497 |
1464 -- reminder popup | 1498 -- reminder popup |
1465 w = mkoption ('popup_on_join', "Show reminder popup", 0.95, | 1499 w = mkoption ('popup_on_join', "Show reminder popup", 0.49, |
1466 [[When joining a raid and not already tracking, display a dialog asking for instructions.]]) | 1500 [[When joining a raid and not already tracking, display a dialog asking for instructions.]]) |
1467 grp:AddChild(w) | 1501 grp:AddChild(w) |
1468 | 1502 |
1469 -- toggle scroll-to-bottom on first tab | 1503 -- toggle scroll-to-bottom on first tab |
1470 w = mkoption('scroll_to_bottom', "Scroll to bottom when opening display", 0.95, | 1504 w = mkoption('scroll_to_bottom', "Scroll to bottom when opening display", 0.49, |
1471 [[Scroll to the bottom of the loot window (most recent entries) when displaying the GUI.]]) | 1505 [[Scroll to the bottom of the loot window (most recent entries) when displaying the GUI.]]) |
1472 grp:AddChild(w) | 1506 grp:AddChild(w) |
1473 | 1507 |
1474 -- /loot option | 1508 -- /loot option |
1475 w = mkoption('register_slashloot', "Register /loot slash command on login", 0.95, | 1509 w = mkoption('register_slashloot', "Register /loot slash command on login", 0.49, |
1476 [[Register "/loot" as a slash command in addition to the normal "/ouroloot". Relog to take effect.]]) | 1510 [[Register "/loot" as a slash command in addition to the normal "/ouroloot". Relog to take effect.]]) |
1477 grp:AddChild(w) | 1511 grp:AddChild(w) |
1478 | 1512 |
1479 -- chatty mode | 1513 -- chatty mode |
1480 w = mkoption('chatty_on_kill', "Be chatty on boss kill", 0.95, | 1514 w = mkoption('chatty_on_kill', "Be chatty on boss kill", 0.49, |
1481 [[Print something to chat output when DBM tells Ouro Loot about a successful boss kill.]]) | 1515 [[Print something to chat output when DBM tells Ouro Loot about a successful boss kill.]]) |
1482 grp:AddChild(w) | 1516 grp:AddChild(w) |
1483 | 1517 |
1484 -- less noise in main panel | 1518 -- less noise in main panel |
1485 w = mkoption('no_tracking_wipes', "Do not track wipes", 0.95, | 1519 w = mkoption('no_tracking_wipes', "Do not track wipes", 0.49, |
1486 [[Do not add 'wipe' entries on the main loot grid, or generate any text for them.]]) | 1520 [[Do not add 'wipe' entries on the main loot grid, or generate any text for them.]]) |
1487 grp:AddChild(w) | 1521 grp:AddChild(w) |
1488 | 1522 |
1489 -- cutesy abbrevs | 1523 -- cutesy abbrevs |
1490 w = mkoption('snarky_boss', "Use snarky boss names", 0.95, | 1524 w = mkoption('snarky_boss', "Use snarky boss names", 0.49, |
1491 [[Irreverent replacement names for boss events.]]) | 1525 [[Irreverent replacement names for boss events.]]) |
1492 grp:AddChild(w) | 1526 grp:AddChild(w) |
1493 | 1527 |
1494 -- possible keybindings | 1528 -- possible keybindings |
1495 do | 1529 do |
1699 _d = display | 1733 _d = display |
1700 self.display = display | 1734 self.display = display |
1701 display:SetTitle("Ouro Loot") | 1735 display:SetTitle("Ouro Loot") |
1702 display:SetStatusText(self.status_text) | 1736 display:SetStatusText(self.status_text) |
1703 display:SetLayout("Flow") | 1737 display:SetLayout("Flow") |
1704 display:SetStatusTable{width=900} | 1738 display:SetStatusTable{width=900,height=550} -- default height is 500 |
1705 -- prevent resizing, also see ace3 tickets 80 and 214 | 1739 -- prevent resizing, also see ace3 tickets 80 and 214 |
1706 -- grrrr, no longer works after frame rewrite | 1740 -- grrrr, no longer works after frame rewrite |
1707 --[[ | 1741 --[[ |
1708 display.sizer_se:SetScript("OnMouseDown",nil) | 1742 display.sizer_se:SetScript("OnMouseDown",nil) |
1709 display.sizer_se:SetScript("OnMouseUp",nil) | 1743 display.sizer_se:SetScript("OnMouseUp",nil) |
1778 end) | 1812 end) |
1779 control:AddChild(b) | 1813 control:AddChild(b) |
1780 | 1814 |
1781 b = GUI:Create("Spacer") | 1815 b = GUI:Create("Spacer") |
1782 b:SetFullWidth(true) | 1816 b:SetFullWidth(true) |
1783 b:SetHeight(15) | 1817 b:SetHeight(10) |
1784 control:AddChild(b) | 1818 control:AddChild(b) |
1785 | 1819 |
1786 --[[ | 1820 --[[ |
1787 --- Saved Texts --- | 1821 --- Saved Texts --- |
1788 [ Save Current As... ] | 1822 [ Save Current As... ] |
1802 StaticPopup_Show "OUROL_SAVE_SAVEAS" | 1836 StaticPopup_Show "OUROL_SAVE_SAVEAS" |
1803 _d:Hide() | 1837 _d:Hide() |
1804 end) | 1838 end) |
1805 control:AddChild(b) | 1839 control:AddChild(b) |
1806 | 1840 |
1807 local saved = self:check_saved_table(--[[silent_on_empty=]]true) | 1841 do |
1808 if saved then for i,s in ipairs(saved) do | 1842 local scontainer = GUI:Create("SimpleGroup") |
1809 local il = GUI:Create("InteractiveLabel") | 1843 scontainer:SetFullWidth(true) |
1810 il:SetFullWidth(true) | 1844 scontainer:SetFullHeight(false) |
1811 il:SetText(s.name) | 1845 scontainer:SetAutoAdjustHeight(false) |
1812 il:SetUserData("num",i) | 1846 scontainer:SetHeight(40) -- no relative height available anymore |
1813 il:SetHighlight(1,1,1,0.4) | 1847 scontainer:SetLayout("Fill") |
1814 local str = ("%s %d entries %s"):format(s.date,s.count,s.name) | 1848 local scroll = GUI:Create("ScrollFrame") |
1815 il:SetCallback("OnEnter", function() setstatus(str) end) | 1849 scroll:SetLayout("List") |
1816 il:SetCallback("OnLeave", statusy_OnLeave) | 1850 local saved = self:check_saved_table(--[[silent_on_empty=]]true) |
1817 il:SetCallback("OnClick", function(_il) | 1851 if saved then for i,s in ipairs(saved) do |
1818 local prev = _d:GetUserData("saved selection") | 1852 local il = GUI:Create("InteractiveLabel") |
1819 if prev then | 1853 il:SetFullWidth(true) |
1820 prev.highlight:Hide() | 1854 il:SetText(s.name) |
1821 prev:SetColor() | 1855 il:SetUserData("num",i) |
1822 end | 1856 il:SetHighlight(1,1,1,0.4) |
1823 _il:SetColor(0,1,0) | 1857 local str = ("%s %d entries %s"):format(s.date,s.count,s.name) |
1824 _il.highlight:Show() | 1858 il:SetCallback("OnEnter", function() setstatus(str) end) |
1825 _d:SetUserData("saved selection",_il) | 1859 il:SetCallback("OnLeave", statusy_OnLeave) |
1826 _d:GetUserData("Load"):SetDisabled(false) | 1860 il:SetCallback("OnClick", function(_il) |
1827 _d:GetUserData("Delete"):SetDisabled(false) | 1861 local prev = _d:GetUserData("saved selection") |
1828 end) | 1862 if prev then |
1829 control:AddChild(il) | 1863 prev.highlight:Hide() |
1830 end end | 1864 prev:SetColor() |
1865 end | |
1866 _il:SetColor(0,1,0) | |
1867 _il.highlight:Show() | |
1868 _d:SetUserData("saved selection",_il) | |
1869 _d:GetUserData("Load"):SetDisabled(false) | |
1870 _d:GetUserData("Delete"):SetDisabled(false) | |
1871 end) | |
1872 scroll:AddChild(il) | |
1873 end end | |
1874 scontainer:AddChild(scroll) | |
1875 control:AddChild(scontainer) | |
1876 end | |
1831 | 1877 |
1832 b = mkbutton("Load", | 1878 b = mkbutton("Load", |
1833 [[Load previously saved text. +REPLACES> all current loot information!]]) | 1879 [[Load previously saved text. +REPLACES> all current loot information!]]) |
1834 b:SetRelativeWidth(0.5) | 1880 b:SetRelativeWidth(0.5) |
1835 b:SetCallback("OnClick", function() | 1881 b:SetCallback("OnClick", function() |
1850 b:SetDisabled(true) | 1896 b:SetDisabled(true) |
1851 control:AddChild(b) | 1897 control:AddChild(b) |
1852 | 1898 |
1853 b = GUI:Create("Spacer") | 1899 b = GUI:Create("Spacer") |
1854 b:SetFullWidth(true) | 1900 b:SetFullWidth(true) |
1855 b:SetHeight(15) | 1901 b:SetHeight(10) |
1856 control:AddChild(b) | 1902 control:AddChild(b) |
1857 | 1903 |
1858 -- Other stuff on right-hand side | 1904 -- Other stuff on right-hand side |
1859 local tab_specials = GUI:Create("SimpleGroup") | 1905 local tab_specials = GUI:Create("SimpleGroup") |
1860 tab_specials:SetLayout("Flow") | 1906 tab_specials:SetLayout("Flow") |
1928 dialog.data = nil -- free up memory | 1974 dialog.data = nil -- free up memory |
1929 addon:Print("Inserted %s %s (entry %d).", data.kind, data.name, data.rowindex) | 1975 addon:Print("Inserted %s %s (entry %d).", data.kind, data.name, data.rowindex) |
1930 return | 1976 return |
1931 end | 1977 end |
1932 | 1978 |
1933 local text = dialog.wideEditBox:GetText() | 1979 local text = dialog.editBox:GetText() |
1934 | 1980 |
1935 -- second click | 1981 -- second click |
1936 if data.name and text then | 1982 if data.name and text then |
1937 data.instance = text | 1983 data.instance = text |
1938 data.all_done = true | 1984 data.all_done = true |
1943 -- first click | 1989 -- first click |
1944 if text then | 1990 if text then |
1945 data.name = text | 1991 data.name = text |
1946 local getinstance = StaticPopup_Show("OUROL_EOI_INSERT","instance") | 1992 local getinstance = StaticPopup_Show("OUROL_EOI_INSERT","instance") |
1947 getinstance.data = data | 1993 getinstance.data = data |
1948 getinstance.wideEditBox:SetText(addon.instance_tag()) | 1994 getinstance.editBox:SetText(addon.instance_tag()) |
1949 -- This suppresses auto-hide (which would case the getinstance dialog | 1995 -- This suppresses auto-hide (which would case the getinstance dialog |
1950 -- to go away), but only when mouse clicking. OnEnter is on its own. | 1996 -- to go away), but only when mouse clicking. OnEnter is on its own. |
1951 return true | 1997 return true |
1952 end | 1998 end |
1953 end | 1999 end |
1967 dialog.data = nil | 2013 dialog.data = nil |
1968 addon:Print("Inserted %s %s (entry %d).", data.kind, data.name, data.rowindex) | 2014 addon:Print("Inserted %s %s (entry %d).", data.kind, data.name, data.rowindex) |
1969 return | 2015 return |
1970 end | 2016 end |
1971 | 2017 |
1972 local text = dialog.wideEditBox:GetText():trim() | 2018 local text = dialog.editBox:GetText():trim() |
1973 | 2019 |
1974 -- third click | 2020 -- third click |
1975 if data.name and data.recipient and text then | 2021 if data.name and data.recipient and text then |
1976 data.notes = (text ~= "<none>") and text or nil | 2022 data.notes = (text ~= "<none>") and text or nil |
1977 data.all_done = true | 2023 data.all_done = true |
1981 -- second click | 2027 -- second click |
1982 if data.name and text then | 2028 if data.name and text then |
1983 data.recipient = text | 2029 data.recipient = text |
1984 local getnotes = StaticPopup_Show("OUROL_EOI_INSERT","notes") | 2030 local getnotes = StaticPopup_Show("OUROL_EOI_INSERT","notes") |
1985 getnotes.data = data | 2031 getnotes.data = data |
1986 getnotes.wideEditBox:SetText("<none>") | 2032 getnotes.editBox:SetText("<none>") |
1987 getnotes.wideEditBox:HighlightText() | 2033 getnotes.editBox:HighlightText() |
1988 return true | 2034 return true |
1989 end | 2035 end |
1990 | 2036 |
1991 -- first click | 2037 -- first click |
1992 if text then | 2038 if text then |
1993 data.name = text | 2039 data.name = text |
1994 dialog:Hide() -- technically a "different" one about to be shown | 2040 dialog:Hide() -- technically a "different" one about to be shown |
1995 local getrecipient = StaticPopup_Show("OUROL_EOI_INSERT","recipient") | 2041 local getrecipient = StaticPopup_Show("OUROL_EOI_INSERT","recipient") |
1996 getrecipient.data = data | 2042 getrecipient.data = data |
1997 getrecipient.wideEditBox:SetText("") | 2043 getrecipient.editBox:SetText("") |
1998 return true | 2044 return true |
1999 end | 2045 end |
2000 end | 2046 end |
2001 | 2047 |
2002 local function eoi_st_insert_OnAccept (dialog, data) | 2048 local function eoi_st_insert_OnAccept (dialog, data) |
2007 end | 2053 end |
2008 end | 2054 end |
2009 | 2055 |
2010 StaticPopupDialogs["OUROL_CLEAR"] = flib.StaticPopup{ | 2056 StaticPopupDialogs["OUROL_CLEAR"] = flib.StaticPopup{ |
2011 text = "Clear current loot information and text?", | 2057 text = "Clear current loot information and text?", |
2012 button1 = ACCEPT, | 2058 button1 = YES, |
2013 button2 = CANCEL, | 2059 button2 = NO, |
2014 OnAccept = function (dialog, addon) | 2060 OnAccept = function (dialog, addon) |
2015 addon:Clear(--[[verbose_p=]]true) | 2061 addon:Clear(--[[verbose_p=]]true) |
2062 end, | |
2063 } | |
2064 | |
2065 StaticPopupDialogs["OUROL_HIST_CLEAR"] = flib.StaticPopup{ | |
2066 text = "Erase all history entries from %s?", | |
2067 button1 = YES, | |
2068 button2 = NO, | |
2069 OnAccept = function (dialog, addon, data2) | |
2070 data2(addon) | |
2071 addon:Print("Stimpy, you eeediot, you've pushed the history erase button!") | |
2072 addon:redisplay() | |
2073 end, | |
2074 } | |
2075 | |
2076 StaticPopupDialogs["OUROL_HIST_PREEN"] = flib.StaticPopup{ | |
2077 text = "Erase all but the latest entry for players on %s?", | |
2078 button1 = YES, | |
2079 button2 = NO, | |
2080 OnAccept = function (dialog, addon, data2) | |
2081 data2(addon) | |
2082 addon:Print("All loot prior to the most recent entries has been erased.") | |
2083 addon:redisplay() | |
2016 end, | 2084 end, |
2017 } | 2085 } |
2018 | 2086 |
2019 StaticPopupDialogs["OUROL_REMIND"] = flib.StaticPopup{ | 2087 StaticPopupDialogs["OUROL_REMIND"] = flib.StaticPopup{ |
2020 text = "Do you wish to activate Ouro Loot?\n\n(Hit the Escape key to close this window without clicking)", | 2088 text = "Do you wish to activate Ouro Loot?\n\n(Hit the Escape key to close this window without clicking)", |
2048 local t = flib.StaticPopup{ | 2116 local t = flib.StaticPopup{ |
2049 text = "Enter name of new %s, then click Next or press Enter:", | 2117 text = "Enter name of new %s, then click Next or press Enter:", |
2050 button1 = "Next >", | 2118 button1 = "Next >", |
2051 button2 = CANCEL, | 2119 button2 = CANCEL, |
2052 hasEditBox = true, | 2120 hasEditBox = true, |
2053 hasWideEditBox = true, | 2121 editBoxWidth = 350, |
2054 maxLetters = 50, | 2122 maxLetters = 50, |
2055 noCancelOnReuse = true, | 2123 noCancelOnReuse = true, |
2056 --[[ XXX still needed? | 2124 --[[ XXX still needed? |
2057 OnShow = function(dialog) | 2125 OnShow = function(dialog) |
2058 dialog.wideEditBox:SetText("") | 2126 dialog.wideEditBox:SetText("") |
2079 StaticPopupDialogs["OUROL_EOI_INSERT_LOOT"] = setmetatable(OEIL,OEIL) | 2147 StaticPopupDialogs["OUROL_EOI_INSERT_LOOT"] = setmetatable(OEIL,OEIL) |
2080 | 2148 |
2081 hooksecurefunc("ChatEdit_InsertLink", function (link,...) | 2149 hooksecurefunc("ChatEdit_InsertLink", function (link,...) |
2082 local dialogname = StaticPopup_Visible "OUROL_EOI_INSERT_LOOT" | 2150 local dialogname = StaticPopup_Visible "OUROL_EOI_INSERT_LOOT" |
2083 if dialogname then | 2151 if dialogname then |
2084 _G[dialogname.."WideEditBox"]:SetText(link) | 2152 _G[dialogname.."EditBox"]:SetText(link) |
2085 return true | 2153 return true |
2086 end | 2154 end |
2087 end) | 2155 end) |
2088 end | 2156 end |
2089 | 2157 |
2099 end,]] | 2167 end,]] |
2100 OnAccept = function(dialog, data) | 2168 OnAccept = function(dialog, data) |
2101 local name = dialog.usertext --editBox:GetText() | 2169 local name = dialog.usertext --editBox:GetText() |
2102 g_loot[data.index].person = name | 2170 g_loot[data.index].person = name |
2103 g_loot[data.index].person_class = select(2,UnitClass(name)) | 2171 g_loot[data.index].person_class = select(2,UnitClass(name)) |
2172 -- FIXME also update history | |
2104 addon:Print("Reassigned entry %d to '%s'.", data.index, name) | 2173 addon:Print("Reassigned entry %d to '%s'.", data.index, name) |
2105 data.display:GetUserData("eoiST"):OuroLoot_Refresh(data.index) | 2174 data.display:GetUserData("eoiST"):OuroLoot_Refresh(data.index) |
2106 end, | 2175 end, |
2107 } | 2176 } |
2108 | 2177 |