You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
336 lines
12 KiB
336 lines
12 KiB
-- ========================================================================= --
|
|
-- SylingTracker --
|
|
-- https://www.curseforge.com/wow/addons/sylingtracker --
|
|
-- --
|
|
-- Repository: --
|
|
-- https://github.com/Skamer/SylingTracker --
|
|
-- --
|
|
-- ========================================================================= --
|
|
Syling "SylingTracker.ContextMenuPatterns" ""
|
|
-- ========================================================================= --
|
|
import "SLT"
|
|
-- ========================================================================= --
|
|
export {
|
|
RegisterContextMenuPattern = API.RegisterContextMenuPattern,
|
|
|
|
-- Shared
|
|
ChatFrame_OpenChat = ChatFrame_OpenChat,
|
|
|
|
-- Quest
|
|
IsWorldQuest = QuestUtils_IsQuestWorldQuest,
|
|
GetSuperTrackedQuestID = C_SuperTrack.GetSuperTrackedQuestID,
|
|
SetSuperTrackedQuestID = C_SuperTrack.SetSuperTrackedQuestID,
|
|
QuestSuperTracking_ChooseClosestQuest = QuestSuperTracking_ChooseClosestQuest,
|
|
GetQuestLink = GetQuestLink,
|
|
QuestLogPopupDetailFrame_Show = QuestLogPopupDetailFrame_Show,
|
|
ShowQuestComplete = ShowQuestComplete,
|
|
LFGListUtil_FindQuestGroup = LFGListUtil_FindQuestGroup,
|
|
RemoveQuestWatch = C_QuestLog.RemoveQuestWatch,
|
|
QuestMapQuestOptions_AbandonQuest = QuestMapQuestOptions_AbandonQuest,
|
|
|
|
-- Achievement
|
|
GetAchievementLink = GetAchievementLink,
|
|
RemoveTrackedAchievement = RemoveTrackedAchievement,
|
|
|
|
-- Helper
|
|
ShowHelperWindow = API.ShowHelperWindow
|
|
}
|
|
-- ========================================================================= --
|
|
local HELPER_QUEST_TYPE = "quest"
|
|
local HELPER_ACHIEVEMENT_TYPE = "achievement"
|
|
-- ========================================================================= --
|
|
-- Quest Pattern
|
|
-- ========================================================================= --
|
|
do
|
|
local questPattern = ContextMenuPattern()
|
|
RegisterContextMenuPattern("quest", questPattern)
|
|
|
|
-- The supertracking part
|
|
local supertrack = ContextMenuPatternItemInfo()
|
|
supertrack.id = "supertrack-quest"
|
|
supertrack.text = "Supertrack"
|
|
supertrack.order = 10
|
|
supertrack.icon = { atlas = AtlasType("Target-Tracker")}
|
|
supertrack.isShown = function(questID)
|
|
local supertrackQuestID = GetSuperTrackedQuestID()
|
|
if supertrackQuestID and supertrackQuestID == questID then
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
supertrack.handler = function(questID) SetSuperTrackedQuestID(questID) end
|
|
questPattern:AddAction(supertrack)
|
|
|
|
local stopSupertracking = ContextMenuPatternItemInfo()
|
|
stopSupertracking.id = "stop-supertracking-quest"
|
|
stopSupertracking.text = "Stop supertracking"
|
|
stopSupertracking.order = 10
|
|
stopSupertracking.icon = { atlas = AtlasType("Target-Tracker")}
|
|
stopSupertracking.isShown = function(questID)
|
|
local supertrackQuestID = GetSuperTrackedQuestID()
|
|
if supertrackQuestID and supertrackQuestID == questID then
|
|
return true
|
|
end
|
|
|
|
return false
|
|
end
|
|
stopSupertracking.handler = function()
|
|
SetSuperTrackedQuestID(0)
|
|
QuestSuperTracking_ChooseClosestQuest()
|
|
end
|
|
questPattern:AddAction(stopSupertracking)
|
|
|
|
-- Add Separator
|
|
questPattern:AddSeparator(15)
|
|
|
|
-- The link to chat part
|
|
local linkToChat = ContextMenuPatternItemInfo()
|
|
linkToChat.id = "link-quest-to-chat"
|
|
linkToChat.text = "Link to chat"
|
|
linkToChat.order = 20
|
|
linkToChat.icon = { atlas = AtlasType("communities-icon-chat")}
|
|
linkToChat.handler = function(questID) ChatFrame_OpenChat(GetQuestLink(questID)) end
|
|
questPattern:AddAction(linkToChat)
|
|
|
|
-- The show details part
|
|
local showDetails = ContextMenuPatternItemInfo()
|
|
showDetails.id = "show-quest-details"
|
|
showDetails.text = "Show details"
|
|
showDetails.order = 30
|
|
showDetails.icon = { atlas = AtlasType("adventureguide-icon-whatsnew")}
|
|
showDetails.handler = function(questID)
|
|
local quest = QuestCache:Get(questID)
|
|
if quest.isAutoComplete and quest:IsComplete() then
|
|
ShowQuestComplete(questID)
|
|
else
|
|
QuestLogPopupDetailFrame_Show(quest:GetQuestLogIndex())
|
|
end
|
|
end
|
|
questPattern:AddAction(showDetails)
|
|
|
|
-- Add Separator
|
|
questPattern:AddSeparator(35)
|
|
|
|
-- The find a group part
|
|
local findAGroup = ContextMenuPatternItemInfo()
|
|
findAGroup.id = "find-a-group"
|
|
findAGroup.text = "Find a group"
|
|
findAGroup.order = 40
|
|
findAGroup.icon = { atlas = AtlasType("socialqueuing-icon-group")}
|
|
findAGroup.handler = function(questID) LFGListUtil_FindQuestGroup(questID) end
|
|
|
|
questPattern:AddAction(findAGroup)
|
|
|
|
-- Add Separator
|
|
questPattern:AddSeparator(45)
|
|
|
|
-- The unwatch quest part
|
|
local stopWatching = ContextMenuPatternItemInfo()
|
|
stopWatching.id = "stop-watching-quest"
|
|
stopWatching.text = "Stop watching"
|
|
stopWatching.order = 50
|
|
stopWatching.icon = { atlas = AtlasType("transmog-icon-hidden") }
|
|
stopWatching.handler = function(questID) RemoveQuestWatch(questID) end
|
|
questPattern:AddAction(stopWatching)
|
|
|
|
-- The abandon quest part
|
|
local abandon = ContextMenuPatternItemInfo()
|
|
abandon.id = "abandon-quest"
|
|
abandon.text = "Abandon"
|
|
abandon.order = 60
|
|
abandon.icon = { atlas = AtlasType("transmog-icon-remove") }
|
|
abandon.handler = function(questID) QuestMapQuestOptions_AbandonQuest(questID) end
|
|
questPattern:AddAction(abandon)
|
|
|
|
-- Add Separator
|
|
questPattern:AddSeparator(65)
|
|
|
|
--- The help part
|
|
local help = ContextMenuPatternItemInfo()
|
|
help.id = "help-quest"
|
|
help.text = "Help"
|
|
help.order = 70
|
|
help.icon = { atlas = AtlasType("QuestTurnin") }
|
|
help.handler = function(questID) ShowHelperWindow(HELPER_QUEST_TYPE, questID) end
|
|
questPattern:AddAction(help)
|
|
end
|
|
-- ========================================================================= --
|
|
-- World Quest Pattern
|
|
-- ========================================================================= --
|
|
do
|
|
local worldQuestPattern = ContextMenuPattern()
|
|
RegisterContextMenuPattern("world-quest", worldQuestPattern)
|
|
|
|
-- The link to chat part
|
|
local linkToChat = ContextMenuPatternItemInfo()
|
|
linkToChat.id = "link-quest-to-chat"
|
|
linkToChat.text = "Link to chat"
|
|
linkToChat.order = 10
|
|
linkToChat.icon = { atlas = AtlasType("communities-icon-chat")}
|
|
linkToChat.handler = function(questID) ChatFrame_OpenChat(GetQuestLink(questID)) end
|
|
worldQuestPattern:AddAction(linkToChat)
|
|
|
|
-- The show details part
|
|
local showDetails = ContextMenuPatternItemInfo()
|
|
showDetails.id = "show-quest-details"
|
|
showDetails.text = "Show details"
|
|
showDetails.order = 20
|
|
showDetails.icon = { atlas = AtlasType("adventureguide-icon-whatsnew")}
|
|
showDetails.handler = function(questID)
|
|
local quest = QuestCache:Get(questID)
|
|
if quest.isAutoComplete and quest:IsComplete() then
|
|
ShowQuestComplete(questID)
|
|
else
|
|
QuestLogPopupDetailFrame_Show(quest:GetQuestLogIndex())
|
|
end
|
|
end
|
|
worldQuestPattern:AddAction(showDetails)
|
|
|
|
-- Add Separator
|
|
worldQuestPattern:AddSeparator(25)
|
|
|
|
-- The find a group part
|
|
local findAGroup = ContextMenuPatternItemInfo()
|
|
findAGroup.id = "find-a-group"
|
|
findAGroup.text = "Find a group"
|
|
findAGroup.order = 30
|
|
findAGroup.icon = { atlas = AtlasType("socialqueuing-icon-group")}
|
|
findAGroup.handler = function(questID) LFGListUtil_FindQuestGroup(questID) end
|
|
|
|
worldQuestPattern:AddAction(findAGroup)
|
|
|
|
-- Add Separator
|
|
worldQuestPattern:AddSeparator(35)
|
|
|
|
--- The help part
|
|
local help = ContextMenuPatternItemInfo()
|
|
help.id = "help-quest"
|
|
help.text = "Help"
|
|
help.order = 40
|
|
help.icon = { atlas = AtlasType("QuestTurnin") }
|
|
help.handler = function(questID) ShowHelperWindow(HELPER_QUEST_TYPE, questID) end
|
|
worldQuestPattern:AddAction(help)
|
|
end
|
|
|
|
-- ========================================================================= --
|
|
-- World Quest Pattern
|
|
-- ========================================================================= --
|
|
do
|
|
local taskPattern = ContextMenuPattern()
|
|
RegisterContextMenuPattern("task", taskPattern)
|
|
|
|
-- The link to chat part
|
|
local linkToChat = ContextMenuPatternItemInfo()
|
|
linkToChat.id = "link-quest-to-chat"
|
|
linkToChat.text = "Link to chat"
|
|
linkToChat.order = 10
|
|
linkToChat.icon = { atlas = AtlasType("communities-icon-chat")}
|
|
linkToChat.handler = function(questID) ChatFrame_OpenChat(GetQuestLink(questID)) end
|
|
taskPattern:AddAction(linkToChat)
|
|
|
|
-- The show details part
|
|
local showDetails = ContextMenuPatternItemInfo()
|
|
showDetails.id = "show-quest-details"
|
|
showDetails.text = "Show details"
|
|
showDetails.order = 20
|
|
showDetails.icon = { atlas = AtlasType("adventureguide-icon-whatsnew")}
|
|
showDetails.handler = function(questID)
|
|
local quest = QuestCache:Get(questID)
|
|
if quest.isAutoComplete and quest:IsComplete() then
|
|
ShowQuestComplete(questID)
|
|
else
|
|
QuestLogPopupDetailFrame_Show(quest:GetQuestLogIndex())
|
|
end
|
|
end
|
|
taskPattern:AddAction(showDetails)
|
|
|
|
-- Add Separator
|
|
taskPattern:AddSeparator(25)
|
|
|
|
-- The find a group part
|
|
local findAGroup = ContextMenuPatternItemInfo()
|
|
findAGroup.id = "find-a-group"
|
|
findAGroup.text = "Find a group"
|
|
findAGroup.order = 30
|
|
findAGroup.icon = { atlas = AtlasType("socialqueuing-icon-group")}
|
|
findAGroup.handler = function(questID) LFGListUtil_FindQuestGroup(questID) end
|
|
|
|
taskPattern:AddAction(findAGroup)
|
|
|
|
-- Add Separator
|
|
taskPattern:AddSeparator(35)
|
|
|
|
--- The help part
|
|
local help = ContextMenuPatternItemInfo()
|
|
help.id = "help-quest"
|
|
help.text = "Help"
|
|
help.order = 40
|
|
help.icon = { atlas = AtlasType("QuestTurnin") }
|
|
help.handler = function(questID) ShowHelperWindow(HELPER_QUEST_TYPE, questID) end
|
|
taskPattern:AddAction(help)
|
|
end
|
|
-- ========================================================================= --
|
|
-- Achievement Pattern
|
|
-- ========================================================================= --
|
|
do
|
|
local achievementPattern = ContextMenuPattern()
|
|
RegisterContextMenuPattern("achievement", achievementPattern)
|
|
|
|
-- The link to chat part
|
|
local linkToChat = ContextMenuPatternItemInfo()
|
|
linkToChat.id = "link-achievement-to-chat"
|
|
linkToChat.text = "Link to chat"
|
|
linkToChat.order = 10
|
|
linkToChat.icon = { atlas = AtlasType("communities-icon-chat")}
|
|
linkToChat.handler = function(achievementID)
|
|
local achievementLink = GetAchievementLink(achievementID);
|
|
if achievementLink then
|
|
ChatFrame_OpenChat(achievementLink);
|
|
end
|
|
end
|
|
achievementPattern:AddAction(linkToChat)
|
|
|
|
-- The show details part
|
|
local showDetails = ContextMenuPatternItemInfo()
|
|
showDetails.id = "show-achievement-details"
|
|
showDetails.text = "Show details"
|
|
showDetails.order = 20
|
|
showDetails.icon = { atlas = AtlasType("adventureguide-icon-whatsnew")}
|
|
showDetails.handler = function(achievementID)
|
|
if not AchievementFrame then
|
|
AchievementFrame_LoadUI()
|
|
end
|
|
if not AchievementFrame:IsShown() then
|
|
AchievementFrame_ToggleAchievementFrame()
|
|
end
|
|
AchievementFrame_SelectAchievement(achievementID)
|
|
end
|
|
achievementPattern:AddAction(showDetails)
|
|
|
|
-- Add Separator
|
|
achievementPattern:AddSeparator(25)
|
|
|
|
-- The unwatch quest part
|
|
local stopWatching = ContextMenuPatternItemInfo()
|
|
stopWatching.id = "stop-watching-achievement"
|
|
stopWatching.text = "Stop watching"
|
|
stopWatching.order = 30
|
|
stopWatching.icon = { atlas = AtlasType("transmog-icon-hidden") }
|
|
stopWatching.handler = function(achievementID)
|
|
RemoveTrackedAchievement(achievementID)
|
|
end
|
|
achievementPattern:AddAction(stopWatching)
|
|
|
|
-- Add Separator
|
|
achievementPattern:AddSeparator(35)
|
|
|
|
--- The help part
|
|
local help = ContextMenuPatternItemInfo()
|
|
help.id = "help-achievement"
|
|
help.text = "Help"
|
|
help.order = 40
|
|
help.icon = { atlas = AtlasType("QuestTurnin") }
|
|
help.handler = function(achievementID) ShowHelperWindow(HELPER_ACHIEVEMENT_TYPE, achievementID) end
|
|
achievementPattern:AddAction(help)
|
|
end
|
|
|