Mercurial > wow > ouroloot
comparison gui.lua @ 103:dc8a23a47b03
- Add 'chatprefix' function for building loot line jump links, and a
'PCFPrint' method which displays them.
- Make use of them for local and remote notifications, boss kills,
and manual insertions.
- Document the additional slash commands and args feature from previous
release. Oops. (Text mostly copied from webpage announcement.)
author | Farmbuyer of US-Kilrogg <farmbuyer@gmail.com> |
---|---|
date | Sun, 05 Aug 2012 07:26:06 +0000 |
parents | a57133ee3c9b |
children | 04198c8d0717 |
comparison
equal
deleted
inserted
replaced
102:fe04f5c4114a | 103:dc8a23a47b03 |
---|---|
470 for li,unique in ipairs(player.unique) do | 470 for li,unique in ipairs(player.unique) do |
471 local col2 = new() | 471 local col2 = new() |
472 col2.OLi = li | 472 col2.OLi = li |
473 col2.OLu = unique | 473 col2.OLu = unique |
474 local col3 = new() | 474 local col3 = new() |
475 col3.value = player.when[unique] | 475 col3.value = assert(player.when[unique]) |
476 | 476 |
477 local id = player.id[unique] | 477 local id = assert(player.id[unique]) |
478 local itexture = GetItemIcon(id) | 478 local itexture = GetItemIcon(id) |
479 local iname, ilink, iquality = GetItemInfo(id) | 479 local iname, ilink, iquality = GetItemInfo(id) |
480 local textured | 480 local textured |
481 if itexture and iname then | 481 if itexture and iname then |
482 textured = eoi_st_textured_item_format:format (itexture, | 482 textured = eoi_st_textured_item_format:format (itexture, |
1082 ... Any arguments generated by the '''NORMAL''' Blizzard event triggered by the frame are passed as is. | 1082 ... Any arguments generated by the '''NORMAL''' Blizzard event triggered by the frame are passed as is. |
1083 ]] | 1083 ]] |
1084 local function eoi_st_OnEnter (rowFrame, cellFrame, data, cols, row, realrow, column, stable, motion) | 1084 local function eoi_st_OnEnter (rowFrame, cellFrame, data, cols, row, realrow, column, stable, motion) |
1085 if (row == nil) or (realrow == nil) then return end -- mouseover column header | 1085 if (row == nil) or (realrow == nil) then return end -- mouseover column header |
1086 local e = data[realrow] | 1086 local e = data[realrow] |
1087 if e == nil then return end -- something horrible has happened | |
1087 local kind = e.kind | 1088 local kind = e.kind |
1088 local tt = GameTooltip -- can this be hoisted? does GT ever get securely replaced? | 1089 local tt = GameTooltip -- can this be hoisted? does GT ever get securely replaced? |
1089 | 1090 |
1090 if gui._do_debugging_tooltip and column == 1 and kind ~= 'hist' then | 1091 if gui._do_debugging_tooltip and column == 1 and kind ~= 'hist' then |
1091 _build_debugging_tooltip (cellFrame, realrow) | 1092 _build_debugging_tooltip (cellFrame, realrow) |
1132 return false -- continue with default highlighting behavior | 1133 return false -- continue with default highlighting behavior |
1133 end | 1134 end |
1134 local function eoi_st_OnLeave (rowFrame, cellFrame, data, cols, row, realrow, column, stable, motion) | 1135 local function eoi_st_OnLeave (rowFrame, cellFrame, data, cols, row, realrow, column, stable, motion) |
1135 GameTooltip:Hide() | 1136 GameTooltip:Hide() |
1136 _hide_debugging_tooltip() | 1137 _hide_debugging_tooltip() |
1137 if row and realrow and data[realrow].kind ~= 'loot' then | 1138 if (row == nil) or (realrow == nil) then return false end |
1138 stable:SetHighLightColor (rowFrame, eoi_st_otherrow_bgcolortable[data[realrow].reason or data[realrow].kind]) | 1139 |
1140 if stable:GetSelection() ~= realrow then | |
1141 if data[realrow].kind ~= 'loot' then | |
1142 stable:SetHighLightColor (rowFrame, eoi_st_otherrow_bgcolortable[data[realrow].reason or data[realrow].kind]) | |
1143 return true -- do not do anything further | |
1144 else | |
1145 return false -- continue with default un-highlighting behavior | |
1146 end | |
1147 else | |
1139 return true -- do not do anything further | 1148 return true -- do not do anything further |
1140 else | |
1141 --setstatus("") | |
1142 return false -- continue with default un-highlighting behavior | |
1143 end | 1149 end |
1144 end | 1150 end |
1145 | 1151 |
1146 local function eoi_st_OnClick (rowFrame, cellFrame, data, cols, row, realrow, column, stable, button, down) | 1152 local function eoi_st_OnClick (rowFrame, cellFrame, data, cols, row, realrow, column, stable, button, down) |
1147 if (row == nil) or (realrow == nil) then return true end -- click column header, suppress reordering | 1153 if (row == nil) or (realrow == nil) then return true end -- click column header, suppress reordering |
1152 if IsModifiedClick("CHATLINK") and kind == 'loot' and column == 1 | 1158 if IsModifiedClick("CHATLINK") and kind == 'loot' and column == 1 |
1153 then | 1159 then |
1154 ChatEdit_InsertLink (e.itemlink) | 1160 ChatEdit_InsertLink (e.itemlink) |
1155 return true -- do not do anything further | 1161 return true -- do not do anything further |
1156 end | 1162 end |
1163 | |
1164 -- Zap any jump-to-line highlighting | |
1165 stable:ClearSelection() | |
1157 | 1166 |
1158 -- Remaining actions are all right-click | 1167 -- Remaining actions are all right-click |
1159 if button ~= "RightButton" then return true end | 1168 if button ~= "RightButton" then return true end |
1160 _d:SetUserData("DD index", realrow) | 1169 _d:SetUserData("DD index", realrow) |
1161 | 1170 |
1257 end | 1266 end |
1258 | 1267 |
1259 return true -- do not do anything further | 1268 return true -- do not do anything further |
1260 end | 1269 end |
1261 | 1270 |
1271 -- Used for anything not overridden elsewhere. | |
1272 local function eoi_st_default_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable) | |
1273 if not fShow then | |
1274 cellFrame.text:SetText("") | |
1275 if cellFrame.icontexture then | |
1276 cellFrame.icontexture:Hide() | |
1277 end | |
1278 return | |
1279 end | |
1280 | |
1281 local e = data[realrow] | |
1282 local cell = e.cols[column] | |
1283 | |
1284 cellFrame.text:SetText(cell.value) | |
1285 -- subset of what the default ST's docellupdate looks for | |
1286 local color = cols[column].color and cols[column].color(data,cols,realrow,column,stable) | |
1287 if color then | |
1288 cellFrame.text:SetTextColor(color.r,color.g,color.b,color.a) | |
1289 else | |
1290 cellFrame.text:SetTextColor(1,1,1,1) | |
1291 end | |
1292 | |
1293 if stable:GetSelection() ~= realrow then | |
1294 stable:SetHighLightColor (rowFrame, eoi_st_otherrow_bgcolortable[e.reason or e.kind or ""]) | |
1295 else | |
1296 stable:SetHighLightColor (rowFrame, stable:GetDefaultHighlight()) | |
1297 end | |
1298 end | |
1299 | |
1262 -- Used for EOI column 2 and Hist column 1. Both are player name columns. | 1300 -- Used for EOI column 2 and Hist column 1. Both are player name columns. |
1263 local function eoi_st_col2_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable) | 1301 local function eoi_st_col2_DoCellUpdate (rowFrame, cellFrame, data, cols, row, realrow, column, fShow, stable) |
1264 if not fShow then | 1302 if not fShow then |
1265 cellFrame.text:SetText("") | 1303 cellFrame.text:SetText("") |
1266 if cellFrame.icontexture then | 1304 if cellFrame.icontexture then |
1297 cellFrame.text:SetPoint("LEFT", cellFrame, "LEFT") | 1335 cellFrame.text:SetPoint("LEFT", cellFrame, "LEFT") |
1298 end | 1336 end |
1299 cellFrame.text:SetTextColor(1,1,1,1) | 1337 cellFrame.text:SetTextColor(1,1,1,1) |
1300 end | 1338 end |
1301 | 1339 |
1302 --if e.kind ~= 'loot' then | 1340 if stable:GetSelection() ~= realrow then |
1303 stable:SetHighLightColor (rowFrame, eoi_st_otherrow_bgcolortable[e.reason or e.kind or ""]) | 1341 stable:SetHighLightColor (rowFrame, eoi_st_otherrow_bgcolortable[e.reason or e.kind or ""]) |
1304 --else | 1342 else |
1305 -- stable:SetHighLightColor (rowFrame, table:GetDefaultHighlightBlank()) | 1343 stable:SetHighLightColor (rowFrame, stable:GetDefaultHighlight()) |
1306 --end | 1344 end |
1307 end | 1345 end |
1308 | 1346 |
1309 local eoi_st_cols = { | 1347 local eoi_st_cols = { |
1310 { -- col 1 | 1348 { -- col 1 |
1311 name = "Item", | 1349 name = "Item", |
1344 gui.eoiST = assert(ST) | 1382 gui.eoiST = assert(ST) |
1345 if addon.author_debug then | 1383 if addon.author_debug then |
1346 _G.OLST = ST | 1384 _G.OLST = ST |
1347 end | 1385 end |
1348 | 1386 |
1387 ST.DoCellUpdate = eoi_st_default_DoCellUpdate | |
1349 if not eoi_st_otherrow_bgcolortable_default then | 1388 if not eoi_st_otherrow_bgcolortable_default then |
1350 eoi_st_otherrow_bgcolortable_default = ST:GetDefaultHighlightBlank() | 1389 eoi_st_otherrow_bgcolortable_default = ST:GetDefaultHighlightBlank() |
1351 setmetatable(eoi_st_otherrow_bgcolortable, {__index = function (bg, key) | 1390 setmetatable(eoi_st_otherrow_bgcolortable, {__index = function (bg, key) |
1352 return eoi_st_otherrow_bgcolortable_default | 1391 return eoi_st_otherrow_bgcolortable_default |
1353 end}) | 1392 end}) |
1365 tabledump(e) | 1404 tabledump(e) |
1366 end | 1405 end |
1367 end | 1406 end |
1368 -- safety check end | 1407 -- safety check end |
1369 ST:SetData(g_loot) | 1408 ST:SetData(g_loot) |
1409 ST:EnableSelection(true) | |
1370 ST:RegisterEvents{ | 1410 ST:RegisterEvents{ |
1371 OnEnter = eoi_st_OnEnter, | 1411 OnEnter = eoi_st_OnEnter, |
1372 OnLeave = eoi_st_OnLeave, | 1412 OnLeave = eoi_st_OnLeave, |
1373 OnClick = eoi_st_OnClick, | 1413 OnClick = eoi_st_OnClick, |
1374 OnDoubleClick = eoi_st_OnDoubleClick, | 1414 OnDoubleClick = eoi_st_OnDoubleClick, |
1486 noob_tips["eoi"] = _markup[[ | 1526 noob_tips["eoi"] = _markup[[ |
1487 <Shift-Left> while over an item link to paste it into chat. | 1527 <Shift-Left> while over an item link to paste it into chat. |
1488 | 1528 |
1489 <Right>-click any row to display a dropdown menu. The menu is different for | 1529 <Right>-click any row to display a dropdown menu. The menu is different for |
1490 the Player column than it is for the Item/Notes columns, and different for | 1530 the Player column than it is for the Item/Notes columns, and different for |
1491 loot entries than it is for other rows.]] | 1531 loot entries than it is for other rows. |
1492 --tabs_CLI_special["eoi"] = function (name) | 1532 |
1493 -- -- try and scroll to a specific boss/player? | 1533 A normal click on a line will remove any highlighting from opening the |
1494 --end | 1534 display from a chat link.]] |
1535 tabs_CLI_special["eoi"] = function (name_or_lineno) | |
1536 if type(name_or_lineno) == 'string' then | |
1537 -- uh | |
1538 elseif type(name_or_lineno) == 'number' then | |
1539 if name_or_lineno < 1 or name_or_lineno > #g_loot then | |
1540 return | |
1541 end | |
1542 local scrollhere = -9 | |
1543 repeat | |
1544 scrollhere = scrollhere + 10 | |
1545 gui.eoiST.offset = scrollhere | |
1546 until gui.eoiST:RowIsVisible(name_or_lineno) | |
1547 -- Value must be in pixels, not "how many rows" | |
1548 scrollhere = scrollhere * eoi_st_rowheight | |
1549 -- But not past the bottom, it looks ugly | |
1550 scrollhere = math.min (scrollhere, | |
1551 (#gui.eoiST.filtered - eoi_st_displayed_rows) * eoi_st_rowheight) | |
1552 gui.eoiST:SetSelection(name_or_lineno) | |
1553 local sf = gui.eoiST.scrollframe | |
1554 sf:GetScript("OnVerticalScroll")(sf,scrollhere) | |
1555 end | |
1556 end | |
1495 | 1557 |
1496 | 1558 |
1497 -- Tab 2/3 (generated text) | 1559 -- Tab 2/3 (generated text) |
1498 function tabs_generated_text_OGS (container, specials, text_kind) | 1560 function tabs_generated_text_OGS (container, specials, text_kind) |
1499 container:SetLayout("Fill") | 1561 container:SetLayout("Fill") |
2217 -- Essentially a re-click on the current tab (if the current tab were clickable). | 2279 -- Essentially a re-click on the current tab (if the current tab were clickable). |
2218 function addon:redisplay () | 2280 function addon:redisplay () |
2219 tabs_OnGroupSelected_func (unpack(tabs_OnGroupSelected_func_args)) | 2281 tabs_OnGroupSelected_func (unpack(tabs_OnGroupSelected_func_args)) |
2220 end | 2282 end |
2221 | 2283 |
2284 function addon:GoToLootLine (line) | |
2285 local lineno = tonumber(self.lootjumps[line]) | |
2286 self:OpenMainDisplayToTab ("Loot", lineno) | |
2287 end | |
2288 | |
2222 | 2289 |
2223 ------ Popup dialogs | 2290 ------ Popup dialogs |
2224 local function build_my_slider_widget() | 2291 local function build_my_slider_widget() |
2225 local s = CreateFrame("Slider", "OuroLootSlider", nil, "OptionsSliderTemplate") | 2292 local s = CreateFrame("Slider", "OuroLootSlider", nil, "OptionsSliderTemplate") |
2226 s.text = OuroLootSliderText | 2293 s.text = OuroLootSliderText |
2398 } | 2465 } |
2399 local entry = tremove(g_loot,boss_index) | 2466 local entry = tremove(g_loot,boss_index) |
2400 tinsert(g_loot,data.rowindex,entry) | 2467 tinsert(g_loot,data.rowindex,entry) |
2401 addon:_mark_boss_kill(data.rowindex) | 2468 addon:_mark_boss_kill(data.rowindex) |
2402 gui.eoiST:OuroLoot_Refresh(data.rowindex) | 2469 gui.eoiST:OuroLoot_Refresh(data.rowindex) |
2470 local jumpprefix = addon.chatprefix ("GoToLootLine", data.rowindex) | |
2403 dialog.data = nil -- free up memory | 2471 dialog.data = nil -- free up memory |
2404 addon:Print("Inserted %s %s at entry %d.", data.kind, data.name, data.rowindex) | 2472 addon:PCFPrint (_G.DEFAULT_CHAT_FRAME, jumpprefix, |
2473 "Inserted %s %s at entry %d.", | |
2474 data.kind, data.name, data.rowindex) | |
2405 return | 2475 return |
2406 end | 2476 end |
2407 | 2477 |
2408 -- third click | 2478 -- third click |
2409 if data.name and data.instance then | 2479 if data.name and data.instance then |
2450 local entry = tremove(g_loot,loot_index) | 2520 local entry = tremove(g_loot,loot_index) |
2451 tinsert(g_loot,data.rowindex,entry) | 2521 tinsert(g_loot,data.rowindex,entry) |
2452 addon:_fill_out_eoi_data(data.rowindex) | 2522 addon:_fill_out_eoi_data(data.rowindex) |
2453 addon:BuildMainDisplay() | 2523 addon:BuildMainDisplay() |
2454 local clicky = _new_rebroadcast_hyperlink (entry.unique) | 2524 local clicky = _new_rebroadcast_hyperlink (entry.unique) |
2525 local jumpprefix = addon.chatprefix ("GoToLootLine", data.rowindex) | |
2455 dialog.data = nil | 2526 dialog.data = nil |
2456 addon:Print ("Inserted %s %s at entry %d. %s", | 2527 addon:PCFPrint (_G.DEFAULT_CHAT_FRAME, jumpprefix, |
2528 "Inserted %s %s at entry %d. %s", | |
2457 data.kind, data.name, data.rowindex, tostring(clicky)) | 2529 data.kind, data.name, data.rowindex, tostring(clicky)) |
2458 return | 2530 return |
2459 end | 2531 end |
2460 | 2532 |
2461 local text = dialog.editBox:GetText():trim() | 2533 local text = dialog.editBox:GetText():trim() |