local L = Narci.L; local AlertFrame; local IS_HOOKED = false; local EventListener = CreateFrame("Frame"); EventListener:RegisterEvent("ADDON_ACTION_FORBIDDEN"); EventListener:SetScript("OnEvent", function(self, event, ...) local name, funcName = ...; --print(name, funcName) if funcName == "CopyToClipboard()" and DressUpFrame and DressUpFrame:IsShown() then AlertFrame:ShowFrame(); end end); local function OnCopiedCallBack() AlertFrame:Hide(); StaticPopup1:Hide(); local r, g, b = NarciAPI.GetColorPresetRGB("green"); UIErrorsFrame:AddMessage(TRANSMOG_OUTFIT_COPY_TO_CLIPBOARD_NOTICE, r, g, b, 1.0, 0); end local GuideLineScripts = { OnEnter = function(self) self:GetParent().Picture:SetTexCoord(self.texOffset, self.texOffset + 0.5, 0, 1); self.Text:SetTextColor(1, 1, 1); end, OnLeave = function(self) self.Text:SetTextColor(0.7, 0.7, 0.7); end, } NarciDressingRoomTaintAlertFrameMixin = {}; function NarciDressingRoomTaintAlertFrameMixin:OnLoad() AlertFrame = self; self.Text1:SetText(L["Press Copy"]); self.fixedHeight = self.Text1:GetHeight() + 97; self.Clipboard.onCopiedCallback = OnCopiedCallBack; self.ShowMoreButton:SetButtonText(L["Show Taint Solution"], true); self.ShowMoreButton:SetScript("OnClick", function(f) f:Hide(); self:ShowSolution(); end); self.CloseButton:SetScript("OnClick", function() self:Hide(); end); end function NarciDressingRoomTaintAlertFrameMixin:ShowFrame() self:ClearAllPoints(); if StaticPopup1:IsShown() then self:SetPoint("TOP", StaticPopup1, "BOTTOM", 0, -24); else self:SetPoint("TOP", UIParent, "TOP", 0, -135); end self:Show(); self:UpdateEditBox(); self:UpdateSize(); if not IS_HOOKED then IS_HOOKED = true; DressUpFrame:HookScript("OnHide", function() self:Hide(); end); end end function NarciDressingRoomTaintAlertFrameMixin:UpdateEditBox() self.Clipboard:SetText( NarciAPI.GetOutfitSlashCommand() ); self.Clipboard:SetFocus(); self.Clipboard:HighlightText(); self.Clipboard:SetDefaultCursorPosition(0); end function NarciDressingRoomTaintAlertFrameMixin:UpdateSize(extraHeight) local height= self.fixedHeight + (extraHeight or 0); self:SetHeight(height); end function NarciDressingRoomTaintAlertFrameMixin:ShowSolution() if not GuideLineScripts.frameHeight then local buttons = {}; local button, fontString, textHeight; local buttonWidth = 170; local gap = 8; local frameHeight = 0; for i = 1, 2 do button = CreateFrame("Button", nil, self.TutorialFrame); button:SetSize(buttonWidth, 24); button:SetHitRectInsets(-4, -4, -4, -4); buttons[i] = button; if i == 1 then button:SetPoint("TOPLEFT", self.TutorialFrame, "TOPLEFT", 0, 0); else button:SetPoint("TOPLEFT", buttons[i - 1], "BOTTOMLEFT", 0, -gap); frameHeight = frameHeight + gap; end fontString = button:CreateFontString(nil, "OVERLAY", "GameFontHighlight"); button.Text = fontString; fontString:SetPoint("TOPLEFT", button, "TOPLEFT", 0, 0); fontString:SetJustifyH("LEFT"); fontString:SetJustifyV("TOP"); fontString:SetSpacing(2); fontString:SetTextColor(0.7, 0.7, 0.7); fontString:SetWidth(buttonWidth); fontString:SetText(Narci.L["Taint Solution Step"..i]); textHeight = fontString:GetHeight() fontString:SetHeight(textHeight + 2) button:SetHeight(textHeight); for scriptName, script in pairs(GuideLineScripts) do button:SetScript(scriptName, script); end button.texOffset = (i - 1) * 0.5; frameHeight = frameHeight + textHeight; end frameHeight = math.max(frameHeight, 96); GuideLineScripts.frameHeight = frameHeight; end self.TutorialFrame:Show(); self:UpdateSize(GuideLineScripts.frameHeight); end function NarciDressingRoomTaintAlertFrameMixin:OnHide() self:ClearAllPoints(); self.TutorialFrame:Hide(); self.ShowMoreButton:Show(); end --[[ UIErrorsFrame:AddMessage("Test", r, g, b, 1.0, 0); --]]