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.

104 lines
4.5 KiB

local isRetail = WOW_PROJECT_ID == (WOW_PROJECT_MAINLINE or 1)
local L = DBM_GUI_L
local generalWarningPanel = DBM_GUI.Cat_Alerts:CreateNewPanel(L.Tab_GeneralMessages, "option")
local selectChatFrameArea = generalWarningPanel:CreateArea(L.SelectChatFrameArea)
local selectFrameButton = selectChatFrameArea:CreateButton(L.SelectChatFrameButton, 96, 22)
selectFrameButton:SetPoint("LEFT", selectChatFrameArea.frame, "LEFT", 10, 0)
local selectFrameInfo = selectChatFrameArea:CreateText(nil, nil, nil, nil, nil, 0)
selectFrameInfo:SetPoint("LEFT", selectFrameButton, "RIGHT", 10, 0)
local function findChatFrameUnderCursor()
local f = EnumerateFrames()
while f do
if not f:IsProtected() and not f:IsForbidden() then
if f:GetName() and f:GetName():match("^ChatFrame") and f:IsMouseOver() and f:IsVisible() then
local id = f:GetName():match("ChatFrame(%d+)")
id = tonumber(id)
if id and _G["ChatFrame" .. id] then
return "ChatFrame" .. id
end
end
end
f = EnumerateFrames(f)
end
end
local function updateChatInfoText()
selectFrameInfo:SetText(L.SelectChatFrameInfoIdle:format(
DBM.Options.ChatFrame == "DEFAULT_CHAT_FRAME" and L.SelectChatFrameDefaultName
or HIGHLIGHT_FONT_COLOR:WrapTextInColorCode(DBM.Options.ChatFrame)
or HIGHLIGHT_FONT_COLOR:WrapTextInColorCode(DBM_COMMON_L.UNKNOWN)
))
selectFrameInfo:GetWidth() -- this somehow fixes a bug that the updated text sometimes doesn't show
end
updateChatInfoText()
local selectingChatFrame = false
selectFrameButton:SetScript("OnShow", updateChatInfoText)
selectFrameButton:SetScript("OnHide", function() selectingChatFrame = false end)
selectFrameButton:SetScript("OnClick", function() selectingChatFrame = true end)
selectFrameButton:SetScript("OnEvent", function(self, event)
if selectingChatFrame and event == "GLOBAL_MOUSE_DOWN" then
local newFrame = findChatFrameUnderCursor()
if newFrame then
DBM.Options.ChatFrame = newFrame
DBM:AddMsg(L.SelectChatFrameInfoDone, nil, nil, true)
updateChatInfoText()
selectingChatFrame = false
end
end
end)
local lastText
selectFrameButton:SetScript("OnUpdate", function()
if not selectingChatFrame then return end
local newFrame = findChatFrameUnderCursor()
local newText
if newFrame then
newText = L.SelectChatFrameInfoSelectNow:format(HIGHLIGHT_FONT_COLOR:WrapTextInColorCode(newFrame))
else
newText = L.SelectChatFrameInfoSelect
end
if newText ~= lastText then
lastText = newText
selectFrameInfo:SetText(newText)
selectFrameInfo:GetWidth() -- this somehow fixes a bug that the updated text sometimes doesn't show
end
end)
selectFrameButton:RegisterEvent("GLOBAL_MOUSE_DOWN")
local resetbutton = selectChatFrameArea:CreateButton(L.Reset, 120, 16)
resetbutton:SetPoint("BOTTOMRIGHT", selectChatFrameArea.frame, "BOTTOMRIGHT", -2, 4)
resetbutton:SetNormalFontObject(GameFontNormalSmall)
resetbutton:SetHighlightFontObject(GameFontNormalSmall)
resetbutton:SetScript("OnClick", function()
-- Set Options
DBM.Options.ChatFrame = DBM.DefaultOptions.ChatFrame
-- Set UI visuals
updateChatInfoText()
end)
local generalCoreArea = generalWarningPanel:CreateArea(L.CoreMessages)
generalCoreArea:CreateCheckButton(L.ShowPizzaMessage, true, nil, "ShowPizzaMessage")
generalCoreArea:CreateCheckButton(L.ShowAllVersions, true, nil, "ShowAllVersions")
generalCoreArea:CreateCheckButton(L.ShowReminders, true, nil, "ShowReminders")
local generalMessagesArea = generalWarningPanel:CreateArea(L.CombatMessages)
generalMessagesArea:CreateCheckButton(L.ShowEngageMessage, true, nil, "ShowEngageMessage")
generalMessagesArea:CreateCheckButton(L.ShowDefeatMessage, true, nil, "ShowDefeatMessage")
generalMessagesArea:CreateCheckButton(L.ShowGuildMessages, true, nil, "ShowGuildMessages")
if isRetail then
generalMessagesArea:CreateCheckButton(L.ShowGuildMessagesPlus, true, nil, "ShowGuildMessagesPlus")
end
local generalExtraAlerts = generalWarningPanel:CreateArea(L.Area_ChatAlerts)
if isRetail then
generalExtraAlerts:CreateCheckButton(L.RoleSpecAlert, true, nil, "RoleSpecAlert")
generalExtraAlerts:CreateCheckButton(L.CheckGear, true, nil, "CheckGear")
else
generalExtraAlerts:CreateCheckButton(L.WorldBuffAlert, true, nil, "WorldBuffAlert")
end
generalExtraAlerts:CreateCheckButton(L.WorldBossAlert, true, nil, "WorldBossAlert")
local generalBugsAlerts = generalWarningPanel:CreateArea(L.Area_BugAlerts)
generalBugsAlerts:CreateCheckButton(L.BadTimerAlert, true, nil, "BadTimerAlert")