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