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
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")
|
|
|