You still don't say what you want to see when a link is clicked so, using the code you linked and guessing you just want to see the item tooltip when a link is clicked:
The
item field added to each entry in addon.db is the (random because I don't know that acual) item ID that will be the link/tooltip (replacing the
%s in each
announce.enUS field).
db.lua file
Lua Code:
local addonName, addon = ...
addon.db = {
{
name = "Emerald Mark of Mastery",
questID = 75612,
icon = "interface/icons/inv_mushroom_11",
item = 210399,
announce = {
enUS = "Awarded for outstanding service to Dragonkind.\n%s\nBring it to Theozhaklos the Curious at the Wellspring \nOverlook in the Emerald Dream to receive powerful \nequipment for your efforts"
}
},
{
name = "Emerald Mark of Mastery",
questID = 75624,
icon = "interface/icons/inv_mushroom_11",
item = 20897,
announce = {
enUS = "Awarded for outstanding service to Dragonkind.\n%s\nBring it to Theozhaklos the Curious at the Wellspring \nOverlook in the Emerald Dream to receive powerful \nequipment for your efforts"
}
},
{
name = "Emerald Mark of Mastery",
questID = 74352,
icon = "interface/icons/inv_mushroom_11",
item = 193440,
announce = {
enUS = "Awarded for outstanding service to Dragonkind.\n%s\nBring it to Theozhaklos the Curious at the Wellspring \nOverlook in the Emerald Dream to receive powerful \nequipment for your efforts"
}
}
}
---------------------------------------------------------------------------------------------------
-- Code to replace %s in announce texts with item links. Replaces the GetItemLinkById(...) function
local function LoadItem(item)
for k, v in pairs(addon.db[item.dbID].announce) do -- replace the %s with the itemlink in eal locale in the .announce key
addon.db[item.dbID].announce[k] = format(v, item:GetItemLink())
end
end
for i, v in ipairs(addon.db) do
local item = Item:CreateFromItemID(v.item)
item.dbID = i
item:ContinueOnItemLoad(function() LoadItem(item) end)
end
Lua Code file:
Lua Code:
local addonName, addon = ...
-- function to show the item tooltip when a hyperlink is clicked
local function OnHyperlinkClick(self, link, text, region, left, bottom, width, heigh) -- Show the hyperling tooltip when clicked
SetItemRef(link, text, nil, self);
end
local CELL_WIDTH = 400
local CELL_HEIGHT = 80
local NUM_CELLS = 2
local data = {}
local f = CreateFrame("Frame", "SimpleScrollFrameTableDemo", UIParent, "BasicFrameTemplateWithInset")
-- Create the button here
local btn = CreateFrame("Button", nil, UIParent, "UIPanelButtonTemplate")
local function updateData() --commented out because addon.db hasn't been created... in the code at least
wipe(data)
for _, item in ipairs(addon.db) do
tinsert(data, {item.announce[GetLocale()], item.icon, item.name})
end
end
f:SetSize(CELL_WIDTH * NUM_CELLS + 80, 600)
f:SetPoint("CENTER")
f:Hide()
f:SetMovable(true)
f:SetScript("OnMouseDown", f.StartMoving)
f:SetScript("OnMouseUp", f.StopMovingOrSizing)
-- I added this OnHide script
f:SetScript("OnHide", function()
btn:Show()
end)
f.scrollFrame = CreateFrame("ScrollFrame", nil, f, "UIPanelScrollFrameTemplate")
f.scrollFrame:SetPoint("TOPLEFT", 12, -32)
f.scrollFrame:SetPoint("BOTTOMRIGHT", -34, 8)
f.scrollFrame.scrollChild = CreateFrame("Frame", nil, f.scrollFrame)
f.scrollFrame.scrollChild:SetSize(100, 100)
f.scrollFrame.scrollChild:SetPoint("TOPLEFT", 5, -5)
f.scrollFrame:SetScrollChild(f.scrollFrame.scrollChild)
local content = f.scrollFrame.scrollChild
content.rows = {}
local function updateList()
for i = 1, #data do
if not content.rows[i] then
local button = CreateFrame("Button", nil, content)
button:SetSize(CELL_WIDTH * NUM_CELLS, CELL_HEIGHT)
button:SetPoint("TOPLEFT", 0, -(i - 1) * CELL_HEIGHT)
button.columns = {}
---------------------------------------------------------------------------------------------------
-- code to make item links work
button:SetHyperlinksEnabled(true) -- Setup hyperlinking for each row
button:SetScript("OnHyperlinkClick", OnHyperlinkClick) -- What to do when a link is clicked
---------------------------------------------------------------------------------------------------
button.columns[1] = button:CreateFontString(nil, "ARTWORK", "GameFontHighlight")
button.columns[1]:SetPoint("LEFT", (0) * CELL_WIDTH, 0)
button.columns[2] = button:CreateTexture()
button.columns[2]:SetPoint("LEFT", 410, 0, (1) * CELL_WIDTH, 0)
button.columns[3] = button:CreateFontString(nil, "ARTWORK", "GameFontHighlight")
button.columns[3]:SetPoint("LEFT", 480, 0, (2) * CELL_WIDTH, 0)
content.rows[i] = button
end
content.rows[i].columns[1]:SetText(data[i][1])
content.rows[i].columns[2]:SetTexture(data[i][2])
content.rows[i].columns[3]:SetText(data[i][3])
content.rows[i]:Show()
end
for i = #data + 1, #content.rows do
content.rows[i]:Hide()
end
end
-- Set your button options here
local btn = CreateFrame("Button", "Hubb777MovingButton", UIParent, "UIPanelButtonTemplate")
btn:SetPoint("CENTER")
btn:SetSize(100, 40)
btn:SetText("Click me")
btn:SetMovable(true)
btn:RegisterForDrag('LeftButton')
btn:RegisterForClicks("AnyDown", "AnyUp")
btn:SetUserPlaced(true)
btn:SetScript('OnDragStart', function(self, button, down)
if button == "LeftButton" and IsShiftKeyDown() then
self:StartMoving()
end
end)
btn:SetScript('OnDragStop', function(self)
self:StopMovingOrSizing()
end)
btn:SetScript("OnMouseUp", function(self, button, ...)
if (button == "RightButton" and self:IsVisible()) then
self:Hide()
elseif button == "LeftButton" and not IsShiftKeyDown() then
updateData()
updateList()
f:Show()
end
end)
SLASH_HUBB1 = "/hubb"
SlashCmdList["HUBB"] = function(msg)
if strupper(strtrim(msg)) == "BTN" then -- toggle the shown state of the button if the type /hubb btn
btn:SetShown(not btn:IsShown()) -- show the button
return
end
updateData()
updateList()
f:Show()
end
To show/hide the button: