73 lines
1.9 KiB
Lua
73 lines
1.9 KiB
Lua
local baseUrl = "https://www.wowhead.com/"
|
|
local keybind = "CTRL-C"
|
|
local popupText = "Wowhead %s Link\n" .. keybind .. " to copy"
|
|
|
|
local typeAttributeMap = {
|
|
quest = {"id", "questId", "questID"},
|
|
item = {info = {"id"}}
|
|
}
|
|
|
|
|
|
local function ShowUrlPopup(id, type)
|
|
if not (id or type) then return end
|
|
local url = baseUrl .. type .. "=" .. id
|
|
StaticPopup_Show("WowheadQuestLinkUrl", type:sub(1, 1):upper() .. type:sub(2), _, url)
|
|
end
|
|
|
|
|
|
local function getIdAndType(focus)
|
|
local function loop(focus, keys)
|
|
if not focus then return end
|
|
for key, value in pairs(keys) do
|
|
if type(value) == "table" then
|
|
return loop(focus[key], value)
|
|
end
|
|
local id = focus[value]
|
|
if id then
|
|
return id
|
|
end
|
|
end
|
|
end
|
|
if not focus then return end
|
|
for type, keys in pairs(typeAttributeMap) do
|
|
local id = loop(focus, keys)
|
|
if id then
|
|
return id, type
|
|
end
|
|
end
|
|
return getIdAndType(focus:GetParent())
|
|
end
|
|
|
|
|
|
local function run()
|
|
local focus = GetMouseFocus()
|
|
local id, type = getIdAndType(focus)
|
|
ShowUrlPopup(id, type)
|
|
end
|
|
|
|
|
|
StaticPopupDialogs["WowheadQuestLinkUrl"] = {
|
|
text = popupText,
|
|
button1 = "Close",
|
|
OnShow = function(self, data)
|
|
local function HidePopup(self) self:GetParent():Hide() end
|
|
self.editBox:SetScript("OnEscapePressed", HidePopup)
|
|
self.editBox:SetScript("OnEnterPressed", HidePopup)
|
|
self.editBox:SetMaxLetters(0)
|
|
self.editBox:SetText(data)
|
|
self.editBox:HighlightText(0, self.editBox:GetNumLetters())
|
|
end,
|
|
hasEditBox = true,
|
|
editBoxWidth = 233,
|
|
timeout = 0,
|
|
whileDead = true,
|
|
hideOnEscape = true,
|
|
preferredIndex = 3,
|
|
}
|
|
|
|
|
|
local btn = CreateFrame("BUTTON", "KeybindBtn")
|
|
SetBindingClick(keybind, btn:GetName())
|
|
btn:SetScript("OnClick", run)
|
|
|