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.
81 lines
2.5 KiB
81 lines
2.5 KiB
local _, MDT = ...
|
|
local AceGUI = LibStub("AceGUI-3.0")
|
|
local conflictFrame
|
|
local L = MDT.L
|
|
|
|
-- In DungeonTools case the AddOn has not been updated in over a year and has caused many users to be
|
|
-- confused about MDT not working. This will prompt users to remove the abandoned AddOn and prevent them
|
|
-- from opening up a broken instance.
|
|
|
|
local candidates = {
|
|
["DungeonTools"] = {
|
|
name = "Dungeon Tools";
|
|
detected = false;
|
|
onDetect = function()
|
|
SLASH_DUNGEONTOOLS1 = "/mplus"
|
|
SLASH_DUNGEONTOOLS2 = "/mdt"
|
|
SLASH_DUNGEONTOOLS3 = "/dungeontools"
|
|
function SlashCmdList.DUNGEONTOOLS(cmd, editbox)
|
|
MDT:ShowInterface()
|
|
end
|
|
|
|
local ldb = LibStub("LibDBIcon-1.0")
|
|
ldb.objects["DungeonTools"]:SetScript("OnClick", function() MDT:ShowInterface() end)
|
|
end
|
|
}
|
|
}
|
|
|
|
local conflictCheckFrame = CreateFrame("Frame")
|
|
conflictCheckFrame:RegisterEvent("ADDON_LOADED")
|
|
conflictCheckFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
|
|
conflictCheckFrame:SetScript("OnEvent", function(self, event, ...)
|
|
if event == "ADDON_LOADED" then
|
|
local addonName = ...
|
|
if candidates[addonName] then
|
|
candidates[addonName].detected = true
|
|
end
|
|
end
|
|
if event == "PLAYER_ENTERING_WORLD" then
|
|
-- fire onDetect for all candidates that have been detected
|
|
for _, candidate in pairs(candidates) do
|
|
if candidate.detected then
|
|
candidate.onDetect()
|
|
end
|
|
end
|
|
conflictCheckFrame:UnregisterEvent("ADDON_LOADED")
|
|
conflictCheckFrame:UnregisterEvent("PLAYER_ENTERING_WORLD")
|
|
end
|
|
end)
|
|
|
|
function MDT:CheckAddonConflicts()
|
|
for _, candidate in pairs(candidates) do
|
|
if candidate.detected then
|
|
return true
|
|
end
|
|
end
|
|
return false
|
|
end
|
|
|
|
function MDT:ShowConflictFrame()
|
|
if not conflictFrame then
|
|
conflictFrame = AceGUI:Create("Frame")
|
|
conflictFrame:EnableResize(false)
|
|
conflictFrame:SetLayout("Flow")
|
|
conflictFrame:SetCallback("OnClose", function(widget) end)
|
|
conflictFrame:SetTitle(L["Addon Conflict"])
|
|
|
|
conflictFrame.label = AceGUI:Create("Label")
|
|
conflictFrame.label:SetWidth(390)
|
|
local labelText = L["conflictPrompt"]
|
|
-- add all conflicting addons to the text in red color
|
|
for _, candidate in pairs(candidates) do
|
|
if candidate.detected then
|
|
labelText = labelText .. "\n|cFFFF0000" .. candidate.name .. "|r"
|
|
end
|
|
end
|
|
|
|
conflictFrame.label:SetText(labelText)
|
|
conflictFrame:AddChild(conflictFrame.label)
|
|
end
|
|
conflictFrame:Show()
|
|
end
|
|
|