--[[ ############################################################################## _____/\\\\\\\\\\\____/\\\________/\\\__/\\\________/\\\__/\\\\\\\\\\\_ # ___/\\\/////////\\\_\/\\\_______\/\\\_\/\\\_______\/\\\_\/////\\\///__ # __\//\\\______\///__\//\\\______/\\\__\/\\\_______\/\\\_____\/\\\_____ # ___\////\\\__________\//\\\____/\\\___\/\\\_______\/\\\_____\/\\\_____ # ______\////\\\________\//\\\__/\\\____\/\\\_______\/\\\_____\/\\\_____ # _________\////\\\______\//\\\/\\\_____\/\\\_______\/\\\_____\/\\\_____ # __/\\\______\//\\\______\//\\\\\______\//\\\______/\\\______\/\\\_____ # _\///\\\\\\\\\\\/________\//\\\________\///\\\\\\\\\/____/\\\\\\\\\\\_# ___\///////////___________\///___________\/////////_____\///////////_# ############################################################################## S U P E R - V I L L A I N - U I By: Munglunch # ############################################################################## --]] local SV = _G.SVUI; local L = SV.L; local STYLE = select(2, ...); local Schema = STYLE.Schema; --[[ ########################################################## HELPERS ########################################################## ]]-- local externaltest = false; local ProxyLSMType = { ["LSM30_Font"] = true, ["LSM30_Sound"] = true, ["LSM30_Border"] = true, ["LSM30_Background"] = true, ["LSM30_Statusbar"] = true } local ProxyType = { ["InlineGroup"] = true, ["TreeGroup"] = true, ["TabGroup"] = true, ["SimpleGroup"] = true, ["DropdownGroup"] = true } local function Widget_OnEnter(b) b:SetBackdropBorderColor(0.1, 0.8, 0.8) end local function Widget_OnLeave(b) b:SetBackdropBorderColor(0,0,0,1) end local function Widget_ScrollStyle(frame, arg) return STYLE:ApplyScrollFrameStyle(frame) end local function Widget_ButtonStyle(frame, strip, bypass) 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.SetHighlightTexture then frame:SetHighlightTexture(0,0,0,0) end if frame.SetPushedTexture then frame:SetPushedTexture(0,0,0,0) end if frame.SetDisabledTexture then frame:SetDisabledTexture("") end if strip then frame:RemoveTextures() end if not bypass then frame:SetButtonTemplate() end end local function Widget_PaginationStyle(...) STYLE:ApplyPaginationStyle(...) end local NOOP = SV.fubar local WidgetButton_OnClick = function(self) local obj = self.obj; if(obj and obj.pullout and obj.pullout.frame and (not obj.pullout.frame.Panel)) then obj.pullout.frame:SetFixedPanelTemplate("Default") end end local WidgetDropButton_OnClick = function(self) local obj = self.obj; local widgetFrame = obj.dropdown if(widgetFrame and not widgetFrame.Panel) then widgetFrame:SetBasicPanel() widgetFrame.Panel:SetPoint("TOPLEFT", widgetFrame, "TOPLEFT", 20, -2) widgetFrame.Panel:SetPoint("BOTTOMRIGHT", widgetFrame, "BOTTOMRIGHT", -20, 2) end end --[[ ########################################################## AceGUI STYLE ########################################################## ]]-- local function StyleAceGUI(event, addon) assert((LibStub("AceGUI-3.0")), "Addon Not Loaded") local AceGUI = LibStub("AceGUI-3.0") local regWidget = AceGUI.RegisterAsWidget; local regContainer = AceGUI.RegisterAsContainer; AceGUI.RegisterAsWidget = function(self, widget) local widgetType = widget.type; -- print("RegisterAsWidget: " .. widgetType); if(widgetType == "MultiLineEditBox") then local widgetFrame = widget.frame; widgetFrame:SetFixedPanelTemplate("Default") if not widget.scrollBG.Panel then widget.scrollBG:SetBasicPanel() end Widget_ButtonStyle(widget.button) STYLE:ApplyScrollFrameStyle(widget.scrollBar) widget.scrollBar:SetPoint("RIGHT", widgetFrame, "RIGHT", -4) widget.scrollBG:SetPoint("TOPRIGHT", widget.scrollBar, "TOPLEFT", -2, 19) widget.scrollBG:SetPoint("BOTTOMLEFT", widget.button, "TOPLEFT") widget.scrollFrame:SetPoint("BOTTOMRIGHT", widget.scrollBG, "BOTTOMRIGHT", -4, 8) elseif(widgetType == "CheckBox") then widget.checkbg:Die() widget.highlight:Die() if not widget.styledCheckBG then widget.styledCheckBG = CreateFrame("Frame", nil, widget.frame) widget.styledCheckBG:FillInner(widget.check) widget.styledCheckBG:SetFixedPanelTemplate("Inset") end widget.check:SetParent(widget.styledCheckBG) elseif(widgetType == "Dropdown") then local widgetDropdown = widget.dropdown; local widgetButton = widget.button; widgetDropdown:RemoveTextures() widgetButton:ClearAllPoints() widgetButton:Point("RIGHT", widgetDropdown, "RIGHT", -20, 0) widgetButton:SetFrameLevel(widgetButton:GetFrameLevel() + 1) Widget_PaginationStyle(widgetButton, true) if(not widgetDropdown.Panel) then widgetDropdown:SetBasicPanel() widgetDropdown.Panel:Point("TOPLEFT", widgetDropdown, "TOPLEFT", 20, -2) widgetDropdown.Panel:Point("BOTTOMRIGHT", widgetDropdown, "BOTTOMRIGHT", -20, 2) end widgetButton:SetParent(widgetDropdown.Panel) widget.text:SetParent(widgetDropdown.Panel) widgetButton:HookScript("OnClick", WidgetButton_OnClick) elseif(widgetType == "EditBox") then local widgetEditbox = widget.editbox; widgetEditbox:Height(15) widgetEditbox:SetEditboxTemplate(2, -2, false) elseif(widgetType == "Button") then local widgetFrame = widget.frame; Widget_ButtonStyle(widgetFrame, true) widget.text:SetParent(widgetFrame.Panel) elseif(widgetType == "Slider") then local widgetSlider = widget.slider; local widgetEditbox = widget.editbox; widgetSlider:RemoveTextures() widgetSlider:SetFixedPanelTemplate("Bar") widgetSlider:Height(20) widgetSlider:SetThumbTexture("Interface\\Buttons\\UI-ScrollBar-Knob") widgetSlider:GetThumbTexture():SetVertexColor(0.8, 0.8, 0.8) widgetEditbox:Height(15) widgetEditbox:SetPoint("TOP", widgetSlider, "BOTTOM", 0, -1) widget.lowtext:SetPoint("TOPLEFT", widgetSlider, "BOTTOMLEFT", 2, -2) widget.hightext:SetPoint("TOPRIGHT", widgetSlider, "BOTTOMRIGHT", -2, -2) elseif(ProxyLSMType[widgetType]) then local widgetFrame = widget.frame; local dropButton = widgetFrame.dropButton; widgetFrame:RemoveTextures() Widget_PaginationStyle(dropButton, true) widgetFrame.text:ClearAllPoints() widgetFrame.text:Point("RIGHT", dropButton, "LEFT", -2, 0) dropButton:ClearAllPoints() dropButton:Point("RIGHT", widgetFrame, "RIGHT", -10, -6) if(not widgetFrame.Panel) then widgetFrame:SetBasicPanel() if(widgetType == "LSM30_Font") then widgetFrame.Panel:Point("TOPLEFT", 20, -17) elseif(widgetType == "LSM30_Sound") then widgetFrame.Panel:Point("TOPLEFT", 20, -17) widget.soundbutton:SetParent(widgetFrame.Panel) widget.soundbutton:ClearAllPoints() widget.soundbutton:Point("LEFT", widgetFrame.Panel, "LEFT", 2, 0) elseif(widgetType == "LSM30_Statusbar") then widgetFrame.Panel:Point("TOPLEFT", 20, -17) widget.bar:SetParent(widgetFrame.Panel) widget.bar:FillInner() elseif(widgetType == "LSM30_Border" or widgetType == "LSM30_Background") then widgetFrame.Panel:Point("TOPLEFT", 42, -16) end widgetFrame.Panel:Point("BOTTOMRIGHT", dropButton, "BOTTOMRIGHT", 2, -2) end dropButton:SetParent(widgetFrame.Panel) widgetFrame.text:SetParent(widgetFrame.Panel) dropButton:HookScript("OnClick", WidgetDropButton_OnClick) end return regWidget(self, widget) end AceGUI.RegisterAsContainer = function(self, widget) local widgetType = widget.type; -- print("RegisterAsContainer: " .. widgetType); local widgetParent = widget.content:GetParent() if widgetType == "ScrollFrame" then STYLE:ApplyScrollFrameStyle(widget.scrollBar) elseif widgetType == "Frame" then widgetParent:RemoveTextures() for i = 1, widgetParent:GetNumChildren()do local childFrame = select(i, widgetParent:GetChildren()) if childFrame:GetObjectType() == "Button" and childFrame:GetText() then Widget_ButtonStyle(childFrame) else childFrame:RemoveTextures() end end widgetParent:SetPanelTemplate("Halftone") elseif(ProxyType[widgetType]) then if widget.treeframe then widget.treeframe:SetFixedPanelTemplate("Transparent") widgetParent:SetPoint("TOPLEFT", widget.treeframe, "TOPRIGHT", 1, 0) local oldFunc = widget.CreateButton; widget.CreateButton = function(self) local newButton = oldFunc(self) newButton.toggle:RemoveTextures() newButton.toggle.SetNormalTexture = NOOP; newButton.toggle.SetPushedTexture = NOOP; newButton.toggle:SetButtonTemplate() newButton.toggleText = newButton.toggle:CreateFontString(nil, "OVERLAY") newButton.toggleText:SetFont([[Interface\AddOns\SVUI\assets\fonts\Roboto.ttf]], 19) newButton.toggleText:SetPoint("CENTER") newButton.toggleText:SetText("*") return newButton end else widgetParent:SetFixedPanelTemplate("Default") end if(widgetType == "TabGroup") then local oldFunc = widget.CreateTab; widget.CreateTab = function(self, arg) local newTab = oldFunc(self, arg) newTab:RemoveTextures() return newTab end end if widget.scrollbar then STYLE:ApplyScrollFrameStyle(widget.scrollBar) end end return regContainer(self, widget) end end --[[ ########################################################## STYLE LOADING ########################################################## ]]-- STYLE:SaveAddonStyle("AceGUI", StyleAceGUI, nil, true)