476 lines
20 KiB
Lua
476 lines
20 KiB
Lua
if not WeakAuras.IsLibsOK() then return end
|
|
|
|
local AddonName = ...
|
|
local Private = select(2, ...)
|
|
|
|
local function setCorner(corner, point, relativeTo, x, y, width, height)
|
|
corner:ClearAllPoints()
|
|
corner:SetPoint(point, relativeTo, x, y)
|
|
corner:SetSize(width, height)
|
|
end
|
|
|
|
local function setEdge(edge, point1, relativeTo1, point2, relativeTo2, width, height)
|
|
edge:ClearAllPoints()
|
|
edge:SetSize(width, height)
|
|
edge:SetPoint(point1, relativeTo1, point2, 0, 0)
|
|
edge:SetPoint(point2, relativeTo2, point1, 0, 0)
|
|
end
|
|
|
|
local function UpdateNineSliceBorders(frame)
|
|
local NineSlice = frame.NineSlice
|
|
local PortaitMode = frame:GetFrameLayoutType() == "PortraitMode"
|
|
local topLeftCorner = PortaitMode and NineSlice.TopLeftCorner or NineSlice.TopLeftCornerNoPortrait
|
|
local topEdgeRelativeTo = PortaitMode and NineSlice.TopLeftCorner or NineSlice.TopLeftCornerNoPortrait
|
|
local leftEdgeRelativeTo = PortaitMode and NineSlice.TopLeftCorner or NineSlice.TopLeftCornerNoPortrait
|
|
-- Top Left Corner
|
|
setCorner(topLeftCorner, "TOPLEFT", NineSlice, -13, 16, 75, 75)
|
|
-- Top Right Corner
|
|
setCorner(NineSlice.TopRightCorner, "TOPRIGHT", NineSlice, 4, 16, 75, 75)
|
|
-- Bottom Left Corner
|
|
setCorner(NineSlice.BottomLeftCorner, "BOTTOMLEFT", NineSlice, -13, -3, 32, 32)
|
|
-- Bottom Right Corner
|
|
setCorner(NineSlice.BottomRightCorner, "BOTTOMRIGHT", NineSlice, 4, -3, 32, 32)
|
|
-- Top Edge
|
|
setEdge(NineSlice.TopEdge, "TOPLEFT", topEdgeRelativeTo, "TOPRIGHT", NineSlice.TopRightCorner, 32, 75)
|
|
-- Bottom Edge
|
|
setEdge(NineSlice.BottomEdge, "BOTTOMLEFT", NineSlice.BottomLeftCorner, "BOTTOMRIGHT", NineSlice.BottomRightCorner, 32, 32)
|
|
-- Left Edge
|
|
setEdge(NineSlice.LeftEdge, "TOPLEFT", leftEdgeRelativeTo, "BOTTOMLEFT", NineSlice.BottomLeftCorner, 75, 8)
|
|
-- Right Edge
|
|
setEdge(NineSlice.RightEdge, "TOPLEFT", NineSlice.TopRightCorner, "BOTTOMLEFT", NineSlice.BottomRightCorner, 75, 8)
|
|
end
|
|
|
|
local function InputBoxInstructions_OnTextChanged(self)
|
|
if self:GetText() == "" then
|
|
self.Instructions:Show();
|
|
else
|
|
self.Instructions:Hide();
|
|
end
|
|
end
|
|
|
|
local function InputBoxInstructions_UpdateColorForEnabledState(self, color)
|
|
if color then
|
|
self:SetTextColor(color.r, color.g, color.b, color.a);
|
|
end
|
|
end
|
|
|
|
local function InputBoxInstructions_OnDisable(self)
|
|
InputBoxInstructions_UpdateColorForEnabledState(self, self.disabledColor);
|
|
end
|
|
|
|
local function InputBoxInstructions_OnEnable(self)
|
|
InputBoxInstructions_UpdateColorForEnabledState(self, self.enabledColor);
|
|
end
|
|
|
|
local function SearchBoxTemplate_OnEditFocusLost(self)
|
|
if ( self:GetText() == "" ) then
|
|
self.searchIcon:SetVertexColor(0.6, 0.6, 0.6);
|
|
self.clearButton:Hide();
|
|
end
|
|
end
|
|
|
|
local function SearchBoxTemplate_OnEditFocusGained(self)
|
|
self.searchIcon:SetVertexColor(1.0, 1.0, 1.0);
|
|
self.clearButton:Show();
|
|
end
|
|
|
|
function WA_SearchBoxTemplate_OnTextChanged(self)
|
|
if ( not self:HasFocus() and self:GetText() == "" ) then
|
|
self.searchIcon:SetVertexColor(0.6, 0.6, 0.6);
|
|
self.clearButton:Hide();
|
|
else
|
|
self.searchIcon:SetVertexColor(1.0, 1.0, 1.0);
|
|
self.clearButton:Show();
|
|
end
|
|
InputBoxInstructions_OnTextChanged(self);
|
|
end
|
|
|
|
local function SearchBoxTemplate_ClearText(self)
|
|
self:SetText("");
|
|
self:ClearFocus();
|
|
end
|
|
|
|
local function SearchBoxTemplateClearButton_OnClick(self)
|
|
PlaySound("igMainMenuOptionCheckBoxOn");
|
|
SearchBoxTemplate_ClearText(self:GetParent());
|
|
end
|
|
|
|
local function GetParentName(frame)
|
|
return frame:GetName() or frame
|
|
end
|
|
|
|
WeakAuras.XMLTemplates = {
|
|
-- InputBoxTemplate (Retail 11.1.7 (61967))
|
|
["InputBoxTemplate"] = function(frame)
|
|
frame:EnableMouse(true)
|
|
-- Left Texture
|
|
local left = frame:CreateTexture(nil, "BACKGROUND")
|
|
left:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\CommonSearch")
|
|
left:SetSize(8, 20)
|
|
left:SetPoint("LEFT", frame, "LEFT", -5, 0)
|
|
left:SetTexCoord(0.886719, 0.949219, 0.335938, 0.648438)
|
|
frame.Left = left
|
|
-- Right Texture
|
|
local right = frame:CreateTexture(nil, "BACKGROUND")
|
|
right:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\CommonSearch")
|
|
right:SetSize(8, 20)
|
|
right:SetPoint("RIGHT", frame, "RIGHT", 0, 0)
|
|
right:SetTexCoord(0.00390625, 0.0664062, 0.664062, 0.976562)
|
|
frame.Right = right
|
|
-- Middle Texture (zwischen Left und Right)
|
|
local middle = frame:CreateTexture(nil, "BACKGROUND")
|
|
middle:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\CommonSearch")
|
|
middle:SetSize(10, 20)
|
|
middle:SetTexCoord(0.00390625, 0.878906, 0.335938, 0.648438)
|
|
middle:SetPoint("LEFT", left, "RIGHT")
|
|
middle:SetPoint("RIGHT", right, "LEFT")
|
|
frame.Middle = middle
|
|
-- FontString
|
|
frame:SetFontObject("ChatFontNormal")
|
|
-- Scripts
|
|
frame:SetScript("OnEscapePressed", function(self)
|
|
EditBox_ClearFocus(self)
|
|
end)
|
|
frame:SetScript("OnEditFocusLost", function(self)
|
|
EditBox_ClearHighlight(self)
|
|
end)
|
|
frame:SetScript("OnEditFocusGained", function(self)
|
|
EditBox_HighlightText(self)
|
|
end)
|
|
end,
|
|
|
|
-- InputBoxInstructionsTemplate (Retail 11.1.7 (61967))
|
|
["InputBoxInstructionsTemplate"] = function(frame)
|
|
WeakAuras.XMLTemplates["InputBoxTemplate"](frame) -- Inherits from InputBoxTemplate
|
|
--[[ Optional
|
|
frame.disabledColor = { r = 0.35, g = 0.35, b = 0.35, a = 1 }
|
|
frame.enabledColor = { r = 1, g = 1, b = 1, a = 1 }
|
|
]]
|
|
-- Instructions FontString
|
|
local instructions = frame:CreateFontString(nil, "ARTWORK", "GameFontDisableSmall")
|
|
instructions:SetJustifyH("LEFT")
|
|
instructions:SetJustifyV("MIDDLE")
|
|
instructions:SetAllPoints(frame)
|
|
instructions:SetTextColor(0.35, 0.35, 0.35)
|
|
frame.Instructions = instructions
|
|
|
|
-- Skripts
|
|
frame:SetScript("OnTextChanged", InputBoxInstructions_OnTextChanged)
|
|
frame:SetScript("OnDisable", InputBoxInstructions_OnDisable)
|
|
frame:SetScript("OnEnable", InputBoxInstructions_OnEnable)
|
|
|
|
-- FontObject
|
|
frame:SetFontObject("GameFontHighlightSmall")
|
|
end,
|
|
|
|
-- SearchBoxTemplate (Retail 11.1.7 (61967))
|
|
["SearchBoxTemplate"] = function(frame)
|
|
WeakAuras.XMLTemplates["InputBoxInstructionsTemplate"](frame) -- Inherits from InputBoxInstructionsTemplate
|
|
frame:SetAutoFocus(false)
|
|
frame:SetTextInsets(16, 20, 0, 0);
|
|
frame.instructionText = SEARCH
|
|
frame.Instructions:SetText(frame.instructionText);
|
|
frame.Instructions:ClearAllPoints();
|
|
frame.Instructions:SetPoint("TOPLEFT", frame, "TOPLEFT", 16, 0);
|
|
frame.Instructions:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -20, 0);
|
|
-- Search-Icon
|
|
local searchIcon = frame:CreateTexture(GetParentName(frame) .. "SearchIcon", "OVERLAY")
|
|
searchIcon:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\CommonSearch")
|
|
searchIcon:SetSize(10, 10)
|
|
searchIcon:SetPoint("LEFT", 1, -1)
|
|
searchIcon:SetTexCoord(0.0742188, 0.167969, 0.664062, 0.851562)
|
|
searchIcon:SetVertexColor(0.6, 0.6, 0.6);
|
|
frame.searchIcon = searchIcon
|
|
-- Clear-Button
|
|
local clearButton = CreateFrame("Button", GetParentName(frame) .. "ClearButton", frame)
|
|
clearButton:SetSize(17, 17)
|
|
clearButton:SetPoint("RIGHT", -3, 0)
|
|
clearButton:Hide()
|
|
frame.clearButton = clearButton
|
|
local texture = clearButton:CreateTexture(nil, "ARTWORK")
|
|
texture:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\CommonSearch")
|
|
texture:SetAlpha(0.5)
|
|
texture:SetSize(10, 10)
|
|
texture:SetPoint("TOPLEFT", 3, -3)
|
|
texture:SetTexCoord(0.175781, 0.253906, 0.664062, 0.820312)
|
|
clearButton.texture = texture
|
|
-- Clear-Button Scripts
|
|
clearButton:SetScript("OnEnter", function(self)
|
|
self.texture:SetAlpha(1.0)
|
|
end)
|
|
clearButton:SetScript("OnLeave", function(self)
|
|
self.texture:SetAlpha(0.5)
|
|
end)
|
|
clearButton:SetScript("OnMouseDown", function(self)
|
|
if self:IsEnabled() then
|
|
self.texture:SetPoint("TOPLEFT", self, "TOPLEFT", 4, -4)
|
|
end
|
|
end)
|
|
clearButton:SetScript("OnMouseUp", function(self)
|
|
self.texture:SetPoint("TOPLEFT", self, "TOPLEFT", 3, -3)
|
|
end)
|
|
clearButton:SetScript("OnClick", SearchBoxTemplateClearButton_OnClick)
|
|
-- EditBox Scripts
|
|
frame:SetScript("OnEscapePressed", EditBox_ClearFocus)
|
|
frame:SetScript("OnEnterPressed", EditBox_ClearFocus)
|
|
frame:SetScript("OnEditFocusLost", SearchBoxTemplate_OnEditFocusLost)
|
|
frame:SetScript("OnEditFocusGained", SearchBoxTemplate_OnEditFocusGained)
|
|
frame:SetScript("OnTextChanged", WA_SearchBoxTemplate_OnTextChanged)
|
|
end,
|
|
|
|
-- PortraitFrameTemplate (Retail 11.1.7 (61967))
|
|
-- This is an empty frame with space for a portrait/icon in the top left corner.
|
|
["PortraitFrameTemplate"] = function(frame)
|
|
frame:SetSize(338, 424)
|
|
-- NineSlice Borders
|
|
local nineSlice = CreateFrame("Frame", nil, frame)
|
|
nineSlice:SetAllPoints(frame)
|
|
nineSlice:SetFrameLevel(125)
|
|
frame.NineSlice = nineSlice
|
|
-- Top Left Corner
|
|
local topLeftCorner = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
topLeftCorner:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetal2x")
|
|
topLeftCorner:SetSize(75, 75)
|
|
topLeftCorner:SetPoint("TOPLEFT", frame, "TOPLEFT", -13, 16)
|
|
topLeftCorner:SetTexCoord(0.00195312, 0.294922, 0.298828, 0.591797)
|
|
nineSlice.TopLeftCorner = topLeftCorner
|
|
-- Top Left Corner No Portrait
|
|
local topLeftCornerNoPortrait = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
topLeftCornerNoPortrait:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetal2x")
|
|
topLeftCornerNoPortrait:SetSize(75, 75)
|
|
topLeftCornerNoPortrait:SetPoint("TOPLEFT", frame, "TOPLEFT", -8, 16)
|
|
topLeftCornerNoPortrait:SetTexCoord(0.00195312, 0.294922, 0.00195312, 0.294922)
|
|
topLeftCornerNoPortrait:Hide()
|
|
nineSlice.TopLeftCornerNoPortrait = topLeftCornerNoPortrait
|
|
-- Top Right Corner
|
|
local topRightCorner = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
topRightCorner:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetal2x")
|
|
topRightCorner:SetSize(75, 75)
|
|
topRightCorner:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 4, 16)
|
|
topRightCorner:SetTexCoord(0.298828, 0.591797, 0.00195312, 0.294922)
|
|
nineSlice.TopRightCorner = topRightCorner
|
|
-- Bottom Left Corner
|
|
local bottomLeftCorner = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
bottomLeftCorner:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetal2x")
|
|
bottomLeftCorner:SetSize(32, 32)
|
|
bottomLeftCorner:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", -13, -3)
|
|
bottomLeftCorner:SetTexCoord(0.298828, 0.423828, 0.298828, 0.423828)
|
|
nineSlice.BottomLeftCorner = bottomLeftCorner
|
|
-- Bottom Right Corner
|
|
local bottomRightCorner = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
bottomRightCorner:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetal2x")
|
|
bottomRightCorner:SetSize(32, 32)
|
|
bottomRightCorner:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", 4, -3)
|
|
bottomRightCorner:SetTexCoord(0.427734, 0.552734, 0.298828, 0.423828)
|
|
nineSlice.BottomRightCorner = bottomRightCorner
|
|
-- Top Edge
|
|
local topEdge = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
topEdge:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetalHorizontal2x")
|
|
topEdge:SetSize(32, 75)
|
|
topEdge:SetPoint("TOPLEFT", topLeftCorner, "TOPRIGHT", 0, 0)
|
|
topEdge:SetPoint("TOPRIGHT", topRightCorner, "TOPLEFT", 0, 0)
|
|
topEdge:SetHorizTile(true)
|
|
topEdge:SetTexCoord(0.0, 1.0, 0.00390625, 0.589844)
|
|
nineSlice.TopEdge = topEdge
|
|
-- Bottom Edge
|
|
local bottomEdge = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
bottomEdge:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetalHorizontal2x")
|
|
bottomEdge:SetSize(32, 32)
|
|
bottomEdge:SetPoint("BOTTOMLEFT", bottomLeftCorner, "BOTTOMRIGHT", 0, 0)
|
|
bottomEdge:SetPoint("BOTTOMRIGHT", bottomRightCorner, "BOTTOMLEFT", 0, 0)
|
|
bottomEdge:SetHorizTile(true)
|
|
bottomEdge:SetTexCoord(0.0, 0.5, 0.597656, 0.847656)
|
|
nineSlice.BottomEdge = bottomEdge
|
|
-- Left Edge
|
|
local leftEdge = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
leftEdge:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetalVertical2x")
|
|
leftEdge:SetSize(75, 8)
|
|
leftEdge:SetPoint("TOPLEFT", topLeftCorner, "BOTTOMLEFT", 0, 0)
|
|
leftEdge:SetPoint("BOTTOMLEFT", bottomLeftCorner, "TOPLEFT", 0, 0)
|
|
leftEdge:SetVertTile(true)
|
|
leftEdge:SetTexCoord(0.00195312, 0.294922, 0.0, 1.0)
|
|
nineSlice.LeftEdge = leftEdge
|
|
-- Right Edge
|
|
local rightEdge = nineSlice:CreateTexture(nil, "OVERLAY")
|
|
rightEdge:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameMetalVertical2x")
|
|
rightEdge:SetSize(75, 8)
|
|
rightEdge:SetPoint("TOPLEFT", topRightCorner, "BOTTOMLEFT", 0, 0)
|
|
rightEdge:SetPoint("BOTTOMLEFT", bottomRightCorner, "TOPLEFT", 0, 0)
|
|
rightEdge:SetVertTile(true)
|
|
rightEdge:SetTexCoord(0.298828, 0.591797, 0.0, 1.0)
|
|
nineSlice.RightEdge = rightEdge
|
|
-- Portrait Container
|
|
local portraitContainer = CreateFrame("Frame", nil, frame)
|
|
portraitContainer:SetSize(1, 1)
|
|
portraitContainer:SetPoint("TOPLEFT")
|
|
portraitContainer:SetFrameLevel(120)
|
|
frame.PortraitContainer = portraitContainer
|
|
-- Portrait
|
|
local portrait = portraitContainer:CreateTexture(nil, "ARTWORK")
|
|
portrait:SetSize(62, 62)
|
|
portrait:SetPoint("TOPLEFT", portraitContainer, "TOPLEFT", -5, 7)
|
|
portraitContainer.portrait = portrait
|
|
-- Title Container
|
|
local titleContainer = CreateFrame("Frame", nil, frame)
|
|
titleContainer:SetSize(0, 20)
|
|
titleContainer:SetPoint("TOPLEFT", frame, "TOPLEFT", 58, -1)
|
|
titleContainer:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -24, -1)
|
|
titleContainer:SetFrameLevel(126)
|
|
frame.TitleContainer = titleContainer
|
|
-- Title Text
|
|
local titleText = titleContainer:CreateFontString(GetParentName(frame) .. "TitleText", "OVERLAY", "GameFontNormal")
|
|
titleText:SetText("")
|
|
titleText:SetWordWrap(false)
|
|
titleText:SetPoint("TOP", titleContainer, "TOP", 0, -5)
|
|
titleText:SetPoint("LEFT", titleContainer, "LEFT")
|
|
titleText:SetPoint("RIGHT", titleContainer, "RIGHT")
|
|
titleContainer.TitleText = titleText
|
|
-- Close Button
|
|
local closeButton = CreateFrame("Button", nil, frame, "UIPanelCloseButton")
|
|
closeButton:SetSize(24, 24)
|
|
closeButton:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 0, 0)
|
|
closeButton:SetFrameLevel(128)
|
|
frame.CloseButton = closeButton
|
|
closeButton:SetNormalTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
closeButton:GetNormalTexture():SetTexCoord(0.152344, 0.292969, 0.0078125, 0.304688)
|
|
closeButton:SetPushedTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
closeButton:GetPushedTexture():SetTexCoord(0.152344, 0.292969, 0.320312, 0.617188)
|
|
closeButton:SetDisabledTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
closeButton:GetDisabledTexture():SetTexCoord(0.152344, 0.292969, 0.632812, 0.929688)
|
|
closeButton:SetHighlightTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x", "ADD")
|
|
closeButton:GetHighlightTexture():SetTexCoord(0.449219, 0.589844, 0.0078125, 0.304688)
|
|
-- Background
|
|
local bgTexture = frame:CreateTexture(nil, "BACKGROUND")
|
|
bgTexture:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UI-Background-Rock")
|
|
bgTexture:SetHorizTile(true)
|
|
bgTexture:SetVertTile(true)
|
|
bgTexture:SetPoint("TOPLEFT", frame, "TOPLEFT", 2, -21)
|
|
bgTexture:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 2)
|
|
frame.Bg = bgTexture
|
|
-- Border
|
|
local topTileStreaks = frame:CreateTexture(nil, "BORDER")
|
|
topTileStreaks:SetTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\UIFrameHorizontal")
|
|
topTileStreaks:SetSize(256, 43)
|
|
topTileStreaks:SetPoint("TOPLEFT", frame, "TOPLEFT", 6, -21)
|
|
topTileStreaks:SetPoint("TOPRIGHT", frame, "TOPRIGHT", -2, -21)
|
|
topTileStreaks:SetHorizTile(true)
|
|
topTileStreaks:SetTexCoord(0.0, 1.0, 0.0078125, 0.34375)
|
|
frame.TopTileStreaks = topTileStreaks
|
|
-- Mixin
|
|
frame.Bg:SetVertexColor(0.5882, 0.6275, 0.6706, 0.8) -- approx. PANEL_BACKGROUND_COLOR #ff1f1e21
|
|
frame.layoutType = "PortraitMode"
|
|
frame.ShowPortrait = function(self)
|
|
self.PortraitContainer:Show();
|
|
self.NineSlice.TopLeftCorner:Show();
|
|
self.NineSlice.TopLeftCornerNoPortrait:Hide();
|
|
self.layoutType = "PortraitMode"
|
|
end
|
|
frame.HidePortrait = function(self)
|
|
self.PortraitContainer:Hide();
|
|
self.NineSlice.TopLeftCorner:Hide();
|
|
self.NineSlice.TopLeftCornerNoPortrait:Show();
|
|
self.layoutType = "NoPortraitMode"
|
|
end
|
|
frame.GetFrameLayoutType = function(self)
|
|
return self.layoutType or self:GetParent().layoutType;
|
|
end
|
|
-- update NineSlice Borders on SizeChanged, since they like to be scuffed when the frame is resized
|
|
frame:SetScript("OnSizeChanged", function(self)
|
|
UpdateNineSliceBorders(self);
|
|
end)
|
|
end,
|
|
|
|
-- MaximizeMinimizeButtonFrameTemplate (Retail 11.1.7 (61967))
|
|
["MaximizeMinimizeButtonFrameTemplate"] = function(frame)
|
|
frame:SetSize(24, 24)
|
|
frame:SetFrameLevel(127)
|
|
|
|
-- Maximize Button
|
|
local maximizeButton = CreateFrame("Button", "MaximizeButton", frame)
|
|
maximizeButton:SetAllPoints(frame)
|
|
maximizeButton:Hide()
|
|
frame.MaximizeButton = maximizeButton
|
|
|
|
maximizeButton:SetNormalTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
maximizeButton:GetNormalTexture():SetTexCoord(0.300781, 0.441406, 0.0078125, 0.304688)
|
|
|
|
maximizeButton:SetPushedTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
maximizeButton:GetPushedTexture():SetTexCoord(0.300781, 0.441406, 0.320312, 0.617188)
|
|
|
|
maximizeButton:SetDisabledTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
maximizeButton:GetDisabledTexture():SetTexCoord(0.300781, 0.441406, 0.632812, 0.929688)
|
|
|
|
maximizeButton:SetHighlightTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x", "ADD")
|
|
maximizeButton:GetHighlightTexture():SetTexCoord(0.449219, 0.589844, 0.0078125, 0.304688)
|
|
|
|
-- Minimize Button
|
|
local minimizeButton = CreateFrame("Button", "MinimizeButton", frame)
|
|
minimizeButton:SetAllPoints(frame)
|
|
frame.MinimizeButton = minimizeButton
|
|
|
|
minimizeButton:SetNormalTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
minimizeButton:GetNormalTexture():SetTexCoord(0.00390625, 0.144531, 0.0078125, 0.304688)
|
|
|
|
minimizeButton:SetPushedTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
minimizeButton:GetPushedTexture():SetTexCoord(0.00390625, 0.144531, 0.320312, 0.617188)
|
|
|
|
minimizeButton:SetDisabledTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x")
|
|
minimizeButton:GetDisabledTexture():SetTexCoord(0.00390625, 0.144531, 0.632812, 0.929688)
|
|
|
|
minimizeButton:SetHighlightTexture("Interface\\AddOns\\WeakAuras\\Media\\Textures\\redbutton2x", "ADD")
|
|
minimizeButton:GetHighlightTexture():SetTexCoord(0.449219, 0.589844, 0.0078125, 0.304688)
|
|
|
|
-- Mixin
|
|
frame.isMinimized = false
|
|
frame.OnShow = function(self)
|
|
if self.isMinimized then
|
|
self:SetMaximizedLook()
|
|
else
|
|
self:SetMinimizedLook()
|
|
end
|
|
end
|
|
frame.IsMinimized = function(self)
|
|
return self.isMinimized
|
|
end
|
|
frame.SetOnMaximizedCallback = function(self, callback)
|
|
self.maximizedCallback = callback
|
|
end
|
|
frame.SetOnMinimizedCallback = function(self, callback)
|
|
self.minimizedCallback = callback
|
|
end
|
|
frame.Maximize = function(self, skipCallback)
|
|
if self.maximizedCallback and not skipCallback then
|
|
self:maximizedCallback()
|
|
end
|
|
self.isMinimized = false
|
|
self:SetMinimizedLook()
|
|
end
|
|
frame.Minimize = function(self, skipCallback)
|
|
if self.minimizedCallback and not skipCallback then
|
|
self:minimizedCallback()
|
|
end
|
|
self.isMinimized = true
|
|
self:SetMaximizedLook()
|
|
end
|
|
frame.SetMinimizedLook = function(self)
|
|
self.MaximizeButton:Hide()
|
|
self.MinimizeButton:Show()
|
|
end
|
|
frame.SetMaximizedLook = function(self)
|
|
self.MaximizeButton:Show()
|
|
self.MinimizeButton:Hide()
|
|
end
|
|
frame:SetScript("OnShow", function(self)
|
|
self:OnShow();
|
|
end)
|
|
maximizeButton:SetScript("OnClick", function(self)
|
|
self:GetParent():Maximize();
|
|
PlaySound("igMainMenuOptionCheckBoxOn");
|
|
end)
|
|
minimizeButton:SetScript("OnClick", function(self)
|
|
self:GetParent():Minimize();
|
|
PlaySound("igMainMenuOptionCheckBoxOn");
|
|
end)
|
|
end,
|
|
}
|