diff --git a/Interface/AddOns/SVUI/packages/_load.xml b/Interface/AddOns/SVUI/packages/_load.xml index a325aac..a340cac 100644 --- a/Interface/AddOns/SVUI/packages/_load.xml +++ b/Interface/AddOns/SVUI/packages/_load.xml @@ -1,6 +1,5 @@ <Ui xmlns="http://www.blizzard.com/wow/ui/"> <Include file="stats\SVStats.xml"/> - <Script file="dock\SVDock.lua"/> <Include file="aura\SVAura.xml"/> <Script file="map\SVMap.lua"/> <Include file="plates\SVPlate.xml"/> diff --git a/Interface/AddOns/SVUI/packages/bag/SVBag.lua b/Interface/AddOns/SVUI/packages/bag/SVBag.lua index a4c8e6f..6679454 100644 --- a/Interface/AddOns/SVUI/packages/bag/SVBag.lua +++ b/Interface/AddOns/SVUI/packages/bag/SVBag.lua @@ -431,7 +431,7 @@ local ContainerFrame_UpdateLayout = function(self) end if(SV.db.SVBag.alignToChat) then - containerWidth = (isBank and SV.db.SVDock.dockLeftWidth or SV.db.SVDock.dockRightWidth) + containerWidth = (isBank and SV.db.Dock.dockLeftWidth or SV.db.Dock.dockRightWidth) local avg = 0.08; if(precount > 287) then avg = 0.12 @@ -827,11 +827,11 @@ function MOD:ModifyBags() if(docked) then if self.BagFrame then self.BagFrame:ClearAllPoints() - self.BagFrame:Point("BOTTOMRIGHT", RightSuperDock, "BOTTOMRIGHT", 0, 0) + self.BagFrame:Point("BOTTOMRIGHT", SV.Dock.Right, "BOTTOMRIGHT", 0, 0) end if self.BankFrame then self.BankFrame:ClearAllPoints() - self.BankFrame:Point("BOTTOMLEFT", LeftSuperDock, "BOTTOMLEFT", 0, 0) + self.BankFrame:Point("BOTTOMLEFT", SV.Dock.Left, "BOTTOMLEFT", 0, 0) end else if self.BagFrame then @@ -873,7 +873,7 @@ do if MOD.BagBarLoaded then return end local bar = CreateFrame("Frame", "SVUI_BagBar", SV.Screen) - bar:SetPoint("TOPRIGHT", RightSuperDock, "TOPLEFT", -4, 0) + bar:SetPoint("TOPRIGHT", SV.Dock.Right, "TOPLEFT", -4, 0) bar.buttons = {} bar:EnableMouse(true) bar:SetScript("OnEnter", Bags_OnEnter) diff --git a/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua b/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua index cf4e249..db5bf53 100644 --- a/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua +++ b/Interface/AddOns/SVUI/packages/bag/tools/breakstuff.lua @@ -290,10 +290,10 @@ function MOD:BreakStuffLoader() if not allowed then return end - BreakStuffButton:SetParent(RightSuperDockUtilityBar) - local size = RightSuperDockUtilityBar.currentSize + BreakStuffButton:SetParent(SV.Dock.Right.UtilityBar) + local size = SV.Dock.Right.UtilityBar:GetHeight() BreakStuffButton:Size(size, size) - BreakStuffButton:Point("RIGHT", RightSuperDockUtilityBar, "LEFT", -6, 0) + BreakStuffButton:Point("RIGHT", SV.Dock.Right.UtilityBar, "LEFT", -6, 0) BreakStuffButton:Show(); BreakStuffButton:SetFramedButtonTemplate() BreakStuffButton.icon=BreakStuffButton:CreateTexture(nil,"OVERLAY") diff --git a/Interface/AddOns/SVUI/packages/chat/SVChat.lua b/Interface/AddOns/SVUI/packages/chat/SVChat.lua index 0a1b2a7..66eeb26 100644 --- a/Interface/AddOns/SVUI/packages/chat/SVChat.lua +++ b/Interface/AddOns/SVUI/packages/chat/SVChat.lua @@ -141,7 +141,6 @@ local CHAT_FLAG_GM = "[GM] "; LOCAL FUNCTIONS ########################################################## ]]-- -local tabholder = CreateFrame("Frame", "SVUI_ChatTabHolder", UIParent) local ScrollIndicator = CreateFrame("Frame", nil) do @@ -435,23 +434,23 @@ do local EditBox_OnEditFocusGained = function(self) self:Show() - if not LeftSuperDock:IsShown()then - LeftSuperDock.editboxforced = true; - LeftSuperDockToggleButton:GetScript("OnEnter")(LeftSuperDockToggleButton) + if not SV.Dock.Left:IsShown()then + SV.Dock.Left.editboxforced = true; + SV.Dock.Left.Button:GetScript("OnEnter")(SV.Dock.Left.Button) end - LeftSuperDockAlert:Activate(self) + SV.Dock.Left.Alert:Activate(self) end local EditBox_OnEditFocusLost = function(self) - if LeftSuperDock.editboxforced then - LeftSuperDock.editboxforced = nil; - if LeftSuperDock:IsShown()then - LeftSuperDockToggleButton:GetScript("OnLeave")(LeftSuperDockToggleButton) + if SV.Dock.Left.editboxforced then + SV.Dock.Left.editboxforced = nil; + if SV.Dock.Left:IsShown()then + SV.Dock.Left.Button:GetScript("OnLeave")(SV.Dock.Left.Button) end end self:Hide() - LeftSuperDockAlert:Deactivate() + SV.Dock.Left.Alert:Deactivate() end local EditBox_OnTextChanged = function(self) @@ -499,13 +498,13 @@ do local lastTab = TabsList[1]; if(lastTab) then lastTab:ClearAllPoints() - lastTab:Point("LEFT", tabholder, "LEFT", 3, 0); + lastTab:Point("LEFT", SV.Dock.Left.ToolBar, "LEFT", 3, 0); end for chatID,frame in pairs(TabsList) do if(frame and chatID ~= 1 and frame.isDocked) then frame:ClearAllPoints() if(not lastTab) then - frame:Point("LEFT", tabholder, "LEFT", 3, 0); + frame:Point("LEFT", SV.Dock.Left.ToolBar, "LEFT", 3, 0); else frame:Point("LEFT", lastTab, "RIGHT", 6, 0); end @@ -537,17 +536,17 @@ do TabSafety[name] = true; TabsList[chatID] = frame frame.chatID = chatID; - frame:SetParent(tabholder) + frame:SetParent(SV.Dock.Left.ToolBar) _repositionDockedTabs() end local function _customTab(tab, chatID, enabled) if(tab.IsStyled) then return end local tabName = tab:GetName(); - local tabSize = tabholder.currentSize or 22; + local tabSize = SV.Dock.Left.ToolBar:GetHeight(); local tabText = tab.text:GetText() or "Chat "..chatID; - local holder = CreateFrame("Frame", ("SVUI_ChatTab%s"):format(chatID), tabholder) + local holder = CreateFrame("Frame", ("SVUI_ChatTab%s"):format(chatID), SV.Dock.Left.ToolBar) holder:SetWidth(tabSize * 1.75) holder:SetHeight(tabSize) tab.chatID = chatID; @@ -655,7 +654,7 @@ do _G[editBoxName.."FocusRight"]:Die() editBox:SetFixedPanelTemplate("Button", true) editBox:SetAltArrowKeyMode(false) - editBox:SetAllPoints(LeftSuperDockAlert) + editBox:SetAllPoints(SV.Dock.Left.Alert) editBox:HookScript("OnEditFocusGained", EditBox_OnEditFocusGained) editBox:HookScript("OnEditFocusLost", EditBox_OnEditFocusLost) editBox:HookScript("OnTextChanged", EditBox_OnTextChanged) @@ -664,7 +663,7 @@ do chat:SetFading(CHAT_FADING) chat:SetScript("OnHyperlinkClick", SVUI_OnHyperlinkShow) - local alertSize = (tabholder.currentSize or 22) * 2; + local alertSize = (SV.Dock.Left.ToolBar:GetHeight()) * 2; local alert = CreateFrame("Frame", nil, tab) alert:SetSize(alertSize, alertSize) alert:SetFrameStrata("DIALOG") @@ -731,14 +730,14 @@ do chat:ClearAllPoints() chat:Width(CHAT_WIDTH) chat:Height(CHAT_HEIGHT) - chat:Point("BOTTOMRIGHT",LeftSuperDockFrameHolder,"BOTTOMRIGHT",-4,10) + chat:Point("BOTTOMRIGHT",SV.Dock.Left.Window,"BOTTOMRIGHT",-4,10) FCF_SavePositionAndDimensions(chat) end - chat:SetParent(LeftSuperDockFrameHolder) + chat:SetParent(SV.Dock.Left.Window) if(not TAB_SKINS) then tab.owner = chat; tab.isDocked = chat.isDocked; - tab:SetParent(tabholder) + tab:SetParent(SV.Dock.Left.ToolBar) _modifyTab(tab, false) else tab.owner = chat; @@ -824,7 +823,7 @@ do end local _hook_GDMFrameSetPoint = function(self) - self:SetAllPoints(tabholder) + self:SetAllPoints(SV.Dock.Left.ToolBar) end local _hook_GDMScrollSetPoint = function(self, point, anchor, attachTo, x, y) @@ -938,8 +937,8 @@ do end function MOD:UpdateLocals() - CHAT_WIDTH = (SV.db.SVDock.dockLeftWidth or 350) - 10; - CHAT_HEIGHT = (SV.db.SVDock.dockLeftHeight or 180) - 15; + CHAT_WIDTH = (SV.db.Dock.dockLeftWidth or 350) - 10; + CHAT_HEIGHT = (SV.db.Dock.dockLeftHeight or 180) - 15; CHAT_THROTTLE = SV.db.SVChat.throttleInterval; CHAT_ALLOW_URL = SV.db.SVChat.url; CHAT_HOVER_URL = SV.db.SVChat.hyperlinkHover; @@ -969,9 +968,9 @@ end function MOD:Load() if(not SV.db.SVChat.enable) then return end - ScrollIndicator:SetParent(LeftSuperDockFrameHolder) + ScrollIndicator:SetParent(SV.Dock.Left.Window) ScrollIndicator:SetSize(20,20) - ScrollIndicator:SetPoint("BOTTOMRIGHT", LeftSuperDockFrameHolder, "BOTTOMRIGHT", 6, 0) + ScrollIndicator:SetPoint("BOTTOMRIGHT", SV.Dock.Left.Window, "BOTTOMRIGHT", 6, 0) ScrollIndicator:SetFrameStrata("HIGH") ScrollIndicator.icon = ScrollIndicator:CreateTexture(nil, "OVERLAY") ScrollIndicator.icon:SetAllPoints() @@ -989,20 +988,10 @@ function MOD:Load() self:UpdateLocals() self:RefreshChatFrames(true) - local buttonsize = LeftSuperDockToolBar.currentSize or 22 - local barWidth = LeftSuperDock:GetWidth() - buttonsize - local spacing = LeftSuperDock.currentSpacing or 4 - - tabholder:SetFrameStrata("BACKGROUND") - tabholder:Size(barWidth, buttonsize) - tabholder:Point("LEFT", LeftSuperDockToolBar, "RIGHT", spacing, 0) - tabholder:SetFrameLevel(tabholder:GetFrameLevel() + 2) - tabholder.currentSize = buttonsize; - _G.GeneralDockManagerOverflowButton:ClearAllPoints() - _G.GeneralDockManagerOverflowButton:SetPoint('BOTTOMRIGHT', tabholder, 'BOTTOMRIGHT', -2, 2) + _G.GeneralDockManagerOverflowButton:SetPoint('BOTTOMRIGHT', SV.Dock.Left.ToolBar, 'BOTTOMRIGHT', -2, 2) _G.GeneralDockManagerOverflowButtonList:SetFixedPanelTemplate('Transparent') - _G.GeneralDockManager:SetAllPoints(tabholder) + _G.GeneralDockManager:SetAllPoints(SV.Dock.Left.ToolBar) SetAllChatHooks() FriendsMicroButton:Die() diff --git a/Interface/AddOns/SVUI/packages/dock/SVDock.lua b/Interface/AddOns/SVUI/packages/dock/SVDock.lua deleted file mode 100644 index fa403ac..0000000 --- a/Interface/AddOns/SVUI/packages/dock/SVDock.lua +++ /dev/null @@ -1,1092 +0,0 @@ ---[[ -############################################################################## -_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_ # - ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__ # - __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____ # - ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____ # - ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____ # - _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____ # - __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ # - _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_# - ___\///////////___________\///___________\/////////_____\///////////_# -############################################################################## -S U P E R - V I L L A I N - U I By: Munglunch # -############################################################################## -########################################################## -LOCALIZED LUA FUNCTIONS -########################################################## -]]-- ---[[ GLOBALS ]]-- -local _G = _G; -local unpack = _G.unpack; -local select = _G.select; -local assert = _G.assert; -local type = _G.type; -local error = _G.error; -local pcall = _G.pcall; -local print = _G.print; -local ipairs = _G.ipairs; -local pairs = _G.pairs; -local tostring = _G.tostring; -local tonumber = _G.tonumber; - ---STRING -local string = _G.string; -local upper = string.upper; -local format = string.format; -local find = string.find; -local match = string.match; -local gsub = string.gsub; ---TABLE -local table = _G.table; -local tinsert = _G.tinsert; -local tremove = _G.tremove; -local twipe = _G.wipe; ---MATH -local math = _G.math; -local min = math.min; -local floor = math.floor -local ceil = math.ceil ---BLIZZARD API -local GameTooltip = _G.GameTooltip; -local InCombatLockdown = _G.InCombatLockdown; -local CreateFrame = _G.CreateFrame; -local GetTime = _G.GetTime; -local GetItemCooldown = _G.GetItemCooldown; -local GetItemCount = _G.GetItemCount; -local GetItemInfo = _G.GetItemInfo; -local GetSpellInfo = _G.GetSpellInfo; -local IsSpellKnown = _G.IsSpellKnown; -local GetProfessions = _G.GetProfessions; -local GetProfessionInfo = _G.GetProfessionInfo; -local hooksecurefunc = _G.hooksecurefunc; ---[[ -########################################################## -GET ADDON DATA -########################################################## -]]-- -local SV = select(2, ...) -local L = SV.L - -local MOD = SV:NewPackage("SVDock", L["Docks"]); - -MOD.Docklets = { - DEFAULT = "", - FRAMES = {}, - TOOLS = {}, - SAFETY = {} -} ---[[ -########################################################## -LOCAL VARS -########################################################## -]]-- -local AddOnButton = CreateFrame("Button", "SVUI_AddonDocklet", UIParent); -local SVUI_AddonDock1 = CreateFrame('Frame', 'SVUI_AddonDock1', UIParent); -local SVUI_AddonDock2 = CreateFrame('Frame', 'SVUI_AddonDock2', UIParent); -local DockletMenu = CreateFrame("Frame", "SVUI_DockletMenu", UIParent); -local leftdock = CreateFrame("Frame", "LeftSuperDock", UIParent) -local leftbutton = CreateFrame("Button", "LeftSuperDockToggleButton", UIParent) -local toolbarLeft = CreateFrame("Frame", "LeftSuperDockToolBar", UIParent) -local rightdock = CreateFrame("Frame", "RightSuperDock", UIParent) -local rightbutton = CreateFrame("Button", "RightSuperDockToggleButton", UIParent) -local toolbarRight = CreateFrame("Frame", "RightSuperDockToolBar", UIParent) -local macrobar = CreateFrame("Frame", "RightSuperDockUtilityBar", UIParent) -local leftwindow = CreateFrame("Frame", "LeftSuperDockFrameHolder", leftdock) -local rightwindow = CreateFrame("Frame", "RightSuperDockFrameHolder", rightdock) -local topdock = CreateFrame("Frame", "TopSuperDock", UIParent) -local toolbarTop = CreateFrame("Frame", "TopSuperDockToolBar", UIParent) -toolbarTop.openWidth = 34 - -SVUI_AddonDock1.FrameName = "None"; -SVUI_AddonDock2.FrameName = "None"; - -local ICONFILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-BAG-MICRO]]; -local TOOL_DATA = { - [171] = {0,0.25,0,0.25}, -- PRO-ALCHEMY - [794] = {0.25,0.5,0,0.25,80451}, -- PRO-ARCHAELOGY - [164] = {0.5,0.75,0,0.25}, -- PRO-BLACKSMITH - [185] = {0.75,1,0,0.25,818,67097}, -- PRO-COOKING - [333] = {0,0.25,0.25,0.5,13262}, -- PRO-ENCHANTING - [202] = {0.25,0.5,0.25,0.5}, -- PRO-ENGINEERING - [129] = {0.5,0.75,0.25,0.5}, -- PRO-FIRSTAID - [773] = {0,0.25,0.5,0.75,51005}, -- PRO-INSCRIPTION - [755] = {0.25,0.5,0.5,0.75,31252}, -- PRO-JEWELCRAFTING - [165] = {0.5,0.75,0.5,0.75}, -- PRO-LEATHERWORKING - [186] = {0.75,1,0.5,0.75}, -- PRO-MINING - [197] = {0.25,0.5,0.75,1}, -- PRO-TAILORING -} -local HEARTH_SPELLS = {556,50977,18960,126892} ---[[ -########################################################## -PRE VARS/FUNCTIONS -########################################################## -]]-- -local DD_OnClick = function(self) - -- DO STUFF - self:GetParent():Hide() -end - -local DD_OnEnter = function(self) - self.hoverTex:Show() -end - -local DD_OnLeave = function(self) - self.hoverTex:Hide() -end - -local function SetFilterMenu(self) - DockletMenu:ClearAllPoints() - DockletMenu:SetPoint("TOPLEFT", self, "BOTTOMLEFT", 0, -8) - ToggleFrame(DockletMenu) -end - -local function CycleDocklets() - local list = MOD.Docklets.FRAMES - for i=1, #list do - local f = list[i] - if(not InCombatLockdown() or (InCombatLockdown() and (f.IsProtected and not f:IsProtected()))) then - local b = _G[f.ToggleName] - b:Deactivate() - if f.Hide then - f:Hide() - end - end - end -end - -local function GetDefaultWindow() - local window = MOD.Docklets.DEFAULT - if window and _G[window] then - RightSuperDockFrameHolder.FrameName = window - RightSuperDockFrameHolder:Show() - end -end - -local AlertActivate = function(self, child) - local size = SV.db.SVDock.buttonSize or 22; - self:Height(size) - child:ClearAllPoints() - child:SetAllPoints(self) -end - -local AlertDeactivate = function(self) - self:Height(1) -end - -local leftalert = CreateFrame("Frame", "LeftSuperDockAlert", UIParent) -leftalert.Activate = AlertActivate -leftalert.Deactivate = AlertDeactivate - -local rightalert = CreateFrame("Frame", "RightSuperDockAlert", UIParent) -rightalert.Activate = AlertActivate -rightalert.Deactivate = AlertDeactivate - -local rightDockSizeHook = function(self,width,height) - RightSuperDockFrameHolder:Width(width) - RightSuperDockFrameHolder:Height(height) - RightSuperDockFrameHolder:SetPoint("BOTTOMLEFT", RightSuperDockAlert, "TOPLEFT", 0, 0) -end - -local ToggleDocks = function(self) - GameTooltip:Hide() - if SV.cache.Docks.SuperDockFaded then - SV.cache.Docks.SuperDockFaded = nil; - SV:SecureFadeIn(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 1) - SV:SecureFadeIn(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 1) - else - SV.cache.Docks.SuperDockFaded = true; - SV:SecureFadeOut(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 0, true) - SV:SecureFadeOut(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 0, true) - end -end - -local Docklet_OnShow = function(self) - if(_G[RightSuperDockFrameHolder.FrameName]) then - if(InCombatLockdown() and (_G[RightSuperDockFrameHolder.FrameName].IsProtected and _G[RightSuperDockFrameHolder.FrameName]:IsProtected())) then return end - _G[RightSuperDockFrameHolder.FrameName]:Show() - end - if _G[RightSuperDockFrameHolder.SecondName] then - if(InCombatLockdown() and (_G[RightSuperDockFrameHolder.SecondName].IsProtected and _G[RightSuperDockFrameHolder.SecondName]:IsProtected())) then return end - _G[RightSuperDockFrameHolder.SecondName]:Show() - end -end - -local DockletButton_SaveColors = function(self, bg, ig, locked) - if(locked and (locked ~= nil) and self:GetAttribute("colorLocked")) then return end - self:SetAttribute("bgGradient", bg) - self:SetAttribute("iconGradient", ig) - self:SetAttribute("colorLocked", locked) - - self:SetPanelColor(bg) - self.Icon:SetGradient(unpack(SV.Media.gradient[ig])) -end - -local DockButtonActivate = function(self) - self.IsOpen = true; - self:SaveColors("green", "green") -end - -local DockButtonDeactivate = function(self) - self.IsOpen = false; - self:SaveColors("default", "icon") -end - -local DockletButton_OnEnter = function(self, ...) - if SV.cache.Docks.SuperDockFaded then - LeftSuperDock:Show() - SV:SecureFadeIn(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 1) - RightSuperDock:Show() - SV:SecureFadeIn(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 1) - end - - self:SetPanelColor("highlight") - self.Icon:SetGradient(unpack(SV.Media.gradient.bizzaro)) - - GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4) - GameTooltip:ClearLines() - if(self.CustomTooltip) then - self:CustomTooltip() - else - GameTooltip:AddLine(self.TText, 1, 1, 1) - end - GameTooltip:Show() -end - -local DockletButton_OnLeave = function(self, ...) - if SV.cache.Docks.SuperDockFaded then - SV:SecureFadeOut(LeftSuperDock, 0.2, LeftSuperDock:GetAlpha(), 0, true) - SV:SecureFadeOut(RightSuperDock, 0.2, RightSuperDock:GetAlpha(), 0, true) - end - - local bg = self:GetAttribute("bgGradient") - local ig = self:GetAttribute("iconGradient") - - self:SetPanelColor(bg) - self.Icon:SetGradient(unpack(SV.Media.gradient[ig])) - - GameTooltip:Hide() -end - -local DockletButton_OnClick = function(self, button) - if InCombatLockdown() then return end - if button == "RightButton" then - SetFilterMenu(self); - else - local linkedFrame = self.FrameName - if linkedFrame and _G[linkedFrame] then - RightSuperDockFrameHolder.FrameName = linkedFrame - if not _G[linkedFrame]:IsShown() then - CycleDocklets() - end - if not RightSuperDockFrameHolder:IsShown()then - RightSuperDockFrameHolder:Show() - end - _G[linkedFrame]:Show() - self:Activate() - else - self:Deactivate() - GetDefaultWindow() - end - end -end - -local DockletFrame_OnShow = function(self) - local frameName = self.FrameName; - if (frameName and _G[frameName]) then - _G[frameName]:Show() - end -end - -local AddonDockletToggle = function(self) - if SVUI_AddonDock1.FrameName and _G[SVUI_AddonDock1.FrameName] then - if not _G[SVUI_AddonDock1.FrameName]:IsShown() then - CycleDocklets() - if not InCombatLockdown() and not SVUI_AddonDock1:IsShown()then - SVUI_AddonDock1:Show() - end - _G[SVUI_AddonDock1.FrameName]:Show() - self:Activate() - elseif not SVUI_AddonDock1:IsShown()then - if not InCombatLockdown() then SVUI_AddonDock1:Show() end - _G[SVUI_AddonDock1.FrameName]:Show() - self:Activate() - end - else - SVUI_AddonDock1.FrameName = "None" - if InCombatLockdown()then return end - if SVUI_AddonDock1:IsShown()then - SVUI_AddonDock1:Hide() - else - SVUI_AddonDock1:Show() - end - self:Deactivate() - end - if SV.db.SVDock.docklets.enableExtra and SVUI_AddonDock2.FrameName and _G[SVUI_AddonDock2.FrameName] then - if not _G[SVUI_AddonDock2.FrameName]:IsShown() then - if not InCombatLockdown() and not SVUI_AddonDock2:IsShown()then - SVUI_AddonDock2:Show() - SVUI_AddonDock1:Show() - end - _G[SVUI_AddonDock2.FrameName]:Show() - self:Activate() - elseif not SVUI_AddonDock2:IsShown() then - if not InCombatLockdown() then - SVUI_AddonDock2:Show() - SVUI_AddonDock1:Show() - end - _G[SVUI_AddonDock2.FrameName]:Show() - self:Activate() - else - if not InCombatLockdown() then - SVUI_AddonDock2:Hide() - SVUI_AddonDock1:Hide() - end - self:Deactivate() - end - else - SVUI_AddonDock2.FrameName = "None" - end -end - -local function SetSuperDockStyle(dock) - if dock.backdrop then return end - local backdrop = CreateFrame("Frame", nil, dock) - backdrop:SetAllPoints(dock) - backdrop:SetFrameStrata("BACKGROUND") - backdrop.bg = backdrop:CreateTexture(nil, "BORDER") - backdrop.bg:FillInner(backdrop) - backdrop.bg:SetTexture(1, 1, 1, 1) - backdrop.bg:SetGradientAlpha("VERTICAL", 0, 0, 0, 0.8, 0, 0, 0, 0) - backdrop.left = backdrop:CreateTexture(nil, "OVERLAY") - backdrop.left:SetTexture(1, 1, 1, 1) - backdrop.left:Point("TOPLEFT", 1, -1) - backdrop.left:Point("BOTTOMLEFT", -1, 1) - backdrop.left:Width(4) - backdrop.left:SetGradientAlpha("VERTICAL", 0, 0, 0, 1, 0, 0, 0, 0) - backdrop.right = backdrop:CreateTexture(nil, "OVERLAY") - backdrop.right:SetTexture(1, 1, 1, 1) - backdrop.right:Point("TOPRIGHT", -1, -1) - backdrop.right:Point("BOTTOMRIGHT", -1, 1) - backdrop.right:Width(4) - backdrop.right:SetGradientAlpha("VERTICAL", 0, 0, 0, 1, 0, 0, 0, 0) - backdrop.bottom = backdrop:CreateTexture(nil, "OVERLAY") - backdrop.bottom:SetTexture(0, 0, 0, 1) - backdrop.bottom:Point("BOTTOMLEFT", 1, 1) - backdrop.bottom:Point("BOTTOMRIGHT", -1, 1) - backdrop.bottom:Height(4) - backdrop.top = backdrop:CreateTexture(nil, "OVERLAY") - backdrop.top:SetTexture(0,0,0,0) - backdrop.top:Point("TOPLEFT", 1, -1) - backdrop.top:Point("TOPRIGHT", -1, 1) - backdrop.top:SetAlpha(0) - backdrop.top:Height(1) - return backdrop -end - -MOD.CycleDocklets = CycleDocklets ---[[ -########################################################## -CORE FUNCTIONS -########################################################## -]]-- -_G.HideSuperDocks = function() - ToggleDocks(LeftDockToggleButton) -end ---[[ -########################################################## -DOCKLET HELPERS -########################################################## -]]-- -local function RemoveTool(button) - if not button or not button.listIndex then return end - local name = button:GetName(); - if not MOD.Docklets.SAFETY[name] then return end - MOD.Docklets.SAFETY[name] = false; - local i = button.listIndex; - tremove(MOD.Docklets.TOOLS, i) - local width; - local height = RightSuperDockToolBar.currentSize; - local stored = MOD.Docklets.TOOLS - local PREV_TOOL = stored[#stored] - local xOffset = (#stored - 1) * (height + 6) + 6 - PREV_TOOL:SetPoint("RIGHT", RightSuperDockToolBar, "RIGHT", (xOffset * -1), 0); - width = #stored * (height + 6) - RightSuperDockToolBar:Size(width, height) - button:Hide() -end - -local function AddTool(button) - local name = button:GetName(); - if MOD.Docklets.SAFETY[name] then return end - MOD.Docklets.SAFETY[name] = true; - local width; - local height = RightSuperDockToolBar.currentSize or 22; - local xOffset = #MOD.Docklets.TOOLS * (height + 6) + 6 - button:SetPoint("RIGHT", RightSuperDockToolBar, "RIGHT", (xOffset * -1), 0); - tinsert(MOD.Docklets.TOOLS, button) - button.listIndex = #MOD.Docklets.TOOLS; - width = #MOD.Docklets.TOOLS * (height + 6) - RightSuperDockToolBar:Size(width, height) - button:Show() -end - -local function ActivateDockletButton(button, clickFunction, tipFunction, isdefault) - button.SaveColors = DockletButton_SaveColors - button.Activate = DockButtonActivate - button.Deactivate = DockButtonDeactivate - - if(tipFunction and type(tipFunction) == "function") then - button.CustomTooltip = tipFunction - end - - if(isdefault) then - MOD.Docklets.DEFAULT = button:GetAttribute("ownerFrame") - button:SaveColors("green", "green") - else - button:SaveColors("default", "icon") - end - - button:SetScript("OnEnter", DockletButton_OnEnter) - button:SetScript("OnLeave", DockletButton_OnLeave) - - if(clickFunction and type(clickFunction) == "function") then - button:SetScript("OnClick", clickFunction) - end -end - -local function CreateBasicToolButton(name, texture, onclick, frameName, isdefault) - local fName = frameName or name; - local dockIcon = texture or [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-ADDON]]; - local clickFunction = (type(onclick)=="function") and onclick or DockletButton_OnClick; - local size = RightSuperDockToolBar.currentSize; - local button = _G[fName .. "_ToolBarButton"] or CreateFrame("Button", ("%s_ToolBarButton"):format(fName), RightSuperDockToolBar, "SVUI_DockletButtonTemplate") - - AddTool(button) - - button:Size(size,size) - button:SetFramedButtonTemplate() - button.Icon:SetTexture(dockIcon) - button:SetAttribute("tipText", "Open " .. name) - button:SetAttribute("ownerFrame", fName) - - ActivateDockletButton(button, clickFunction, nil, isdefault) - - _G[fName].ToggleName = fName.."_ToolBarButton"; - - return button -end ---[[ -########################################################## -DOCKS -########################################################## -]]-- -function MOD:CreateDockPanels() - local leftWidth = SV.db.SVDock.dockLeftWidth or 350; - local leftHeight = SV.db.SVDock.dockLeftHeight or 180; - local rightWidth = SV.db.SVDock.dockRightWidth or 350; - local rightHeight = SV.db.SVDock.dockRightHeight or 180; - local buttonsize = SV.db.SVDock.buttonSize or 22; - local spacing = SV.db.SVDock.buttonSpacing or 4; - local texture = [[Interface\AddOns\SVUI\assets\artwork\Template\BUTTON]]; - - -- [[ TOP AND BOTTOM BORDERS ]] -- - - local TopBorder = CreateFrame("Frame", "SVUITopBorder", SV.Screen) - TopBorder:Point("TOPLEFT", SV.Screen, "TOPLEFT", -1, 1) - TopBorder:Point("TOPRIGHT", SV.Screen, "TOPRIGHT", 1, 1) - TopBorder:Height(14) - TopBorder:SetBackdrop({ - bgFile = texture, - edgeFile = [[Interface\BUTTONS\WHITE8X8]], - tile = false, - tileSize = 0, - edgeSize = 1, - insets = {left = 0, right = 0, top = 0, bottom = 0} - }) - TopBorder:SetBackdropColor(unpack(SV.Media.color.special)) - TopBorder:SetBackdropBorderColor(0,0,0,1) - TopBorder:SetFrameLevel(0) - TopBorder:SetFrameStrata('BACKGROUND') - self.TopBorder = TopBorder; - self.TopBorder:SetScript("OnShow", function(this) - this:SetFrameLevel(0) - this:SetFrameStrata('BACKGROUND') - end) - self:TopBorderVisibility() - - local BottomBorder = CreateFrame("Frame", "SVUIBottomBorder", SV.Screen) - BottomBorder:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", -1, -1) - BottomBorder:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", 1, -1) - BottomBorder:Height(14) - BottomBorder:SetBackdrop({ - bgFile = texture, - edgeFile = [[Interface\BUTTONS\WHITE8X8]], - tile = false, - tileSize = 0, - edgeSize = 1, - insets = {left = 0, right = 0, top = 0, bottom = 0} - }) - BottomBorder:SetBackdropColor(unpack(SV.Media.color.special)) - BottomBorder:SetBackdropBorderColor(0,0,0,1) - BottomBorder:SetFrameLevel(0) - BottomBorder:SetFrameStrata('BACKGROUND') - self.BottomBorder = BottomBorder; - self.BottomBorder:SetScript("OnShow", function(this) - this:SetFrameLevel(0) - this:SetFrameStrata('BACKGROUND') - end) - self:BottomBorderVisibility() - - -- [[ BOTTOM LEFT DOCK ]] -- - - leftdock:SetFrameStrata("BACKGROUND") - leftdock:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", 1, buttonsize + 10) - leftdock:Size(leftWidth, leftHeight) - leftdock.currentSpacing = spacing - SV.Mentalo:Add(leftdock, L["Left Dock"]) - - -- [[ CORNER BUTTON ]] -- - - leftbutton:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", 1, 2) - leftbutton:Size(buttonsize, buttonsize) - leftbutton:SetFramedButtonTemplate() - leftbutton.Icon = leftbutton:CreateTexture(nil, "OVERLAY", nil, 0) - leftbutton.Icon:FillInner(leftbutton,2,2) - leftbutton.Icon:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Icons\\SVUI-EMBLEM") - leftbutton.TText = L["Toggle Docks"] - leftbutton:RegisterForClicks("AnyUp") - ActivateDockletButton(leftbutton, ToggleDocks) - - -- [[ TOOLBARS AND OTHER NONSENSE ]] -- - - toolbarLeft:Point("LEFT", leftbutton, "RIGHT", spacing, 0) - toolbarLeft:Width(1) - toolbarLeft:Height(buttonsize) - toolbarLeft.currentSize = buttonsize; - - leftalert:SetParent(leftdock) - leftalert:SetFrameStrata("BACKGROUND") - leftalert:Size(leftWidth, 1) - leftalert:Point("BOTTOMRIGHT", leftdock, "BOTTOMRIGHT",0, 0) - leftalert:SetFrameLevel(leftalert:GetFrameLevel() + 2) - leftalert.Activate = AlertActivate - leftalert.Deactivate = AlertDeactivate - - leftwindow:SetFrameStrata("BACKGROUND") - leftwindow:Point("BOTTOMRIGHT", leftalert, "TOPRIGHT", 0, 0) - leftwindow:Size(leftWidth, leftHeight) - leftdock.backdrop = SetSuperDockStyle(leftwindow) - - -- [[ BOTTOM RIGHT DOCK ]] -- - - rightdock:SetFrameStrata("BACKGROUND") - rightdock:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", -1, buttonsize + 10) - rightdock:Size(rightWidth, rightHeight) - SV.Mentalo:Add(rightdock, L["Right Dock"]) - - -- [[ CORNER BUTTON ]] -- - - rightbutton:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", -1, 2) - rightbutton:Size(buttonsize, buttonsize) - rightbutton:SetFramedButtonTemplate() - rightbutton.Icon = rightbutton:CreateTexture(nil, "OVERLAY") - rightbutton.Icon:FillInner(rightbutton,2,2) - rightbutton.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-HENCHMAN]]) - rightbutton.TText = "Call Henchman!" - rightbutton:RegisterForClicks("AnyUp") - ActivateDockletButton(rightbutton, SV.ToggleHenchman) - - -- [[ TOOLBARS AND OTHER NONSENSE ]] -- - - toolbarRight:Point("RIGHT", rightbutton, "LEFT", -spacing, 0) - toolbarRight:Size(1, buttonsize) - toolbarRight.currentSize = buttonsize; - - macrobar:Point("RIGHT", toolbarRight, "LEFT", -spacing, 0) - macrobar:Size(1, buttonsize) - macrobar.currentSize = buttonsize; - - rightalert:SetParent(rightdock) - rightalert:SetFrameStrata("BACKGROUND") - rightalert:Size(rightWidth, 1) - rightalert:Point("BOTTOMLEFT", rightdock, "BOTTOMLEFT", 0, 0) - rightalert:SetFrameLevel(rightalert:GetFrameLevel() + 2) - rightalert.Activate = AlertActivate - rightalert.Deactivate = AlertDeactivate - - rightwindow:SetFrameStrata("BACKGROUND") - rightwindow:Point("BOTTOMLEFT", rightalert, "TOPLEFT", 0, 0) - rightwindow:Size(rightWidth, rightHeight) - rightdock.backdrop = SetSuperDockStyle(rightwindow) - - if SV.cache.Docks.SuperDockFaded then LeftSuperDock:Hide() RightSuperDock:Hide() end - - -- [[ TOP LEFT DOCK ]] -- - - topdock:SetFrameStrata("BACKGROUND") - topdock:Point("TOPLEFT", SV.Screen, "TOPLEFT", 1, -(buttonsize + 10)) - topdock:Size(leftWidth, leftHeight) - SV.Mentalo:Add(topdock, L["Top Dock"]) - - toolbarTop:Point("TOPLEFT", SV.Screen, "TOPLEFT", 1, -2) - toolbarTop:Size(1, buttonsize) - toolbarTop.openWidth = buttonsize + 12; - - --RIGHT CLICK MENU - - DockletMenu:SetParent(SV.Screen) - DockletMenu:SetPanelTemplate("Default") - DockletMenu.buttons = {} - DockletMenu:SetFrameStrata("DIALOG") - DockletMenu:SetClampedToScreen(true) - - for i = 1, 4 do - DockletMenu.buttons[i] = CreateFrame("Button", nil, DockletMenu) - - DockletMenu.buttons[i].hoverTex = DockletMenu.buttons[i]:CreateTexture(nil, 'OVERLAY') - DockletMenu.buttons[i].hoverTex:SetAllPoints() - DockletMenu.buttons[i].hoverTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]]) - DockletMenu.buttons[i].hoverTex:SetBlendMode("ADD") - DockletMenu.buttons[i].hoverTex:Hide() - - DockletMenu.buttons[i].activeTex = DockletMenu.buttons[i]:CreateTexture(nil, 'OVERLAY') - DockletMenu.buttons[i].activeTex:SetAllPoints() - DockletMenu.buttons[i].activeTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]]) - DockletMenu.buttons[i].activeTex:SetVertexColor(0,0.7,0) - DockletMenu.buttons[i].activeTex:SetBlendMode("ADD") - DockletMenu.buttons[i].activeTex:Hide() - - DockletMenu.buttons[i].text = DockletMenu.buttons[i]:CreateFontString(nil, 'BORDER') - DockletMenu.buttons[i].text:SetAllPoints() - DockletMenu.buttons[i].text:SetFont(SV.Media.font.roboto,12,"OUTLINE") - DockletMenu.buttons[i].text:SetJustifyH("LEFT") - DockletMenu.buttons[i].text:SetText(("Option %d"):format(i)) - - DockletMenu.buttons[i]:SetHeight(16) - DockletMenu.buttons[i]:SetWidth(115) - - DockletMenu.buttons[i]:SetScript("OnEnter", DD_OnEnter) - DockletMenu.buttons[i]:SetScript("OnLeave", DD_OnLeave) - DockletMenu.buttons[i]:SetScript("OnClick", DD_OnClick) - - if i == 1 then - DockletMenu.buttons[i]:SetPoint("TOPLEFT", DockletMenu, "TOPLEFT", 10, -10) - else - DockletMenu.buttons[i]:SetPoint("TOPLEFT", DockletMenu.buttons[i - 1], "BOTTOMLEFT", 0, 0) - end - - DockletMenu.buttons[i]:Show() - end - - DockletMenu:SetSize(135, 94) - DockletMenu:Hide() - SV:AddToDisplayAudit(DockletMenu) -end - -local function BorderColorUpdates() - SVUITopBorder:SetBackdropColor(unpack(SV.Media.color.special)) - SVUITopBorder:SetBackdropBorderColor(0,0,0,1) - SVUIBottomBorder:SetBackdropColor(unpack(SV.Media.color.special)) - SVUIBottomBorder:SetBackdropBorderColor(0,0,0,1) -end - -SV:NewCallback(BorderColorUpdates) - -do - local LastAddedMacro; - local MacroCount = 0; - - local function GetMacroCooldown(itemID) - local start,duration = GetItemCooldown(itemID) - local expires = duration - (GetTime() - start) - if expires > 0.05 then - local timeLeft = 0; - local calc = 0; - if expires < 4 then - return format("|cffff0000%.1f|r", expires) - elseif expires < 60 then - return format("|cffffff00%d|r", floor(expires)) - elseif expires < 3600 then - timeLeft = ceil(expires / 60); - calc = floor((expires / 60) + .5); - return format("|cffff9900%dm|r", timeLeft) - elseif expires < 86400 then - timeLeft = ceil(expires / 3600); - calc = floor((expires / 3600) + .5); - return format("|cff66ffff%dh|r", timeLeft) - else - timeLeft = ceil(expires / 86400); - calc = floor((expires / 86400) + .5); - return format("|cff6666ff%dd|r", timeLeft) - end - else - return "|cff6666ffReady|r" - end - end - - local SetMacroTooltip = function(self) - if not self.TText2 then - GameTooltip:AddLine("Open " .. self.TText, 1, 1, 1) - else - GameTooltip:AddDoubleLine("[Left-Click]", "Open " .. self.TText, 0, 1, 0, 1, 1, 1) - GameTooltip:AddDoubleLine("[Right-Click]", "Use " .. self.TText2, 0, 1, 0, 1, 1, 1) - if InCombatLockdown() then return end - if(self.IsItem) then - GameTooltip:AddLine(" ", 1, 1, 1) - local remaining = GetMacroCooldown(self.IsItem) - GameTooltip:AddDoubleLine(self.TText2, remaining, 1, 0.5, 0, 0, 1, 1) - end - end - end - - local SetHearthTooltip = function(self) - GameTooltip:AddLine(L["Hearthstone"], 1, 1, 1) - if InCombatLockdown() then return end - local remaining = GetMacroCooldown(6948) - GameTooltip:AddDoubleLine(L["Time Remaining"], remaining, 1, 1, 1, 0, 1, 1) - if(self.ExtraSpell) then - GameTooltip:AddLine(" ", 1, 1, 1) - GameTooltip:AddDoubleLine(self.ExtraSpell, "[Right Click]", 1, 1, 1, 0, 1, 0) - end - end - - local function AddMacroTool(frame) - local width; - local height = RightSuperDockToolBar.currentSize; - if not LastAddedMacro then - frame:Point("RIGHT", RightSuperDockUtilityBar, "RIGHT", -6, 0); - else - frame:Point("RIGHT", LastAddedMacro, "LEFT", -6, 0); - end - LastAddedMacro = frame; - MacroCount = MacroCount + 1; - width = MacroCount * (height + 6) - RightSuperDockUtilityBar:Size(width, height) - end - - local function CreateMacroToolButton(proName, proID, itemID, size) - local data = TOOL_DATA[proID] - if(not data) then return end - local button = CreateFrame("Button", ("%s_MacroBarButton"):format(itemID), RightSuperDockUtilityBar, "SecureActionButtonTemplate") - button:Size(size, size) - AddMacroTool(button) - button:SetFramedButtonTemplate() - button.Icon = button:CreateTexture(nil, "OVERLAY") - button.Icon:FillInner(button, 2, 2) - button.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\PROFESSIONS]]) - button.Icon:SetTexCoord(data[1], data[2], data[3], data[4]) - button.Icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1) - button.skillName = proName; - button.itemId = itemID; - button.TText = proName; - - if proID == 186 then proName = "Smelting" end - - if(data[5]) then - local rightClick - button:RegisterForClicks("AnyDown") - if(data[6] and GetItemCount(data[6], true) > 0) then - rightClick = GetItemInfo(data[6]) - button.IsItem = data[6] - else - rightClick = GetSpellInfo(data[5]) - end - button:SetAttribute("type", "macro") - button:SetAttribute("macrotext", "/cast [button:2] " .. rightClick .. ";" .. proName) - button.TText2 = rightClick - else - button:SetAttribute("type", "macro") - button:SetAttribute("macrotext", "/cast " .. proName) - end - - ActivateDockletButton(button, nil, SetMacroTooltip) - end - - function MOD:LoadToolBarProfessions() - if(SV.ToolBarLoaded) then return end - if(InCombatLockdown()) then MOD:RegisterEvent("PLAYER_REGEN_ENABLED"); return end - local size = RightSuperDockUtilityBar.currentSize - local hearth = CreateFrame("Button", "RightSuperDockHearthButton", RightSuperDockUtilityBar, "SecureActionButtonTemplate") - hearth:Size(size, size) - AddMacroTool(hearth) - hearth:SetFramedButtonTemplate() - hearth.Icon = hearth:CreateTexture(nil, "OVERLAY", nil, 0) - hearth.Icon:FillInner(hearth,2,2) - hearth.Icon:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Icons\\DOCK-HEARTH") - hearth.Icon:SetTexCoord(0,0.5,0,1) - - hearth:RegisterForClicks("AnyUp") - hearth:SetAttribute("type", "item") - hearth:SetAttribute("item", "Hearthstone") - - ActivateDockletButton(hearth, nil, SetHearthTooltip) - - for i = 1, #HEARTH_SPELLS do - if(IsSpellKnown(HEARTH_SPELLS[i])) then - local rightClickSpell = GetSpellInfo(HEARTH_SPELLS[i]) - hearth:SetAttribute("type2", "spell") - hearth:SetAttribute("spell", rightClickSpell) - hearth.ExtraSpell = rightClickSpell - end - end - - local proName, proID - local prof1, prof2, archaeology, _, cooking, firstAid = GetProfessions() - if(firstAid ~= nil) then - proName, _, _, _, _, _, proID = GetProfessionInfo(firstAid) - CreateMacroToolButton(proName, proID, firstAid, size) - end - if(archaeology ~= nil) then - proName, _, _, _, _, _, proID = GetProfessionInfo(archaeology) - CreateMacroToolButton(proName, proID, archaeology, size) - end - if(cooking ~= nil) then - proName, _, _, _, _, _, proID = GetProfessionInfo(cooking) - CreateMacroToolButton(proName, proID, cooking, size) - end - if(prof2 ~= nil) then - proName, _, _, _, _, _, proID = GetProfessionInfo(prof2) - if(proID ~= 182 and proID ~= 393) then - CreateMacroToolButton(proName, proID, prof2, size) - end - end - if(prof1 ~= nil) then - proName, _, _, _, _, _, proID = GetProfessionInfo(prof1) - if(proID ~= 182 and proID ~= 393) then - CreateMacroToolButton(proName, proID, prof1, size) - end - end - - SV.ToolBarLoaded = true - end -end ---[[ -########################################################## -EXTERNALLY ACCESSIBLE METHODS -########################################################## -]]-- -SV.CurrentlyDocked = {}; -function MOD:IsDockletReady(arg) - local addon = arg; - if arg == "DockletMain" or arg == "DockletExtra" then - addon = SV.db.SVDock.docklets[arg] - end - if addon == nil or addon == "None" then - return false - end - return true -end - -do - local function UnregisterDocklet(name) - local frame = _G[name]; - if not frame or not frame.listIndex then return end - local i = frame.listIndex; - tremove(MOD.Docklets.FRAMES, i) - end - - function MOD:ReloadDocklets(alert) - if InCombatLockdown() then return end - - local frame, i; - twipe(SV.CurrentlyDocked); - if self:IsDockletReady("DockletMain") then - frame = SV.db.SVDock.docklets.MainWindow - if frame ~= nil and frame ~= "None" and _G[frame] then - UnregisterDocklet(frame) - SV.db.SVDock.docklets.MainWindow = "None" - end - elseif AddOnButton.IsRegistered then - RemoveTool(AddOnButton) - AddOnButton.TText = ""; - AddOnButton.IsRegistered = false; - end - if self:IsDockletReady("DockletExtra") then - frame = SV.db.SVDock.docklets.ExtraWindow - if frame ~= nil and frame ~= "None" and _G[frame] then - UnregisterDocklet(frame) - SV.db.SVDock.docklets.ExtraWindow = "None" - end - end - SVUI_AddonDock1.FrameName = "None" - SVUI_AddonDock2.FrameName = "None" - - local width = SV.db.SVDock.dockRightWidth or 350; - local height = (SV.db.SVDock.dockRightHeight or 180) - 22 - - if self:IsDockletReady('DockletMain') then - if self:IsDockletReady("DockletExtra") and SV.db.SVDock.docklets.enableExtra then - width = width * 0.5; - end - SVUI_AddonDock1:ClearAllPoints() - SVUI_AddonDock1:Size(width,height) - SVUI_AddonDock1:Point('BOTTOMLEFT',RightSuperDock,'BOTTOMLEFT',1,1) - SVUI_AddonDock2:ClearAllPoints() - SVUI_AddonDock2:Size(width,height) - SVUI_AddonDock2:Point('BOTTOMLEFT',SVUI_AddonDock1,'BOTTOMRIGHT',0,0) - end - end -end - -function MOD:RegisterDocklet(name, tooltip, texture, onclick, isdefault) - local frame = _G[name]; - if frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected()) then - frame:ClearAllPoints() - frame:SetParent(RightSuperDockFrameHolder) - frame:FillInner(RightSuperDockFrameHolder, 4, 4) - frame.FrameName = name; - tinsert(self.Docklets.FRAMES, frame); - frame.listIndex = #self.Docklets.FRAMES; - frame.ToolbarButton = CreateBasicToolButton(tooltip, texture, onclick, name, isdefault) - end -end - -function MOD:RegisterMainDocklet(name) - local frame = _G[name]; - if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then - SVUI_AddonDock1.FrameName = name; - SV.db.SVDock.docklets.MainWindow = name; - frame:ClearAllPoints() - frame:SetParent(SVUI_AddonDock1) - frame:SetAllPoints(SVUI_AddonDock1) - frame.ToggleName = "SVUI_AddonDocklet"; - tinsert(self.Docklets.FRAMES, frame); - frame.listIndex = #self.Docklets.FRAMES; - AddTool(AddOnButton) - AddOnButton.TText = ""; - AddOnButton.IsRegistered = true - SV.CurrentlyDocked[name] = true - if not InCombatLockdown() and frame:IsShown() then frame:Hide() end - end -end - -function MOD:RegisterExtraDocklet(name) - local frame = _G[name]; - if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then - SVUI_AddonDock2.FrameName = name; - SV.db.SVDock.docklets.ExtraWindow = name; - frame:ClearAllPoints() - frame:SetParent(SVUI_AddonDock2) - frame:SetAllPoints(SVUI_AddonDock2) - frame.ToggleName = "SVUI_AddonDocklet"; - tinsert(self.Docklets.FRAMES, frame); - frame.listIndex = #self.Docklets.FRAMES; - AddOnButton.TText = ""; - SV.CurrentlyDocked[name] = true; - if not InCombatLockdown() and frame:IsShown() then frame:Hide() end - end -end ---[[ -########################################################## -BUILD/UPDATE -########################################################## -]]-- -function MOD:UpdateSuperDock() - local leftWidth = SV.db.SVDock.dockLeftWidth or 350; - local leftHeight = SV.db.SVDock.dockLeftHeight or 180; - local rightWidth = SV.db.SVDock.dockRightWidth or 350; - local rightHeight = SV.db.SVDock.dockRightHeight or 180; - local buttonsize = SV.db.SVDock.buttonSize or 22; - local spacing = SV.db.SVDock.buttonSpacing or 4; - - _G["LeftSuperDock"]:Size(leftWidth, leftHeight) - _G["LeftSuperDockAlert"]:Width(leftWidth) - _G["LeftSuperDockFrameHolder"]:Size(leftWidth, leftHeight) - _G["RightSuperDock"]:Size(rightWidth, rightHeight) - _G["RightSuperDockAlert"]:Width(rightWidth) - _G["RightSuperDockFrameHolder"]:Size(rightWidth, rightHeight) - - self:BottomBorderVisibility(); - self:TopBorderVisibility(); - self:UpdateDockBackdrops(); - self:ReloadDocklets() -end - -function MOD:UpdateDockBackdrops() - if SV.db.SVDock.rightDockBackdrop then - RightSuperDock.backdrop:Show() - RightSuperDock.backdrop:ClearAllPoints() - RightSuperDock.backdrop:WrapOuter(RightSuperDock, 4, 4) - else - RightSuperDock.backdrop:Hide() - end - if SV.db.SVDock.leftDockBackdrop then - LeftSuperDock.backdrop:Show() - LeftSuperDock.backdrop:ClearAllPoints() - LeftSuperDock.backdrop:WrapOuter(LeftSuperDock, 4, 4) - else - LeftSuperDock.backdrop:Hide() - end -end - -function MOD:BottomBorderVisibility() - if SV.db.SVDock.bottomPanel then - self.BottomBorder:Show() - else - self.BottomBorder:Hide() - end -end - -function MOD:TopBorderVisibility() - if SV.db.SVDock.topPanel then - self.TopBorder:Show() - else - self.TopBorder:Hide() - end -end - -function MOD:PLAYER_REGEN_ENABLED() - self:UnregisterEvent('PLAYER_REGEN_ENABLED') - self:LoadToolBarProfessions() -end - -function MOD:ReLoad() - self:UpdateSuperDock(); -end - -function MOD:Load() - SV.cache.Docks = SV.cache.Docks or {} - - if(not SV.cache.Docks.SuperDockFaded) then - SV.cache.Docks.SuperDockFaded = false - end - - self:CreateDockPanels() - - local width = RightSuperDock:GetWidth(); - local height = RightSuperDock:GetHeight() - 22 - RightSuperDockFrameHolder:Size(width, height) - RightSuperDockFrameHolder:SetPoint("BOTTOMLEFT", RightSuperDockAlert, "TOPLEFT", 0, 0) - RightSuperDockFrameHolder:SetScript("OnShow", Docklet_OnShow) - - if not InCombatLockdown()then - CycleDocklets() - end - - hooksecurefunc(RightSuperDock, "SetSize", rightDockSizeHook) - self:UpdateDockBackdrops() - SVUI_AddonDock1:SetFrameLevel(RightSuperDockFrameHolder:GetFrameLevel() + 50) - SVUI_AddonDock2:SetFrameLevel(RightSuperDockFrameHolder:GetFrameLevel() + 50) - - local size = RightSuperDockToolBar.currentSize; - - AddOnButton:SetParent(RightSuperDockToolBar) - AddOnButton:Size(size, size) - AddOnButton:SetFramedButtonTemplate() - AddOnButton.Icon = AddOnButton:CreateTexture(nil, "OVERLAY") - AddOnButton.Icon:FillInner() - AddOnButton.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-ADDON]]) - AddOnButton.TText = ""; - AddOnButton.IsRegistered = false; - - ActivateDockletButton(AddOnButton, AddonDockletToggle) - - AddOnButton:Hide() - - SVUI_AddonDock1:SetScript("OnShow", DockletFrame_OnShow) - SVUI_AddonDock2:SetScript("OnShow", DockletFrame_OnShow) - self:ReloadDocklets(true) - - SV.Timers:ExecuteTimer(self.LoadToolBarProfessions, 5) -end \ No newline at end of file diff --git a/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua b/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua index 0a067d2..a40a011 100644 --- a/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua +++ b/Interface/AddOns/SVUI/packages/henchmen/SVHenchmen.lua @@ -646,7 +646,7 @@ function SV:ToggleHenchman() minion:Show() minion.anim:Play() end - RightSuperDockToggleButton.icon:SetGradient(unpack(SV.Media.gradient.green)) + SV.Dock.Right.Button.Icon:SetGradient(unpack(SV.Media.gradient.green)) else UpdateHenchmanModel(true) for _,frame in pairs(SUBOPTIONS)do @@ -670,7 +670,7 @@ function SV:ToggleHenchman() minion.anim:Finish() minion:Hide() end - RightSuperDockToggleButton.icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1) + SV.Dock.Right.Button.Icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1) end end @@ -953,7 +953,7 @@ BUILD FUNCTION / UPDATE function MOD:Load() local bubble = CreateFrame("Frame", "HenchmenSpeechBubble", SV.Screen) bubble:SetSize(256,128) - bubble:Point("BOTTOMRIGHT", RightSuperDockToggleButton, "TOPLEFT", 0, 0) + bubble:Point("BOTTOMRIGHT", SV.Dock.Right.Button, "TOPLEFT", 0, 0) bubble:SetFrameStrata("DIALOG") bubble:SetFrameLevel(24) bubble.bg = bubble:CreateTexture(nil,"BORDER") diff --git a/Interface/AddOns/SVUI/packages/stats/SVStats.lua b/Interface/AddOns/SVUI/packages/stats/SVStats.lua index 3aa88e7..85eb6ca 100644 --- a/Interface/AddOns/SVUI/packages/stats/SVStats.lua +++ b/Interface/AddOns/SVUI/packages/stats/SVStats.lua @@ -146,7 +146,7 @@ local UpdateAnchor = function() width = anchor:GetWidth() / numPoints - 4; height = anchor:GetHeight() - 4; if(backdrops) then - height = RightSuperDockToggleButton:GetHeight() - 6 + height = SV.Dock.Right.Button:GetHeight() - 6 end end @@ -669,7 +669,7 @@ function MOD:UpdateStatSize() local gxWidth = tonumber(rez:match("(%d+)x%d+")); local bw = gxWidth * 0.5 local defaultStatBarWidth = min(bw, 800) - local buttonsize = LeftSuperDockToolBar.currentSize or 22 + local buttonsize = SV.Dock.Left.ToolBar:GetHeight() local statBarWidth = SV.db.SVStats.dockStatWidth or defaultStatBarWidth _G["SVUI_TopStatsDock"]:Size(statBarWidth - 2, buttonsize - 8) _G["SVUI_StatsBar1"]:Size((statBarWidth * 0.5) - 1, buttonsize - 8) @@ -693,8 +693,8 @@ function MOD:Load() local gxWidth = tonumber(rez:match("(%d+)x%d+")); local bw = gxWidth * 0.5 local defaultStatBarWidth = min(bw, 800) - local buttonsize = LeftSuperDockToolBar.currentSize or 22 - local spacing = LeftSuperDock.currentSpacing or 4 + local buttonsize = SV.Dock.Left.ToolBar:GetHeight() + local spacing = SV.Dock.Left:GetAttribute("spacingSize") local statBarWidth = SV.db.SVStats.dockStatWidth or defaultStatBarWidth hexHighlight = SV:HexColor("highlight") or "FFFFFF" @@ -714,7 +714,7 @@ function MOD:Load() local topanchor = CreateFrame("Frame", "SVUI_TopStatsDock", SV.Screen) topanchor:Size(statBarWidth - 2, buttonsize - 8) - topanchor:Point("LEFT", TopSuperDockToolBar, "RIGHT", spacing, 0) + topanchor:Point("LEFT", SV.Dock.Top.ToolBar, "RIGHT", spacing, 0) local topleftdata = CreateFrame("Frame", "SVUI_StatsBar1", topanchor) topleftdata:Size((statBarWidth * 0.5) - 1, buttonsize - 8) diff --git a/Interface/AddOns/SVUI/packages/tip/SVTip.lua b/Interface/AddOns/SVUI/packages/tip/SVTip.lua index 125cbb4..ed2326c 100644 --- a/Interface/AddOns/SVUI/packages/tip/SVTip.lua +++ b/Interface/AddOns/SVUI/packages/tip/SVTip.lua @@ -584,8 +584,8 @@ local _hook_GameTooltip_SetDefaultAnchor = function(self, parent) self:ClearAllPoints() if(SV.SVBag.BagFrame and SV.SVBag.BagFrame:IsShown()) then self:SetPoint("BOTTOMRIGHT", SV.SVBag.BagFrame, "TOPRIGHT", -44, 18) - elseif(RightSuperDock:GetAlpha() == 1 and RightSuperDock:IsShown()) then - self:SetPoint("BOTTOMRIGHT", RightSuperDock, "TOPRIGHT", -44, 18) + elseif(SV.Dock.Right:GetAlpha() == 1 and SV.Dock.Right:IsShown()) then + self:SetPoint("BOTTOMRIGHT", SV.Dock.Right, "TOPRIGHT", -44, 18) else self:SetPoint("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", -44, 78) end @@ -866,7 +866,7 @@ function MOD:Load() if not SV.db.SVTip.enable then return end local anchor = CreateFrame("Frame", "SVUI_ToolTip", SV.Screen) - anchor:Point("BOTTOMRIGHT", RightSuperDock, "TOPRIGHT", 0, 60) + anchor:Point("BOTTOMRIGHT", SV.Dock.Right, "TOPRIGHT", 0, 60) anchor:Size(130, 20) anchor:SetFrameLevel(anchor:GetFrameLevel() + 50) SV.Mentalo:Add(anchor, L["Tooltip"]) diff --git a/Interface/AddOns/SVUI/scripts/misc.lua b/Interface/AddOns/SVUI/scripts/misc.lua index abd9a14..21a9006 100644 --- a/Interface/AddOns/SVUI/scripts/misc.lua +++ b/Interface/AddOns/SVUI/scripts/misc.lua @@ -474,7 +474,7 @@ end local function CreateTotemBar() if(not SV.db.totems.enable) then return; end - local xOffset = SV.db.SVDock.dockLeftWidth + 12 + local xOffset = SV.db.Dock.dockLeftWidth + 12 TotemBar = CreateFrame("Frame", "SVUI_TotemBar", SV.Screen) TotemBar:SetPoint("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", xOffset, 40) for i = 1, MAX_TOTEMS do diff --git a/Interface/AddOns/SVUI/scripts/questwatch.lua b/Interface/AddOns/SVUI/scripts/questwatch.lua index fcaa77e..006fe3a 100644 --- a/Interface/AddOns/SVUI/scripts/questwatch.lua +++ b/Interface/AddOns/SVUI/scripts/questwatch.lua @@ -58,7 +58,7 @@ local L = SV.L LOCAL VARS ########################################################## ]]-- -local RightSuperDockFrameHolder, QuestFrame, ObjectiveTrackerFrame; +local QuestFrame, ObjectiveTrackerFrame; local ICON_FILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-QUESTS]] local OBJECTIVE_TRACKER_LINE_WIDTH = _G.OBJECTIVE_TRACKER_LINE_WIDTH; --[[ @@ -67,25 +67,23 @@ CORE FUNCTIONS ########################################################## ]]-- local QuestFrame_OnEvent = function(self, event) - if(event == "QUEST_AUTOCOMPLETE" and RightSuperDockFrameHolder and QuestFrame) then - if RightSuperDockFrameHolder.FrameName and _G[RightSuperDockFrameHolder.FrameName] and _G[RightSuperDockFrameHolder.FrameName]:IsShown() then return end + if(event == "QUEST_AUTOCOMPLETE" and SV.Dock.Right.Window and QuestFrame) then + if SV.Dock.Right.Window.FrameName and _G[SV.Dock.Right.Window.FrameName] and _G[SV.Dock.Right.Window.FrameName]:IsShown() then return end if not QuestFrame:IsShown() then - RightSuperDockFrameHolder.FrameName = "SVUI_QuestFrame" - if not RightSuperDockFrameHolder:IsShown()then - RightSuperDockFrameHolder:Show() + SV.Dock.Right.Window.FrameName = "SVUI_QuestFrame" + if not SV.Dock.Right.Window:IsShown()then + SV.Dock.Right.Window:Show() end - SV.SVDock:CycleDocklets() + SV.Dock:CycleDocklets() QuestFrame:Show() if(QuestFrame.ToolbarButton) then - QuestFrame.ToolbarButton.IsOpen = true; - QuestFrame.ToolbarButton:SaveColors("green", "green") + QuestFrame.ToolbarButton:Activate() end end end end local function CreateQuestFrame() - RightSuperDockFrameHolder = _G.RightSuperDockFrameHolder ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame if(not ObjectiveTrackerFrame) then return end if(not SV.db.general.questWatch) then @@ -126,11 +124,11 @@ local function CreateQuestFrame() else local bgTex = [[Interface\BUTTONS\WHITE8X8]] local bdTex = SV.Media.bar.glow - local WIDTH, HEIGHT = RightSuperDockFrameHolder:GetSize() + local WIDTH, HEIGHT = SV.Dock.Right.Window:GetSize() - QuestFrame = CreateFrame("Frame", "SVUI_QuestFrame", RightSuperDockFrameHolder); + QuestFrame = CreateFrame("Frame", "SVUI_QuestFrame", SV.Dock.Right.Window); QuestFrame:SetFrameStrata("BACKGROUND"); - SV.SVDock:RegisterDocklet("SVUI_QuestFrame", "Quest Watch", ICON_FILE, false, true) + SV.Dock:RegisterDocklet("SVUI_QuestFrame", "Quest Watch", ICON_FILE, false, true) local listFrame = CreateFrame("ScrollFrame", nil, QuestFrame); listFrame:SetPoint("TOPLEFT", QuestFrame, -62, 0); diff --git a/Interface/AddOns/SVUI/scripts/raid.lua b/Interface/AddOns/SVUI/scripts/raid.lua index ac43da5..4a18a4b 100644 --- a/Interface/AddOns/SVUI/scripts/raid.lua +++ b/Interface/AddOns/SVUI/scripts/raid.lua @@ -94,8 +94,8 @@ local function ToggleRaidUtil(event) end if CheckRaidStatus() then - local width = TopSuperDockToolBar.openWidth - TopSuperDockToolBar:SetWidth(width) + local width = SV.Dock.Top.ToolBar.openWidth + SV.Dock.Top.ToolBar:SetWidth(width) if RaidUtilityPanel.toggled == true then SVUI_RaidTools:Hide() RaidUtilityPanel:Show() @@ -104,7 +104,7 @@ local function ToggleRaidUtil(event) RaidUtilityPanel:Hide() end else - TopSuperDockToolBar:SetWidth(1) + SV.Dock.Top.ToolBar:SetWidth(1) SVUI_RaidTools:Hide() RaidUtilityPanel:Hide() end @@ -119,13 +119,13 @@ RaidUtilFrame:RegisterEvent("PLAYER_ENTERING_WORLD") RaidUtilFrame:SetScript("OnEvent", ToggleRaidUtil) local function LoadRaidUtility() - local buttonsize = SV.db.SVDock.buttonSize or 22; + local buttonsize = SV.db.Dock.buttonSize or 22; --Create main frame local RaidUtilityPanel = CreateFrame("Frame", "RaidUtilityPanel", SV.Screen, "SecureHandlerClickTemplate") RaidUtilityPanel:SetPanelTemplate('Transparent') RaidUtilityPanel:Width(120) RaidUtilityPanel:Height(PANEL_HEIGHT) - RaidUtilityPanel:SetPoint("TOPLEFT", TopSuperDockToolBar, "BOTTOMLEFT", 0, -2) + RaidUtilityPanel:SetPoint("TOPLEFT", SV.Dock.Top.ToolBar, "BOTTOMLEFT", 0, -2) RaidUtilityPanel:SetFrameLevel(3) RaidUtilityPanel.toggled = false RaidUtilityPanel:SetFrameStrata("HIGH") @@ -134,7 +134,7 @@ local function LoadRaidUtility() --Show Button local SVUI_RaidTools = CreateFrame("Button", "SVUI_RaidTools", SV.Screen, "UIMenuButtonStretchTemplate, SecureHandlerClickTemplate") SVUI_RaidTools:Size(buttonsize, buttonsize) - SVUI_RaidTools:Point("CENTER", TopSuperDockToolBar, "CENTER", 0, 0) + SVUI_RaidTools:Point("CENTER", SV.Dock.Top.ToolBar, "CENTER", 0, 0) SVUI_RaidTools.icon = SVUI_RaidTools:CreateTexture(nil,"OVERLAY",nil) SVUI_RaidTools.icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-RAIDTOOL]]) SVUI_RaidTools.icon:Point("TOPLEFT", SVUI_RaidTools, "TOPLEFT", 1, -1) diff --git a/Interface/AddOns/SVUI/setup/installer.lua b/Interface/AddOns/SVUI/setup/installer.lua index 22d0631..da661e7 100644 --- a/Interface/AddOns/SVUI/setup/installer.lua +++ b/Interface/AddOns/SVUI/setup/installer.lua @@ -221,7 +221,7 @@ end local function UFMoveRightQuadrant(toggle) local anchors = SV.cache.Anchors - local dH = SV.db.SVDock.dockRightHeight + 60 + local dH = SV.db.Dock.dockRightHeight + 60 if not toggle or toggle == "high" then anchors.SVUI_BossHolder_MOVE = "RIGHTSVUIParentRIGHT-1050" anchors.SVUI_ArenaHolder_MOVE = "RIGHTSVUIParentRIGHT-1050" @@ -248,10 +248,10 @@ function SV.Setup:UserScreen(rez, preserve) if rez == "low" then if not preserve then - SV.db.SVDock.dockLeftWidth = 350; - SV.db.SVDock.dockLeftHeight = 180; - SV.db.SVDock.dockRightWidth = 350; - SV.db.SVDock.dockRightHeight = 180; + SV.db.Dock.dockLeftWidth = 350; + SV.db.Dock.dockLeftHeight = 180; + SV.db.Dock.dockRightWidth = 350; + SV.db.Dock.dockRightHeight = 180; SV.db.SVAura.wrapAfter = 10 SV.db.SVUnit.fontSize = 10; SV.db.SVUnit.player.width = 200; @@ -281,7 +281,7 @@ function SV.Setup:UserScreen(rez, preserve) end SV.LowRez = true else - SV:ResetData("SVDock") + SV:ResetData("Dock") SV:ResetData("SVAura") if not mungs then UFMoveBottomQuadrant() @@ -295,7 +295,7 @@ function SV.Setup:UserScreen(rez, preserve) if(not preserve and not mungs) then BarShuffle() SV.Mentalo:SetPositions() - SVLib:RefreshModule('SVDock') + SVLib:RefreshModule('Dock') SVLib:RefreshModule('SVAura') SVLib:RefreshModule('SVBar') SVLib:RefreshModule('SVUnit') @@ -325,8 +325,8 @@ function SV.Setup:ChatConfigs(mungs) local chatID = chat:GetID() if i == 1 then chat:ClearAllPoints() - chat:Point("BOTTOMLEFT", LeftSuperDock, "BOTTOMLEFT", 5, 5) - chat:Point("TOPRIGHT", LeftSuperDock, "TOPRIGHT", -5, -10) + chat:Point("BOTTOMLEFT", SVUI_DockLeft, "BOTTOMLEFT", 5, 5) + chat:Point("TOPRIGHT", SVUI_DockLeft, "TOPRIGHT", -5, -10) end FCF_SavePositionAndDimensions(chat) FCF_StopDragging(chat) @@ -427,8 +427,7 @@ function SV.Setup:ChatConfigs(mungs) if not mungs then if SV.Chat then SV.Chat:ReLoad(true) - if SV.SVDock.Cache.RightSuperDockFaded == true then RightSuperDockToggleButton:Click()end - if SV.SVDock.Cache.LeftSuperDockFaded == true then LeftSuperDockToggleButton:Click()end + if SV.Dock.Cache.IsFaded == true then SV.Dock.Left.Button:Click() end end SV:SavedPopup() end diff --git a/Interface/AddOns/SVUI/system/_load.xml b/Interface/AddOns/SVUI/system/_load.xml index 3b1ecb4..0b76b94 100644 --- a/Interface/AddOns/SVUI/system/_load.xml +++ b/Interface/AddOns/SVUI/system/_load.xml @@ -3,8 +3,10 @@ <Script file="configs.lua"/> <Script file="media.lua"/> <Script file="utilities.lua"/> - <Script file="framework.lua"/> <Script file="visibility.lua"/> + <Script file="screen.lua"/> + <Script file="templates.lua"/> + <Script file="docks.lua"/> <Script file="slash.lua"/> <Script file="alerts.lua"/> <Script file="moveable.lua"/> diff --git a/Interface/AddOns/SVUI/system/configs.lua b/Interface/AddOns/SVUI/system/configs.lua index 8756ac2..15103ce 100644 --- a/Interface/AddOns/SVUI/system/configs.lua +++ b/Interface/AddOns/SVUI/system/configs.lua @@ -467,7 +467,7 @@ SV.configs["SVChat"] = { ["basicTools"] = true, }; -SV.configs["SVDock"] = { +SV.configs["Dock"] = { ["enable"] = true, ["dockLeftWidth"] = 412, ["dockLeftHeight"] = 224, diff --git a/Interface/AddOns/SVUI/system/core.lua b/Interface/AddOns/SVUI/system/core.lua index c1a4d9a..70631cf 100644 --- a/Interface/AddOns/SVUI/system/core.lua +++ b/Interface/AddOns/SVUI/system/core.lua @@ -533,6 +533,8 @@ function SVUI:Load() end function SVUI:Initialize() + self.Dock:Initialize(); + SVLib:Launch(); self:UI_SCALE_CHANGED("PLAYER_LOGIN") diff --git a/Interface/AddOns/SVUI/system/docks.lua b/Interface/AddOns/SVUI/system/docks.lua new file mode 100644 index 0000000..e72c54a --- /dev/null +++ b/Interface/AddOns/SVUI/system/docks.lua @@ -0,0 +1,1021 @@ +--[[ +############################################################################## +_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_ # + ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__ # + __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____ # + ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____ # + ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____ # + _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____ # + __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ # + _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_# + ___\///////////___________\///___________\/////////_____\///////////_# +############################################################################## +S U P E R - V I L L A I N - U I By: Munglunch # +############################################################################## +########################################################## +LOCALIZED LUA FUNCTIONS +########################################################## +]]-- +--[[ GLOBALS ]]-- +local _G = _G; +local unpack = _G.unpack; +local select = _G.select; +local assert = _G.assert; +local type = _G.type; +local error = _G.error; +local pcall = _G.pcall; +local print = _G.print; +local ipairs = _G.ipairs; +local pairs = _G.pairs; +local tostring = _G.tostring; +local tonumber = _G.tonumber; + +--STRING +local string = _G.string; +local upper = string.upper; +local format = string.format; +local find = string.find; +local match = string.match; +local gsub = string.gsub; +--TABLE +local table = _G.table; +local tinsert = _G.tinsert; +local tremove = _G.tremove; +local twipe = _G.wipe; +--MATH +local math = _G.math; +local min = math.min; +local floor = math.floor +local ceil = math.ceil +--BLIZZARD API +local GameTooltip = _G.GameTooltip; +local InCombatLockdown = _G.InCombatLockdown; +local CreateFrame = _G.CreateFrame; +local GetTime = _G.GetTime; +local GetItemCooldown = _G.GetItemCooldown; +local GetItemCount = _G.GetItemCount; +local GetItemInfo = _G.GetItemInfo; +local GetSpellInfo = _G.GetSpellInfo; +local IsSpellKnown = _G.IsSpellKnown; +local GetProfessions = _G.GetProfessions; +local GetProfessionInfo = _G.GetProfessionInfo; +local hooksecurefunc = _G.hooksecurefunc; +--[[ +########################################################## +ADDON +########################################################## +]]-- +local SV = select(2, ...) +local L = SV.L +--[[ +########################################################## +DOCKING +########################################################## +]]-- +local Dock = SV:NewPackage("Dock", L["Screen Docks"]); +Dock.DefaultDocklet = ""; +Dock.DockletWindows = {}; +Dock.DockletButtons = {}; +Dock.HandledDocklets = {}; +Dock.Border = {}; + +local addonDock1 = CreateFrame("Frame", "SVUI_DockedAddon1", UIParent, "SVUI_DockletWindowTemplate"); +local addonDock2 = CreateFrame("Frame", "SVUI_DockedAddon2", UIParent, "SVUI_DockletWindowTemplate"); + +Dock.Addons = {addonDock1, addonDock2}; +Dock.Dropdown = CreateFrame("Frame", "SVUI_DockDropdown", UIParent); + +-- MAIN REGIONS +Dock.Left = _G["SVUI_DockLeft"] +Dock.Right = _G["SVUI_DockRight"] +Dock.Top = _G["SVUI_DockTop"] + +local AlertActivate = function(self, child) + local size = SV.db.Dock.buttonSize or 22; + self:Height(size) + child:ClearAllPoints() + child:SetAllPoints(self) +end + +local AlertDeactivate = function(self) + self:Height(1) +end + +Dock.Left.Alert.Activate = AlertActivate +Dock.Left.Alert.Deactivate = AlertDeactivate + +Dock.Right.Alert.Activate = AlertActivate +Dock.Right.Alert.Deactivate = AlertDeactivate + +local ICONFILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-BAG-MICRO]]; +local TOOL_DATA = { + [171] = {0,0.25,0,0.25}, -- PRO-ALCHEMY + [794] = {0.25,0.5,0,0.25,80451}, -- PRO-ARCHAELOGY + [164] = {0.5,0.75,0,0.25}, -- PRO-BLACKSMITH + [185] = {0.75,1,0,0.25,818,67097}, -- PRO-COOKING + [333] = {0,0.25,0.25,0.5,13262}, -- PRO-ENCHANTING + [202] = {0.25,0.5,0.25,0.5}, -- PRO-ENGINEERING + [129] = {0.5,0.75,0.25,0.5}, -- PRO-FIRSTAID + [773] = {0,0.25,0.5,0.75,51005}, -- PRO-INSCRIPTION + [755] = {0.25,0.5,0.5,0.75,31252}, -- PRO-JEWELCRAFTING + [165] = {0.5,0.75,0.5,0.75}, -- PRO-LEATHERWORKING + [186] = {0.75,1,0.5,0.75}, -- PRO-MINING + [197] = {0.25,0.5,0.75,1}, -- PRO-TAILORING +} +local HEARTH_SPELLS = {556,50977,18960,126892} +--[[ +########################################################## +PRE VARS/FUNCTIONS +########################################################## +]]-- +local DD_OnClick = function(self) + -- DO STUFF + self:GetParent():Hide() +end + +local DD_OnEnter = function(self) + self.hoverTex:Show() +end + +local DD_OnLeave = function(self) + self.hoverTex:Hide() +end + +local function SetFilterMenu(self) + Dock.Dropdown:ClearAllPoints() + Dock.Dropdown:SetPoint("TOPLEFT", self, "BOTTOMLEFT", 0, -8) + ToggleFrame(Dock.Dropdown) +end + +local function CycleDocklets() + local list = Dock.DockletWindows + for i=1, #list do + local f = list[i] + if(not InCombatLockdown() or (InCombatLockdown() and (f.IsProtected and not f:IsProtected()))) then + local b = _G[f.ToggleName] + if(b) then + b:Deactivate() + end + if f.Hide then + f:Hide() + end + end + end +end + +local function GetDefaultWindow() + local window = Dock.DefaultDocklet + if window and _G[window] then + Dock.Right.Window.FrameName = window + Dock.Right.Window:Show() + end +end + +local ToggleDocks = function(self) + GameTooltip:Hide() + if SV.cache.Docks.IsFaded then + SV.cache.Docks.IsFaded = nil; + SV:SecureFadeIn(Dock.Left, 0.2, Dock.Left:GetAlpha(), 1) + SV:SecureFadeIn(Dock.Right, 0.2, Dock.Right:GetAlpha(), 1) + else + SV.cache.Docks.IsFaded = true; + SV:SecureFadeOut(Dock.Left, 0.2, Dock.Left:GetAlpha(), 0, true) + SV:SecureFadeOut(Dock.Right, 0.2, Dock.Right:GetAlpha(), 0, true) + end +end + +local Docklet_OnShow = function(self) + if(_G[Dock.Right.Window.FrameName]) then + if(InCombatLockdown() and (_G[Dock.Right.Window.FrameName].IsProtected and _G[Dock.Right.Window.FrameName]:IsProtected())) then return end + _G[Dock.Right.Window.FrameName]:Show() + end + if _G[Dock.Right.Window.SecondName] then + if(InCombatLockdown() and (_G[Dock.Right.Window.SecondName].IsProtected and _G[Dock.Right.Window.SecondName]:IsProtected())) then return end + _G[Dock.Right.Window.SecondName]:Show() + end +end + +local DockButtonActivate = function(self) + self:SetAttribute("isActive", true) + self:SetPanelColor("green") + self.Icon:SetGradient(unpack(SV.Media.gradient.green)) +end + +local DockButtonDeactivate = function(self) + self:SetAttribute("isActive", false) + self:SetPanelColor("default") + self.Icon:SetGradient(unpack(SV.Media.gradient.icon)) +end + +local function ToggleDockletWindow(button) + local frameName = button.FrameName + local window = _G[frameName]; + if(window) then + Dock.Right.Window.FrameName = frameName + if(not window:IsShown()) then + CycleDocklets() + end + + if(not Dock.Right.Window:IsShown()) then + Dock.Right.Window:Show() + end + + window:Show() + button:Activate() + else + button:Deactivate() + GetDefaultWindow() + end +end + +local DockletButton_OnEnter = function(self, ...) + if SV.cache.Docks.IsFaded then + Dock.Left:Show() + SV:SecureFadeIn(Dock.Left, 0.2, Dock.Left:GetAlpha(), 1) + Dock.Right:Show() + SV:SecureFadeIn(Dock.Right, 0.2, Dock.Right:GetAlpha(), 1) + end + + self:SetPanelColor("highlight") + self.Icon:SetGradient(unpack(SV.Media.gradient.bizzaro)) + + GameTooltip:SetOwner(self, "ANCHOR_TOPLEFT", 0, 4) + GameTooltip:ClearLines() + if(self.CustomTooltip) then + self:CustomTooltip() + else + local tipText = self:GetAttribute("tipText") + GameTooltip:AddLine(tipText, 1, 1, 1) + end + GameTooltip:Show() +end + +local DockletButton_OnLeave = function(self, ...) + if SV.cache.Docks.IsFaded then + SV:SecureFadeOut(Dock.Left, 0.2, Dock.Left:GetAlpha(), 0, true) + SV:SecureFadeOut(Dock.Right, 0.2, Dock.Right:GetAlpha(), 0, true) + end + + if(self:GetAttribute("isActive")) then + self:SetPanelColor("green") + self.Icon:SetGradient(unpack(SV.Media.gradient.green)) + else + self:SetPanelColor("default") + self.Icon:SetGradient(unpack(SV.Media.gradient.icon)) + end + + GameTooltip:Hide() +end + +local DockletButton_OnClick = function(self, button) + if InCombatLockdown() then return end + if button == "RightButton" then + SetFilterMenu(self); + else + if self.PostClickFunction then + if(self:GetAttribute("isActive")) then + self:Deactivate() + GetDefaultWindow() + else + self:Activate() + end + self:PostClickFunction() + else + ToggleDockletWindow(self) + end + end +end + +local DockletFrame_OnShow = function(self) + local frameName = self.FrameName; + if (frameName and _G[frameName]) then + _G[frameName]:Show() + end +end + +local AddonDockletToggle = function(self) + if addonDock1.FrameName and _G[addonDock1.FrameName] then + if not _G[addonDock1.FrameName]:IsShown() then + CycleDocklets() + if not InCombatLockdown() and not addonDock1:IsShown()then + addonDock1:Show() + end + _G[addonDock1.FrameName]:Show() + self:Activate() + elseif not addonDock1:IsShown()then + if not InCombatLockdown() then addonDock1:Show() end + _G[addonDock1.FrameName]:Show() + self:Activate() + end + else + addonDock1.FrameName = "None" + if InCombatLockdown()then return end + if addonDock1:IsShown()then + addonDock1:Hide() + else + addonDock1:Show() + end + self:Deactivate() + end + if SV.db.Dock.docklets.enableExtra and addonDock2.FrameName and _G[addonDock2.FrameName] then + if not _G[addonDock2.FrameName]:IsShown() then + if not InCombatLockdown() and not addonDock2:IsShown()then + addonDock2:Show() + addonDock1:Show() + end + _G[addonDock2.FrameName]:Show() + self:Activate() + elseif not addonDock2:IsShown() then + if not InCombatLockdown() then + addonDock2:Show() + addonDock1:Show() + end + _G[addonDock2.FrameName]:Show() + self:Activate() + else + if not InCombatLockdown() then + addonDock2:Hide() + addonDock1:Hide() + end + self:Deactivate() + end + else + addonDock2.FrameName = "None" + end +end + +local function SetSuperDockStyle(dock) + if dock.backdrop then return end + local backdrop = CreateFrame("Frame", nil, dock) + backdrop:SetAllPoints(dock) + backdrop:SetFrameStrata("BACKGROUND") + backdrop.bg = backdrop:CreateTexture(nil, "BORDER") + backdrop.bg:FillInner(backdrop) + backdrop.bg:SetTexture(1, 1, 1, 1) + backdrop.bg:SetGradientAlpha("VERTICAL", 0, 0, 0, 0.8, 0, 0, 0, 0) + backdrop.left = backdrop:CreateTexture(nil, "OVERLAY") + backdrop.left:SetTexture(1, 1, 1, 1) + backdrop.left:Point("TOPLEFT", 1, -1) + backdrop.left:Point("BOTTOMLEFT", -1, 1) + backdrop.left:Width(4) + backdrop.left:SetGradientAlpha("VERTICAL", 0, 0, 0, 1, 0, 0, 0, 0) + backdrop.right = backdrop:CreateTexture(nil, "OVERLAY") + backdrop.right:SetTexture(1, 1, 1, 1) + backdrop.right:Point("TOPRIGHT", -1, -1) + backdrop.right:Point("BOTTOMRIGHT", -1, 1) + backdrop.right:Width(4) + backdrop.right:SetGradientAlpha("VERTICAL", 0, 0, 0, 1, 0, 0, 0, 0) + backdrop.bottom = backdrop:CreateTexture(nil, "OVERLAY") + backdrop.bottom:SetTexture(0, 0, 0, 1) + backdrop.bottom:Point("BOTTOMLEFT", 1, 1) + backdrop.bottom:Point("BOTTOMRIGHT", -1, 1) + backdrop.bottom:Height(4) + backdrop.top = backdrop:CreateTexture(nil, "OVERLAY") + backdrop.top:SetTexture(0,0,0,0) + backdrop.top:Point("TOPLEFT", 1, -1) + backdrop.top:Point("TOPRIGHT", -1, 1) + backdrop.top:SetAlpha(0) + backdrop.top:Height(1) + return backdrop +end + +Dock.CycleDocklets = CycleDocklets +--[[ +########################################################## +CORE FUNCTIONS +########################################################## +]]-- +_G.HideSuperDocks = function() + ToggleDocks(LeftDockToggleButton) +end +--[[ +########################################################## +DOCKLET HELPERS +########################################################## +]]-- +local function AddTool(button) + local name = button:GetName(); + if Dock.HandledDocklets[name] then return end + Dock.HandledDocklets[name] = true; + local height = Dock.Right.ToolBar:GetHeight(); + local xOffset = #Dock.DockletButtons * (height + 6) + 6 + button:SetPoint("RIGHT", Dock.Right.ToolBar, "RIGHT", (xOffset * -1), 0); + tinsert(Dock.DockletButtons, button) + button.listIndex = #Dock.DockletButtons; + button:Show() +end + +function Dock:ActivateDockletButton(button, clickFunction, tipFunction, isdefault) + button.Activate = DockButtonActivate + button.Deactivate = DockButtonDeactivate + + if(tipFunction and type(tipFunction) == "function") then + button.CustomTooltip = tipFunction + end + + button:SetPanelColor("default") + button.Icon:SetGradient(unpack(SV.Media.gradient.icon)) + button:SetScript("OnEnter", DockletButton_OnEnter) + button:SetScript("OnLeave", DockletButton_OnLeave) + button:SetScript("OnClick", DockletButton_OnClick) + + if(clickFunction and type(clickFunction) == "function") then + button.PostClickFunction = clickFunction + end + + if(isdefault) then + self.DefaultDocklet = button:GetAttribute("ownerFrame") + button:Activate() + end +end + +local function CreateBasicToolButton(name, texture, onclick, frameName, isdefault) + local fName = frameName or name; + local dockIcon = texture or [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-ADDON]]; + local size = Dock.Right.ToolBar:GetHeight(); + local button = _G[fName .. "_ToolBarButton"] or CreateFrame("Button", ("%s_ToolBarButton"):format(fName), Dock.Right.ToolBar, "SVUI_DockletButtonTemplate") + + AddTool(button) + + button:Size(size,size) + button:SetFramedButtonTemplate() + button.Icon:SetTexture(dockIcon) + button:SetAttribute("tipText", "Open " .. name) + button:SetAttribute("ownerFrame", fName) + button.FrameName = fName + + Dock:ActivateDockletButton(button, onclick, nil, isdefault) + + _G[fName].ToggleName = fName.."_ToolBarButton"; + + return button +end +--[[ +########################################################## +DOCKS +########################################################## +]]-- +function Dock:CreateDockPanels() + local leftWidth = SV.db.Dock.dockLeftWidth or 350; + local leftHeight = SV.db.Dock.dockLeftHeight or 180; + local rightWidth = SV.db.Dock.dockRightWidth or 350; + local rightHeight = SV.db.Dock.dockRightHeight or 180; + local buttonsize = SV.db.Dock.buttonSize or 22; + local spacing = SV.db.Dock.buttonSpacing or 4; + local texture = [[Interface\AddOns\SVUI\assets\artwork\Template\BUTTON]]; + + -- [[ TOP AND BOTTOM BORDERS ]] -- + + self.Border.Top = CreateFrame("Frame", "SVUITopBorder", SV.Screen) + self.Border.Top:Point("TOPLEFT", SV.Screen, "TOPLEFT", -1, 1) + self.Border.Top:Point("TOPRIGHT", SV.Screen, "TOPRIGHT", 1, 1) + self.Border.Top:Height(14) + self.Border.Top:SetBackdrop({ + bgFile = texture, + edgeFile = [[Interface\BUTTONS\WHITE8X8]], + tile = false, + tileSize = 0, + edgeSize = 1, + insets = {left = 0, right = 0, top = 0, bottom = 0} + }) + self.Border.Top:SetBackdropColor(unpack(SV.Media.color.special)) + self.Border.Top:SetBackdropBorderColor(0,0,0,1) + self.Border.Top:SetFrameLevel(0) + self.Border.Top:SetFrameStrata('BACKGROUND') + self.Border.Top:SetScript("OnShow", function(this) + this:SetFrameLevel(0) + this:SetFrameStrata('BACKGROUND') + end) + self:TopBorderVisibility() + + self.Border.Bottom = CreateFrame("Frame", "SVUIBottomBorder", SV.Screen) + self.Border.Bottom:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", -1, -1) + self.Border.Bottom:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", 1, -1) + self.Border.Bottom:Height(14) + self.Border.Bottom:SetBackdrop({ + bgFile = texture, + edgeFile = [[Interface\BUTTONS\WHITE8X8]], + tile = false, + tileSize = 0, + edgeSize = 1, + insets = {left = 0, right = 0, top = 0, bottom = 0} + }) + self.Border.Bottom:SetBackdropColor(unpack(SV.Media.color.special)) + self.Border.Bottom:SetBackdropBorderColor(0,0,0,1) + self.Border.Bottom:SetFrameLevel(0) + self.Border.Bottom:SetFrameStrata('BACKGROUND') + self.Border.Bottom:SetScript("OnShow", function(this) + this:SetFrameLevel(0) + this:SetFrameStrata('BACKGROUND') + end) + self:BottomBorderVisibility() + + -- [[ BOTTOM LEFT DOCK ]] -- + + self.Left:SetParent(SV.Screen) + self.Left:Point("BOTTOMLEFT", SV.Screen, "BOTTOMLEFT", 2, 2) + self.Left:Size(leftWidth, leftHeight) + self.Left:SetAttribute("buttonSize", buttonsize) + self.Left:SetAttribute("spacingSize", spacing) + self.Left.Button:Size(buttonsize, buttonsize) + self.Left.Button:SetFramedButtonTemplate() + self.Left.Button.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\SVUI-EMBLEM]]) + self.Left.Button:SetAttribute("tipText", L["Toggle Docks"]) + self.Left.Button:RegisterForClicks("AnyUp") + self.Left.ToolBar:Point("LEFT", self.Left.Button, "RIGHT", spacing, 0) + self.Left.ToolBar:Height(buttonsize) + + self.Left.Alert.Activate = AlertActivate + self.Left.Alert.Deactivate = AlertDeactivate + + self.Left.backdrop = SetSuperDockStyle(self.Left.Window) + + self:ActivateDockletButton(self.Left.Button, ToggleDocks) + SV.Mentalo:Add(self.Left, L["Left Dock"]) + + -- [[ BOTTOM RIGHT DOCK ]] -- + + self.Right:SetParent(SV.Screen) + self.Right:Point("BOTTOMRIGHT", SV.Screen, "BOTTOMRIGHT", -2, 2) + self.Right:Size(rightWidth, rightHeight) + self.Right:SetAttribute("buttonSize", buttonsize) + self.Right:SetAttribute("spacingSize", spacing) + self.Right.Button:Size(buttonsize, buttonsize) + self.Right.Button:SetFramedButtonTemplate() + self.Right.Button.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-HENCHMAN]]) + self.Right.Button:SetAttribute("tipText", "Call Henchman!") + self.Right.Button:RegisterForClicks("AnyUp") + self.Right.ToolBar:Point("RIGHT", self.Right.Button, "LEFT", -spacing, 0) + self.Right.ToolBar:Height(buttonsize) + self.Right.ToolBar.AddonButton:Size(buttonsize, buttonsize) + self.Right.ToolBar.AddonButton:SetFramedButtonTemplate() + self.Right.ToolBar.AddonButton.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-ADDON]]) + self.Right.ToolBar.AddonButton:SetAttribute("tipText", "") + self.Right.ToolBar.AddonButton.IsRegistered = false; + self.Right.UtilityBar:Point("RIGHT", self.Right.ToolBar, "LEFT", -spacing, 0) + self.Right.UtilityBar:Size(1, buttonsize) + + self.Right.Alert.Activate = AlertActivate + self.Right.Alert.Deactivate = AlertDeactivate + + self.Right.backdrop = SetSuperDockStyle(self.Right.Window) + + self:ActivateDockletButton(self.Right.Button, SV.ToggleHenchman) + self:ActivateDockletButton(self.Right.ToolBar.AddonButton, AddonDockletToggle) + SV.Mentalo:Add(self.Right, L["Right Dock"]) + + if SV.cache.Docks.IsFaded then Dock.Left:Hide() Dock.Right:Hide() end + + -- [[ TOP LEFT DOCK ]] -- + + self.Top:SetParent(SV.Screen) + self.Top:Point("TOPLEFT", SV.Screen, "TOPLEFT", 1, -2) + self.Top:Size(leftWidth, leftHeight) + self.Top:SetAttribute("buttonSize", buttonsize) + self.Top:SetAttribute("spacingSize", spacing) + self.Top.ToolBar:Size(1, buttonsize) + + SV.Mentalo:Add(self.Top, L["Top Dock"]) + + --RIGHT CLICK MENU + + self.Dropdown:SetParent(SV.Screen) + self.Dropdown:SetPanelTemplate("Default") + self.Dropdown.buttons = {} + self.Dropdown:SetFrameStrata("DIALOG") + self.Dropdown:SetClampedToScreen(true) + + for i = 1, 4 do + self.Dropdown.buttons[i] = CreateFrame("Button", nil, self.Dropdown) + + self.Dropdown.buttons[i].hoverTex = self.Dropdown.buttons[i]:CreateTexture(nil, 'OVERLAY') + self.Dropdown.buttons[i].hoverTex:SetAllPoints() + self.Dropdown.buttons[i].hoverTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]]) + self.Dropdown.buttons[i].hoverTex:SetBlendMode("ADD") + self.Dropdown.buttons[i].hoverTex:Hide() + + self.Dropdown.buttons[i].activeTex = self.Dropdown.buttons[i]:CreateTexture(nil, 'OVERLAY') + self.Dropdown.buttons[i].activeTex:SetAllPoints() + self.Dropdown.buttons[i].activeTex:SetTexture([[Interface\QuestFrame\UI-QuestTitleHighlight]]) + self.Dropdown.buttons[i].activeTex:SetVertexColor(0,0.7,0) + self.Dropdown.buttons[i].activeTex:SetBlendMode("ADD") + self.Dropdown.buttons[i].activeTex:Hide() + + self.Dropdown.buttons[i].text = self.Dropdown.buttons[i]:CreateFontString(nil, 'BORDER') + self.Dropdown.buttons[i].text:SetAllPoints() + self.Dropdown.buttons[i].text:SetFont(SV.Media.font.roboto,12,"OUTLINE") + self.Dropdown.buttons[i].text:SetJustifyH("LEFT") + self.Dropdown.buttons[i].text:SetText(("Option %d"):format(i)) + + self.Dropdown.buttons[i]:SetHeight(16) + self.Dropdown.buttons[i]:SetWidth(115) + + self.Dropdown.buttons[i]:SetScript("OnEnter", DD_OnEnter) + self.Dropdown.buttons[i]:SetScript("OnLeave", DD_OnLeave) + self.Dropdown.buttons[i]:SetScript("OnClick", DD_OnClick) + + if i == 1 then + self.Dropdown.buttons[i]:SetPoint("TOPLEFT", self.Dropdown, "TOPLEFT", 10, -10) + else + self.Dropdown.buttons[i]:SetPoint("TOPLEFT", self.Dropdown.buttons[i - 1], "BOTTOMLEFT", 0, 0) + end + + self.Dropdown.buttons[i]:Show() + end + + self.Dropdown:SetSize(135, 94) + self.Dropdown:Hide() + SV:AddToDisplayAudit(self.Dropdown) +end + +local function BorderColorUpdates() + Dock.Border.Top:SetBackdropColor(unpack(SV.Media.color.special)) + Dock.Border.Top:SetBackdropBorderColor(0,0,0,1) + Dock.Border.Bottom:SetBackdropColor(unpack(SV.Media.color.special)) + Dock.Border.Bottom:SetBackdropBorderColor(0,0,0,1) +end + +SV:NewCallback(BorderColorUpdates) + +do + local LastAddedMacro; + local MacroCount = 0; + + local function GetMacroCooldown(itemID) + local start,duration = GetItemCooldown(itemID) + local expires = duration - (GetTime() - start) + if expires > 0.05 then + local timeLeft = 0; + local calc = 0; + if expires < 4 then + return format("|cffff0000%.1f|r", expires) + elseif expires < 60 then + return format("|cffffff00%d|r", floor(expires)) + elseif expires < 3600 then + timeLeft = ceil(expires / 60); + calc = floor((expires / 60) + .5); + return format("|cffff9900%dm|r", timeLeft) + elseif expires < 86400 then + timeLeft = ceil(expires / 3600); + calc = floor((expires / 3600) + .5); + return format("|cff66ffff%dh|r", timeLeft) + else + timeLeft = ceil(expires / 86400); + calc = floor((expires / 86400) + .5); + return format("|cff6666ff%dd|r", timeLeft) + end + else + return "|cff6666ffReady|r" + end + end + + local SetMacroTooltip = function(self) + local text1 = self:GetAttribute("tipText") + local text2 = self:GetAttribute("tipExtraText") + if(not text2) then + GameTooltip:AddLine(text1, 1, 1, 1) + else + GameTooltip:AddDoubleLine("[Left-Click]", text1, 0, 1, 0, 1, 1, 1) + GameTooltip:AddDoubleLine("[Right-Click]", "Use " .. text2, 0, 1, 0, 1, 1, 1) + if InCombatLockdown() then return end + if(self.ItemToUse) then + GameTooltip:AddLine(" ", 1, 1, 1) + local remaining = GetMacroCooldown(self.ItemToUse) + GameTooltip:AddDoubleLine(text2, remaining, 1, 0.5, 0, 0, 1, 1) + end + end + end + + local SetHearthTooltip = function(self) + GameTooltip:AddLine(L["Hearthstone"], 1, 1, 1) + if InCombatLockdown() then return end + local remaining = GetMacroCooldown(6948) + GameTooltip:AddDoubleLine(L["Time Remaining"], remaining, 1, 1, 1, 0, 1, 1) + local extraText = self:GetAttribute("tipExtraText") + if(extraText) then + GameTooltip:AddLine(" ", 1, 1, 1) + GameTooltip:AddDoubleLine(extraText, "[Right Click]", 1, 1, 1, 0, 1, 0) + end + end + + local function AddMacroTool(frame) + local height = Dock.Right.ToolBar:GetHeight(); + if not LastAddedMacro then + frame:Point("RIGHT", Dock.Right.UtilityBar, "RIGHT", -6, 0); + else + frame:Point("RIGHT", LastAddedMacro, "LEFT", -6, 0); + end + LastAddedMacro = frame; + MacroCount = MacroCount + 1; + width = MacroCount * (height + 6) + Dock.Right.UtilityBar:Size(width, height) + end + + local function CreateMacroToolButton(proName, proID, itemID, size) + local data = TOOL_DATA[proID] + if(not data) then return end + local button = CreateFrame("Button", ("%s_MacroBarButton"):format(itemID), Dock.Right.UtilityBar, "SecureActionButtonTemplate,SVUI_DockletButtonTemplate") + button:Size(size, size) + AddTool(button) + button:SetFramedButtonTemplate() + button.Icon:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Icons\PROFESSIONS]]) + button.Icon:SetTexCoord(data[1], data[2], data[3], data[4]) + button.Icon:SetGradient("VERTICAL", 0.5, 0.53, 0.55, 0.8, 0.8, 1) + button:SetAttribute("tipText", "Open " .. proName) + + if proID == 186 then proName = "Smelting" end + + if(data[5]) then + local rightClick + button:RegisterForClicks("AnyDown") + if(data[6] and GetItemCount(data[6], true) > 0) then + rightClick = GetItemInfo(data[6]) + button.ItemToUse = data[6] + else + rightClick = GetSpellInfo(data[5]) + end + button:SetAttribute("tipExtraText", rightClick) + button:SetAttribute("type", "macro") + button:SetAttribute("macrotext", "/cast [button:2] " .. rightClick .. ";" .. proName) + else + button:SetAttribute("type", "macro") + button:SetAttribute("macrotext", "/cast " .. proName) + end + + Dock:ActivateDockletButton(button, nil, SetMacroTooltip) + end + + function Dock:LoadToolBarProfessions() + if(SV.ToolBarLoaded) then return end + if(InCombatLockdown()) then Dock:RegisterEvent("PLAYER_REGEN_ENABLED"); return end + local size = Dock.Right.UtilityBar:GetHeight() + local hearth = CreateFrame("Button", "SVUI_HearthButton", Dock.Right.UtilityBar, "SecureActionButtonTemplate, SVUI_DockletButtonTemplate") + hearth:Size(size, size) + AddTool(hearth) + hearth:SetFramedButtonTemplate() + hearth.Icon:SetTexture("Interface\\AddOns\\SVUI\\assets\\artwork\\Icons\\DOCK-HEARTH") + hearth.Icon:SetTexCoord(0,0.5,0,1) + hearth:RegisterForClicks("AnyUp") + hearth:SetAttribute("type", "item") + hearth:SetAttribute("item", "Hearthstone") + + Dock:ActivateDockletButton(hearth, nil, SetHearthTooltip) + + for i = 1, #HEARTH_SPELLS do + if(IsSpellKnown(HEARTH_SPELLS[i])) then + local rightClickSpell = GetSpellInfo(HEARTH_SPELLS[i]) + hearth:SetAttribute("type2", "spell") + hearth:SetAttribute("spell", rightClickSpell) + hearth:SetAttribute("tipExtraText", rightClickSpell) + end + end + + local proName, proID + local prof1, prof2, archaeology, _, cooking, firstAid = GetProfessions() + if(firstAid ~= nil) then + proName, _, _, _, _, _, proID = GetProfessionInfo(firstAid) + CreateMacroToolButton(proName, proID, firstAid, size) + end + if(archaeology ~= nil) then + proName, _, _, _, _, _, proID = GetProfessionInfo(archaeology) + CreateMacroToolButton(proName, proID, archaeology, size) + end + if(cooking ~= nil) then + proName, _, _, _, _, _, proID = GetProfessionInfo(cooking) + CreateMacroToolButton(proName, proID, cooking, size) + end + if(prof2 ~= nil) then + proName, _, _, _, _, _, proID = GetProfessionInfo(prof2) + if(proID ~= 182 and proID ~= 393) then + CreateMacroToolButton(proName, proID, prof2, size) + end + end + if(prof1 ~= nil) then + proName, _, _, _, _, _, proID = GetProfessionInfo(prof1) + if(proID ~= 182 and proID ~= 393) then + CreateMacroToolButton(proName, proID, prof1, size) + end + end + + SV.ToolBarLoaded = true + end +end +--[[ +########################################################## +EXTERNALLY ACCESSIBLE METHODS +########################################################## +]]-- +SV.CurrentlyDocked = {}; + +function Dock:IsDockletReady(arg) + local addon = arg; + if arg == "DockletMain" or arg == "DockletExtra" then + addon = SV.db.Dock.docklets[arg] + end + if addon == nil or addon == "None" then + return false + end + return true +end + +do + local function UnregisterDocklet(name) + local frame = _G[name]; + if not frame or not frame.listIndex then return end + local i = frame.listIndex; + tremove(Dock.DockletWindows, i) + end + + local function RemoveDocklet(button) + if not button or not button.listIndex then return end + local name = button:GetName(); + if not Dock.HandledDocklets[name] then return end + Dock.HandledDocklets[name] = false; + local i = button.listIndex; + local PREV_TOOL = Dock.DockletButtons[i - 1] + tremove(Dock.DockletButtons, i) + if(PREV_TOOL) then + local height = Dock.Right.ToolBar:GetHeight(); + local xOffset = (#Dock.DockletButtons - 1) * (height + 6) + 6 + PREV_TOOL:SetPoint("RIGHT", Dock.Right.ToolBar, "RIGHT", (xOffset * -1), 0); + end + button:Hide() + end + + function Dock:ReloadDocklets(alert) + if InCombatLockdown() then return end + + local frame, i; + twipe(SV.CurrentlyDocked); + if self:IsDockletReady("DockletMain") then + frame = SV.db.Dock.docklets.MainWindow + if frame ~= nil and frame ~= "None" and _G[frame] then + UnregisterDocklet(frame) + SV.db.Dock.docklets.MainWindow = "None" + end + elseif self.Right.ToolBar.AddonButton.IsRegistered then + RemoveDocklet(self.Right.ToolBar.AddonButton) + self.Right.ToolBar.AddonButton:SetAttribute("tipText", "") + self.Right.ToolBar.AddonButton.IsRegistered = false; + end + if self:IsDockletReady("DockletExtra") then + frame = SV.db.Dock.docklets.ExtraWindow + if frame ~= nil and frame ~= "None" and _G[frame] then + UnregisterDocklet(frame) + SV.db.Dock.docklets.ExtraWindow = "None" + end + end + addonDock1.FrameName = "None" + addonDock2.FrameName = "None" + + local width,height = Dock.Right.Window:GetSize(); + + if self:IsDockletReady('DockletMain') then + if self:IsDockletReady("DockletExtra") and SV.db.Dock.docklets.enableExtra then + width = width * 0.5; + end + addonDock1:ClearAllPoints() + addonDock1:Size(width,height) + addonDock1:Point('BOTTOMLEFT',Dock.Right.Window,'BOTTOMLEFT',1,1) + addonDock2:ClearAllPoints() + addonDock2:Size(width,height) + addonDock2:Point('BOTTOMLEFT',addonDock1,'BOTTOMRIGHT',0,0) + end + end +end + + +function Dock:RegisterDocklet(name, tooltip, texture, onclick, isdefault) + local frame = _G[name]; + if frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected()) then + frame:ClearAllPoints() + frame:SetParent(self.Right.Window) + frame:FillInner(self.Right.Window, 4, 4) + frame.FrameName = name; + tinsert(self.DockletWindows, frame); + frame.listIndex = #self.DockletWindows; + frame.ToolbarButton = CreateBasicToolButton(tooltip, texture, onclick, name, isdefault) + end +end + +function Dock:RegisterMainDocklet(name) + local frame = _G[name]; + if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then + addonDock1.FrameName = name; + SV.db.Dock.docklets.MainWindow = name; + frame:ClearAllPoints() + frame:SetParent(addonDock1) + frame:SetAllPoints(addonDock1) + frame.ToggleName = "Dock.RightToolBarAddonButton"; + tinsert(self.DockletWindows, frame); + frame.listIndex = #self.DockletWindows; + AddTool(self.Right.ToolBar.AddonButton) + self.Right.ToolBar.AddonButton:SetAttribute("tipText", "") + self.Right.ToolBar.AddonButton.IsRegistered = true + SV.CurrentlyDocked[name] = true + if not InCombatLockdown() and frame:IsShown() then frame:Hide() end + end +end + +function Dock:RegisterExtraDocklet(name) + local frame = _G[name]; + if (frame and (frame.IsObjectType and frame:IsObjectType("Frame")) and (frame.IsProtected and not frame:IsProtected())) then + addonDock2.FrameName = name; + SV.db.Dock.docklets.ExtraWindow = name; + frame:ClearAllPoints() + frame:SetParent(addonDock2) + frame:SetAllPoints(addonDock2) + frame.ToggleName = "Dock.RightToolBarAddonButton"; + tinsert(self.DockletWindows, frame); + frame.listIndex = #self.DockletWindows; + self.Right.ToolBar.AddonButton:SetAttribute("tipText", "") + SV.CurrentlyDocked[name] = true; + if not InCombatLockdown() and frame:IsShown() then frame:Hide() end + end +end +--[[ +########################################################## +BUILD/UPDATE +########################################################## +]]-- +function Dock:UpdateDockBackdrops() + if SV.db.Dock.rightDockBackdrop then + Dock.Right.backdrop:Show() + Dock.Right.backdrop:ClearAllPoints() + Dock.Right.backdrop:WrapOuter(Dock.Right.Window, 4, 4) + else + Dock.Right.backdrop:Hide() + end + if SV.db.Dock.leftDockBackdrop then + Dock.Left.backdrop:Show() + Dock.Left.backdrop:ClearAllPoints() + Dock.Left.backdrop:WrapOuter(Dock.Left.Window, 4, 4) + else + Dock.Left.backdrop:Hide() + end +end + +function Dock:BottomBorderVisibility() + if SV.db.Dock.bottomPanel then + self.Border.Bottom:Show() + else + self.Border.Bottom:Hide() + end +end + +function Dock:TopBorderVisibility() + if SV.db.Dock.topPanel then + self.Border.Top:Show() + else + self.Border.Top:Hide() + end +end + +function Dock:PLAYER_REGEN_ENABLED() + self:UnregisterEvent('PLAYER_REGEN_ENABLED') + self:LoadToolBarProfessions() +end + +function Dock:Refresh() + local leftWidth = SV.db.Dock.dockLeftWidth or 350; + local leftHeight = SV.db.Dock.dockLeftHeight or 180; + local rightWidth = SV.db.Dock.dockRightWidth or 350; + local rightHeight = SV.db.Dock.dockRightHeight or 180; + local buttonsize = SV.db.Dock.buttonSize or 22; + local spacing = SV.db.Dock.buttonSpacing or 4; + + self.Left:Size(leftWidth, leftHeight) + self.Right:Size(rightWidth, rightHeight) + + self:BottomBorderVisibility(); + self:TopBorderVisibility(); + self:UpdateDockBackdrops(); + self:ReloadDocklets() +end + +function Dock:Initialize() + SV.cache.Docks = SV.cache.Docks or {} + + if(not SV.cache.Docks.IsFaded) then + SV.cache.Docks.IsFaded = false + end + + self:CreateDockPanels() + self.Right.Window:SetScript("OnShow", Docklet_OnShow) + + if not InCombatLockdown()then + CycleDocklets() + end + + self:UpdateDockBackdrops() + addonDock1:SetFrameLevel(self.Right.Window:GetFrameLevel() + 50) + addonDock2:SetFrameLevel(self.Right.Window:GetFrameLevel() + 50) + + local size = self.Right.ToolBar:GetHeight(); + + addonDock1:SetScript("OnShow", DockletFrame_OnShow) + addonDock2:SetScript("OnShow", DockletFrame_OnShow) + self:ReloadDocklets(true) + + SV.Timers:ExecuteTimer(self.LoadToolBarProfessions, 5) +end \ No newline at end of file diff --git a/Interface/AddOns/SVUI/system/framework.lua b/Interface/AddOns/SVUI/system/framework.lua deleted file mode 100644 index 7898163..0000000 --- a/Interface/AddOns/SVUI/system/framework.lua +++ /dev/null @@ -1,1251 +0,0 @@ ---[[ -############################################################################## -_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_ # - ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__ # - __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____ # - ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____ # - ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____ # - _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____ # - __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ # - _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_# - ___\///////////___________\///___________\/////////_____\///////////_# -############################################################################## -S U P E R - V I L L A I N - U I By: Munglunch # -############################################################################## -########################################################## -LOCALIZED LUA FUNCTIONS -########################################################## -]]-- ---[[ GLOBALS ]]-- -local _G = _G; -local unpack = _G.unpack; -local select = _G.select; -local pairs = _G.pairs; -local ipairs = _G.ipairs; -local type = _G.type; -local error = _G.error; -local pcall = _G.pcall; -local tostring = _G.tostring; -local tonumber = _G.tonumber; -local table = _G.table; -local string = _G.string; -local math = _G.math; ---[[ MATH METHODS ]]-- -local floor, abs, min, max = math.floor, math.abs, math.min, math.max; -local parsefloat, ceil = math.parsefloat, math.ceil; ---[[ STRING METHODS ]]-- -local lower = string.lower; ---[[ TABLE METHODS ]]-- -local tremove, tcopy, twipe, tsort, tconcat, tdump = table.remove, table.copy, table.wipe, table.sort, table.concat, table.dump; ---[[ -########################################################## -GET ADDON DATA -########################################################## -]]-- -local SV = select(2, ...) -local L = SV.L ---[[ -########################################################## -LOCAL VARS -########################################################## -]]-- -local SizeScaled, HeightScaled, WidthScaled, PointScaled, WrapOuter, FillInner -local TemplateUpdateFrames = {}; -local FontUpdateFrames = {}; -local NewFrame = CreateFrame; -local NewHook = hooksecurefunc; -local STANDARD_TEXT_FONT = _G.STANDARD_TEXT_FONT; -local SCREEN_MOD = 1; - -local function GetUsableScreen() - local rez = GetCVar("gxResolution") - local height = rez:match("%d+x(%d+)") - local width = rez:match("(%d+)x%d+") - local gxHeight = tonumber(height) - local gxWidth = tonumber(width) - local gxMod = (768 / gxHeight) - return gxWidth, gxHeight, gxMod -end ---[[ -########################################################## -UI SCALING -########################################################## -]]-- -function SV:UI_SCALE_CHANGED(event) - local scale, evalwidth - local gxWidth, gxHeight, gxMod = GetUsableScreen() - - if(IsMacClient() and self.DisplaySettings and self.DisplaySettings.screenheight and self.DisplaySettings.screenwidth) then - if(gxHeight ~= self.DisplaySettings.screenheight or gxWidth ~= self.DisplaySettings.screenwidth) then - gxHeight = self.DisplaySettings.screenheight; - gxWidth = self.DisplaySettings.screenwidth - end - end - - if self.db.general.autoScale then - scale = max(0.64, min(1.15, gxMod)) - else - scale = max(0.64, min(1.15, GetCVar("uiScale") or UIParent:GetScale() or gxMod)) - end - - SCREEN_MOD = gxMod / scale; - - if(gxWidth < 1600) then - self.LowRez = true; - elseif(gxWidth >= 3840) then - self.LowRez = nil - if(self.db.general.multiMonitor) then - if(gxWidth < 4080) then - evalwidth = 1224; - elseif(gxWidth < 4320) then - evalwidth = 1360; - elseif(gxWidth < 4800) then - evalwidth = 1440; - elseif(gxWidth < 5760) then - if(gxHeight == 900) then evalwidth = 1600 else evalwidth = 1680 end - elseif(gxWidth < 7680) then - evalwidth = 1920; - elseif(gxWidth < 9840) then - evalwidth = 2560; - elseif(gxWidth > 9839) then - evalwidth = 3280; - end - else - if(gxWidth < 4080) then - evalwidth = 3840; - elseif(gxWidth < 4320) then - evalwidth = 4080; - elseif(gxWidth < 4800) then - evalwidth = 4320; - elseif(gxWidth < 5040) then - evalwidth = 4800; - elseif(gxWidth < 5760) then - evalwidth = 5040; - elseif(gxWidth < 7680) then - evalwidth = 5760; - elseif(gxWidth < 9840) then - evalwidth = 7680; - elseif(gxWidth > 9839) then - evalwidth = 9840; - end - end - end - - local testScale1 = parsefloat(UIParent:GetScale(), 5) - local testScale2 = parsefloat(scale, 5) - - if(event == "PLAYER_LOGIN" and (testScale1 ~= testScale2)) then - SetCVar("useUiScale", 1) - SetCVar("uiScale", scale) - WorldMapFrame.hasTaint = true; - end - - if(event == 'PLAYER_LOGIN' or event == 'UI_SCALE_CHANGED') then - if IsMacClient() then - self.DisplaySettings.screenheight = floor(GetScreenHeight() * 100 + .5) / 100 - self.DisplaySettings.screenwidth = floor(GetScreenWidth() * 100 + .5) / 100 - end - - if evalwidth then - local width = evalwidth - local height = gxHeight; - if(not self.db.general.autoScale or height > 1200) then - height = UIParent:GetHeight(); - local ratio = gxHeight / height; - width = evalwidth / ratio; - end - self.Screen:SetSize(width, height); - else - self.Screen:SetSize(UIParent:GetSize()); - end - - self.Screen:ClearAllPoints() - self.Screen:SetPoint("CENTER") - - local change = abs((testScale1 * 100) - (testScale2 * 100)) - if(change > 1) then - if(self.db.general.autoScale) then - self:StaticPopup_Show('FAILED_UISCALE') - else - self:StaticPopup_Show('RL_CLIENT') - end - end - - self.EffectiveScale = self.Screen:GetEffectiveScale() - self.ActualHeight = self.Screen:GetHeight() - self.ActualWidth = self.Screen:GetWidth() - end -end - -local function scaled(value) - if(not SCREEN_MOD) then - SV:UI_SCALE_CHANGED() - end - return SCREEN_MOD * floor(value / SCREEN_MOD + .5); -end - -SV.Scale = scaled ---[[ -########################################################## -APPENDED POSITIONING METHODS -########################################################## -]]-- -do - local PARAMS = {} - - function SizeScaled(self, width, height) - if(type(width) == "number") then - local h = (height and type(height) == "number") and height or width - self:SetSize(scaled(width), scaled(h)) - end - end - - function WidthScaled(self, width) - if(type(width) == "number") then - self:SetWidth(scaled(width)) - end - end - - function HeightScaled(self, height) - if(type(height) == "number") then - self:SetHeight(scaled(height)) - end - end - - function PointScaled(self, ...) - local n = select('#', ...) - PARAMS = {...} - local arg - for i = 1, n do - arg = PARAMS[i] - if(arg and type(arg) == "number") then - PARAMS[i] = scaled(arg) - end - end - self:SetPoint(unpack(PARAMS)) - end - - function WrapOuter(self, parent, x, y) - x = type(x) == "number" and x or 1 - y = y or x - local nx = scaled(x); - local ny = scaled(y); - parent = parent or self:GetParent() - if self:GetPoint() then - self:ClearAllPoints() - end - self:SetPoint("TOPLEFT", parent, "TOPLEFT", -nx, ny) - self:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", nx, -ny) - end - - function FillInner(self, parent, x, y) - x = type(x) == "number" and x or 1 - y = y or x - local nx = scaled(x); - local ny = scaled(y); - parent = parent or self:GetParent() - if self:GetPoint() then - self:ClearAllPoints() - end - self:SetPoint("TOPLEFT", parent, "TOPLEFT", nx, -ny) - self:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", -nx, ny) - end -end ---[[ -########################################################## -APPENDED DESTROY METHODS -########################################################## -]]-- -local _purgatory = NewFrame("Frame", nil) -_purgatory:Hide() - -local function Die(self) - if self.UnregisterAllEvents then - self:UnregisterAllEvents() - self:SetParent(_purgatory) - else - self:Hide() - self.Show = SV.fubar - end -end - -local function RemoveTextures(self, option) - if(self.Panel) then return end - local region, layer, texture - for i = 1, self:GetNumRegions()do - region = select(i, self:GetRegions()) - if(region and (region:GetObjectType() == "Texture")) then - - layer = region:GetDrawLayer() - texture = region:GetTexture() - - if(option) then - if(type(option) == "boolean") then - if region.UnregisterAllEvents then - region:UnregisterAllEvents() - region:SetParent(_purgatory) - else - region.Show = region.Hide - end - region:Hide() - elseif(type(option) == "string" and ((layer == option) or (texture ~= option))) then - region:SetTexture(0,0,0,0) - end - else - region:SetTexture(0,0,0,0) - end - end - end -end ---[[ -########################################################## -APPENDED FONT TEMPLATING METHODS -########################################################## -]]-- -local function SetFontTemplate(self, font, fontSize, fontStyle, fontJustifyH, fontJustifyV, noUpdate) - if not self then return end - local STANDARDFONTSIZE = SV.db.media.fonts and SV.db.media.fonts.size or 12 - font = font or [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]] - fontSize = fontSize or STANDARDFONTSIZE; - fontJustifyH = fontJustifyH or "CENTER"; - fontJustifyV = fontJustifyV or "MIDDLE"; - if not font then return end - self.font = font; - self.fontSize = fontSize; - self.fontStyle = fontStyle; - self.fontJustifyH = fontJustifyH; - self.fontJustifyV = fontJustifyV; - self:SetFont(font, fontSize, fontStyle) - if(fontStyle and fontStyle ~= "NONE") then - self:SetShadowColor(0, 0, 0, 0) - else - self:SetShadowColor(0, 0, 0, 0.2) - end - self:SetShadowOffset(1, -1) - self:SetJustifyH(fontJustifyH) - self:SetJustifyV(fontJustifyV) - self.useCommon = fontSize and (fontSize == STANDARDFONTSIZE); - if(not noUpdate) then - FontUpdateFrames[self] = true - end -end ---[[ -########################################################## -FONT UPDATE CALLBACK -########################################################## -]]-- -local function FontTemplateUpdates() - local STANDARDFONTSIZE = SV.db.media.fonts.size; - for i=1, #FontUpdateFrames do - local frame = FontUpdateFrames[i] - if frame then - local fontSize = frame.useCommon and STANDARDFONTSIZE or frame.fontSize - frame:SetFont(frame.font, fontSize, frame.fontStyle) - else - FontUpdateFrames[i] = nil - end - end -end - -function SV:UpdateFontTemplates() - FontTemplateUpdates() -end - -SV:NewCallback(FontTemplateUpdates) ---[[ -########################################################## -XML TEMPLATE LOOKUP TABLE -########################################################## -]]-- -local XML_LOOKUP = { - ["Default"] = "SVUI_PanelTemplate_Default", - ["Transparent"] = "SVUI_PanelTemplate_Transparent", - ["Component"] = "SVUI_PanelTemplate_Component", - ["Headline"] = "SVUI_PanelTemplate_Headline", - ["Button"] = "SVUI_PanelTemplate_Button", - ["FramedTop"] = "SVUI_PanelTemplate_FramedTop", - ["FramedBottom"] = "SVUI_PanelTemplate_FramedBottom", - ["Bar"] = "SVUI_PanelTemplate_Bar", - ["Slot"] = "SVUI_PanelTemplate_Slot", - ["Inset"] = "SVUI_PanelTemplate_Inset", - ["Comic"] = "SVUI_PanelTemplate_Comic", - ["Model"] = "SVUI_PanelTemplate_Model", - ["Paper"] = "SVUI_PanelTemplate_Paper", - ["Container"] = "SVUI_PanelTemplate_Container", - ["Pattern"] = "SVUI_PanelTemplate_Pattern", - ["Halftone"] = "SVUI_PanelTemplate_Halftone", - ["Action"] = "SVUI_PanelTemplate_Action", - ["Blackout"] = "SVUI_PanelTemplate_Blackout", - ["UnitLarge"] = "SVUI_PanelTemplate_UnitLarge", - ["UnitSmall"] = "SVUI_PanelTemplate_UnitSmall" -}; ---[[ -########################################################## -INTERNAL HANDLERS -########################################################## -]]-- -local HookPanelBorderColor = function(self,r,g,b,a) - if self.BorderLeft then - self.BorderLeft:SetVertexColor(r,g,b,a) - self.BorderRight:SetVertexColor(r,g,b,a) - self.BorderTop:SetVertexColor(r,g,b,a) - self.BorderBottom:SetVertexColor(r,g,b,a) - end - if self.Shadow then - local alpha = self.Shadow:GetAttribute("shadowAlpha") or 0.5 - self.Shadow:SetBackdropBorderColor(r,g,b,alpha) - end -end - -local HookBackdrop = function(self,...) - self.Panel:SetBackdrop(...) -end - -local HookBackdropColor = function(self,...) - self.Panel:SetBackdropColor(...) -end - -local HookBackdropBorderColor = function(self,...) - self.Panel:SetBackdropBorderColor(...) -end - -local HookVertexColor = function(self,...) - self.Panel.Skin:SetVertexColor(...) -end - -local HookCustomBackdrop = function(self) - local bgid = self.Panel:GetAttribute("panelID") - local newBgFile = SV.Media.bg[bgid] - local bd = { - bgFile = newBgFile, - edgeFile = [[Interface\BUTTONS\WHITE8X8]], - tile = false, - tileSize = 0, - edgeSize = 2, - insets = - { - left = 2, - right = 2, - top = 2, - bottom = 2, - }, - } - self:SetBackdrop(bd) -end - -local HookFrameLevel = function(self, level) - local adjustment = level - 1; - if(adjustment < 0) then adjustment = 0 end - self.Panel:SetFrameLevel(adjustment) -end - -local Cooldown_ForceUpdate = function(self) - self.nextUpdate = 0; - self:Show() -end - -local Cooldown_StopTimer = function(self) - self.enable = nil; - self:Hide() -end - -local Cooldown_OnUpdate = function(self, elapsed) - if self.nextUpdate > 0 then - self.nextUpdate = self.nextUpdate - elapsed; - return - end - local expires = (self.duration - (GetTime() - self.start)); - if expires > 0.05 then - if (self.fontScale * self:GetEffectiveScale() / UIParent:GetScale()) < 0.5 then - self.text:SetText('') - self.nextUpdate = 500 - else - local timeLeft = 0; - local calc = 0; - if expires < 4 then - self.nextUpdate = 0.051 - self.text:SetFormattedText("|cffff0000%.1f|r", expires) - elseif expires < 60 then - self.nextUpdate = 0.51 - self.text:SetFormattedText("|cffffff00%d|r", floor(expires)) - elseif expires < 3600 then - timeLeft = ceil(expires / 60); - calc = floor((expires / 60) + .5); - self.nextUpdate = calc > 1 and ((expires - calc) * 29.5) or (expires - 59.5); - self.text:SetFormattedText("|cffffffff%dm|r", timeLeft) - elseif expires < 86400 then - timeLeft = ceil(expires / 3600); - calc = floor((expires / 3600) + .5); - self.nextUpdate = calc > 1 and ((expires - calc) * 1799.5) or (expires - 3570); - self.text:SetFormattedText("|cff66ffff%dh|r", timeLeft) - else - timeLeft = ceil(expires / 86400); - calc = floor((expires / 86400) + .5); - self.nextUpdate = calc > 1 and ((expires - calc) * 43199.5) or (expires - 86400); - self.text:SetFormattedText("|cff6666ff%dd|r", timeLeft) - end - end - else - Cooldown_StopTimer(self) - end -end - -local Cooldown_OnSizeChanged = function(self, width, height) - local frame = self.timer - local override = self.SizeOverride - local newSize = floor(width + .5) / 36; - override = override or frame:GetParent():GetParent().SizeOverride; - if override then - newSize = override / 20 - end - if newSize == frame.fontScale then - return - end - frame.fontScale = newSize; - if newSize < 0.5 and not override then - frame:Hide() - else - frame:Show() - frame.text:SetFont([[Interface\AddOns\SVUI\assets\fonts\Numbers.ttf]], newSize * 15, 'OUTLINE') - if frame.enable then - Cooldown_ForceUpdate(frame) - end - end -end - -local function CreateCooldownTimer(frame) - local timer = CreateFrame('Frame', nil, frame) - timer:Hide() - timer:SetAllPoints() - timer:SetScript('OnUpdate', Cooldown_OnUpdate) - - local timeText = timer:CreateFontString(nil,'OVERLAY') - timeText:SetPoint('CENTER',1,1) - timeText:SetJustifyH("CENTER") - timer.text = timeText; - - frame.timer = timer; - local width, height = frame:GetSize() - Cooldown_OnSizeChanged(frame, width, height) - frame:SetScript('OnSizeChanged', Cooldown_OnSizeChanged) - - return frame.timer -end - -local _hook_Cooldown_SetCooldown = function(self, start, duration, elapsed) - if start > 0 and duration > 2.5 then - local timer = self.timer or CreateCooldownTimer(self) - timer.start = start; - timer.duration = duration; - timer.enable = true; - timer.nextUpdate = 0; - - if timer.fontScale >= 0.5 then - timer:Show() - end - else - local timer = self.timer; - if timer then - Cooldown_StopTimer(timer) - end - end - if self.timer then - if elapsed and elapsed > 0 then - self.timer:SetAlpha(0) - else - self.timer:SetAlpha(0.8) - end - end -end ---[[ -########################################################## -COOLDOWN HELPER -########################################################## -]]-- -local function CreateCooldown(button) - local cooldown = button:GetName() and _G[button:GetName().."Cooldown"] - if(cooldown) then - cooldown:ClearAllPoints() - cooldown:FillInner() - cooldown:SetSwipeColor(0, 0, 0, 1) - --cooldown:SetHideCountdownNumbers(true) - - if(not cooldown.HookedCooldown) then - hooksecurefunc(cooldown, "SetCooldown", _hook_Cooldown_SetCooldown) - cooldown.HookedCooldown = true - end - end -end ---[[ -########################################################## -TEMPLATE HELPERS -########################################################## -]]-- -local function CreatePanelTemplate(frame, templateName, underlay, noupdate, padding, xOffset, yOffset, defaultColor) - local xmlTemplate = XML_LOOKUP[templateName] or "SVUI_PanelTemplate_Default" - local borderColor = {0,0,0,1} - - frame.Panel = NewFrame('Frame', nil, frame, xmlTemplate) - - local level = frame:GetFrameLevel() - if(level == 0 and not InCombatLockdown()) then - frame:SetFrameLevel(1) - level = 1 - end - - local adjustment = level - 1; - - if(adjustment < 0) then adjustment = 0 end - - frame.Panel:SetFrameLevel(adjustment) - - NewHook(frame, "SetFrameLevel", HookFrameLevel) - - if(defaultColor) then - frame.Panel:SetAttribute("panelColor", defaultColor) - end - if(noupdate) then - frame.Panel:SetAttribute("panelSkipUpdate", noupdate) - end - - local colorName = frame.Panel:GetAttribute("panelColor") - local gradientName = frame.Panel:GetAttribute("panelGradient") - local forcedOffset = frame.Panel:GetAttribute("panelOffset") - - xOffset = forcedOffset or xOffset or 1 - yOffset = forcedOffset or yOffset or 1 - - frame.Panel:WrapOuter(frame, xOffset, yOffset) - - padding = padding or frame.Panel:GetAttribute("panelPadding") - - if(padding and frame.Panel.BorderLeft) then - frame.Panel.BorderLeft:SetWidth(padding) - frame.Panel.BorderRight:SetWidth(padding) - frame.Panel.BorderTop:SetHeight(padding) - frame.Panel.BorderBottom:SetHeight(padding) - end - - if(frame.Panel.Shadow) then - frame.Panel.Shadow:SetPoint('TOPLEFT', frame.Panel, 'TOPLEFT', -3, 3) - frame.Panel.Shadow:SetPoint('BOTTOMRIGHT', frame.Panel, 'BOTTOMRIGHT', 3, -3) - - local alpha = frame.Panel.Shadow:GetAttribute("shadowAlpha") or 0.5 - frame.Panel.Shadow:SetBackdropBorderColor(0,0,0,alpha) - - local level = frame.Panel.Shadow:GetFrameLevel() - 1 - if(level >= 0) then - frame.Panel.Shadow:SetFrameLevel(level) - else - frame.Panel.Shadow:SetFrameLevel(0) - end - end - - local bgColor = SV.Media.color[colorName] or {0.18,0.18,0.18,1} - - if(not frame.Panel:GetAttribute("panelNoBackdrop")) then - if(underlay) then - frame.Panel:SetBackdropColor(bgColor[1],bgColor[2],bgColor[3],bgColor[4] or 1) - frame.Panel:SetBackdropBorderColor(0,0,0,1) - else - local bd = frame.Panel:GetBackdrop() - frame:SetBackdrop(bd) - frame:SetBackdropColor(bgColor[1],bgColor[2],bgColor[3],bgColor[4] or 1) - frame:SetBackdropBorderColor(0,0,0,1) - - frame.Panel:SetBackdrop(nil) - end - - if(templateName ~= 'Transparent') then - NewHook(frame.Panel, "SetBackdropBorderColor", HookPanelBorderColor) - NewHook(frame, "SetBackdropBorderColor", HookBackdropBorderColor) - if(underlay) then - NewHook(frame, "SetBackdrop", HookBackdrop) - NewHook(frame, "SetBackdropColor", HookBackdropColor) - end - frame.BackdropNeedsUpdate = true - if(templateName == 'Pattern' or templateName == 'Comic') then - frame.UpdateBackdrop = HookCustomBackdrop - end - end - end - - if(frame.Panel.Skin) then - if(not underlay) then - frame.Panel.Skin:SetParent(frame) - frame.Panel.Skin:FillInner(frame, xOffset, yOffset) - else - frame.Panel.Skin:FillInner(frame.Panel, xOffset, yOffset) - end - if(gradientName and SV.Media.gradient[gradientName]) then - frame.Panel.Skin:SetGradient(unpack(SV.Media.gradient[gradientName])) - else - frame.Panel.Skin:SetVertexColor(bgColor[1], bgColor[2], bgColor[3], bgColor[4] or 1) - end - - if((not frame.Panel:GetAttribute("panelSkipUpdate")) and frame.Panel:GetAttribute("panelTexUpdate")) then - frame.TextureNeedsUpdate = true - if(templateName == 'UnitLarge' or templateName == 'UnitSmall') then - frame.UpdateColor = HookVertexColor - frame.NoColorUpdate = true - end - end - end -end - -local function CreateButtonPanel(frame, noChecked, brightChecked) - - if(frame.Left) then - frame.Left:SetAlpha(0) - end - - if(frame.Middle) then - frame.Middle:SetAlpha(0) - end - - if(frame.Right) then - frame.Right:SetAlpha(0) - end - - if(frame.SetNormalTexture) then - frame:SetNormalTexture("") - end - - if(frame.SetDisabledTexture) then - frame:SetDisabledTexture("") - end - - if(frame.SetCheckedTexture) then - frame:SetCheckedTexture("") - end - - if(frame.SetHighlightTexture) then - if(not frame.hover) then - local hover = frame:CreateTexture(nil, "OVERLAY") - hover:FillInner(frame.Panel) - frame.hover = hover; - end - local color = SV.Media.color.highlight - frame.hover:SetTexture(color[1], color[2], color[3], 0.5) - frame:SetHighlightTexture(frame.hover) - end - - if(frame.SetPushedTexture) then - if(not frame.pushed) then - local pushed = frame:CreateTexture(nil, "OVERLAY") - pushed:FillInner(frame.Panel) - frame.pushed = pushed; - end - frame.pushed:SetTexture(0.1, 0.8, 0.1, 0.3) - frame:SetPushedTexture(frame.pushed) - end - - if(not noChecked and frame.SetCheckedTexture) then - if(not frame.checked) then - local checked = frame:CreateTexture(nil, "OVERLAY") - checked:FillInner(frame.Panel) - frame.checked = checked - end - - if(not brightChecked) then - frame.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]]) - frame.checked:SetVertexColor(0, 0.5, 0, 0.2) - else - frame.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\GLOSS]]) - frame.checked:SetVertexColor(0, 1, 0, 1) - end - - frame:SetCheckedTexture(frame.checked) - end - - CreateCooldown(frame) -end ---[[ -########################################################## -TEMPLATE API -########################################################## -]]-- -local function SetBasicPanel(self, topX, topY, bottomX, bottomY, hasShadow) - local needsHooks = false; - - if(hasShadow) then - if(not self.Panel) then - needsHooks = true - - self.Panel = CreateFrame("Frame", nil, self) - self.Panel:SetPoint("TOPLEFT", self, "TOPLEFT", -2, 2) - self.Panel:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 2, -2) - end - - self.Panel:SetBackdrop({ - bgFile = [[Interface\BUTTONS\WHITE8X8]], - tile = false, - tileSize = 0, - edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]], - edgeSize = 3, - insets = - { - left = 0, - right = 0, - top = 0, - bottom = 0, - }, - }) - self.Panel:SetBackdropColor(0,0,0,0) - self.Panel:SetBackdropBorderColor(0,0,0) - else - if(not self.Panel) then - needsHooks = true - - self.Panel = CreateFrame("Frame", nil, self) - self.Panel:SetPoint("TOPLEFT", self, "TOPLEFT", topX, topY) - self.Panel:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", bottomX, bottomY) - end - - self.Panel:SetBackdrop({ - bgFile = [[Interface\BUTTONS\WHITE8X8]], - tile = false, - tileSize = 0, - edgeFile = [[Interface\BUTTONS\WHITE8X8]], - edgeSize = 1, - insets = - { - left = 1, - right = 1, - top = 1, - bottom = 1, - }, - }) - self.Panel:SetBackdropColor(0,0,0,0.65) - self.Panel:SetBackdropBorderColor(0,0,0) - end - - if(needsHooks) then - local level = self:GetFrameLevel() - if(level == 0 and not InCombatLockdown()) then - self:SetFrameLevel(1) - level = 1 - end - - local adjustment = level - 1; - if(adjustment < 0) then adjustment = 0 end - - self.Panel:SetFrameLevel(adjustment) - - NewHook(self, "SetFrameLevel", HookFrameLevel) - NewHook(self, "SetBackdrop", HookBackdrop) - NewHook(self, "SetBackdropColor", HookBackdropColor) - NewHook(self, "SetBackdropBorderColor", HookBackdropBorderColor) - end -end - -local function SetPanelTemplate(self, templateName, noupdate, overridePadding, xOffset, yOffset, defaultColor) - if(not self or (self and self.Panel)) then return end - local padding = false - if(overridePadding and type(overridePadding) == "number") then - padding = overridePadding - end - - CreatePanelTemplate(self, templateName, true, noupdate, padding, xOffset, yOffset, defaultColor) - - if(not self.Panel:GetAttribute("panelSkipUpdate") and not self.__registered) then - TemplateUpdateFrames[self] = true - self.__registered = true - end -end - -local function SetFixedPanelTemplate(self, templateName, noupdate, overridePadding, xOffset, yOffset, defaultColor) - if(not self or (self and self.Panel)) then return end - local padding = false - if(overridePadding and type(overridePadding) == "number") then - padding = overridePadding - end - - CreatePanelTemplate(self, templateName, false, noupdate, padding, xOffset, yOffset, defaultColor) - - if(not self.Panel:GetAttribute("panelSkipUpdate") and not self.__registered) then - TemplateUpdateFrames[self] = true - self.__registered = true - end -end - -local function SetPanelColor(self, ...) - local arg1,arg2,arg3,arg4,arg5,arg6,arg7 = select(1, ...) - if(not self.Panel or not arg1) then return; end - if(self.Panel.Skin and self.Panel:GetAttribute("panelGradient")) then - if(type(arg1) == "string") then - if(arg1 == "VERTICAL" or arg1 == "HORIZONTAL") then - self.Panel.Skin:SetGradient(...) - elseif(SV.Media.gradient[arg1]) then - if self.__border then - local d,r,g,b,r2,g2,b2 = unpack(SV.Media.gradient[arg1]) - --self.Panel.Skin:SetGradient(d,r,g,b,r2,g2,b2) - self.__border[1]:SetTexture(r2,g2,b2) - self.__border[2]:SetTexture(r2,g2,b2) - self.__border[3]:SetTexture(r2,g2,b2) - self.__border[4]:SetTexture(r2,g2,b2) - else - self.Panel.Skin:SetGradient(unpack(SV.Media.gradient[arg1])) - if(SV.Media.color[arg1]) then - local t = SV.Media.color[arg1] - local r,g,b,a = t[1], t[2], t[3], t[4] or 1; - self:SetBackdropColor(r,g,b,a) - end - end - end - end - elseif(type(arg1) == "string" and SV.Media.color[arg1]) then - local t = SV.Media.color[arg1] - local r,g,b,a = t[1], t[2], t[3], t[4] or 1; - if self.__border then - self.__border[1]:SetTexture(r,g,b) - self.__border[2]:SetTexture(r,g,b) - self.__border[3]:SetTexture(r,g,b) - self.__border[4]:SetTexture(r,g,b) - else - self:SetBackdropColor(r,g,b) - end - elseif(arg1 and type(arg1) == "number") then - self:SetBackdropColor(...) - end -end ---[[ -########################################################## -APPENDED BUTTON TEMPLATING METHODS -########################################################## -]]-- -local function SetButtonTemplate(self, invisible, overridePadding, xOffset, yOffset, keepNormal, defaultColor) - if(not self or (self and self.Panel)) then return end - - local padding = 1 - if(overridePadding and type(overridePadding) == "number") then - padding = overridePadding - end - - local x,y = -1,-1 - local underlay = false - if(xOffset or yOffset) then - x = xOffset or -1 - y = yOffset or -1 - underlay = true - end - - if(invisible) then - CreatePanelTemplate(self, "Transparent", underlay, true, padding, x, y, defaultColor) - self:SetBackdropColor(0,0,0,0) - self:SetBackdropBorderColor(0,0,0,0) - if(self.Panel.BorderLeft) then - self.Panel.BorderLeft:SetVertexColor(0,0,0,0) - self.Panel.BorderRight:SetVertexColor(0,0,0,0) - self.Panel.BorderTop:SetVertexColor(0,0,0,0) - self.Panel.BorderBottom:SetVertexColor(0,0,0,0) - end - else - CreatePanelTemplate(self, "Button", underlay, true, padding, x, y, defaultColor) - end - - if(self.Left) then - self.Left:SetAlpha(0) - end - - if(self.Middle) then - self.Middle:SetAlpha(0) - end - - if(self.Right) then - self.Right:SetAlpha(0) - end - - if(self.SetNormalTexture and not keepNormal) then - self:SetNormalTexture("") - end - - if(self.SetDisabledTexture) then - self:SetDisabledTexture("") - end - - if(self.SetHighlightTexture) then - if(not self.hover) then - local hover = self:CreateTexture(nil, "HIGHLIGHT") - FillInner(hover, self.Panel) - self.hover = hover; - end - self.hover:SetTexture(0.1, 0.8, 0.8, 0.5) - self:SetHighlightTexture(self.hover) - end - - if(self.SetPushedTexture) then - if(not self.pushed) then - local pushed = self:CreateTexture(nil, "OVERLAY") - FillInner(pushed, self.Panel) - self.pushed = pushed; - end - - self.pushed:SetTexture(0.1, 0.8, 0.1, 0.3) - - self:SetPushedTexture(self.pushed) - end - - if(self.SetCheckedTexture) then - if(not self.checked) then - local checked = self:CreateTexture(nil, "OVERLAY") - FillInner(checked, self.Panel) - self.checked = checked; - end - - self.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]]) - self.checked:SetVertexColor(0, 0.5, 0, 0.2) - - self:SetCheckedTexture(self.checked) - end - - CreateCooldown(self) -end - -local function SetSlotTemplate(self, underlay, padding, x, y, shadowAlpha) - if(not self or (self and self.Panel)) then return end - padding = padding or 1 - CreatePanelTemplate(self, "Slot", underlay, true, padding, x, y) - CreateButtonPanel(self, true) - if(shadowAlpha) then - self.Panel.Shadow:SetAttribute("shadowAlpha", shadowAlpha) - end -end - -local function SetCheckboxTemplate(self, underlay, x, y) - if(not self or (self and self.Panel)) then return end - - if(underlay) then - x = x or -7 - y = y or -7 - end - - CreatePanelTemplate(self, "Slot", underlay, true, 1, x, y) - CreateButtonPanel(self, false, true) - - NewHook(self, "SetChecked", function(self,checked) - local r,g,b = 0,0,0 - if(checked == 1 or checked == true) then - r,g,b = self:GetCheckedTexture():GetVertexColor() - end - self:SetBackdropBorderColor(r,g,b) - end) -end - -local function SetEditboxTemplate(self, x, y, fixed) - if(not self or (self and self.Panel)) then return end - - if self.TopLeftTex then Die(self.TopLeftTex) end - if self.TopRightTex then Die(self.TopRightTex) end - if self.TopTex then Die(self.TopTex) end - if self.BottomLeftTex then Die(self.BottomLeftTex) end - if self.BottomRightTex then Die(self.BottomRightTex) end - if self.BottomTex then Die(self.BottomTex) end - if self.LeftTex then Die(self.LeftTex) end - if self.RightTex then Die(self.RightTex) end - if self.MiddleTex then Die(self.MiddleTex) end - local underlay = true - if(fixed ~= nil) then underlay = fixed end - CreatePanelTemplate(self, "Inset", underlay, true, 1, x, y) - - local globalName = self:GetName(); - if globalName then - if _G[globalName.."Left"] then Die(_G[globalName.."Left"]) end - if _G[globalName.."Middle"] then Die(_G[globalName.."Middle"]) end - if _G[globalName.."Right"] then Die(_G[globalName.."Right"]) end - if _G[globalName.."Mid"] then Die(_G[globalName.."Mid"]) end - - if globalName:find("Silver") or globalName:find("Copper") or globalName:find("Gold") then - self.Panel:SetPoint("TOPLEFT", -3, 1) - if globalName:find("Silver") or globalName:find("Copper") then - self.Panel:SetPoint("BOTTOMRIGHT", -12, -2) - else - self.Panel:SetPoint("BOTTOMRIGHT", -2, -2) - end - end - end -end - -local function SetFramedButtonTemplate(self, template, borderSize) - if(not self or (self and self.Panel)) then return end - - borderSize = borderSize or 2 - - template = template or "FramedBottom" - - CreatePanelTemplate(self, template, false, false, 0, -borderSize, -borderSize) - - if(self.Left) then - self.Left:SetAlpha(0) - end - - if(self.Middle) then - self.Middle:SetAlpha(0) - end - - if(self.Right) then - self.Right:SetAlpha(0) - end - - if(self.SetNormalTexture) then - self:SetNormalTexture("") - end - - if(self.SetDisabledTexture) then - self:SetDisabledTexture("") - end - - if(not self.__border) then - local t = SV.Media.color.default - local r,g,b = t[1], t[2], t[3] - - local border = {} - - border[1] = self:CreateTexture(nil,"BORDER") - border[1]:SetTexture(r,g,b) - border[1]:SetPoint("TOPLEFT", -1, 1) - border[1]:SetPoint("BOTTOMLEFT", -1, -1) - border[1]:SetWidth(borderSize) - - local leftoutline = self:CreateTexture(nil,"BORDER") - leftoutline:SetTexture(0,0,0) - leftoutline:SetPoint("TOPLEFT", -2, 2) - leftoutline:SetPoint("BOTTOMLEFT", -2, -2) - leftoutline:SetWidth(1) - - border[2] = self:CreateTexture(nil,"BORDER") - border[2]:SetTexture(r,g,b) - border[2]:SetPoint("TOPRIGHT", 1, 1) - border[2]:SetPoint("BOTTOMRIGHT", 1, -1) - border[2]:SetWidth(borderSize) - - local rightoutline = self:CreateTexture(nil,"BORDER") - rightoutline:SetTexture(0,0,0) - rightoutline:SetPoint("TOPRIGHT", 2, 2) - rightoutline:SetPoint("BOTTOMRIGHT", 2, -2) - rightoutline:SetWidth(1) - - border[3] = self:CreateTexture(nil,"BORDER") - border[3]:SetTexture(r,g,b) - border[3]:SetPoint("TOPLEFT", -1, 1) - border[3]:SetPoint("TOPRIGHT", 1, 1) - border[3]:SetHeight(borderSize) - - local topoutline = self:CreateTexture(nil,"BORDER") - topoutline:SetTexture(0,0,0) - topoutline:SetPoint("TOPLEFT", -2, 2) - topoutline:SetPoint("TOPRIGHT", 2, 2) - topoutline:SetHeight(1) - - border[4] = self:CreateTexture(nil,"BORDER") - border[4]:SetTexture(r,g,b) - border[4]:SetPoint("BOTTOMLEFT", -1, -1) - border[4]:SetPoint("BOTTOMRIGHT", 1, -1) - border[4]:SetHeight(borderSize) - - local bottomoutline = self:CreateTexture(nil,"BORDER") - bottomoutline:SetTexture(0,0,0) - bottomoutline:SetPoint("BOTTOMLEFT", -2, -2) - bottomoutline:SetPoint("BOTTOMRIGHT", 2, -2) - bottomoutline:SetHeight(1) - - self.__border = border - end - - if(not self.hover) then - self.hover = self:CreateTexture(nil, "HIGHLIGHT") - end - - local color = SV.Media.color.highlight - self.hover:SetTexture(color[1], color[2], color[3], 0.5) - self.hover:SetAllPoints() - if(self.SetHighlightTexture) then - self:SetHighlightTexture(self.hover) - end - - if(not self.__registered) then - TemplateUpdateFrames[self] = true - self.__registered = true - end -end ---[[ -########################################################## -TEMPLATE UPDATE CALLBACK -########################################################## -]]-- -local function FrameTemplateUpdates() - for frame in pairs(TemplateUpdateFrames) do - if(frame) then - local panelID = frame.Panel:GetAttribute("panelID") - local colorID = frame.Panel:GetAttribute("panelColor") - local panelColor = SV.Media.color[colorID]; - if(frame.BackdropNeedsUpdate) then - if(frame.UpdateBackdrop) then - frame:UpdateBackdrop() - end - if(panelColor) then - frame:SetBackdropColor(panelColor[1], panelColor[2], panelColor[3], panelColor[4] or 1) - end - frame:SetBackdropBorderColor(0,0,0,1) - end - if(frame.TextureNeedsUpdate and frame.Panel.Skin) then - local tex = SV.Media.bg[panelID] - if(tex) then - frame.Panel.Skin:SetTexture(tex) - end - if(not frame.NoColorUpdate) then - local gradient = frame.Panel:GetAttribute("panelGradient") - if(gradient and SV.Media.gradient[gradient]) then - local g = SV.Media.gradient[gradient] - frame.Panel.Skin:SetGradient(g[1], g[2], g[3], g[4], g[5], g[6], g[7]) - elseif(panelColor) then - frame.Panel.Skin:SetVertexColor(panelColor[1], panelColor[2], panelColor[3], panelColor[4] or 1) - end - end - end - end - end -end - -SV:NewCallback(FrameTemplateUpdates) ---[[ -########################################################## -ENUMERATION -########################################################## -]]-- -local function AppendMethods(OBJECT) - local META = getmetatable(OBJECT).__index - if not OBJECT.Size then META.Size = SizeScaled end - if not OBJECT.Width then META.Width = WidthScaled end - if not OBJECT.Height then META.Height = HeightScaled end - if not OBJECT.Point then META.Point = PointScaled end - if not OBJECT.WrapOuter then META.WrapOuter = WrapOuter end - if not OBJECT.FillInner then META.FillInner = FillInner end - if not OBJECT.Die then META.Die = Die end - if not OBJECT.RemoveTextures then META.RemoveTextures = RemoveTextures end - if not OBJECT.SetBasicPanel then META.SetBasicPanel = SetBasicPanel end - if not OBJECT.SetPanelTemplate then META.SetPanelTemplate = SetPanelTemplate end - if not OBJECT.SetFixedPanelTemplate then META.SetFixedPanelTemplate = SetFixedPanelTemplate end - if not OBJECT.SetPanelColor then META.SetPanelColor = SetPanelColor end - if not OBJECT.SetButtonTemplate then META.SetButtonTemplate = SetButtonTemplate end - if not OBJECT.SetSlotTemplate then META.SetSlotTemplate = SetSlotTemplate end - if not OBJECT.SetCheckboxTemplate then META.SetCheckboxTemplate = SetCheckboxTemplate end - if not OBJECT.SetEditboxTemplate then META.SetEditboxTemplate = SetEditboxTemplate end - if not OBJECT.SetFramedButtonTemplate then META.SetFramedButtonTemplate = SetFramedButtonTemplate end - if not OBJECT.SetFontTemplate then META.SetFontTemplate = SetFontTemplate end -end - -local HANDLER, OBJECT = {["Frame"] = true}, NewFrame("Frame") -AppendMethods(OBJECT) -AppendMethods(OBJECT:CreateTexture()) -AppendMethods(OBJECT:CreateFontString()) - -OBJECT = EnumerateFrames() -while OBJECT do - local objType = OBJECT:GetObjectType() - if not HANDLER[objType] then - AppendMethods(OBJECT) - HANDLER[objType] = true - end - OBJECT = EnumerateFrames(OBJECT) -end \ No newline at end of file diff --git a/Interface/AddOns/SVUI/system/screen.lua b/Interface/AddOns/SVUI/system/screen.lua new file mode 100644 index 0000000..4e7eef7 --- /dev/null +++ b/Interface/AddOns/SVUI/system/screen.lua @@ -0,0 +1,168 @@ +--[[ +############################################################################## +_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_ # + ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__ # + __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____ # + ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____ # + ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____ # + _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____ # + __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ # + _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_# + ___\///////////___________\///___________\/////////_____\///////////_# +############################################################################## +S U P E R - V I L L A I N - U I By: Munglunch # +############################################################################## +########################################################## +LOCALIZED LUA FUNCTIONS +########################################################## +]]-- +--[[ GLOBALS ]]-- +local _G = _G; +local unpack = _G.unpack; +local select = _G.select; +local pairs = _G.pairs; +local ipairs = _G.ipairs; +local type = _G.type; +local error = _G.error; +local pcall = _G.pcall; +local tostring = _G.tostring; +local tonumber = _G.tonumber; +local table = _G.table; +local string = _G.string; +local math = _G.math; +--[[ MATH METHODS ]]-- +local floor, abs, min, max = math.floor, math.abs, math.min, math.max; +local parsefloat, ceil = math.parsefloat, math.ceil; +--[[ +########################################################## +GET ADDON DATA +########################################################## +]]-- +local SV = select(2, ...) +local L = SV.L + +SV.ScaleModifier = 1; + +local function GetUsableScreen() + local rez = GetCVar("gxResolution") + local height = rez:match("%d+x(%d+)") + local width = rez:match("(%d+)x%d+") + local gxHeight = tonumber(height) + local gxWidth = tonumber(width) + local gxMod = (768 / gxHeight) + return gxWidth, gxHeight, gxMod +end +--[[ +########################################################## +UI SCALING +########################################################## +]]-- +function SV:UI_SCALE_CHANGED(event) + local scale, evalwidth + local gxWidth, gxHeight, gxMod = GetUsableScreen() + + if(IsMacClient() and self.DisplaySettings and self.DisplaySettings.screenheight and self.DisplaySettings.screenwidth) then + if(gxHeight ~= self.DisplaySettings.screenheight or gxWidth ~= self.DisplaySettings.screenwidth) then + gxHeight = self.DisplaySettings.screenheight; + gxWidth = self.DisplaySettings.screenwidth + end + end + + if self.db.general.autoScale then + scale = max(0.64, min(1.15, gxMod)) + else + scale = max(0.64, min(1.15, GetCVar("uiScale") or UIParent:GetScale() or gxMod)) + end + + self.ScaleModifier = gxMod / scale; + + if(gxWidth < 1600) then + self.LowRez = true; + elseif(gxWidth >= 3840) then + self.LowRez = nil + if(self.db.general.multiMonitor) then + if(gxWidth < 4080) then + evalwidth = 1224; + elseif(gxWidth < 4320) then + evalwidth = 1360; + elseif(gxWidth < 4800) then + evalwidth = 1440; + elseif(gxWidth < 5760) then + if(gxHeight == 900) then evalwidth = 1600 else evalwidth = 1680 end + elseif(gxWidth < 7680) then + evalwidth = 1920; + elseif(gxWidth < 9840) then + evalwidth = 2560; + elseif(gxWidth > 9839) then + evalwidth = 3280; + end + else + if(gxWidth < 4080) then + evalwidth = 3840; + elseif(gxWidth < 4320) then + evalwidth = 4080; + elseif(gxWidth < 4800) then + evalwidth = 4320; + elseif(gxWidth < 5040) then + evalwidth = 4800; + elseif(gxWidth < 5760) then + evalwidth = 5040; + elseif(gxWidth < 7680) then + evalwidth = 5760; + elseif(gxWidth < 9840) then + evalwidth = 7680; + elseif(gxWidth > 9839) then + evalwidth = 9840; + end + end + end + + local testScale1 = parsefloat(UIParent:GetScale(), 5) + local testScale2 = parsefloat(scale, 5) + + if(event == "PLAYER_LOGIN" and (testScale1 ~= testScale2)) then + SetCVar("useUiScale", 1) + SetCVar("uiScale", scale) + WorldMapFrame.hasTaint = true; + end + + if(event == 'PLAYER_LOGIN' or event == 'UI_SCALE_CHANGED') then + if IsMacClient() then + self.DisplaySettings.screenheight = floor(GetScreenHeight() * 100 + .5) / 100 + self.DisplaySettings.screenwidth = floor(GetScreenWidth() * 100 + .5) / 100 + end + + if evalwidth then + local width = evalwidth + local height = gxHeight; + if(not self.db.general.autoScale or height > 1200) then + height = UIParent:GetHeight(); + local ratio = gxHeight / height; + width = evalwidth / ratio; + end + self.Screen:SetSize(width, height); + else + self.Screen:SetSize(UIParent:GetSize()); + end + + self.Screen:ClearAllPoints() + self.Screen:SetPoint("CENTER") + + local change = abs((testScale1 * 100) - (testScale2 * 100)) + if(change > 1) then + if(self.db.general.autoScale) then + self:StaticPopup_Show('FAILED_UISCALE') + else + self:StaticPopup_Show('RL_CLIENT') + end + end + + self.EffectiveScale = self.Screen:GetEffectiveScale() + self.ActualHeight = self.Screen:GetHeight() + self.ActualWidth = self.Screen:GetWidth() + end +end + +function SV:Scale(value) + return self.ScaleModifier * floor(value / self.ScaleModifier + .5); +end \ No newline at end of file diff --git a/Interface/AddOns/SVUI/system/templates.lua b/Interface/AddOns/SVUI/system/templates.lua new file mode 100644 index 0000000..f7f190e --- /dev/null +++ b/Interface/AddOns/SVUI/system/templates.lua @@ -0,0 +1,1121 @@ +--[[ +############################################################################## +_____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_ # + ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__ # + __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____ # + ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____ # + ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____ # + _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____ # + __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ # + _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_# + ___\///////////___________\///___________\/////////_____\///////////_# +############################################################################## +S U P E R - V I L L A I N - U I By: Munglunch # +############################################################################## +########################################################## +LOCALIZED LUA FUNCTIONS +########################################################## +]]-- +--[[ GLOBALS ]]-- +local _G = _G; +local unpack = _G.unpack; +local select = _G.select; +local pairs = _G.pairs; +local ipairs = _G.ipairs; +local type = _G.type; +local error = _G.error; +local pcall = _G.pcall; +local tostring = _G.tostring; +local tonumber = _G.tonumber; +local table = _G.table; +local string = _G.string; +local math = _G.math; +--[[ MATH METHODS ]]-- +local floor, abs, min, max = math.floor, math.abs, math.min, math.max; +local parsefloat, ceil = math.parsefloat, math.ceil; +--[[ STRING METHODS ]]-- +local lower = string.lower; +--[[ TABLE METHODS ]]-- +local tremove, tcopy, twipe, tsort, tconcat, tdump = table.remove, table.copy, table.wipe, table.sort, table.concat, table.dump; +--[[ +########################################################## +GET ADDON DATA +########################################################## +]]-- +local SV = select(2, ...) +local L = SV.L +--[[ +########################################################## +LOCAL VARS +########################################################## +]]-- +local SizeScaled, HeightScaled, WidthScaled, PointScaled, WrapOuter, FillInner +local TemplateUpdateFrames = {}; +local FontUpdateFrames = {}; +local NewFrame = CreateFrame; +local NewHook = hooksecurefunc; +local STANDARD_TEXT_FONT = _G.STANDARD_TEXT_FONT; +--[[ +########################################################## +APPENDED POSITIONING METHODS +########################################################## +]]-- +do + local PARAMS = {} + + function SizeScaled(self, width, height) + if(type(width) == "number") then + local h = (height and type(height) == "number") and height or width + self:SetSize(SV:Scale(width), SV:Scale(h)) + end + end + + function WidthScaled(self, width) + if(type(width) == "number") then + self:SetWidth(SV:Scale(width)) + end + end + + function HeightScaled(self, height) + if(type(height) == "number") then + self:SetHeight(SV:Scale(height)) + end + end + + function PointScaled(self, ...) + local n = select('#', ...) + PARAMS = {...} + local arg + for i = 1, n do + arg = PARAMS[i] + if(arg and type(arg) == "number") then + PARAMS[i] = SV:Scale(arg) + end + end + self:SetPoint(unpack(PARAMS)) + end + + function WrapOuter(self, parent, x, y) + x = type(x) == "number" and x or 1 + y = y or x + local nx = SV:Scale(x); + local ny = SV:Scale(y); + parent = parent or self:GetParent() + if self:GetPoint() then + self:ClearAllPoints() + end + self:SetPoint("TOPLEFT", parent, "TOPLEFT", -nx, ny) + self:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", nx, -ny) + end + + function FillInner(self, parent, x, y) + x = type(x) == "number" and x or 1 + y = y or x + local nx = SV:Scale(x); + local ny = SV:Scale(y); + parent = parent or self:GetParent() + if self:GetPoint() then + self:ClearAllPoints() + end + self:SetPoint("TOPLEFT", parent, "TOPLEFT", nx, -ny) + self:SetPoint("BOTTOMRIGHT", parent, "BOTTOMRIGHT", -nx, ny) + end +end +--[[ +########################################################## +APPENDED DESTROY METHODS +########################################################## +]]-- +local _purgatory = NewFrame("Frame", nil) +_purgatory:Hide() + +local function Die(self) + if self.UnregisterAllEvents then + self:UnregisterAllEvents() + self:SetParent(_purgatory) + else + self:Hide() + self.Show = SV.fubar + end +end + +local function RemoveTextures(self, option) + if(self.Panel) then return end + local region, layer, texture + for i = 1, self:GetNumRegions()do + region = select(i, self:GetRegions()) + if(region and (region:GetObjectType() == "Texture")) then + + layer = region:GetDrawLayer() + texture = region:GetTexture() + + if(option) then + if(type(option) == "boolean") then + if region.UnregisterAllEvents then + region:UnregisterAllEvents() + region:SetParent(_purgatory) + else + region.Show = region.Hide + end + region:Hide() + elseif(type(option) == "string" and ((layer == option) or (texture ~= option))) then + region:SetTexture(0,0,0,0) + end + else + region:SetTexture(0,0,0,0) + end + end + end +end +--[[ +########################################################## +APPENDED FONT TEMPLATING METHODS +########################################################## +]]-- +local function SetFontTemplate(self, font, fontSize, fontStyle, fontJustifyH, fontJustifyV, noUpdate) + if not self then return end + local STANDARDFONTSIZE = SV.db.media.fonts and SV.db.media.fonts.size or 12 + font = font or [[Interface\AddOns\SVUI\assets\fonts\Default.ttf]] + fontSize = fontSize or STANDARDFONTSIZE; + fontJustifyH = fontJustifyH or "CENTER"; + fontJustifyV = fontJustifyV or "MIDDLE"; + if not font then return end + self.font = font; + self.fontSize = fontSize; + self.fontStyle = fontStyle; + self.fontJustifyH = fontJustifyH; + self.fontJustifyV = fontJustifyV; + self:SetFont(font, fontSize, fontStyle) + if(fontStyle and fontStyle ~= "NONE") then + self:SetShadowColor(0, 0, 0, 0) + else + self:SetShadowColor(0, 0, 0, 0.2) + end + self:SetShadowOffset(1, -1) + self:SetJustifyH(fontJustifyH) + self:SetJustifyV(fontJustifyV) + self.useCommon = fontSize and (fontSize == STANDARDFONTSIZE); + if(not noUpdate) then + FontUpdateFrames[self] = true + end +end +--[[ +########################################################## +FONT UPDATE CALLBACK +########################################################## +]]-- +local function FontTemplateUpdates() + local STANDARDFONTSIZE = SV.db.media.fonts.size; + for i=1, #FontUpdateFrames do + local frame = FontUpdateFrames[i] + if frame then + local fontSize = frame.useCommon and STANDARDFONTSIZE or frame.fontSize + frame:SetFont(frame.font, fontSize, frame.fontStyle) + else + FontUpdateFrames[i] = nil + end + end +end + +function SV:UpdateFontTemplates() + FontTemplateUpdates() +end + +SV:NewCallback(FontTemplateUpdates) +--[[ +########################################################## +XML TEMPLATE LOOKUP TABLE +########################################################## +]]-- +local XML_LOOKUP = { + ["Default"] = "SVUI_PanelTemplate_Default", + ["Transparent"] = "SVUI_PanelTemplate_Transparent", + ["Component"] = "SVUI_PanelTemplate_Component", + ["Headline"] = "SVUI_PanelTemplate_Headline", + ["Button"] = "SVUI_PanelTemplate_Button", + ["FramedTop"] = "SVUI_PanelTemplate_FramedTop", + ["FramedBottom"] = "SVUI_PanelTemplate_FramedBottom", + ["Bar"] = "SVUI_PanelTemplate_Bar", + ["Slot"] = "SVUI_PanelTemplate_Slot", + ["Inset"] = "SVUI_PanelTemplate_Inset", + ["Comic"] = "SVUI_PanelTemplate_Comic", + ["Model"] = "SVUI_PanelTemplate_Model", + ["Paper"] = "SVUI_PanelTemplate_Paper", + ["Container"] = "SVUI_PanelTemplate_Container", + ["Pattern"] = "SVUI_PanelTemplate_Pattern", + ["Halftone"] = "SVUI_PanelTemplate_Halftone", + ["Action"] = "SVUI_PanelTemplate_Action", + ["Blackout"] = "SVUI_PanelTemplate_Blackout", + ["UnitLarge"] = "SVUI_PanelTemplate_UnitLarge", + ["UnitSmall"] = "SVUI_PanelTemplate_UnitSmall" +}; +--[[ +########################################################## +INTERNAL HANDLERS +########################################################## +]]-- +local HookPanelBorderColor = function(self,r,g,b,a) + if self.BorderLeft then + self.BorderLeft:SetVertexColor(r,g,b,a) + self.BorderRight:SetVertexColor(r,g,b,a) + self.BorderTop:SetVertexColor(r,g,b,a) + self.BorderBottom:SetVertexColor(r,g,b,a) + end + if self.Shadow then + local alpha = self.Shadow:GetAttribute("shadowAlpha") or 0.5 + self.Shadow:SetBackdropBorderColor(r,g,b,alpha) + end +end + +local HookBackdrop = function(self,...) + self.Panel:SetBackdrop(...) +end + +local HookBackdropColor = function(self,...) + self.Panel:SetBackdropColor(...) +end + +local HookBackdropBorderColor = function(self,...) + self.Panel:SetBackdropBorderColor(...) +end + +local HookVertexColor = function(self,...) + self.Panel.Skin:SetVertexColor(...) +end + +local HookCustomBackdrop = function(self) + local bgid = self.Panel:GetAttribute("panelID") + local newBgFile = SV.Media.bg[bgid] + local bd = { + bgFile = newBgFile, + edgeFile = [[Interface\BUTTONS\WHITE8X8]], + tile = false, + tileSize = 0, + edgeSize = 2, + insets = + { + left = 2, + right = 2, + top = 2, + bottom = 2, + }, + } + self:SetBackdrop(bd) +end + +local HookFrameLevel = function(self, level) + local adjustment = level - 1; + if(adjustment < 0) then adjustment = 0 end + self.Panel:SetFrameLevel(adjustment) +end + +local Cooldown_ForceUpdate = function(self) + self.nextUpdate = 0; + self:Show() +end + +local Cooldown_StopTimer = function(self) + self.enable = nil; + self:Hide() +end + +local Cooldown_OnUpdate = function(self, elapsed) + if self.nextUpdate > 0 then + self.nextUpdate = self.nextUpdate - elapsed; + return + end + local expires = (self.duration - (GetTime() - self.start)); + if expires > 0.05 then + if (self.fontScale * self:GetEffectiveScale() / UIParent:GetScale()) < 0.5 then + self.text:SetText('') + self.nextUpdate = 500 + else + local timeLeft = 0; + local calc = 0; + if expires < 4 then + self.nextUpdate = 0.051 + self.text:SetFormattedText("|cffff0000%.1f|r", expires) + elseif expires < 60 then + self.nextUpdate = 0.51 + self.text:SetFormattedText("|cffffff00%d|r", floor(expires)) + elseif expires < 3600 then + timeLeft = ceil(expires / 60); + calc = floor((expires / 60) + .5); + self.nextUpdate = calc > 1 and ((expires - calc) * 29.5) or (expires - 59.5); + self.text:SetFormattedText("|cffffffff%dm|r", timeLeft) + elseif expires < 86400 then + timeLeft = ceil(expires / 3600); + calc = floor((expires / 3600) + .5); + self.nextUpdate = calc > 1 and ((expires - calc) * 1799.5) or (expires - 3570); + self.text:SetFormattedText("|cff66ffff%dh|r", timeLeft) + else + timeLeft = ceil(expires / 86400); + calc = floor((expires / 86400) + .5); + self.nextUpdate = calc > 1 and ((expires - calc) * 43199.5) or (expires - 86400); + self.text:SetFormattedText("|cff6666ff%dd|r", timeLeft) + end + end + else + Cooldown_StopTimer(self) + end +end + +local Cooldown_OnSizeChanged = function(self, width, height) + local frame = self.timer + local override = self.SizeOverride + local newSize = floor(width + .5) / 36; + override = override or frame:GetParent():GetParent().SizeOverride; + if override then + newSize = override / 20 + end + if newSize == frame.fontScale then + return + end + frame.fontScale = newSize; + if newSize < 0.5 and not override then + frame:Hide() + else + frame:Show() + frame.text:SetFont([[Interface\AddOns\SVUI\assets\fonts\Numbers.ttf]], newSize * 15, 'OUTLINE') + if frame.enable then + Cooldown_ForceUpdate(frame) + end + end +end + +local function CreateCooldownTimer(frame) + local timer = CreateFrame('Frame', nil, frame) + timer:Hide() + timer:SetAllPoints() + timer:SetScript('OnUpdate', Cooldown_OnUpdate) + + local timeText = timer:CreateFontString(nil,'OVERLAY') + timeText:SetPoint('CENTER',1,1) + timeText:SetJustifyH("CENTER") + timer.text = timeText; + + frame.timer = timer; + local width, height = frame:GetSize() + Cooldown_OnSizeChanged(frame, width, height) + frame:SetScript('OnSizeChanged', Cooldown_OnSizeChanged) + + return frame.timer +end + +local _hook_Cooldown_SetCooldown = function(self, start, duration, elapsed) + if start > 0 and duration > 2.5 then + local timer = self.timer or CreateCooldownTimer(self) + timer.start = start; + timer.duration = duration; + timer.enable = true; + timer.nextUpdate = 0; + + if timer.fontScale >= 0.5 then + timer:Show() + end + else + local timer = self.timer; + if timer then + Cooldown_StopTimer(timer) + end + end + if self.timer then + if elapsed and elapsed > 0 then + self.timer:SetAlpha(0) + else + self.timer:SetAlpha(0.8) + end + end +end +--[[ +########################################################## +COOLDOWN HELPER +########################################################## +]]-- +local function CreateCooldown(button) + local cooldown = button:GetName() and _G[button:GetName().."Cooldown"] + if(cooldown) then + cooldown:ClearAllPoints() + cooldown:FillInner() + cooldown:SetSwipeColor(0, 0, 0, 1) + --cooldown:SetHideCountdownNumbers(true) + + if(not cooldown.HookedCooldown) then + hooksecurefunc(cooldown, "SetCooldown", _hook_Cooldown_SetCooldown) + cooldown.HookedCooldown = true + end + end +end +--[[ +########################################################## +TEMPLATE HELPERS +########################################################## +]]-- +local function CreatePanelTemplate(frame, templateName, underlay, noupdate, padding, xOffset, yOffset, defaultColor) + local xmlTemplate = XML_LOOKUP[templateName] or "SVUI_PanelTemplate_Default" + local borderColor = {0,0,0,1} + + frame.Panel = NewFrame('Frame', nil, frame, xmlTemplate) + + local level = frame:GetFrameLevel() + if(level == 0 and not InCombatLockdown()) then + frame:SetFrameLevel(1) + level = 1 + end + + local adjustment = level - 1; + + if(adjustment < 0) then adjustment = 0 end + + frame.Panel:SetFrameLevel(adjustment) + + NewHook(frame, "SetFrameLevel", HookFrameLevel) + + if(defaultColor) then + frame.Panel:SetAttribute("panelColor", defaultColor) + end + if(noupdate) then + frame.Panel:SetAttribute("panelSkipUpdate", noupdate) + end + + local colorName = frame.Panel:GetAttribute("panelColor") + local gradientName = frame.Panel:GetAttribute("panelGradient") + local forcedOffset = frame.Panel:GetAttribute("panelOffset") + + xOffset = forcedOffset or xOffset or 1 + yOffset = forcedOffset or yOffset or 1 + + frame.Panel:WrapOuter(frame, xOffset, yOffset) + + padding = padding or frame.Panel:GetAttribute("panelPadding") + + if(padding and frame.Panel.BorderLeft) then + frame.Panel.BorderLeft:SetWidth(padding) + frame.Panel.BorderRight:SetWidth(padding) + frame.Panel.BorderTop:SetHeight(padding) + frame.Panel.BorderBottom:SetHeight(padding) + end + + if(frame.Panel.Shadow) then + frame.Panel.Shadow:SetPoint('TOPLEFT', frame.Panel, 'TOPLEFT', -3, 3) + frame.Panel.Shadow:SetPoint('BOTTOMRIGHT', frame.Panel, 'BOTTOMRIGHT', 3, -3) + + local alpha = frame.Panel.Shadow:GetAttribute("shadowAlpha") or 0.5 + frame.Panel.Shadow:SetBackdropBorderColor(0,0,0,alpha) + + local level = frame.Panel.Shadow:GetFrameLevel() - 1 + if(level >= 0) then + frame.Panel.Shadow:SetFrameLevel(level) + else + frame.Panel.Shadow:SetFrameLevel(0) + end + end + + local bgColor = SV.Media.color[colorName] or {0.18,0.18,0.18,1} + + if(not frame.Panel:GetAttribute("panelNoBackdrop")) then + if(underlay) then + frame.Panel:SetBackdropColor(bgColor[1],bgColor[2],bgColor[3],bgColor[4] or 1) + frame.Panel:SetBackdropBorderColor(0,0,0,1) + else + local bd = frame.Panel:GetBackdrop() + frame:SetBackdrop(bd) + frame:SetBackdropColor(bgColor[1],bgColor[2],bgColor[3],bgColor[4] or 1) + frame:SetBackdropBorderColor(0,0,0,1) + + frame.Panel:SetBackdrop(nil) + end + + if(templateName ~= 'Transparent') then + NewHook(frame.Panel, "SetBackdropBorderColor", HookPanelBorderColor) + NewHook(frame, "SetBackdropBorderColor", HookBackdropBorderColor) + if(underlay) then + NewHook(frame, "SetBackdrop", HookBackdrop) + NewHook(frame, "SetBackdropColor", HookBackdropColor) + end + frame.BackdropNeedsUpdate = true + if(templateName == 'Pattern' or templateName == 'Comic') then + frame.UpdateBackdrop = HookCustomBackdrop + end + end + end + + if(frame.Panel.Skin) then + if(not underlay) then + frame.Panel.Skin:SetParent(frame) + frame.Panel.Skin:FillInner(frame, xOffset, yOffset) + else + frame.Panel.Skin:FillInner(frame.Panel, xOffset, yOffset) + end + if(gradientName and SV.Media.gradient[gradientName]) then + frame.Panel.Skin:SetGradient(unpack(SV.Media.gradient[gradientName])) + else + frame.Panel.Skin:SetVertexColor(bgColor[1], bgColor[2], bgColor[3], bgColor[4] or 1) + end + + if((not frame.Panel:GetAttribute("panelSkipUpdate")) and frame.Panel:GetAttribute("panelTexUpdate")) then + frame.TextureNeedsUpdate = true + if(templateName == 'UnitLarge' or templateName == 'UnitSmall') then + frame.UpdateColor = HookVertexColor + frame.NoColorUpdate = true + end + end + end +end + +local function CreateButtonPanel(frame, noChecked, brightChecked) + + if(frame.Left) then + frame.Left:SetAlpha(0) + end + + if(frame.Middle) then + frame.Middle:SetAlpha(0) + end + + if(frame.Right) then + frame.Right:SetAlpha(0) + end + + if(frame.SetNormalTexture) then + frame:SetNormalTexture("") + end + + if(frame.SetDisabledTexture) then + frame:SetDisabledTexture("") + end + + if(frame.SetCheckedTexture) then + frame:SetCheckedTexture("") + end + + if(frame.SetHighlightTexture) then + if(not frame.hover) then + local hover = frame:CreateTexture(nil, "OVERLAY") + hover:FillInner(frame.Panel) + frame.hover = hover; + end + local color = SV.Media.color.highlight + frame.hover:SetTexture(color[1], color[2], color[3], 0.5) + frame:SetHighlightTexture(frame.hover) + end + + if(frame.SetPushedTexture) then + if(not frame.pushed) then + local pushed = frame:CreateTexture(nil, "OVERLAY") + pushed:FillInner(frame.Panel) + frame.pushed = pushed; + end + frame.pushed:SetTexture(0.1, 0.8, 0.1, 0.3) + frame:SetPushedTexture(frame.pushed) + end + + if(not noChecked and frame.SetCheckedTexture) then + if(not frame.checked) then + local checked = frame:CreateTexture(nil, "OVERLAY") + checked:FillInner(frame.Panel) + frame.checked = checked + end + + if(not brightChecked) then + frame.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]]) + frame.checked:SetVertexColor(0, 0.5, 0, 0.2) + else + frame.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Bars\GLOSS]]) + frame.checked:SetVertexColor(0, 1, 0, 1) + end + + frame:SetCheckedTexture(frame.checked) + end + + CreateCooldown(frame) +end +--[[ +########################################################## +TEMPLATE API +########################################################## +]]-- +local function SetBasicPanel(self, topX, topY, bottomX, bottomY, hasShadow) + local needsHooks = false; + + if(hasShadow) then + if(not self.Panel) then + needsHooks = true + + self.Panel = CreateFrame("Frame", nil, self) + self.Panel:SetPoint("TOPLEFT", self, "TOPLEFT", -2, 2) + self.Panel:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", 2, -2) + end + + self.Panel:SetBackdrop({ + bgFile = [[Interface\BUTTONS\WHITE8X8]], + tile = false, + tileSize = 0, + edgeFile = [[Interface\AddOns\SVUI\assets\artwork\Template\GLOW]], + edgeSize = 3, + insets = + { + left = 0, + right = 0, + top = 0, + bottom = 0, + }, + }) + self.Panel:SetBackdropColor(0,0,0,0) + self.Panel:SetBackdropBorderColor(0,0,0) + else + if(not self.Panel) then + needsHooks = true + + self.Panel = CreateFrame("Frame", nil, self) + self.Panel:SetPoint("TOPLEFT", self, "TOPLEFT", topX, topY) + self.Panel:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", bottomX, bottomY) + end + + self.Panel:SetBackdrop({ + bgFile = [[Interface\BUTTONS\WHITE8X8]], + tile = false, + tileSize = 0, + edgeFile = [[Interface\BUTTONS\WHITE8X8]], + edgeSize = 1, + insets = + { + left = 1, + right = 1, + top = 1, + bottom = 1, + }, + }) + self.Panel:SetBackdropColor(0,0,0,0.65) + self.Panel:SetBackdropBorderColor(0,0,0) + end + + if(needsHooks) then + local level = self:GetFrameLevel() + if(level == 0 and not InCombatLockdown()) then + self:SetFrameLevel(1) + level = 1 + end + + local adjustment = level - 1; + if(adjustment < 0) then adjustment = 0 end + + self.Panel:SetFrameLevel(adjustment) + + NewHook(self, "SetFrameLevel", HookFrameLevel) + NewHook(self, "SetBackdrop", HookBackdrop) + NewHook(self, "SetBackdropColor", HookBackdropColor) + NewHook(self, "SetBackdropBorderColor", HookBackdropBorderColor) + end +end + +local function SetPanelTemplate(self, templateName, noupdate, overridePadding, xOffset, yOffset, defaultColor) + if(not self or (self and self.Panel)) then return end + local padding = false + if(overridePadding and type(overridePadding) == "number") then + padding = overridePadding + end + + CreatePanelTemplate(self, templateName, true, noupdate, padding, xOffset, yOffset, defaultColor) + + if(not self.Panel:GetAttribute("panelSkipUpdate") and not self.__registered) then + TemplateUpdateFrames[self] = true + self.__registered = true + end +end + +local function SetFixedPanelTemplate(self, templateName, noupdate, overridePadding, xOffset, yOffset, defaultColor) + if(not self or (self and self.Panel)) then return end + local padding = false + if(overridePadding and type(overridePadding) == "number") then + padding = overridePadding + end + + CreatePanelTemplate(self, templateName, false, noupdate, padding, xOffset, yOffset, defaultColor) + + if(not self.Panel:GetAttribute("panelSkipUpdate") and not self.__registered) then + TemplateUpdateFrames[self] = true + self.__registered = true + end +end + +local function SetPanelColor(self, ...) + local arg1,arg2,arg3,arg4,arg5,arg6,arg7 = select(1, ...) + if(not self.Panel or not arg1) then return; end + if(self.Panel.Skin and self.Panel:GetAttribute("panelGradient")) then + if(type(arg1) == "string") then + if(arg1 == "VERTICAL" or arg1 == "HORIZONTAL") then + self.Panel.Skin:SetGradient(...) + elseif(SV.Media.gradient[arg1]) then + if self.__border then + local d,r,g,b,r2,g2,b2 = unpack(SV.Media.gradient[arg1]) + --self.Panel.Skin:SetGradient(d,r,g,b,r2,g2,b2) + self.__border[1]:SetTexture(r2,g2,b2) + self.__border[2]:SetTexture(r2,g2,b2) + self.__border[3]:SetTexture(r2,g2,b2) + self.__border[4]:SetTexture(r2,g2,b2) + else + self.Panel.Skin:SetGradient(unpack(SV.Media.gradient[arg1])) + if(SV.Media.color[arg1]) then + local t = SV.Media.color[arg1] + local r,g,b,a = t[1], t[2], t[3], t[4] or 1; + self:SetBackdropColor(r,g,b,a) + end + end + end + end + elseif(type(arg1) == "string" and SV.Media.color[arg1]) then + local t = SV.Media.color[arg1] + local r,g,b,a = t[1], t[2], t[3], t[4] or 1; + if self.__border then + self.__border[1]:SetTexture(r,g,b) + self.__border[2]:SetTexture(r,g,b) + self.__border[3]:SetTexture(r,g,b) + self.__border[4]:SetTexture(r,g,b) + else + self:SetBackdropColor(r,g,b) + end + elseif(arg1 and type(arg1) == "number") then + self:SetBackdropColor(...) + end +end +--[[ +########################################################## +APPENDED BUTTON TEMPLATING METHODS +########################################################## +]]-- +local function SetButtonTemplate(self, invisible, overridePadding, xOffset, yOffset, keepNormal, defaultColor) + if(not self or (self and self.Panel)) then return end + + local padding = 1 + if(overridePadding and type(overridePadding) == "number") then + padding = overridePadding + end + + local x,y = -1,-1 + local underlay = false + if(xOffset or yOffset) then + x = xOffset or -1 + y = yOffset or -1 + underlay = true + end + + if(invisible) then + CreatePanelTemplate(self, "Transparent", underlay, true, padding, x, y, defaultColor) + self:SetBackdropColor(0,0,0,0) + self:SetBackdropBorderColor(0,0,0,0) + if(self.Panel.BorderLeft) then + self.Panel.BorderLeft:SetVertexColor(0,0,0,0) + self.Panel.BorderRight:SetVertexColor(0,0,0,0) + self.Panel.BorderTop:SetVertexColor(0,0,0,0) + self.Panel.BorderBottom:SetVertexColor(0,0,0,0) + end + else + CreatePanelTemplate(self, "Button", underlay, true, padding, x, y, defaultColor) + end + + if(self.Left) then + self.Left:SetAlpha(0) + end + + if(self.Middle) then + self.Middle:SetAlpha(0) + end + + if(self.Right) then + self.Right:SetAlpha(0) + end + + if(self.SetNormalTexture and not keepNormal) then + self:SetNormalTexture("") + end + + if(self.SetDisabledTexture) then + self:SetDisabledTexture("") + end + + if(self.SetHighlightTexture) then + if(not self.hover) then + local hover = self:CreateTexture(nil, "HIGHLIGHT") + FillInner(hover, self.Panel) + self.hover = hover; + end + self.hover:SetTexture(0.1, 0.8, 0.8, 0.5) + self:SetHighlightTexture(self.hover) + end + + if(self.SetPushedTexture) then + if(not self.pushed) then + local pushed = self:CreateTexture(nil, "OVERLAY") + FillInner(pushed, self.Panel) + self.pushed = pushed; + end + + self.pushed:SetTexture(0.1, 0.8, 0.1, 0.3) + + self:SetPushedTexture(self.pushed) + end + + if(self.SetCheckedTexture) then + if(not self.checked) then + local checked = self:CreateTexture(nil, "OVERLAY") + FillInner(checked, self.Panel) + self.checked = checked; + end + + self.checked:SetTexture([[Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT]]) + self.checked:SetVertexColor(0, 0.5, 0, 0.2) + + self:SetCheckedTexture(self.checked) + end + + CreateCooldown(self) +end + +local function SetSlotTemplate(self, underlay, padding, x, y, shadowAlpha) + if(not self or (self and self.Panel)) then return end + padding = padding or 1 + CreatePanelTemplate(self, "Slot", underlay, true, padding, x, y) + CreateButtonPanel(self, true) + if(shadowAlpha) then + self.Panel.Shadow:SetAttribute("shadowAlpha", shadowAlpha) + end +end + +local function SetCheckboxTemplate(self, underlay, x, y) + if(not self or (self and self.Panel)) then return end + + if(underlay) then + x = x or -7 + y = y or -7 + end + + CreatePanelTemplate(self, "Slot", underlay, true, 1, x, y) + CreateButtonPanel(self, false, true) + + NewHook(self, "SetChecked", function(self,checked) + local r,g,b = 0,0,0 + if(checked == 1 or checked == true) then + r,g,b = self:GetCheckedTexture():GetVertexColor() + end + self:SetBackdropBorderColor(r,g,b) + end) +end + +local function SetEditboxTemplate(self, x, y, fixed) + if(not self or (self and self.Panel)) then return end + + if self.TopLeftTex then Die(self.TopLeftTex) end + if self.TopRightTex then Die(self.TopRightTex) end + if self.TopTex then Die(self.TopTex) end + if self.BottomLeftTex then Die(self.BottomLeftTex) end + if self.BottomRightTex then Die(self.BottomRightTex) end + if self.BottomTex then Die(self.BottomTex) end + if self.LeftTex then Die(self.LeftTex) end + if self.RightTex then Die(self.RightTex) end + if self.MiddleTex then Die(self.MiddleTex) end + local underlay = true + if(fixed ~= nil) then underlay = fixed end + CreatePanelTemplate(self, "Inset", underlay, true, 1, x, y) + + local globalName = self:GetName(); + if globalName then + if _G[globalName.."Left"] then Die(_G[globalName.."Left"]) end + if _G[globalName.."Middle"] then Die(_G[globalName.."Middle"]) end + if _G[globalName.."Right"] then Die(_G[globalName.."Right"]) end + if _G[globalName.."Mid"] then Die(_G[globalName.."Mid"]) end + + if globalName:find("Silver") or globalName:find("Copper") or globalName:find("Gold") then + self.Panel:SetPoint("TOPLEFT", -3, 1) + if globalName:find("Silver") or globalName:find("Copper") then + self.Panel:SetPoint("BOTTOMRIGHT", -12, -2) + else + self.Panel:SetPoint("BOTTOMRIGHT", -2, -2) + end + end + end +end + +local function SetFramedButtonTemplate(self, template, borderSize) + if(not self or (self and self.Panel)) then return end + + borderSize = borderSize or 2 + + template = template or "FramedBottom" + + CreatePanelTemplate(self, template, false, false, 0, -borderSize, -borderSize) + + if(self.Left) then + self.Left:SetAlpha(0) + end + + if(self.Middle) then + self.Middle:SetAlpha(0) + end + + if(self.Right) then + self.Right:SetAlpha(0) + end + + if(self.SetNormalTexture) then + self:SetNormalTexture("") + end + + if(self.SetDisabledTexture) then + self:SetDisabledTexture("") + end + + if(not self.__border) then + local t = SV.Media.color.default + local r,g,b = t[1], t[2], t[3] + + local border = {} + + border[1] = self:CreateTexture(nil,"BORDER") + border[1]:SetTexture(r,g,b) + border[1]:SetPoint("TOPLEFT", -1, 1) + border[1]:SetPoint("BOTTOMLEFT", -1, -1) + border[1]:SetWidth(borderSize) + + local leftoutline = self:CreateTexture(nil,"BORDER") + leftoutline:SetTexture(0,0,0) + leftoutline:SetPoint("TOPLEFT", -2, 2) + leftoutline:SetPoint("BOTTOMLEFT", -2, -2) + leftoutline:SetWidth(1) + + border[2] = self:CreateTexture(nil,"BORDER") + border[2]:SetTexture(r,g,b) + border[2]:SetPoint("TOPRIGHT", 1, 1) + border[2]:SetPoint("BOTTOMRIGHT", 1, -1) + border[2]:SetWidth(borderSize) + + local rightoutline = self:CreateTexture(nil,"BORDER") + rightoutline:SetTexture(0,0,0) + rightoutline:SetPoint("TOPRIGHT", 2, 2) + rightoutline:SetPoint("BOTTOMRIGHT", 2, -2) + rightoutline:SetWidth(1) + + border[3] = self:CreateTexture(nil,"BORDER") + border[3]:SetTexture(r,g,b) + border[3]:SetPoint("TOPLEFT", -1, 1) + border[3]:SetPoint("TOPRIGHT", 1, 1) + border[3]:SetHeight(borderSize) + + local topoutline = self:CreateTexture(nil,"BORDER") + topoutline:SetTexture(0,0,0) + topoutline:SetPoint("TOPLEFT", -2, 2) + topoutline:SetPoint("TOPRIGHT", 2, 2) + topoutline:SetHeight(1) + + border[4] = self:CreateTexture(nil,"BORDER") + border[4]:SetTexture(r,g,b) + border[4]:SetPoint("BOTTOMLEFT", -1, -1) + border[4]:SetPoint("BOTTOMRIGHT", 1, -1) + border[4]:SetHeight(borderSize) + + local bottomoutline = self:CreateTexture(nil,"BORDER") + bottomoutline:SetTexture(0,0,0) + bottomoutline:SetPoint("BOTTOMLEFT", -2, -2) + bottomoutline:SetPoint("BOTTOMRIGHT", 2, -2) + bottomoutline:SetHeight(1) + + self.__border = border + end + + if(not self.hover) then + self.hover = self:CreateTexture(nil, "HIGHLIGHT") + end + + local color = SV.Media.color.highlight + self.hover:SetTexture(color[1], color[2], color[3], 0.5) + self.hover:SetAllPoints() + if(self.SetHighlightTexture) then + self:SetHighlightTexture(self.hover) + end + + if(not self.__registered) then + TemplateUpdateFrames[self] = true + self.__registered = true + end +end +--[[ +########################################################## +TEMPLATE UPDATE CALLBACK +########################################################## +]]-- +local function FrameTemplateUpdates() + for frame in pairs(TemplateUpdateFrames) do + if(frame) then + local panelID = frame.Panel:GetAttribute("panelID") + local colorID = frame.Panel:GetAttribute("panelColor") + local panelColor = SV.Media.color[colorID]; + if(frame.BackdropNeedsUpdate) then + if(frame.UpdateBackdrop) then + frame:UpdateBackdrop() + end + if(panelColor) then + frame:SetBackdropColor(panelColor[1], panelColor[2], panelColor[3], panelColor[4] or 1) + end + frame:SetBackdropBorderColor(0,0,0,1) + end + if(frame.TextureNeedsUpdate and frame.Panel.Skin) then + local tex = SV.Media.bg[panelID] + if(tex) then + frame.Panel.Skin:SetTexture(tex) + end + if(not frame.NoColorUpdate) then + local gradient = frame.Panel:GetAttribute("panelGradient") + if(gradient and SV.Media.gradient[gradient]) then + local g = SV.Media.gradient[gradient] + frame.Panel.Skin:SetGradient(g[1], g[2], g[3], g[4], g[5], g[6], g[7]) + elseif(panelColor) then + frame.Panel.Skin:SetVertexColor(panelColor[1], panelColor[2], panelColor[3], panelColor[4] or 1) + end + end + end + end + end +end + +SV:NewCallback(FrameTemplateUpdates) +--[[ +########################################################## +ENUMERATION +########################################################## +]]-- +local function AppendMethods(OBJECT) + local META = getmetatable(OBJECT).__index + if not OBJECT.Size then META.Size = SizeScaled end + if not OBJECT.Width then META.Width = WidthScaled end + if not OBJECT.Height then META.Height = HeightScaled end + if not OBJECT.Point then META.Point = PointScaled end + if not OBJECT.WrapOuter then META.WrapOuter = WrapOuter end + if not OBJECT.FillInner then META.FillInner = FillInner end + if not OBJECT.Die then META.Die = Die end + if not OBJECT.RemoveTextures then META.RemoveTextures = RemoveTextures end + if not OBJECT.SetBasicPanel then META.SetBasicPanel = SetBasicPanel end + if not OBJECT.SetPanelTemplate then META.SetPanelTemplate = SetPanelTemplate end + if not OBJECT.SetFixedPanelTemplate then META.SetFixedPanelTemplate = SetFixedPanelTemplate end + if not OBJECT.SetPanelColor then META.SetPanelColor = SetPanelColor end + if not OBJECT.SetButtonTemplate then META.SetButtonTemplate = SetButtonTemplate end + if not OBJECT.SetSlotTemplate then META.SetSlotTemplate = SetSlotTemplate end + if not OBJECT.SetCheckboxTemplate then META.SetCheckboxTemplate = SetCheckboxTemplate end + if not OBJECT.SetEditboxTemplate then META.SetEditboxTemplate = SetEditboxTemplate end + if not OBJECT.SetFramedButtonTemplate then META.SetFramedButtonTemplate = SetFramedButtonTemplate end + if not OBJECT.SetFontTemplate then META.SetFontTemplate = SetFontTemplate end +end + +local HANDLER, OBJECT = {["Frame"] = true}, NewFrame("Frame") +AppendMethods(OBJECT) +AppendMethods(OBJECT:CreateTexture()) +AppendMethods(OBJECT:CreateFontString()) + +OBJECT = EnumerateFrames() +while OBJECT do + local objType = OBJECT:GetObjectType() + if not HANDLER[objType] then + AppendMethods(OBJECT) + HANDLER[objType] = true + end + OBJECT = EnumerateFrames(OBJECT) +end \ No newline at end of file diff --git a/Interface/AddOns/SVUI/xml/_load.xml b/Interface/AddOns/SVUI/xml/_load.xml index adbd8de..d2cc8c8 100644 --- a/Interface/AddOns/SVUI/xml/_load.xml +++ b/Interface/AddOns/SVUI/xml/_load.xml @@ -1,5 +1,5 @@ <Ui xmlns="http://www.blizzard.com/wow/ui/"> <Include file='system.xml'/> - <Include file='widgets.xml'/> + <Include file='framework.xml'/> <Include file='mentalo.xml'/> </Ui> \ No newline at end of file diff --git a/Interface/AddOns/SVUI/xml/framework.xml b/Interface/AddOns/SVUI/xml/framework.xml new file mode 100644 index 0000000..a272d16 --- /dev/null +++ b/Interface/AddOns/SVUI/xml/framework.xml @@ -0,0 +1,1353 @@ +<Ui xmlns="http://www.blizzard.com/wow/ui/"> + <Button name="SVUI_DockletButtonTemplate" virtual="true"> + <Size x="22" y="22"/> + <Attributes> + <Attribute name="tipText" type="string" value="" /> + <Attribute name="tipExtraText" type="string" value="" /> + <Attribute name="ownerFrame" type="string" value="None" /> + <Attribute name="isActive" type="boolean" value="false" /> + </Attributes> + <Layers> + <Layer level="OVERLAY"> + <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" /> + </Anchors> + </Texture> + </Layer> + </Layers> + </Button> + + <Frame name="SVUI_DockletWindowTemplate" virtual="true"> + <Attributes> + <Attribute name="ownerFrame" type="string" value="None" /> + <Attribute name="isLoaded" type="boolean" value="false" /> + </Attributes> + </Frame> + + <Frame name="SVUI_DockLeft" frameStrata="BACKGROUND"> + <Attributes> + <Attribute name="spacingSize" type="number" value="4" /> + <Attribute name="buttonSize" type="number" value="22" /> + </Attributes> + <Anchors> + <Anchor point="BOTTOMLEFT" /> + </Anchors> + <Frames> + <Button name="$parentButton" parentKey="Button"> + <Size x="22" y="22"/> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Attributes> + <Attribute name="tipText" type="string" value="" /> + <Attribute name="tipExtraText" type="string" value="" /> + <Attribute name="ownerFrame" type="string" value="None" /> + <Attribute name="isActive" type="boolean" value="false" /> + </Attributes> + <Layers> + <Layer level="OVERLAY"> + <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" /> + </Anchors> + </Texture> + </Layer> + </Layers> + </Button> + <Frame name="$parentToolBar" parentKey="ToolBar"> + <Size y="22"/> + <Anchors> + <Anchor point="BOTTOMLEFT" relativeTo="$parentButton" relativePoint="BOTTOMRIGHT" x="4" y="0" /> + <Anchor point="BOTTOMRIGHT" relativeTo="$parent" relativePoint="BOTTOMRIGHT" x="0" y="0" /> + </Anchors> + </Frame> + <Frame name="$parentAlert" parentKey="Alert" frameStrata="BACKGROUND"> + <Size y="1"/> + <Anchors> + <Anchor point="BOTTOMLEFT" relativeTo="$parentButton" relativePoint="TOPLEFT" x="0" y="4" /> + <Anchor point="BOTTOMRIGHT" relativeTo="$parentToolBar" relativePoint="TOPRIGHT" x="0" y="4" /> + </Anchors> + </Frame> + <Frame name="$parentWindow" parentKey="Window" frameStrata="BACKGROUND"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativeTo="$parentAlert" relativePoint="TOPLEFT" x="0" y="4" /> + <Anchor point="TOPRIGHT" relativeTo="$parent" relativePoint="TOPRIGHT" x="0" y="4" /> + </Anchors> + </Frame> + </Frames> + </Frame> + + <Frame name="SVUI_DockRight" frameStrata="BACKGROUND"> + <Attributes> + <Attribute name="spacingSize" type="number" value="4" /> + <Attribute name="buttonSize" type="number" value="22" /> + </Attributes> + <Anchors> + <Anchor point="BOTTOMRIGHT" /> + </Anchors> + <Frames> + <Button name="$parentButton" parentKey="Button"> + <Size x="22" y="22"/> + <Anchors> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Attributes> + <Attribute name="tipText" type="string" value="" /> + <Attribute name="tipExtraText" type="string" value="" /> + <Attribute name="ownerFrame" type="string" value="None" /> + <Attribute name="isActive" type="boolean" value="false" /> + </Attributes> + <Layers> + <Layer level="OVERLAY"> + <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" /> + </Anchors> + </Texture> + </Layer> + </Layers> + </Button> + <Frame name="$parentToolBar" parentKey="ToolBar"> + <Size y="22"/> + <Anchors> + <Anchor point="BOTTOMLEFT" relativeTo="$parent" relativePoint="BOTTOMLEFT" x="0" y="0" /> + <Anchor point="BOTTOMRIGHT" relativeTo="$parentButton" relativePoint="BOTTOMLEFT" x="-4" y="0" /> + </Anchors> + <Frames> + <Button name="$parentAddonButton" parentKey="AddonButton" hidden="true"> + <Size x="22" y="22"/> + <Anchors> + <Anchor point="RIGHT" relativePoint="RIGHT" /> + </Anchors> + <Attributes> + <Attribute name="tipText" type="string" value="" /> + <Attribute name="tipExtraText" type="string" value="" /> + <Attribute name="ownerFrame" type="string" value="None" /> + <Attribute name="isActive" type="boolean" value="false" /> + </Attributes> + <Layers> + <Layer level="OVERLAY"> + <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" /> + </Anchors> + </Texture> + </Layer> + </Layers> + </Button> + </Frames> + </Frame> + <Frame name="$parentUtilityBar" parentKey="UtilityBar"> + <Size x="1" y="22"/> + <Anchors> + <Anchor point="BOTTOMRIGHT" relativeTo="$parentToolBar" relativePoint="BOTTOMLEFT" x="-4" y="0" /> + </Anchors> + </Frame> + <Frame name="$parentAlert" parentKey="Alert" frameStrata="BACKGROUND"> + <Size y="1"/> + <Anchors> + <Anchor point="BOTTOMRIGHT" relativeTo="$parentButton" relativePoint="TOPRIGHT" x="0" y="4" /> + <Anchor point="BOTTOMLEFT" relativeTo="$parentToolBar" relativePoint="TOPLEFT" x="0" y="4" /> + </Anchors> + </Frame> + <Frame name="$parentWindow" parentKey="Window" frameStrata="BACKGROUND"> + <Anchors> + <Anchor point="BOTTOMRIGHT" relativeTo="$parentAlert" relativePoint="TOPRIGHT" x="0" y="4" /> + <Anchor point="TOPLEFT" relativeTo="$parent" relativePoint="TOPLEFT" x="0" y="0" /> + </Anchors> + </Frame> + </Frames> + </Frame> + + <Frame name="SVUI_DockTop" frameStrata="BACKGROUND"> + <Attributes> + <Attribute name="spacingSize" type="number" value="4" /> + <Attribute name="buttonSize" type="number" value="22" /> + </Attributes> + <Anchors> + <Anchor point="TOPLEFT" /> + </Anchors> + <Frames> + <Frame name="$parentToolBar" parentKey="ToolBar" frameStrata="BACKGROUND"> + <Size y="1"/> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + </Anchors> + </Frame> + </Frames> + </Frame> + + <Frame name="SVUI_ShadowTemplate" virtual="true"> + <Attributes> + <Attribute name="shadowAlpha" type="number" value="0.5" /> + </Attributes> + <Backdrop edgeFile="Interface\AddOns\SVUI\assets\artwork\Template\GLOW"> + <EdgeSize val="3" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0" g="0" b="0" a="0" /> + <BorderColor r="0" g="0" b="0" a="0.5" /> + </Backdrop> + </Frame> + + <Frame name="SVUI_PanelTemplate_Default" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="default" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="default" /> + <Attribute name="panelGradient" type="string" value="default" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="1" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Transparent" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="transparent" /> + <Attribute name="panelPadding" type="number" value="2" /> + <Attribute name="panelColor" type="string" value="transparent" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelSkipUpdate" type="boolean" value="true" /> + </Attributes> + <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="2" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0" g="0" b="0" a="0.5" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Component" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="component" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="default" /> + <Attribute name="panelGradient" type="string" value="default" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="2" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + <Frames> + <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> + </Frames> + </Frame> + + <Frame name="SVUI_PanelTemplate_Headline" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="headline" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="darkest" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" tile="true"> + <TileSize val="20" /> + <Color r="0" g="0" b="0" a="0.5" /> + </Backdrop> + </Frame> + + <Frame name="SVUI_PanelTemplate_Button" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="button" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="default" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\BUTTON" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="2" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + <Frames> + <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> + </Frames> + </Frame> + + <Frame name="SVUI_PanelTemplate_FramedTop" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="framedtop" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="default" /> + <Attribute name="panelGradient" type="string" value="darkest2" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="1" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT2" setAllPoints="true" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_FramedBottom" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="framedbottom" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="default" /> + <Attribute name="panelGradient" type="string" value="darkest" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="1" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Bar" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="bar" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="transparent" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelSkipUpdate" type="boolean" value="true" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="1" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0" g="0" b="0" a="0.5" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="1" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Slot" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="slot" /> + <Attribute name="panelPadding" type="number" value="2" /> + <Attribute name="panelColor" type="string" value="transparent" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelSkipUpdate" type="boolean" value="true" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="1" /> + <TileSize val="0" /> + <BackgroundInsets left="1" right="1" top="1" bottom="1" /> + <Color r="0" g="0" b="0" a="0.5" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + <Frames> + <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> + </Frames> + </Frame> + + <Frame name="SVUI_PanelTemplate_Inset" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="inset" /> + <Attribute name="panelPadding" type="number" value="2" /> + <Attribute name="panelColor" type="string" value="transparent" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelSkipUpdate" type="boolean" value="true" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="2" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0" g="0" b="0" a="0.5" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Comic" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="comic" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="class" /> + <Attribute name="panelGradient" type="string" value="class" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC1" tile="false"> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC1" setAllPoints="true" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Model" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="model" /> + <Attribute name="panelPadding" type="number" value="1" /> + <Attribute name="panelColor" type="string" value="special" /> + <Attribute name="panelGradient" type="string" value="class" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC-MODEL" tile="false"> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.37" g="0.32" b="0.29" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC-MODEL" setAllPoints="true" /> + <Color r="0.37" g="0.32" b="0.29" a="1" /> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Paper" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="paper" /> + <Attribute name="panelPadding" type="number" value="3" /> + <Attribute name="panelColor" type="string" value="white" /> + <Attribute name="panelGradient" type="string" value="white" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="true" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="1" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="1" g="1" b="1" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" setAllPoints="true" /> + <Color r="1" g="1" b="1" a="1" /> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="3" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="3" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="3" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="3" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Container" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="container" /> + <Attribute name="panelPadding" type="number" value="2" /> + <Attribute name="panelColor" type="string" value="special" /> + <Attribute name="panelGradient" type="string" value="special" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN3" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="1" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.37" g="0.32" b="0.29" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN3" setAllPoints="true" /> + <Color r="0.37" g="0.32" b="0.29" a="1" /> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_Pattern" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="pattern" /> + <Attribute name="panelPadding" type="number" value="3" /> + <Attribute name="panelColor" type="string" value="special" /> + <Attribute name="panelGradient" type="string" value="special" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="1" /> + <TileSize val="0" /> + <BackgroundInsets left="0" right="0" top="0" bottom="0" /> + <Color r="0.37" g="0.32" b="0.29" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" setAllPoints="true" /> + <Color r="0.37" g="0.32" b="0.29" a="1" /> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="3" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="3" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="3" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="3" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + <Frames> + <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> + </Frames> + </Frame> + + <Frame name="SVUI_PanelTemplate_Action" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="action" /> + <Attribute name="panelPadding" type="number" value="2" /> + <Attribute name="panelColor" type="string" value="default" /> + <Attribute name="panelGradient" type="string" value="special" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="2" /> + <TileSize val="0" /> + <BackgroundInsets left="1" right="1" top="1" bottom="1" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + </Layer> + <Layer level="BACKGROUND" textureSubLevel="2"> + <Texture parentKey="ExtendedTopLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_TOPLEFT"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOP" /> + <Anchor point="BOTTOMLEFT" relativePoint="LEFT" /> + </Anchors> + <Color r="0.05" g="0.05" b="0.05" a="0.5" /> + </Texture> + <Texture parentKey="ExtendedTopRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_TOPRIGHT"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="TOPLEFT" relativePoint="TOP" /> + <Anchor point="BOTTOMRIGHT" relativePoint="RIGHT" /> + </Anchors> + <Color r="0.05" g="0.05" b="0.05" a="0.5" /> + </Texture> + <Texture parentKey="ExtendedBottomLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_BOTTOMLEFT"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOM" /> + <Anchor point="TOPLEFT" relativePoint="LEFT" /> + </Anchors> + <Color r="0.1" g="0.1" b="0.1" a="0.5" /> + </Texture> + <Texture parentKey="ExtendedBottomRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_BOTTOMRIGHT"> + <Anchors> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOM" /> + <Anchor point="TOPRIGHT" relativePoint="RIGHT" /> + </Anchors> + <Color r="0.1" g="0.1" b="0.1" a="0.5" /> + </Texture> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + <Frames> + <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> + </Frames> + </Frame> + + <Frame name="SVUI_PanelTemplate_Halftone" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="halftone" /> + <Attribute name="panelPadding" type="number" value="2" /> + <Attribute name="panelColor" type="string" value="default" /> + <Attribute name="panelGradient" type="string" value="special" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="2" /> + <TileSize val="0" /> + <BackgroundInsets left="1" right="1" top="1" bottom="1" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> + <Color r="0.2" g="0.2" b="0.2" a="1" /> + </Layer> + <Layer level="BACKGROUND" textureSubLevel="2"> + <Texture parentKey="ExtendedTopLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_TOPLEFT"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOP" /> + <Anchor point="BOTTOMLEFT" relativePoint="LEFT" /> + </Anchors> + <Color r="0.05" g="0.05" b="0.05" a="0.5" /> + </Texture> + <Texture parentKey="ExtendedTopRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_TOPRIGHT"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="TOPLEFT" relativePoint="TOP" /> + <Anchor point="BOTTOMRIGHT" relativePoint="RIGHT" /> + </Anchors> + <Color r="0.05" g="0.05" b="0.05" a="0.5" /> + </Texture> + <Texture parentKey="ExtendedBottomLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_BOTTOMLEFT"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOM" /> + <Anchor point="TOPLEFT" relativePoint="LEFT" /> + </Anchors> + <Color r="0.1" g="0.1" b="0.1" a="0.5" /> + </Texture> + <Texture parentKey="ExtendedBottomRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_BOTTOMRIGHT"> + <Anchors> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOM" /> + <Anchor point="TOPRIGHT" relativePoint="RIGHT" /> + </Anchors> + <Color r="0.1" g="0.1" b="0.1" a="0.5" /> + </Texture> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + <Frames> + <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> + </Frames> + </Frame> + + <Frame name="SVUI_PanelTemplate_Blackout" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="blackout" /> + <Attribute name="panelPadding" type="number" value="2" /> + <Attribute name="panelColor" type="string" value="transparent" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="false" /> + <Attribute name="panelOffset" type="number" value="2" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + </Attributes> + <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> + <EdgeSize val="2" /> + <TileSize val="0" /> + <BackgroundInsets left="1" right="1" top="1" bottom="1" /> + <Color r="0" g="0" b="0" a="0.5" /> + <BorderColor r="0" g="0" b="0" a="1" /> + </Backdrop> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> + <Color r="0" g="0" b="0" a="0.5" /> + </Layer> + <Layer level="BORDER"> + <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension x="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> + <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> + <Anchors> + <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> + <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> + </Anchors> + <Size> + <AbsDimension y="2" /> + </Size> + <Color r="0" g="0" b="0" a="1" /> + </Texture> + </Layer> + </Layers> + <Frames> + <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> + </Frames> + </Frame> + + <Frame name="SVUI_PanelTemplate_UnitLarge" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="unitlarge" /> + <Attribute name="panelPadding" type="number" value="0" /> + <Attribute name="panelColor" type="string" value="special" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelOffset" type="number" value="3" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + <Attribute name="panelNoBackdrop" type="boolean" value="true" /> + </Attributes> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Unitframe\Background\UNIT-BG1" setAllPoints="true" /> + <Color r="0.37" g="0.32" b="0.29" a="1" /> + </Layer> + </Layers> + </Frame> + + <Frame name="SVUI_PanelTemplate_UnitSmall" virtual="true"> + <Attributes> + <Attribute name="panelID" type="string" value="unitlarge" /> + <Attribute name="panelPadding" type="number" value="0" /> + <Attribute name="panelColor" type="string" value="special" /> + <Attribute name="panelGradient" type="boolean" value="false" /> + <Attribute name="panelTexUpdate" type="boolean" value="true" /> + <Attribute name="panelOffset" type="number" value="3" /> + <Attribute name="panelSkipUpdate" type="boolean" value="false" /> + <Attribute name="panelNoBackdrop" type="boolean" value="true" /> + </Attributes> + <Layers> + <Layer level="BACKGROUND" textureSubLevel="1"> + <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Unitframe\Background\UNIT-SMALL-BG1" setAllPoints="true" /> + <Color r="0.37" g="0.32" b="0.29" a="1" /> + </Layer> + </Layers> + </Frame> +</Ui> \ No newline at end of file diff --git a/Interface/AddOns/SVUI/xml/widgets.xml b/Interface/AddOns/SVUI/xml/widgets.xml deleted file mode 100644 index 7f08346..0000000 --- a/Interface/AddOns/SVUI/xml/widgets.xml +++ /dev/null @@ -1,1189 +0,0 @@ -<Ui xmlns="http://www.blizzard.com/wow/ui/"> - <Button name="SVUI_DockletButtonTemplate" virtual="true"> - <Size x="22" y="22"/> - <Attributes> - <Attribute name="tipText" type="string" value="Toggle" /> - <Attribute name="ownerFrame" type="string" value="" /> - <Attribute name="bgGradient" type="string" value="default" /> - <Attribute name="iconGradient" type="string" value="icon" /> - </Attributes> - <Layers> - <Layer level="OVERLAY"> - <Texture parentKey="Icon" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" x="2" y="-2" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" x="-2" y="2" /> - </Anchors> - </Texture> - </Layer> - </Layers> - </Button> - <Frame name="SVUI_ShadowTemplate" virtual="true"> - <Attributes> - <Attribute name="shadowAlpha" type="number" value="0.5" /> - </Attributes> - <Backdrop edgeFile="Interface\AddOns\SVUI\assets\artwork\Template\GLOW"> - <EdgeSize val="3" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0" g="0" b="0" a="0" /> - <BorderColor r="0" g="0" b="0" a="0.5" /> - </Backdrop> - </Frame> - - <Frame name="SVUI_PanelTemplate_Default" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="default" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="default" /> - <Attribute name="panelGradient" type="string" value="default" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="1" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Transparent" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="transparent" /> - <Attribute name="panelPadding" type="number" value="2" /> - <Attribute name="panelColor" type="string" value="transparent" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelSkipUpdate" type="boolean" value="true" /> - </Attributes> - <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="2" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0" g="0" b="0" a="0.5" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Component" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="component" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="default" /> - <Attribute name="panelGradient" type="string" value="default" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="2" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - <Frames> - <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> - </Frames> - </Frame> - - <Frame name="SVUI_PanelTemplate_Headline" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="headline" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="darkest" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" tile="true"> - <TileSize val="20" /> - <Color r="0" g="0" b="0" a="0.5" /> - </Backdrop> - </Frame> - - <Frame name="SVUI_PanelTemplate_Button" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="button" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="default" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\BUTTON" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="2" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - <Frames> - <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> - </Frames> - </Frame> - - <Frame name="SVUI_PanelTemplate_FramedTop" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="framedtop" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="default" /> - <Attribute name="panelGradient" type="string" value="darkest2" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="1" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT2" setAllPoints="true" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_FramedBottom" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="framedbottom" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="default" /> - <Attribute name="panelGradient" type="string" value="darkest" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="1" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Bar" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="bar" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="transparent" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelSkipUpdate" type="boolean" value="true" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="1" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0" g="0" b="0" a="0.5" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="1" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Slot" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="slot" /> - <Attribute name="panelPadding" type="number" value="2" /> - <Attribute name="panelColor" type="string" value="transparent" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelSkipUpdate" type="boolean" value="true" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="1" /> - <TileSize val="0" /> - <BackgroundInsets left="1" right="1" top="1" bottom="1" /> - <Color r="0" g="0" b="0" a="0.5" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - <Frames> - <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> - </Frames> - </Frame> - - <Frame name="SVUI_PanelTemplate_Inset" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="inset" /> - <Attribute name="panelPadding" type="number" value="2" /> - <Attribute name="panelColor" type="string" value="transparent" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelSkipUpdate" type="boolean" value="true" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="2" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0" g="0" b="0" a="0.5" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Comic" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="comic" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="class" /> - <Attribute name="panelGradient" type="string" value="class" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC1" tile="false"> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC1" setAllPoints="true" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Model" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="model" /> - <Attribute name="panelPadding" type="number" value="1" /> - <Attribute name="panelColor" type="string" value="special" /> - <Attribute name="panelGradient" type="string" value="class" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC-MODEL" tile="false"> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.37" g="0.32" b="0.29" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\COMIC-MODEL" setAllPoints="true" /> - <Color r="0.37" g="0.32" b="0.29" a="1" /> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Paper" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="paper" /> - <Attribute name="panelPadding" type="number" value="3" /> - <Attribute name="panelColor" type="string" value="white" /> - <Attribute name="panelGradient" type="string" value="white" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="true" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="1" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="1" g="1" b="1" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PAPER" setAllPoints="true" /> - <Color r="1" g="1" b="1" a="1" /> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="3" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="3" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="3" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="3" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Container" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="container" /> - <Attribute name="panelPadding" type="number" value="2" /> - <Attribute name="panelColor" type="string" value="special" /> - <Attribute name="panelGradient" type="string" value="special" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN3" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="1" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.37" g="0.32" b="0.29" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN3" setAllPoints="true" /> - <Color r="0.37" g="0.32" b="0.29" a="1" /> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_Pattern" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="pattern" /> - <Attribute name="panelPadding" type="number" value="3" /> - <Attribute name="panelColor" type="string" value="special" /> - <Attribute name="panelGradient" type="string" value="special" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="1" /> - <TileSize val="0" /> - <BackgroundInsets left="0" right="0" top="0" bottom="0" /> - <Color r="0.37" g="0.32" b="0.29" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Background\PATTERN1" setAllPoints="true" /> - <Color r="0.37" g="0.32" b="0.29" a="1" /> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="3" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="3" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="3" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="3" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - <Frames> - <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> - </Frames> - </Frame> - - <Frame name="SVUI_PanelTemplate_Action" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="action" /> - <Attribute name="panelPadding" type="number" value="2" /> - <Attribute name="panelColor" type="string" value="default" /> - <Attribute name="panelGradient" type="string" value="special" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="2" /> - <TileSize val="0" /> - <BackgroundInsets left="1" right="1" top="1" bottom="1" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - </Layer> - <Layer level="BACKGROUND" textureSubLevel="2"> - <Texture parentKey="ExtendedTopLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_TOPLEFT"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOP" /> - <Anchor point="BOTTOMLEFT" relativePoint="LEFT" /> - </Anchors> - <Color r="0.05" g="0.05" b="0.05" a="0.5" /> - </Texture> - <Texture parentKey="ExtendedTopRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_TOPRIGHT"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="TOPLEFT" relativePoint="TOP" /> - <Anchor point="BOTTOMRIGHT" relativePoint="RIGHT" /> - </Anchors> - <Color r="0.05" g="0.05" b="0.05" a="0.5" /> - </Texture> - <Texture parentKey="ExtendedBottomLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_BOTTOMLEFT"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOM" /> - <Anchor point="TOPLEFT" relativePoint="LEFT" /> - </Anchors> - <Color r="0.1" g="0.1" b="0.1" a="0.5" /> - </Texture> - <Texture parentKey="ExtendedBottomRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\ACTION_BOTTOMRIGHT"> - <Anchors> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOM" /> - <Anchor point="TOPRIGHT" relativePoint="RIGHT" /> - </Anchors> - <Color r="0.1" g="0.1" b="0.1" a="0.5" /> - </Texture> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - <Frames> - <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> - </Frames> - </Frame> - - <Frame name="SVUI_PanelTemplate_Halftone" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="halftone" /> - <Attribute name="panelPadding" type="number" value="2" /> - <Attribute name="panelColor" type="string" value="default" /> - <Attribute name="panelGradient" type="string" value="special" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="2" /> - <TileSize val="0" /> - <BackgroundInsets left="1" right="1" top="1" bottom="1" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> - <Color r="0.2" g="0.2" b="0.2" a="1" /> - </Layer> - <Layer level="BACKGROUND" textureSubLevel="2"> - <Texture parentKey="ExtendedTopLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_TOPLEFT"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOP" /> - <Anchor point="BOTTOMLEFT" relativePoint="LEFT" /> - </Anchors> - <Color r="0.05" g="0.05" b="0.05" a="0.5" /> - </Texture> - <Texture parentKey="ExtendedTopRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_TOPRIGHT"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="TOPLEFT" relativePoint="TOP" /> - <Anchor point="BOTTOMRIGHT" relativePoint="RIGHT" /> - </Anchors> - <Color r="0.05" g="0.05" b="0.05" a="0.5" /> - </Texture> - <Texture parentKey="ExtendedBottomLeft" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_BOTTOMLEFT"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOM" /> - <Anchor point="TOPLEFT" relativePoint="LEFT" /> - </Anchors> - <Color r="0.1" g="0.1" b="0.1" a="0.5" /> - </Texture> - <Texture parentKey="ExtendedBottomRight" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\Extended\HALFTONE_BOTTOMRIGHT"> - <Anchors> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOM" /> - <Anchor point="TOPRIGHT" relativePoint="RIGHT" /> - </Anchors> - <Color r="0.1" g="0.1" b="0.1" a="0.5" /> - </Texture> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - <Frames> - <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> - </Frames> - </Frame> - - <Frame name="SVUI_PanelTemplate_Blackout" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="blackout" /> - <Attribute name="panelPadding" type="number" value="2" /> - <Attribute name="panelColor" type="string" value="transparent" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="false" /> - <Attribute name="panelOffset" type="number" value="2" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - </Attributes> - <Backdrop bgFile="Interface\BUTTONS\WHITE8X8" edgeFile="Interface\BUTTONS\WHITE8X8" tile="false"> - <EdgeSize val="2" /> - <TileSize val="0" /> - <BackgroundInsets left="1" right="1" top="1" bottom="1" /> - <Color r="0" g="0" b="0" a="0.5" /> - <BorderColor r="0" g="0" b="0" a="1" /> - </Backdrop> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Template\DEFAULT" setAllPoints="true" /> - <Color r="0" g="0" b="0" a="0.5" /> - </Layer> - <Layer level="BORDER"> - <Texture parentKey="BorderLeft" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderRight" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension x="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderTop" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="TOPLEFT" relativePoint="TOPLEFT" /> - <Anchor point="TOPRIGHT" relativePoint="TOPRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - <Texture parentKey="BorderBottom" file="Interface\BUTTONS\WHITE8X8"> - <Anchors> - <Anchor point="BOTTOMLEFT" relativePoint="BOTTOMLEFT" /> - <Anchor point="BOTTOMRIGHT" relativePoint="BOTTOMRIGHT" /> - </Anchors> - <Size> - <AbsDimension y="2" /> - </Size> - <Color r="0" g="0" b="0" a="1" /> - </Texture> - </Layer> - </Layers> - <Frames> - <Frame parentKey="Shadow" inherits="SVUI_ShadowTemplate" /> - </Frames> - </Frame> - - <Frame name="SVUI_PanelTemplate_UnitLarge" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="unitlarge" /> - <Attribute name="panelPadding" type="number" value="0" /> - <Attribute name="panelColor" type="string" value="special" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelOffset" type="number" value="3" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - <Attribute name="panelNoBackdrop" type="boolean" value="true" /> - </Attributes> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Unitframe\Background\UNIT-BG1" setAllPoints="true" /> - <Color r="0.37" g="0.32" b="0.29" a="1" /> - </Layer> - </Layers> - </Frame> - - <Frame name="SVUI_PanelTemplate_UnitSmall" virtual="true"> - <Attributes> - <Attribute name="panelID" type="string" value="unitlarge" /> - <Attribute name="panelPadding" type="number" value="0" /> - <Attribute name="panelColor" type="string" value="special" /> - <Attribute name="panelGradient" type="boolean" value="false" /> - <Attribute name="panelTexUpdate" type="boolean" value="true" /> - <Attribute name="panelOffset" type="number" value="3" /> - <Attribute name="panelSkipUpdate" type="boolean" value="false" /> - <Attribute name="panelNoBackdrop" type="boolean" value="true" /> - </Attributes> - <Layers> - <Layer level="BACKGROUND" textureSubLevel="1"> - <Texture parentKey="Skin" nonBlocking="true" file="Interface\AddOns\SVUI\assets\artwork\Unitframe\Background\UNIT-SMALL-BG1" setAllPoints="true" /> - <Color r="0.37" g="0.32" b="0.29" a="1" /> - </Layer> - </Layers> - </Frame> -</Ui> \ No newline at end of file diff --git a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua index b5fad1c..ea016a2 100644 --- a/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua +++ b/Interface/AddOns/SVUI_ChatOMatic/components/answering_service.lua @@ -772,11 +772,11 @@ function PLUGIN:GetServiceState() if inUse then if onHold then self.Docklet:SetPanelColor("yellow") - self.Docklet.icon:SetGradient(unpack(YELLOW_GRADIENT)) + self.Docklet.Icon:SetGradient(unpack(YELLOW_GRADIENT)) self.Docklet.stateColor = YELLOW_GRADIENT else self.Docklet:SetPanelColor("green") - self.Docklet.icon:SetGradient(unpack(GREEN_GRADIENT)) + self.Docklet.Icon:SetGradient(unpack(GREEN_GRADIENT)) self.Docklet.stateColor = GREEN_GRADIENT end else @@ -903,23 +903,24 @@ function PLUGIN:EnableAnsweringService() self:RegisterEvent("CHAT_MSG_IGNORED") self:RegisterUpdate("PhoneTimeUpdate", 4) - local buttonsize = LeftSuperDockToolBar.currentSize + local buttonsize = SV.Dock.Left.ToolBar:GetHeight() local docklet = CreateFrame("Button", nil, UIParent) - docklet:SetParent(LeftSuperDockToolBar) - docklet:Point("LEFT", LeftSuperDockToolBar, "LEFT", 3, 0) + docklet:SetParent(SV.Dock.Left.ToolBar) + docklet:Point("LEFT", SV.Dock.Left.Button, "RIGHT", 4, 0) docklet:Size(buttonsize, buttonsize) docklet:SetFramedButtonTemplate() - docklet.icon = docklet:CreateTexture(nil, "OVERLAY") - docklet.icon:FillInner(docklet,2,2) - docklet.icon:SetTexture(ICON_FILE) + docklet.Icon = docklet:CreateTexture(nil, "OVERLAY") + docklet.Icon:FillInner(docklet,2,2) + docklet.Icon:SetTexture(ICON_FILE) docklet.stateColor = {"VERTICAL", 0.33, 0.25, 0.13, 0.47, 0.39, 0.27} docklet.TText = L["Show / Hide Phone Lines"] docklet:RegisterForClicks("AnyUp") - --SV.SVDock:ActivateDockletButton(docklet, AnsweringOnClick) - - LeftSuperDockToolBar:SetWidth(buttonsize + 4) + SV.Dock:ActivateDockletButton(docklet, AnsweringOnClick) + local width = SV.Dock.Left.ToolBar:GetWidth() - (buttonsize + 4) + SV.Dock.Left.ToolBar:SetWidth(width) + SV.Dock.Left.ToolBar:Point("LEFT", docklet, "RIGHT", 4, 0) self.Docklet = docklet @@ -929,7 +930,7 @@ function PLUGIN:EnableAnsweringService() window:SetHeight(145) window:SetScript("OnDragStart", function(this) this:StartMoving() end) window:SetScript("OnDragStop", function(this) this:StopMovingOrSizing() end) - window:SetPoint("BOTTOMRIGHT", LeftSuperDock, "TOPRIGHT", 0, 6) + window:SetPoint("BOTTOMRIGHT", SV.Dock.Left, "TOPRIGHT", 0, 6) window:SetFixedPanelTemplate("Transparent") window:SetMovable(true) window:EnableMouse(true) diff --git a/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua b/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua index 76c29dc..66cf6d0 100644 --- a/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua +++ b/Interface/AddOns/SVUI_ConfigOMatic/components/dock.lua @@ -31,23 +31,23 @@ GET ADDON DATA ]]-- local SV = _G["SVUI"]; local L = SV.L; -local MOD = SV.SVDock +local MOD = SV.Dock local CHAT = SV.SVChat local BAG = SV.SVBag -SV.Options.args.SVDock = { +SV.Options.args.Dock = { type = "group", name = MOD.TitleID, args = {} } -SV.Options.args.SVDock.args["intro"] = { +SV.Options.args.Dock.args["intro"] = { order = 1, type = "description", name = "Configure the various frame docks around the screen" }; -SV.Options.args.SVDock.args["common"] = { +SV.Options.args.Dock.args["common"] = { order = 2, type = "group", name = "General", @@ -58,7 +58,7 @@ SV.Options.args.SVDock.args["common"] = { type = 'toggle', name = L['Bottom Panel'], desc = L['Display a border across the bottom of the screen.'], - get = function(j)return SV.db.SVDock.bottomPanel end, + get = function(j)return SV.db.Dock.bottomPanel end, set = function(key,value)MOD:ChangeDBVar(value,key[#key]);MOD:BottomBorderVisibility()end }, topPanel = { @@ -66,13 +66,13 @@ SV.Options.args.SVDock.args["common"] = { type = 'toggle', name = L['Top Panel'], desc = L['Display a border across the top of the screen.'], - get = function(j)return SV.db.SVDock.topPanel end, + get = function(j)return SV.db.Dock.topPanel end, set = function(key,value)MOD:ChangeDBVar(value,key[#key]);MOD:TopBorderVisibility()end }, } }; -SV.Options.args.SVDock.args["leftDockGroup"] = { +SV.Options.args.Dock.args["leftDockGroup"] = { order = 3, type = "group", name = L["Left Dock"], @@ -83,7 +83,7 @@ SV.Options.args.SVDock.args["leftDockGroup"] = { type = 'toggle', name = L['Left Dock Backdrop'], desc = L['Display a backdrop behind the left-side dock.'], - get = function(j)return SV.db.SVDock.leftDockBackdrop end, + get = function(j)return SV.db.Dock.leftDockBackdrop end, set = function(key,value) MOD:ChangeDBVar(value,key[#key]); MOD:UpdateDockBackdrops() @@ -98,10 +98,10 @@ SV.Options.args.SVDock.args["leftDockGroup"] = { max = 600, step = 1, width = "full", - get = function()return SV.db.SVDock.dockLeftHeight;end, + get = function()return SV.db.Dock.dockLeftHeight;end, set = function(key,value) MOD:ChangeDBVar(value,key[#key]); - MOD:UpdateSuperDock(true) + MOD:Refresh() CHAT:RefreshChatFrames(true) end, }, @@ -114,10 +114,10 @@ SV.Options.args.SVDock.args["leftDockGroup"] = { max = 700, step = 1, width = "full", - get = function()return SV.db.SVDock.dockLeftWidth;end, + get = function()return SV.db.Dock.dockLeftWidth;end, set = function(key,value) MOD:ChangeDBVar(value,key[#key]); - MOD:UpdateSuperDock(true) + MOD:Refresh() CHAT:RefreshChatFrames(true) end, }, @@ -133,7 +133,7 @@ local acceptableDocklets = { }; local function GetLiveDockletsA() - local test = SV.db.SVDock.docklets.DockletExtra; + local test = SV.db.Dock.docklets.DockletExtra; local t = {["None"] = L["None"]}; for n,l in pairs(acceptableDocklets) do if IsAddOnLoaded(n) or IsAddOnLoaded(l) then @@ -153,7 +153,7 @@ local function GetLiveDockletsA() end local function GetLiveDockletsB() - local test = SV.db.SVDock.docklets.DockletMain; + local test = SV.db.Dock.docklets.DockletMain; local t = {["None"] = L["None"]}; for n,l in pairs(acceptableDocklets) do if IsAddOnLoaded(n) or IsAddOnLoaded(l) then @@ -172,7 +172,7 @@ local function GetLiveDockletsB() return t; end -SV.Options.args.SVDock.args["rightDockGroup"] = { +SV.Options.args.Dock.args["rightDockGroup"] = { order = 4, type = "group", name = L["Right Dock"], @@ -183,7 +183,7 @@ SV.Options.args.SVDock.args["rightDockGroup"] = { type = 'toggle', name = L['Right Dock Backdrop'], desc = L['Display a backdrop behind the right-side dock.'], - get = function(j)return SV.db.SVDock.rightDockBackdrop end, + get = function(j)return SV.db.Dock.rightDockBackdrop end, set = function(key,value) MOD:ChangeDBVar(value,key[#key]); MOD:UpdateDockBackdrops() @@ -198,10 +198,10 @@ SV.Options.args.SVDock.args["rightDockGroup"] = { max = 600, step = 1, width = "full", - get = function()return SV.db.SVDock.dockRightHeight;end, + get = function()return SV.db.Dock.dockRightHeight;end, set = function(key,value) MOD:ChangeDBVar(value,key[#key]); - MOD:UpdateSuperDock(true) + MOD:Refresh() CHAT:RefreshChatFrames(true) end, }, @@ -214,10 +214,10 @@ SV.Options.args.SVDock.args["rightDockGroup"] = { max = 700, step = 1, width = "full", - get = function()return SV.db.SVDock.dockRightWidth;end, + get = function()return SV.db.Dock.dockRightWidth;end, set = function(key,value) MOD:ChangeDBVar(value,key[#key]); - MOD:UpdateSuperDock(true) + MOD:Refresh() CHAT:RefreshChatFrames(true) BAG.BagFrame:UpdateLayout() BAG.BankFrame:UpdateLayout() @@ -270,33 +270,33 @@ SV.Options.args.SVDock.args["rightDockGroup"] = { name = "Primary Docklet", desc = "Select an addon to occupy the primary docklet window", values = function()return GetLiveDockletsA()end, - get = function()return SV.db.SVDock.docklets.DockletMain end, - set = function(a,value)SV.db.SVDock.docklets.DockletMain = value;SV:ReloadDocklets()end, + get = function()return SV.db.Dock.docklets.DockletMain end, + set = function(a,value)SV.db.Dock.docklets.DockletMain = value;MOD:ReloadDocklets()end, }, DockletCombatFade = { type = "toggle", order = 2, name = "Out of Combat (Hide)", - get = function()return SV.db.SVDock.docklets.DockletCombatFade end, - set = function(a,value)SV.db.SVDock.docklets.DockletCombatFade = value;end + get = function()return SV.db.Dock.docklets.DockletCombatFade end, + set = function(a,value)SV.db.Dock.docklets.DockletCombatFade = value;end }, enableExtra = { type = "toggle", order = 3, name = "Split Docklet", desc = "Split the primary docklet window for 2 addons.", - get = function()return SV.db.SVDock.docklets.enableExtra end, - set = function(a,value)SV.db.SVDock.docklets.enableExtra = value;SV:ReloadDocklets()end, + get = function()return SV.db.Dock.docklets.enableExtra end, + set = function(a,value)SV.db.Dock.docklets.enableExtra = value;MOD:ReloadDocklets()end, }, DockletExtra = { type = "select", order = 4, name = "Secondary Docklet", desc = "Select another addon", - disabled = function()return (not SV.db.SVDock.docklets.enableExtra or SV.db.SVDock.docklets.DockletMain == "None") end, + disabled = function()return (not SV.db.Dock.docklets.enableExtra or SV.db.Dock.docklets.DockletMain == "None") end, values = function()return GetLiveDockletsB()end, - get = function()return SV.db.SVDock.docklets.DockletExtra end, - set = function(a,value)SV.db.SVDock.docklets.DockletExtra = value;SV:ReloadDocklets()end, + get = function()return SV.db.Dock.docklets.DockletExtra end, + set = function(a,value)SV.db.Dock.docklets.DockletExtra = value;MOD:ReloadDocklets()end, } } } diff --git a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua index cd302ad..feea122 100644 --- a/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua +++ b/Interface/AddOns/SVUI_CraftOMatic/SVUI_CraftOMatic.lua @@ -343,7 +343,7 @@ local ModeAlert_OnHide = function() SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end - RightSuperDockAlert:Deactivate() + SV.Dock.Right.Alert:Deactivate() end local ModeAlert_OnShow = function(self) @@ -353,7 +353,7 @@ local ModeAlert_OnShow = function(self) return; end SV:SecureFadeIn(self, 0.3, 0, 1) - RightSuperDockAlert:Activate(self) + SV.Dock.Right.Alert:Activate(self) end local ModeAlert_OnMouseDown = function(self) @@ -392,16 +392,16 @@ function PLUGIN:Load() self.InModeGear = false; local ALERT_HEIGHT = 60; - local DOCK_WIDTH = RightSuperDockFrameHolder:GetWidth(); - local DOCK_HEIGHT = RightSuperDockFrameHolder:GetHeight(); + local DOCK_WIDTH = SV.Dock.Right.Window:GetWidth(); + local DOCK_HEIGHT = SV.Dock.Right.Window:GetHeight(); local DOCKLET_WIDTH = DOCK_WIDTH - 4 local DOCKLET_HEIGHT = DOCK_HEIGHT - 4 local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4; - local modesDocklet = CreateFrame("Frame", "SVUI_ModesDockFrame", RightSuperDockFrameHolder) + local modesDocklet = CreateFrame("Frame", "SVUI_ModesDockFrame", SV.Dock.Right.Window) modesDocklet:SetWidth(DOCKLET_WIDTH); modesDocklet:SetHeight(DOCKLET_HEIGHT); - modesDocklet:SetPoint("CENTER",RightSuperDockFrameHolder,"CENTER",0,0); + modesDocklet:SetPoint("CENTER",SV.Dock.Right.Window,"CENTER",0,0); local modesToolBar = CreateFrame("Frame", "SVUI_ModesDockToolBar", modesDocklet) modesToolBar:SetWidth(BUTTON_SIZE + 4); @@ -456,8 +456,8 @@ function PLUGIN:Load() mode1Button:SetScript('OnLeave', ModeButton_OnLeave) mode1Button:SetScript('OnMouseDown', ModeButton_OnMouseDown) - local ModeAlert = CreateFrame("Frame", nil, RightSuperDockAlert) - ModeAlert:SetAllPoints(RightSuperDockAlert) + local ModeAlert = CreateFrame("Frame", nil, SV.Dock.Right.Alert) + ModeAlert:SetAllPoints(SV.Dock.Right.Alert) ModeAlert:SetBackdrop({ bgFile = [[Interface\AddOns\SVUI\assets\artwork\Bars\HALFTONE]], edgeFile = [[Interface\BUTTONS\WHITE8X8]], @@ -545,7 +545,7 @@ function PLUGIN:Load() self.LogWindow = log self.Docklet = modesDocklet - SV.SVDock:RegisterDocklet("SVUI_ModesDockFrame", self.TitleID, ICON_FILE, false) + SV.Dock:RegisterDocklet("SVUI_ModesDockFrame", self.TitleID, ICON_FILE, false) self.Docklet:Hide() diff --git a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua index a5a3c9c..512cb54 100644 --- a/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua +++ b/Interface/AddOns/SVUI_CraftOMatic/components/archaeology.lua @@ -458,7 +458,7 @@ function PLUGIN:LoadArchaeologyMode() end bar:SetStatusBarColor(0.2, 0.2, 0.8, 0.5) - local sOffset = SV.Scale(1) + local sOffset = SV:Scale(1) -- Race Text local race = bar:CreateFontString() race:SetFontObject(NumberFont_Outline_Large) diff --git a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua index cbbb54e..f165c40 100644 --- a/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua +++ b/Interface/AddOns/SVUI_FightOMatic/SVUI_FightOMatic.lua @@ -900,7 +900,7 @@ local FightOMaticAlert_OnHide = function() SV:AddonMessage(ERR_NOT_IN_COMBAT); return; end - RightSuperDockAlert:Deactivate() + SV.Dock.Right.Alert:Deactivate() end local FightOMaticAlert_OnShow = function(self) @@ -910,7 +910,7 @@ local FightOMaticAlert_OnShow = function(self) return; end SV:SecureFadeIn(self, 0.3, 0, 1) - RightSuperDockAlert:Activate(self) + SV.Dock.Right.Alert:Activate(self) end local FightOMaticAlert_OnMouseDown = function(self) @@ -996,19 +996,19 @@ function PLUGIN:Load() self.cache = self.cache or {} local ALERT_HEIGHT = 60; - local DOCK_WIDTH = RightSuperDockFrameHolder:GetWidth(); - local DOCK_HEIGHT = RightSuperDockFrameHolder:GetHeight(); + local DOCK_WIDTH = SV.Dock.Right.Window:GetWidth(); + local DOCK_HEIGHT = SV.Dock.Right.Window:GetHeight(); local BUTTON_SIZE = (DOCK_HEIGHT * 0.25) - 4; self.HitBy = false; self.Scanning = false; self.InPVP = false - local holder = CreateFrame("Frame", "SVUI_FightOMaticDock", RightSuperDockFrameHolder) + local holder = CreateFrame("Frame", "SVUI_FightOMaticDock", SV.Dock.Right.Window) holder:SetFrameStrata("BACKGROUND") holder:SetWidth(DOCK_WIDTH - 4); holder:SetHeight(DOCK_HEIGHT - 4); - holder:SetPoint("CENTER",RightSuperDockFrameHolder,"CENTER",0,0); + holder:SetPoint("CENTER",SV.Dock.Right.Window,"CENTER",0,0); local toolBar = CreateFrame("Frame", "SVUI_FightOMaticToolBar", holder) toolBar:SetWidth(BUTTON_SIZE + 4); @@ -1129,7 +1129,7 @@ function PLUGIN:Load() MakeUtilityWindow() MakeInfoWindow() - SV.SVDock:RegisterDocklet("SVUI_FightOMaticDock", self.TitleID, ICON_FILE) + SV.Dock:RegisterDocklet("SVUI_FightOMaticDock", self.TitleID, ICON_FILE) holder:Hide() diff --git a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua index e60e56c..bfba374 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua @@ -262,91 +262,91 @@ OPTIONS CREATION ########################################################## ]]-- local RegisterAddonDocklets = function() - local MAIN = _G["SVUI_AddonDock1"]; - local EXTRA = _G["SVUI_AddonDock2"]; - local main = SV.db.SVDock.docklets.DockletMain; - local alternate = SV.db.SVDock.docklets.enableExtra and SV.db.SVDock.docklets.DockletExtra or ""; + local MAIN = _G["SVUI_DockedAddon1"]; + local EXTRA = _G["SVUI_DockedAddon2"]; + local main = SV.db.Dock.docklets.DockletMain; + local alternate = SV.db.Dock.docklets.enableExtra and SV.db.Dock.docklets.DockletExtra or ""; local tipLeft, tipRight = "", ""; if main == nil or main == "None" then return end if find(main, "Skada") or find(alternate, "Skada") then - if SV.SVDock:IsDockletReady("Skada") then + if SV.Dock:IsDockletReady("Skada") then PLUGIN:Docklet_Skada() if find(alternate, "Skada") and EXTRA.FrameName ~= "SkadaHolder2" then tipRight = "and Skada"; - SV.SVDock:RegisterExtraDocklet("SkadaHolder2") + SV.Dock:RegisterExtraDocklet("SkadaHolder2") PLUGIN.DockedParent["Skada"] = EXTRA end if find(main, "Skada") and MAIN.FrameName ~= "SkadaHolder" then tipLeft = "Skada"; - SV.SVDock:RegisterMainDocklet("SkadaHolder") + SV.Dock:RegisterMainDocklet("SkadaHolder") PLUGIN.DockedParent["Skada"] = MAIN end end end if main == "Omen" or alternate == "Omen" then - if SV.SVDock:IsDockletReady("Omen") then + if SV.Dock:IsDockletReady("Omen") then if alternate == "Omen" and EXTRA.FrameName ~= "OmenAnchor" then tipRight = "and Omen"; - SV.SVDock:RegisterExtraDocklet("OmenAnchor") + SV.Dock:RegisterExtraDocklet("OmenAnchor") PLUGIN:Docklet_Omen(EXTRA) PLUGIN.DockedParent["Omen"] = EXTRA elseif MAIN.FrameName ~= "OmenAnchor" then tipLeft = "Omen"; - SV.SVDock:RegisterMainDocklet("OmenAnchor") + SV.Dock:RegisterMainDocklet("OmenAnchor") PLUGIN:Docklet_Omen(MAIN) PLUGIN.DockedParent["Omen"] = MAIN end end end if main == "Recount" or alternate == "Recount" then - if SV.SVDock:IsDockletReady("Recount") then + if SV.Dock:IsDockletReady("Recount") then if alternate == "Recount" and EXTRA.FrameName ~= "Recount_MainWindow" then tipRight = "and Recount"; - SV.SVDock:RegisterExtraDocklet("Recount_MainWindow") + SV.Dock:RegisterExtraDocklet("Recount_MainWindow") PLUGIN:Docklet_Recount(EXTRA) PLUGIN.DockedParent["Recount"] = EXTRA elseif MAIN.FrameName ~= "Recount_MainWindow" then tipLeft = "Recount"; - SV.SVDock:RegisterMainDocklet("Recount_MainWindow") + SV.Dock:RegisterMainDocklet("Recount_MainWindow") PLUGIN:Docklet_Recount(MAIN) PLUGIN.DockedParent["Recount"] = MAIN end end end if main == "TinyDPS" or alternate == "TinyDPS" then - if SV.SVDock:IsDockletReady("TinyDPS") then + if SV.Dock:IsDockletReady("TinyDPS") then if alternate == "TinyDPS" and EXTRA.FrameName ~= "tdpsFrame" then tipRight = "and TinyDPS"; - SV.SVDock:RegisterExtraDocklet("tdpsFrame") + SV.Dock:RegisterExtraDocklet("tdpsFrame") PLUGIN:Docklet_TinyDPS(EXTRA) PLUGIN.DockedParent["TinyDPS"] = EXTRA elseif MAIN.FrameName ~= "tdpsFrame" then tipLeft = "TinyDPS"; - SV.SVDock:RegisterMainDocklet("tdpsFrame") + SV.Dock:RegisterMainDocklet("tdpsFrame") PLUGIN:Docklet_TinyDPS(MAIN) PLUGIN.DockedParent["TinyDPS"] = MAIN end end end if main == "alDamageMeter" or alternate == "alDamageMeter" then - if SV.SVDock:IsDockletReady("alDamageMeter") then + if SV.Dock:IsDockletReady("alDamageMeter") then if alternate == "alDamageMeter" and EXTRA.FrameName ~= "alDamagerMeterFrame" then tipRight = "and alDamageMeter"; - SV.SVDock:RegisterExtraDocklet("alDamagerMeterFrame") + SV.Dock:RegisterExtraDocklet("alDamagerMeterFrame") PLUGIN:Docklet_alDamageMeter(EXTRA) PLUGIN.DockedParent["alDamageMeter"] = EXTRA elseif MAIN.FrameName ~= "alDamagerMeterFrame" then tipLeft = "alDamageMeter"; - SV.SVDock:RegisterMainDocklet("alDamagerMeterFrame") + SV.Dock:RegisterMainDocklet("alDamagerMeterFrame") PLUGIN:Docklet_alDamageMeter(MAIN) PLUGIN.DockedParent["alDamageMeter"] = MAIN end end end - if(_G["SVUI_AddonDocklet"]) then - _G["SVUI_AddonDocklet"].TText = ("%s%s"):format(tipLeft, tipRight) + if(SV.Dock.Right.ToolBar.AddonButton) then + SV.Dock.Right.ToolBar.AddonButton:SetAttribute("tipText", ("%s%s"):format(tipLeft, tipRight)) end end --[[ @@ -383,8 +383,8 @@ function PLUGIN:Load() alert:Hide(); self.Alert = alert; - NewHook(SV.SVDock, "ReloadDocklets", RegisterAddonDocklets); - SV.SVDock:ReloadDocklets(); + NewHook(SV.Dock, "ReloadDocklets", RegisterAddonDocklets); + SV.Dock:ReloadDocklets(); self:RegisterEvent("PLAYER_ENTERING_WORLD"); self:RegisterEvent("ADDON_LOADED"); diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua index 30c1c37..45665e5 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Recount.lua @@ -106,7 +106,7 @@ local function StyleRecount() PLUGIN:ApplyScrollFrameStyle(Recount_MainWindow_ScrollBarScrollBar) - Recount_MainWindow:HookScript('OnShow', function(self) if InCombatLockdown() then return end if SV.CurrentlyDocked["Recount_MainWindow"] then RightSuperDockFrameHolder:Show() end end) + Recount_MainWindow:HookScript('OnShow', function(self) if InCombatLockdown() then return end if SV.CurrentlyDocked["Recount_MainWindow"] then SV.Dock.Right.Window:Show() end end) Recount.MainWindow.FileButton:HookScript('OnClick', function(self) if LibDropdownFrame0 then PLUGIN:ApplyFrameStyle(LibDropdownFrame0) end end) hooksecurefunc(Recount, 'ShowScrollbarElements', function(self, name) Recount_MainWindow_ScrollBarScrollBar:Show() end) diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua index f9f875b..93a629c 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/Skada.lua @@ -42,13 +42,13 @@ SKADA ]]-- local function CheckForHolders() if(not SkadaHolder) then - SkadaHolder = CreateFrame("Frame", "SkadaHolder", SVUI_AddonDock1) + SkadaHolder = CreateFrame("Frame", "SkadaHolder", SVUI_DockedAddon1) end if(not SkadaHolder2) then - SkadaHolder2 = CreateFrame("Frame", "SkadaHolder2", SVUI_AddonDock2) + SkadaHolder2 = CreateFrame("Frame", "SkadaHolder2", SVUI_DockedAddon2) end - SkadaHolder:SetSize(SVUI_AddonDock1:GetSize()) - SkadaHolder2:SetSize(SVUI_AddonDock2:GetSize()) + SkadaHolder:SetSize(SVUI_DockedAddon1:GetSize()) + SkadaHolder2:SetSize(SVUI_DockedAddon2:GetSize()) end local function skada_panel_loader(holder, window) @@ -84,9 +84,9 @@ function PLUGIN:Docklet_Skada() for index,window in pairs(Skada:GetWindows()) do local wname = window.db.name or "Skada" local key = "SkadaBarWindow" .. wname - if(SVUI.db.SVDock.docklets.DockletMain == key)then + if(SVUI.db.Dock.docklets.DockletMain == key)then skada_panel_loader(SkadaHolder, window) - elseif(SVUI.db.SVDock.docklets.enableExtra and SVUI.db.SVDock.docklets.DockletExtra == key) then + elseif(SVUI.db.Dock.docklets.enableExtra and SVUI.db.Dock.docklets.DockletExtra == key) then skada_panel_loader(SkadaHolder2, window) else window.db.barslocked = false; diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua index 1dbbef9..62c4fc8 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/TinyDPS.lua @@ -46,7 +46,7 @@ local function StyleTinyDPS() tdpsFrame:HookScript("OnShow", function() if InCombatLockdown() then return end if SV.CurrentlyDocked["tdpsFrame"] then - RightSuperDockFrameHolder:Show() + SV.Dock.Right.Window:Show() end end) diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua b/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua index a68f60a..dccd32a 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/addons/alDamageMeter.lua @@ -46,7 +46,7 @@ local function StyleALDamageMeter() alDamageMeterFrame:HookScript('OnShow', function() if InCombatLockdown() then return end if SV.CurrentlyDocked["alDamagerMeterFrame"] then - RightSuperDockFrameHolder:Show() + SV.Dock.Right.Window:Show() end end) end diff --git a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua index e179438..3793a51 100644 --- a/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua +++ b/Interface/AddOns/SVUI_StyleOMatic/components/style_methods.lua @@ -42,7 +42,7 @@ local Schema = PLUGIN.Schema; local LSM = LibStub("LibSharedMedia-3.0") local NewHook = hooksecurefunc; -local ScaledOffset = SV.Scale(1) +local ScaledOffset = SV:Scale(1) --[[ ########################################################## /$$$$$$$$/$$$$$$$ /$$$$$$ /$$ /$$ /$$$$$$$$