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.

114 lines
4.2 KiB

local L = DBM_CORE_L
---@class DBM
local DBM = DBM
local frame, fontstring, fontstringFooter, editBox, urlText
local function CreateOurFrame()
---@class DBMUpdateFrame: Frame, BackdropTemplate
frame = CreateFrame("Frame", "DBMUpdateReminder", UIParent, "BackdropTemplate")
frame:SetFrameStrata("FULLSCREEN_DIALOG") -- yes, this isn't a fullscreen dialog, but I want it to be in front of other DIALOG frames (like DBM GUI which might open this frame...)
frame:SetWidth(430)
frame:SetHeight(100)
frame:SetPoint("TOP", 0, -230)
frame.backdropInfo = {
bgFile = "Interface\\DialogFrame\\UI-DialogBox-Background-Dark", -- ????
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", -- 131072
tile = true,
tileSize = 32,
edgeSize = 32,
insets = { left = 11, right = 12, top = 12, bottom = 11 },
}
frame:ApplyBackdrop()
fontstring = frame:CreateFontString(nil, "ARTWORK", "GameFontNormal")
fontstring:SetWidth(410)
fontstring:SetHeight(0)
fontstring:SetPoint("TOP", 0, -16)
editBox = CreateFrame("EditBox", nil, frame)
do
local editBoxLeft = editBox:CreateTexture(nil, "BACKGROUND")
editBoxLeft:SetTexture(130959)--"Interface\\ChatFrame\\UI-ChatInputBorder-Left"
editBoxLeft:SetHeight(32)
editBoxLeft:SetWidth(32)
editBoxLeft:SetPoint("LEFT", -14, 0)
editBoxLeft:SetTexCoord(0, 0.125, 0, 1)
local editBoxRight = editBox:CreateTexture(nil, "BACKGROUND")
editBoxRight:SetTexture(130960)--"Interface\\ChatFrame\\UI-ChatInputBorder-Right"
editBoxRight:SetHeight(32)
editBoxRight:SetWidth(32)
editBoxRight:SetPoint("RIGHT", 6, 0)
editBoxRight:SetTexCoord(0.875, 1, 0, 1)
local editBoxMiddle = editBox:CreateTexture(nil, "BACKGROUND")
editBoxMiddle:SetTexture(130960)--"Interface\\ChatFrame\\UI-ChatInputBorder-Right"
editBoxMiddle:SetHeight(32)
editBoxMiddle:SetWidth(1)
editBoxMiddle:SetPoint("LEFT", editBoxLeft, "RIGHT")
editBoxMiddle:SetPoint("RIGHT", editBoxRight, "LEFT")
editBoxMiddle:SetTexCoord(0, 0.9375, 0, 1)
end
editBox:SetHeight(32)
editBox:SetWidth(250)
editBox:SetPoint("TOP", fontstring, "BOTTOM", 0, -4)
editBox:SetFontObject(GameFontHighlight)
editBox:SetTextInsets(0, 0, 0, 1)
editBox:SetFocus()
editBox:SetScript("OnTextChanged", function(self)
editBox:SetText(urlText)
editBox:HighlightText()
end)
editBox:SetScript("OnEscapePressed", function()
frame:Hide()
end)
fontstringFooter = frame:CreateFontString(nil, "ARTWORK", "GameFontNormal")
fontstringFooter:SetWidth(410)
fontstringFooter:SetHeight(0)
fontstringFooter:SetPoint("TOP", editBox, "BOTTOM", 0, 0)
local button = CreateFrame("Button", nil, frame)
button:SetHeight(24)
button:SetWidth(75)
button:SetPoint("BOTTOM", 0, 13)
button:SetNormalFontObject(GameFontNormal)
button:SetHighlightFontObject(GameFontHighlight)
button:SetNormalTexture(button:CreateTexture(nil, nil, "UIPanelButtonUpTexture"))
button:SetPushedTexture(button:CreateTexture(nil, nil, "UIPanelButtonDownTexture"))
button:SetHighlightTexture(button:CreateTexture(nil, nil, "UIPanelButtonHighlightTexture"))
button:SetText(OKAY)
button:SetScript("OnClick", function()
frame:Hide()
end)
end
local function setFrameWidth(extraWidth)
extraWidth = extraWidth or 0
frame:SetWidth(430 + extraWidth)
fontstringFooter:SetWidth(410 + extraWidth)
editBox:SetWidth(250 + extraWidth)
fontstring:SetWidth(400 + extraWidth)
end
function DBM:ShowUpdateReminder(newVersion, newRevision, text, url, extraWidth, textJustify)
urlText = url or "https://github.com/DeadlyBossMods/DeadlyBossMods/wiki"
if not frame then
CreateOurFrame()
end
setFrameWidth(extraWidth)
editBox:SetText(url or "https://github.com/DeadlyBossMods/DeadlyBossMods/wiki")
editBox:HighlightText()
editBox:SetFocus()
frame:Show()
if newVersion then
fontstring:SetText(L.UPDATEREMINDER_HEADER:format(newVersion, newRevision))
fontstringFooter:SetText(L.UPDATEREMINDER_FOOTER)
elseif text then
fontstring:SetText(text)
fontstringFooter:SetText(L.UPDATEREMINDER_FOOTER_GENERIC)
end
if textJustify == "LEFT" then
fontstring:SetPoint("TOP", 10, -16)
else
fontstring:SetPoint("TOP", 0, -16)
end
fontstring:SetJustifyH(textJustify or "CENTER")
frame:SetHeight(110 + fontstring:GetHeight())
end