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.

144 lines
4.5 KiB

5 months ago
local _, addon = ...
4 years ago
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 = {};
4 years ago
function NarciDressingRoomTaintAlertFrameMixin:OnLoad()
4 years ago
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()
4 years ago
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()
4 years ago
self.Clipboard:SetText( NarciAPI.GetOutfitSlashCommand() );
self.Clipboard:SetFocus();
self.Clipboard:HighlightText();
self.Clipboard:SetDefaultCursorPosition(0);
end
function NarciDressingRoomTaintAlertFrameMixin:UpdateSize(extraHeight)
4 years ago
local height= self.fixedHeight + (extraHeight or 0);
self:SetHeight(height);
end
function NarciDressingRoomTaintAlertFrameMixin:ShowSolution()
4 years ago
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()
4 years ago
self:ClearAllPoints();
self.TutorialFrame:Hide();
self.ShowMoreButton:Show();
end
--[[
UIErrorsFrame:AddMessage("Test", r, g, b, 1.0, 0);
--]]