Files
wow-weakauras/Complete Projects/BFA/Whoa/CTRL c to copy wowhead link to quest.lua
2024-08-24 22:43:07 +02:00

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)