--[[ ############################################################################## S V U I By: Munglunch ############################################################################## ]]-- --[[ 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 next = _G.next; local rawset = _G.rawset; local rawget = _G.rawget; local tostring = _G.tostring; local tonumber = _G.tonumber; local getmetatable = _G.getmetatable; local setmetatable = _G.setmetatable; local collectgarbage = _G.collectgarbage; local tinsert = _G.tinsert; local string = _G.string; local math = _G.math; local table = _G.table; local wipe = _G.wipe; --[[ STRING METHODS ]]-- local format, find, lower, match, gsub = string.format, string.find, string.lower, string.match, string.gsub; --[[ MATH METHODS ]]-- local floor, abs, min, max = math.floor, math.abs, math.min, math.max; --[[ TABLE METHODS ]]-- local tremove, tcopy, twipe, tsort, tconcat = table.remove, table.copy, table.wipe, table.sort, table.concat; local tprint = table.tostring; --[[ ########################################################## GET ADDON DATA ########################################################## ]]-- local SV = _G["SVUI"]; local L = SV.L; local SVUILib = Librarian("Registry"); SV.ProfileInterface = _G["SVUI_ProfileInterface"]; local ProfileInterfaceDialog = _G["SVUI_ProfileInterfaceDialog"]; local ProfileInterfaceHelp = _G["SVUI_ProfileInterfaceHelp"]; local ProfileInterfaceScrollBar = _G["SVUI_ProfileInterfaceDialogScrollBar"]; --[[ ########################################################## CUSTOM MESSAGE WINDOW ########################################################## ]]-- local exportHelpText = "TO EXPORT: First click the 'Generate Export Key' button. Once your key has been generated, you will want to select and copy the entire code and paste it into a NEW (.txt) document. Save your new document and share the hell out of it!"; local importHelpText = "TO IMPORT: First click the 'Clear' button, then simply copy any profile key from its saved document, paste it into this window, then click the 'Import From Key' button. After confirming the import, your UI will be reloaded. Your current profile will have now been changed with the encoded settings!"; local completeHelpText = exportHelpText .. "\n\n" .. importHelpText; local ProfileInterface_OnTextChanged = function(self, userInput) if userInput then --ProfileInterfaceHelp.Text:SetText(completeHelpText); else local _, max = ProfileInterfaceScrollBar:GetMinMaxValues() for i = 1, max do ScrollFrameTemplate_OnMouseWheel(ProfileInterfaceDialog, -1) end end end function SV.ProfileInterface:Toggle() if not SV.ProfileInterface:IsShown() then SV.ProfileInterface:Show() else SV.ProfileInterface:Hide() end end function SV:LinkProfile(key) self.SystemAlert["COPY_PROFILE_PROMPT"].text = "Are you sure you want to use the shared profile '" .. key .. "'?" self.SystemAlert["COPY_PROFILE_PROMPT"].OnAccept = function() SVUILib:CopyDatabase(key, true) end self:StaticPopup_Show("COPY_PROFILE_PROMPT") end function SV:CopyProfile(key) self.SystemAlert["COPY_PROFILE_PROMPT"].text = "Are you sure you want to copy from the profile '" .. key .. "'?" self.SystemAlert["COPY_PROFILE_PROMPT"].OnAccept = function() SVUILib:CopyDatabase(key) end self:StaticPopup_Show("COPY_PROFILE_PROMPT") end local ProfileInterface_ExportProfile = function(self) local t = SVUILib:ExportDatabase(); ProfileInterfaceDialog.Input:SetText(t); ProfileInterfaceDialog.Input:HighlightText(0); ProfileInterfaceHelp.Text:SetText(exportHelpText); end local ProfileInterface_ImportProfile = function(self) ProfileInterfaceHelp.Text:SetText(importHelpText); SV.SystemAlert["IMPORT_PROFILE_PROMPT"].OnAccept = function() local input = ProfileInterfaceDialog.Input:GetText() if(input and input ~= '') then SVUILib:ImportDatabase(input) else ProfileInterfaceHelp.Text:SetText('You did not enter a profile key.'); end end SV:StaticPopup_Show("IMPORT_PROFILE_PROMPT") end local ProfileInterface_ClearProfile = function(self) ProfileInterfaceDialog.Input:SetText(''); ProfileInterfaceHelp.Text:SetText(completeHelpText); end local function InitializeProfileInterface() SV.ProfileInterface:SetParent(SV.Screen) SV.ProfileInterface.Source = ""; SV.ProfileInterface:SetStyle("Frame", "Container") SV.ProfileInterface.Export:SetStyle("Button") SV.ProfileInterface.Export:SetScript("OnClick", ProfileInterface_ExportProfile) SV.ProfileInterface.Import:SetStyle("Button") SV.ProfileInterface.Import:SetScript("OnClick", ProfileInterface_ImportProfile) SV.ProfileInterface.Clear:SetStyle("Button") SV.ProfileInterface.Clear:SetScript("OnClick", ProfileInterface_ClearProfile) SV.API:Set("CloseButton", SV.ProfileInterface.Close) ProfileInterfaceDialog:SetStyle("Frame", "Transparent") ProfileInterfaceDialog.Input:SetScript("OnTextChanged", ProfileInterface_OnTextChanged) SV.ProfileInterface:RegisterForDrag("LeftButton"); ProfileInterfaceHelp:SetStyle("Frame", "Default") ProfileInterfaceHelp.Text:SetText(completeHelpText); end SV.Events:On("LOAD_ALL_ESSENTIALS", InitializeProfileInterface);