diff --git a/Damnation/Libs/AceAddon-3.0/AceAddon-3.0.lua b/Damnation/Libs/AceAddon-3.0/AceAddon-3.0.lua index 2b2a00e..f392a21 100644 --- a/Damnation/Libs/AceAddon-3.0/AceAddon-3.0.lua +++ b/Damnation/Libs/AceAddon-3.0/AceAddon-3.0.lua @@ -28,9 +28,9 @@ -- end -- @class file -- @name AceAddon-3.0.lua --- @release $Id: AceAddon-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +-- @release $Id: AceAddon-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ -local MAJOR, MINOR = "AceAddon-3.0", 12 +local MAJOR, MINOR = "AceAddon-3.0", 13 local AceAddon, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceAddon then return end -- No Upgrade needed. @@ -49,10 +49,6 @@ local select, pairs, next, type, unpack = select, pairs, next, type, unpack local loadstring, assert, error = loadstring, assert, error local setmetatable, getmetatable, rawset, rawget = setmetatable, getmetatable, rawset, rawget --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: LibStub, IsLoggedIn, geterrorhandler - --[[ xpcall safecall implementation ]] @@ -601,10 +597,20 @@ function AceAddon:IterateAddonStatus() return pairs(self.statuses) end function AceAddon:IterateEmbedsOnAddon(addon) return pairs(self.embeds[addon]) end function AceAddon:IterateModulesOfAddon(addon) return pairs(addon.modules) end +-- Blizzard AddOns which can load very early in the loading process and mess with Ace3 addon loading +local BlizzardEarlyLoadAddons = { + Blizzard_DebugTools = true, + Blizzard_TimeManager = true, + Blizzard_BattlefieldMap = true, + Blizzard_MapCanvas = true, + Blizzard_SharedMapDataProviders = true, + Blizzard_CombatLog = true, +} + -- Event Handling local function onEvent(this, event, arg1) - -- 2011-08-17 nevcairiel - ignore the load event of Blizzard_DebugTools, so a potential startup error isn't swallowed up - if (event == "ADDON_LOADED" and arg1 ~= "Blizzard_DebugTools") or event == "PLAYER_LOGIN" then + -- 2020-08-28 nevcairiel - ignore the load event of Blizzard addons which occur early in the loading process + if (event == "ADDON_LOADED" and (arg1 == nil or not BlizzardEarlyLoadAddons[arg1])) or event == "PLAYER_LOGIN" then -- if a addon loads another addon, recursion could happen here, so we need to validate the table on every iteration while(#AceAddon.initializequeue > 0) do local addon = tremove(AceAddon.initializequeue, 1) diff --git a/Damnation/Libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua b/Damnation/Libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua index 5113875..6dd6438 100644 --- a/Damnation/Libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua +++ b/Damnation/Libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua @@ -1,7 +1,7 @@ --- AceConfigCmd-3.0 handles access to an options table through the "command line" interface via the ChatFrames. -- @class file -- @name AceConfigCmd-3.0 --- @release $Id: AceConfigCmd-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +-- @release $Id: AceConfigCmd-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ --[[ AceConfigCmd-3.0 @@ -37,17 +37,10 @@ local error, assert = error, assert -- WoW APIs local _G = _G --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: LibStub, SELECTED_CHAT_FRAME, DEFAULT_CHAT_FRAME - - local L = setmetatable({}, { -- TODO: replace with proper locale __index = function(self,k) return k end }) - - local function print(msg) (SELECTED_CHAT_FRAME or DEFAULT_CHAT_FRAME):AddMessage(msg) end @@ -401,7 +394,7 @@ local function handle(info, inputpos, tab, depth, retfalse) return end - local str = strsub(info.input,inputpos); + local strInput = strsub(info.input,inputpos); if tab.type=="execute" then ------------ execute -------------------------------------------- @@ -414,21 +407,21 @@ local function handle(info, inputpos, tab, depth, retfalse) local res = true if tab.pattern then - if not(type(tab.pattern)=="string") then err(info, inputpos, "'pattern' - expected a string") end - if not strmatch(str, tab.pattern) then - usererr(info, inputpos, "'"..str.."' - " .. L["invalid input"]) + if type(tab.pattern)~="string" then err(info, inputpos, "'pattern' - expected a string") end + if not strmatch(strInput, tab.pattern) then + usererr(info, inputpos, "'"..strInput.."' - " .. L["invalid input"]) return end end - do_final(info, inputpos, tab, "set", str) + do_final(info, inputpos, tab, "set", strInput) elseif tab.type=="toggle" then ------------ toggle -------------------------------------------- local b - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) if str=="" then b = callmethod(info, inputpos, tab, "get") @@ -465,9 +458,9 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="range" then ------------ range -------------------------------------------- - local val = tonumber(str) + local val = tonumber(strInput) if not val then - usererr(info, inputpos, "'"..str.."' - "..L["expected number"]) + usererr(info, inputpos, "'"..strInput.."' - "..L["expected number"]) return end if type(info.step)=="number" then @@ -487,7 +480,7 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="select" then ------------ select ------------------------------------ - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) local values = tab.values if type(values) == "function" or type(values) == "string" then @@ -528,7 +521,7 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="multiselect" then ------------ multiselect ------------------------------------------- - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) local values = tab.values if type(values) == "function" or type(values) == "string" then @@ -565,7 +558,7 @@ local function handle(info, inputpos, tab, depth, retfalse) --check that the opt is valid local ok - for k,v in pairs(values) do + for k in pairs(values) do if strlower(k)==opt then opt = k -- overwrite with key (in case of case mismatches) ok = true @@ -634,7 +627,7 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="color" then ------------ color -------------------------------------------- - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) if str == "" then --TODO: Show current value return @@ -706,7 +699,7 @@ local function handle(info, inputpos, tab, depth, retfalse) elseif tab.type=="keybinding" then ------------ keybinding -------------------------------------------- - local str = strtrim(strlower(str)) + local str = strtrim(strlower(strInput)) if str == "" then --TODO: Show current value return diff --git a/Damnation/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua b/Damnation/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua index e5fcb2e..11254eb 100644 --- a/Damnation/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua +++ b/Damnation/Libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua @@ -1,13 +1,13 @@ --- AceConfigDialog-3.0 generates AceGUI-3.0 based windows based on option tables. -- @class file -- @name AceConfigDialog-3.0 --- @release $Id: AceConfigDialog-3.0.lua 1225 2019-08-06 13:37:52Z nevcairiel $ +-- @release $Id: AceConfigDialog-3.0.lua 1296 2022-11-04 18:50:10Z nevcairiel $ local LibStub = LibStub local gui = LibStub("AceGUI-3.0") local reg = LibStub("AceConfigRegistry-3.0") -local MAJOR, MINOR = "AceConfigDialog-3.0", 78 +local MAJOR, MINOR = "AceConfigDialog-3.0", 86 local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigDialog then return end @@ -22,19 +22,13 @@ AceConfigDialog.frame.closing = AceConfigDialog.frame.closing or {} AceConfigDialog.frame.closeAllOverride = AceConfigDialog.frame.closeAllOverride or {} -- Lua APIs -local tinsert, tsort, tremove = table.insert, table.sort, table.remove +local tinsert, tsort, tremove, wipe = table.insert, table.sort, table.remove, table.wipe local strmatch, format = string.match, string.format local error = error -local pairs, next, select, type, unpack, wipe, ipairs = pairs, next, select, type, unpack, wipe, ipairs +local pairs, next, select, type, unpack, ipairs = pairs, next, select, type, unpack, ipairs local tostring, tonumber = tostring, tonumber local math_min, math_max, math_floor = math.min, math.max, math.floor --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: NORMAL_FONT_COLOR, ACCEPT, CANCEL --- GLOBALS: PlaySound, GameFontHighlight, GameFontHighlightSmall, GameFontHighlightLarge --- GLOBALS: CloseSpecialWindows, InterfaceOptions_AddCategory, geterrorhandler - local emptyTbl = {} --[[ @@ -153,6 +147,7 @@ local stringIsLiteral = { width = true, image = true, fontSize = true, + tooltipHyperlink = true } --Is Never a function or method @@ -194,9 +189,8 @@ local function GetOptionsMemberValue(membername, option, options, path, appName, --We have a function to call local info = new() --traverse the options table, picking up the handler and filling the info with the path - local handler local group = options - handler = group.handler or handler + local handler = group.handler for i = 1, #path do group = GetSubOption(group, path[i]) @@ -508,6 +502,14 @@ local function OptionOnMouseOver(widget, event) local tooltip = AceConfigDialog.tooltip tooltip:SetOwner(widget.frame, "ANCHOR_TOPRIGHT") + + local tooltipHyperlink = GetOptionsMemberValue("tooltipHyperlink", opt, options, path, appName) + if tooltipHyperlink then + tooltip:SetHyperlink(tooltipHyperlink) + tooltip:Show() + return + end + local name = GetOptionsMemberValue("name", opt, options, path, appName) local desc = GetOptionsMemberValue("desc", opt, options, path, appName) local usage = GetOptionsMemberValue("usage", opt, options, path, appName) @@ -535,8 +537,7 @@ local function OptionOnMouseLeave(widget, event) end local function GetFuncName(option) - local type = option.type - if type == "execute" then + if option.type == "execute" then return "func" else return "set" @@ -544,13 +545,15 @@ local function GetFuncName(option) end do local frame = AceConfigDialog.popup - if not frame then + if not frame or oldminor < 81 then frame = CreateFrame("Frame", nil, UIParent) AceConfigDialog.popup = frame frame:Hide() frame:SetPoint("CENTER", UIParent, "CENTER") frame:SetSize(320, 72) + frame:EnableMouse(true) -- Do not allow click-through on the frame frame:SetFrameStrata("TOOLTIP") + frame:SetFrameLevel(100) -- Lots of room to draw under it frame:SetScript("OnKeyDown", function(self, key) if key == "ESCAPE" then self:SetPropagateKeyboardInput(false) @@ -564,26 +567,17 @@ do end end) - if WOW_PROJECT_ID == WOW_PROJECT_CLASSIC then - frame:SetBackdrop({ - bgFile = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]], - edgeFile = [[Interface\DialogFrame\UI-DialogBox-Border]], - tile = true, - tileSize = 32, - edgeSize = 32, - insets = { left = 11, right = 11, top = 11, bottom = 11 }, - }) - else - local border = CreateFrame("Frame", nil, frame, "DialogBorderDarkTemplate") - border:SetAllPoints(frame) - end + local border = CreateFrame("Frame", nil, frame, "DialogBorderOpaqueTemplate") + border:SetAllPoints(frame) + frame:SetFixedFrameStrata(true) + frame:SetFixedFrameLevel(true) local text = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight") text:SetSize(290, 0) text:SetPoint("TOP", 0, -16) frame.text = text - local function newButton(text) + local function newButton(newText) local button = CreateFrame("Button", nil, frame) button:SetSize(128, 21) button:SetNormalFontObject(GameFontNormal) @@ -594,7 +588,7 @@ do button:GetPushedTexture():SetTexCoord(0.0, 1.0, 0.0, 0.71875) button:SetHighlightTexture(130762) -- "Interface\\Buttons\\UI-DialogBox-Button-Highlight" button:GetHighlightTexture():SetTexCoord(0.0, 1.0, 0.0, 0.71875) - button:SetText(text) + button:SetText(newText) return button end @@ -681,7 +675,7 @@ local function ActivateControl(widget, event, ...) if group[funcname] ~= nil then func = group[funcname] end - handler = group.handler or handler + handler = group.handler confirm = group.confirm validate = group.validate for i = 1, #path do @@ -745,7 +739,6 @@ local function ActivateControl(widget, event, ...) end end - local rootframe = user.rootframe if not validated or type(validated) == "string" then if not validated then if usage then @@ -760,8 +753,8 @@ local function ActivateControl(widget, event, ...) end -- show validate message - if rootframe.SetStatusText then - rootframe:SetStatusText(validated) + if user.rootframe.SetStatusText then + user.rootframe:SetStatusText(validated) else validationErrorPopup(validated) end @@ -798,14 +791,14 @@ local function ActivateControl(widget, event, ...) if type(confirm) == "boolean" then if confirm then if not confirmText then - local name, desc = option.name, option.desc - if type(name) == "function" then - name = name(info) + local option_name, desc = option.name, option.desc + if type(option_name) == "function" then + option_name = option_name(info) end if type(desc) == "function" then desc = desc(info) end - confirmText = name + confirmText = option_name if desc then confirmText = confirmText.." - "..desc end @@ -911,7 +904,7 @@ end local function MultiControlOnClosed(widget, event, ...) local user = widget:GetUserDataTable() - if user.valuechanged then + if user.valuechanged and not widget:IsReleasing() then local iscustom = user.rootframe:GetUserData("iscustom") local basepath = user.rootframe:GetUserData("basepath") or emptyTbl if iscustom then @@ -1147,8 +1140,6 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin --Control to feed local control - local name = GetOptionsMemberValue("name", v, options, path, appName) - if v.type == "execute" then local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) @@ -1251,7 +1242,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin end tsort(sorting, sortTblAsStrings) end - for k, value in ipairs(sorting) do + for _, value in ipairs(sorting) do local text = values[value] local radio = gui:Create("CheckBox") radio:SetLabel(text) @@ -1333,8 +1324,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin control:SetWidth(width_multiplier) end --check:SetTriState(v.tristate) - for i = 1, #valuesort do - local key = valuesort[i] + for s = 1, #valuesort do + local key = valuesort[s] local value = GetOptionsMemberValue("get",v, options, path, appName, key) control:SetItemValue(key,value) end @@ -1346,8 +1337,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin control:PauseLayout() local width = GetOptionsMemberValue("width",v,options,path,appName) - for i = 1, #valuesort do - local value = valuesort[i] + for s = 1, #valuesort do + local value = valuesort[s] local text = values[value] local check = gui:Create("CheckBox") check:SetLabel(text) @@ -1364,7 +1355,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin elseif width == "half" then check:SetWidth(width_multiplier / 2) elseif (type(width) == "number") then - control:SetWidth(width_multiplier * width) + check:SetWidth(width_multiplier * width) elseif width == "full" then check.width = "fill" else @@ -1434,8 +1425,8 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin end control:SetImageSize(width, height) end - local width = GetOptionsMemberValue("width",v,options,path,appName) - control.width = not width and "fill" + local controlWidth = GetOptionsMemberValue("width",v,options,path,appName) + control.width = not controlWidth and "fill" end --Common Init @@ -1690,29 +1681,29 @@ function AceConfigDialog:FeedGroup(appName,options,container,rootframe,path, isR elseif grouptype == "select" then - local select = gui:Create("DropdownGroup") - select:SetTitle(name) - InjectInfo(select, options, group, path, rootframe, appName) - select:SetCallback("OnGroupSelected", GroupSelected) + local selectGroup = gui:Create("DropdownGroup") + selectGroup:SetTitle(name) + InjectInfo(selectGroup, options, group, path, rootframe, appName) + selectGroup:SetCallback("OnGroupSelected", GroupSelected) local status = AceConfigDialog:GetStatusTable(appName, path) if not status.groups then status.groups = {} end - select:SetStatusTable(status.groups) + selectGroup:SetStatusTable(status.groups) local grouplist, orderlist = BuildSelect(group, options, path, appName) - select:SetGroupList(grouplist, orderlist) - select:SetUserData("grouplist", grouplist) - select:SetUserData("orderlist", orderlist) + selectGroup:SetGroupList(grouplist, orderlist) + selectGroup:SetUserData("grouplist", grouplist) + selectGroup:SetUserData("orderlist", orderlist) local firstgroup = orderlist[1] if firstgroup then - select:SetGroup((GroupExists(appName, options, path,status.groups.selected) and status.groups.selected) or firstgroup) + selectGroup:SetGroup((GroupExists(appName, options, path,status.groups.selected) and status.groups.selected) or firstgroup) end - select.width = "fill" - select.height = "fill" + selectGroup.width = "fill" + selectGroup.height = "fill" - container:AddChild(select) + container:AddChild(selectGroup) --assume tree group by default --if parenttype is tree then this group is already a node on that tree @@ -1940,13 +1931,13 @@ end -- convert pre-39 BlizOptions structure to the new format if oldminor and oldminor < 39 and AceConfigDialog.BlizOptions then local old = AceConfigDialog.BlizOptions - local new = {} + local newOpt = {} for key, widget in pairs(old) do local appName = widget:GetUserData("appName") - if not new[appName] then new[appName] = {} end - new[appName][key] = widget + if not newOpt[appName] then newOpt[appName] = {} end + newOpt[appName][key] = widget end - AceConfigDialog.BlizOptions = new + AceConfigDialog.BlizOptions = newOpt else AceConfigDialog.BlizOptions = AceConfigDialog.BlizOptions or {} end @@ -1979,6 +1970,7 @@ end -- @param parent The parent to use in the interface options tree. -- @param ... The path in the options table to feed into the interface options panel. -- @return The reference to the frame registered into the Interface Options. +-- @return The category ID to pass to Settings.OpenToCategory (or InterfaceOptionsFrame_OpenToCategory) function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...) local BlizOptions = AceConfigDialog.BlizOptions @@ -1994,7 +1986,6 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...) if not BlizOptions[appName][key] then local group = gui:Create("BlizOptionsGroup") BlizOptions[appName][key] = group - group:SetName(name or appName, parent) group:SetTitle(name or appName) group:SetUserData("appName", appName) @@ -2007,8 +1998,30 @@ function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...) end group:SetCallback("OnShow", FeedToBlizPanel) group:SetCallback("OnHide", ClearBlizPanel) - InterfaceOptions_AddCategory(group.frame) - return group.frame + if Settings and Settings.RegisterCanvasLayoutCategory then + local categoryName = name or appName + if parent then + local category = Settings.GetCategory(parent) + if not category then + error(("The parent category '%s' was not found"):format(parent), 2) + end + local subcategory = Settings.RegisterCanvasLayoutSubcategory(category, group.frame, categoryName) + + -- force the generated ID to be used for subcategories, as these can have very simple names like "Profiles" + group:SetName(subcategory.ID, parent) + else + local category = Settings.RegisterCanvasLayoutCategory(group.frame, categoryName) + -- using appName here would be cleaner, but would not be 100% compatible + -- but for top-level categories it should be fine, as these are typically addon names + category.ID = categoryName + group:SetName(categoryName, parent) + Settings.RegisterAddOnCategory(category) + end + else + group:SetName(name or appName, parent) + InterfaceOptions_AddCategory(group.frame) + end + return group.frame, group.frame.name else error(("%s has already been added to the Blizzard Options Window with the given path"):format(appName), 2) end diff --git a/Damnation/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua b/Damnation/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua index f8d9225..e0f5962 100644 --- a/Damnation/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua +++ b/Damnation/Libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua @@ -8,10 +8,10 @@ -- :IterateOptionsTables() (and :GetOptionsTable() if only given one argument) return a function reference that the requesting config handling addon must call with valid "uiType", "uiName". -- @class file -- @name AceConfigRegistry-3.0 --- @release $Id: AceConfigRegistry-3.0.lua 1207 2019-06-23 12:08:33Z nevcairiel $ +-- @release $Id: AceConfigRegistry-3.0.lua 1296 2022-11-04 18:50:10Z nevcairiel $ local CallbackHandler = LibStub("CallbackHandler-1.0") -local MAJOR, MINOR = "AceConfigRegistry-3.0", 20 +local MAJOR, MINOR = "AceConfigRegistry-3.0", 21 local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigRegistry then return end @@ -83,6 +83,7 @@ local basekeys={ dialogHidden=optmethodbool, dropdownHidden=optmethodbool, cmdHidden=optmethodbool, + tooltipHyperlink=optstringfunc, icon=optstringnumberfunc, iconCoords=optmethodtable, handler=opttable, diff --git a/Damnation/Libs/AceConsole-3.0/AceConsole-3.0.lua b/Damnation/Libs/AceConsole-3.0/AceConsole-3.0.lua index 678fa95..2361a3b 100644 --- a/Damnation/Libs/AceConsole-3.0/AceConsole-3.0.lua +++ b/Damnation/Libs/AceConsole-3.0/AceConsole-3.0.lua @@ -9,7 +9,7 @@ -- make into AceConsole. -- @class file -- @name AceConsole-3.0 --- @release $Id: AceConsole-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +-- @release $Id: AceConsole-3.0.lua 1284 2022-09-25 09:15:30Z nevcairiel $ local MAJOR,MINOR = "AceConsole-3.0", 7 local AceConsole, oldminor = LibStub:NewLibrary(MAJOR, MINOR) @@ -29,10 +29,6 @@ local max = math.max -- WoW APIs local _G = _G --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: DEFAULT_CHAT_FRAME, SlashCmdList, hash_SlashCmdList - local tmp={} local function Print(self,frame,...) local n=0 @@ -174,7 +170,7 @@ function AceConsole:GetArgs(str, numargs, startpos) while true do -- find delimiter or hyperlink - local ch,_ + local _ pos,_,ch = strfind(str, delim_or_pipe, pos) if not pos then break end diff --git a/Damnation/Libs/AceDB-3.0/AceDB-3.0.lua b/Damnation/Libs/AceDB-3.0/AceDB-3.0.lua index 440330f..a8e306a 100644 --- a/Damnation/Libs/AceDB-3.0/AceDB-3.0.lua +++ b/Damnation/Libs/AceDB-3.0/AceDB-3.0.lua @@ -40,8 +40,8 @@ -- end -- @class file -- @name AceDB-3.0.lua --- @release $Id: AceDB-3.0.lua 1217 2019-07-11 03:06:18Z funkydude $ -local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 27 +-- @release $Id: AceDB-3.0.lua 1306 2023-06-23 14:55:09Z nevcairiel $ +local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 28 local AceDB = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR) if not AceDB then return end -- No upgrade needed @@ -53,10 +53,6 @@ local setmetatable, rawset, rawget = setmetatable, rawset, rawget -- WoW APIs local _G = _G --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: LibStub - AceDB.db_registry = AceDB.db_registry or {} AceDB.frame = AceDB.frame or CreateFrame("Frame") @@ -98,11 +94,11 @@ local function copyDefaults(dest, src) -- This is a metatable used for table defaults local mt = { -- This handles the lookup and creation of new subtables - __index = function(t,k) - if k == nil then return nil end + __index = function(t,k2) + if k2 == nil then return nil end local tbl = {} copyDefaults(tbl, v) - rawset(t, k, tbl) + rawset(t, k2, tbl) return tbl end, } @@ -115,7 +111,7 @@ local function copyDefaults(dest, src) end else -- Values are not tables, so this is just a simple return - local mt = {__index = function(t,k) return k~=nil and v or nil end} + local mt = {__index = function(t,k2) return k2~=nil and v or nil end} setmetatable(dest, mt) end elseif type(v) == "table" then @@ -264,7 +260,7 @@ local factionrealmKey = factionKey .. " - " .. realmKey local localeKey = GetLocale():lower() local regionTable = { "US", "KR", "EU", "TW", "CN" } -local regionKey = regionTable[GetCurrentRegion()] +local regionKey = regionTable[GetCurrentRegion()] or GetCurrentRegionName() or "TR" local factionrealmregionKey = factionrealmKey .. " - " .. regionKey -- Actual database initialization function diff --git a/Damnation/Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua b/Damnation/Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua index 6ed3103..46a85bf 100644 --- a/Damnation/Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua +++ b/Damnation/Libs/AceDBOptions-3.0/AceDBOptions-3.0.lua @@ -1,7 +1,7 @@ --- AceDBOptions-3.0 provides a universal AceConfig options screen for managing AceDB-3.0 profiles. -- @class file -- @name AceDBOptions-3.0 --- @release $Id: AceDBOptions-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +-- @release $Id: AceDBOptions-3.0.lua 1304 2023-05-19 19:50:10Z nevcairiel $ local ACEDBO_MAJOR, ACEDBO_MINOR = "AceDBOptions-3.0", 15 local AceDBOptions = LibStub:NewLibrary(ACEDBO_MAJOR, ACEDBO_MINOR) @@ -13,10 +13,6 @@ local pairs, next = pairs, next -- WoW APIs local UnitClass = UnitClass --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: NORMAL_FONT_COLOR_CODE, FONT_COLOR_CODE_CLOSE - AceDBOptions.optionTables = AceDBOptions.optionTables or {} AceDBOptions.handlers = AceDBOptions.handlers or {} @@ -88,25 +84,25 @@ elseif LOCALE == "frFR" then L["reset_desc"] = "Réinitialise le profil actuel au cas où votre configuration est corrompue ou si vous voulez tout simplement faire table rase." L["reset_sub"] = "Réinitialise le profil actuel avec les paramètres par défaut." elseif LOCALE == "koKR" then - L["choose"] = "저장 중인 프로필" - L["choose_desc"] = "입력창에 새로운 이름을 입력하거나 저장 중인 프로필 중 하나를 선택하여 새로운 프로필을 만들 수 있습니다." + L["choose"] = "기존 프로필" + L["choose_desc"] = "편집 상자에 이름을 입력하여 새로운 프로필을 만들거나 이미 존재하는 프로필 중 하나를 선택할 수 있습니다." L["choose_sub"] = "현재 이용할 수 있는 프로필 중 하나를 선택합니다." - L["copy"] = "복사해오기" - L["copy_desc"] = "현재 사용 중인 프로필에 선택한 프로필의 설정을 복사합니다." + L["copy"] = "복사해 올 프로필" + L["copy_desc"] = "기존 프로필의 설정을 현재 활성화된 프로필로 복사합니다." L["current"] = "현재 프로필:" L["default"] = "기본값" L["delete"] = "프로필 삭제" - L["delete_confirm"] = "정말로 선택한 프로필을 삭제할까요?" - L["delete_desc"] = "저장 공간 절약과 SavedVariables 파일의 정리를 위해 데이터베이스에서 사용하지 않는 프로필을 삭제하세요." - L["delete_sub"] = "데이터베이스의 프로필을 삭제합니다." - L["intro"] = "활성 데이터베이스 프로필을 변경할 수 있고, 각 캐릭터 별로 다른 설정을 할 수 있습니다." + L["delete_confirm"] = "선택한 프로필을 삭제하시겠습니까?" + L["delete_desc"] = "데이터베이스에서 기존 프로필과 사용하지 않는 프로필을 삭제하여 공간을 절약하고 SavedVariables 파일을 정리합니다." + L["delete_sub"] = "데이터베이스에서 프로필을 삭제합니다." + L["intro"] = "활성 데이터베이스 프로필을 변경할 수 있으며, 모든 캐릭터마다 서로 다른 설정을 지정할 수 있습니다." L["new"] = "새로운 프로필" - L["new_sub"] = "새로운 프로필을 만듭니다." + L["new_sub"] = "비어 있는 프로필을 새로 만듭니다." L["profiles"] = "프로필" L["profiles_sub"] = "프로필 관리" - L["reset"] = "프로필 초기화" - L["reset_desc"] = "설정이 깨졌거나 처음부터 다시 설정을 원하는 경우, 현재 프로필을 기본값으로 초기화하세요." - L["reset_sub"] = "현재 프로필을 기본값으로 초기화합니다" + L["reset"] = "프로필 재설정" + L["reset_desc"] = "구성이 손상되었거나 처음부터 다시 시작하고 싶은 경우 현재 프로필을 기본값으로 재설정하세요." + L["reset_sub"] = "현재 프로필을 기본값으로 재설정합니다" elseif LOCALE == "esES" or LOCALE == "esMX" then L["choose"] = "Perfiles existentes" L["choose_desc"] = "Puedes crear un nuevo perfil introduciendo un nombre en el recuadro o puedes seleccionar un perfil de los ya existentes." @@ -170,31 +166,31 @@ elseif LOCALE == "zhCN" then elseif LOCALE == "ruRU" then L["choose"] = "Существующие профили" L["choose_desc"] = "Вы можете создать новый профиль, введя название в поле ввода, или выбрать один из уже существующих профилей." - L["choose_sub"] = "Выбор одиного из уже доступных профилей" + L["choose_sub"] = "Выбор одного из уже доступных профилей." L["copy"] = "Скопировать из" - L["copy_desc"] = "Скопировать настройки из выбранного профиля в активный." + L["copy_desc"] = "Копирование настроек из выбранного профиля в активный." L["current"] = "Текущий профиль:" L["default"] = "По умолчанию" L["delete"] = "Удалить профиль" - L["delete_confirm"] = "Вы уверены, что вы хотите удалить выбранный профиль?" - L["delete_desc"] = "Удалить существующий и неиспользуемый профиль из БД для сохранения места, и очистить SavedVariables файл." - L["delete_sub"] = "Удаление профиля из БД" - L["intro"] = "Изменяя активный профиль, вы можете задать различные настройки модификаций для каждого персонажа." + L["delete_confirm"] = "Вы уверены, что хотите удалить выбранный профиль?" + L["delete_desc"] = "Удаление существующего и неиспользуемого профиля из базы данных для сохранения места, и очистка файла SavedVariables." + L["delete_sub"] = "Удаление профиля из базы данных." + L["intro"] = "Изменяя активный профиль, Вы можете задать разные настройки для каждого персонажа." L["new"] = "Новый" - L["new_sub"] = "Создать новый чистый профиль" + L["new_sub"] = "Создание нового чистого профиля." L["profiles"] = "Профили" L["profiles_sub"] = "Управление профилями" - L["reset"] = "Сброс профиля" - L["reset_desc"] = "Сбросить текущий профиль к стандартным настройкам, если ваша конфигурация испорчена или вы хотите настроить всё заново." + L["reset"] = "Сбросить профиль" + L["reset_desc"] = "Сброс текущего профиля к стандартным настройкам, если Ваша конфигурация испорчена или Вы хотите настроить все заново." L["reset_sub"] = "Сброс текущего профиля на стандартный" elseif LOCALE == "itIT" then L["choose"] = "Profili Esistenti" L["choose_desc"] = "Puoi creare un nuovo profilo digitando il nome della casella di testo, oppure scegliendone uno tra i profili già esistenti." L["choose_sub"] = "Seleziona uno dei profili attualmente disponibili." L["copy"] = "Copia Da" - L["copy_desc"] = "Copia le impostazioni da un profilo esistente, nel profilo attivo in questo momento." + L["copy_desc"] = "Copia le impostazioni da un profilo esistente nel profilo attivo in questo momento." L["current"] = "Profilo Attivo:" - L["default"] = "Standard" + L["default"] = "Predefinito" L["delete"] = "Cancella un Profilo" L["delete_confirm"] = "Sei sicuro di voler cancellare il profilo selezionato?" L["delete_desc"] = "Cancella i profili non utilizzati dal database per risparmiare spazio e mantenere puliti i file di configurazione SavedVariables." diff --git a/Damnation/Libs/AceGUI-3.0/AceGUI-3.0.lua b/Damnation/Libs/AceGUI-3.0/AceGUI-3.0.lua index f59edda..f05b1ed 100644 --- a/Damnation/Libs/AceGUI-3.0/AceGUI-3.0.lua +++ b/Damnation/Libs/AceGUI-3.0/AceGUI-3.0.lua @@ -24,28 +24,22 @@ -- f:AddChild(btn) -- @class file -- @name AceGUI-3.0 --- @release $Id: AceGUI-3.0.lua 1221 2019-07-20 18:23:00Z nevcairiel $ -local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 39 +-- @release $Id: AceGUI-3.0.lua 1288 2022-09-25 14:19:00Z funkehdude $ +local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 41 local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR) if not AceGUI then return end -- No upgrade needed -- Lua APIs -local tinsert = table.insert +local tinsert, wipe = table.insert, table.wipe local select, pairs, next, type = select, pairs, next, type local error, assert = error, assert local setmetatable, rawget = setmetatable, rawget -local math_max = math.max +local math_max, math_min, math_ceil = math.max, math.min, math.ceil -- WoW APIs local UIParent = UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: geterrorhandler, LibStub - ---local con = LibStub("AceConsole-3.0",true) - AceGUI.WidgetRegistry = AceGUI.WidgetRegistry or {} AceGUI.LayoutRegistry = AceGUI.LayoutRegistry or {} AceGUI.WidgetBase = AceGUI.WidgetBase or {} @@ -94,38 +88,38 @@ do AceGUI.objPools = AceGUI.objPools or {} local objPools = AceGUI.objPools --Returns a new instance, if none are available either returns a new table or calls the given contructor - function newWidget(type) - if not WidgetRegistry[type] then + function newWidget(widgetType) + if not WidgetRegistry[widgetType] then error("Attempt to instantiate unknown widget type", 2) end - if not objPools[type] then - objPools[type] = {} + if not objPools[widgetType] then + objPools[widgetType] = {} end - local newObj = next(objPools[type]) + local newObj = next(objPools[widgetType]) if not newObj then - newObj = WidgetRegistry[type]() - newObj.AceGUIWidgetVersion = WidgetVersions[type] + newObj = WidgetRegistry[widgetType]() + newObj.AceGUIWidgetVersion = WidgetVersions[widgetType] else - objPools[type][newObj] = nil + objPools[widgetType][newObj] = nil -- if the widget is older then the latest, don't even try to reuse it -- just forget about it, and grab a new one. - if not newObj.AceGUIWidgetVersion or newObj.AceGUIWidgetVersion < WidgetVersions[type] then - return newWidget(type) + if not newObj.AceGUIWidgetVersion or newObj.AceGUIWidgetVersion < WidgetVersions[widgetType] then + return newWidget(widgetType) end end return newObj end -- Releases an instance to the Pool - function delWidget(obj,type) - if not objPools[type] then - objPools[type] = {} + function delWidget(obj,widgetType) + if not objPools[widgetType] then + objPools[widgetType] = {} end - if objPools[type][obj] then + if objPools[widgetType][obj] then error("Attempt to Release Widget that is already released", 2) end - objPools[type][obj] = true + objPools[widgetType][obj] = true end end @@ -141,9 +135,9 @@ end -- OnAcquire function on it, before returning. -- @param type The type of the widget. -- @return The newly created widget. -function AceGUI:Create(type) - if WidgetRegistry[type] then - local widget = newWidget(type) +function AceGUI:Create(widgetType) + if WidgetRegistry[widgetType] then + local widget = newWidget(widgetType) if rawget(widget, "Acquire") then widget.OnAcquire = widget.Acquire @@ -161,7 +155,7 @@ function AceGUI:Create(type) if widget.OnAcquire then widget:OnAcquire() else - error(("Widget type %s doesn't supply an OnAcquire Function"):format(type)) + error(("Widget type %s doesn't supply an OnAcquire Function"):format(widgetType)) end -- Set the default Layout ("List") safecall(widget.SetLayout, widget, "List") @@ -176,6 +170,8 @@ end -- If this widget is a Container-Widget, all of its Child-Widgets will be releases as well. -- @param widget The widget to release function AceGUI:Release(widget) + if widget.isQueuedForRelease then return end + widget.isQueuedForRelease = true safecall(widget.PauseLayout, widget) widget.frame:Hide() widget:Fire("OnRelease") @@ -206,9 +202,26 @@ function AceGUI:Release(widget) widget.content.width = nil widget.content.height = nil end + widget.isQueuedForRelease = nil delWidget(widget, widget.type) end +--- Check if a widget is currently in the process of being released +-- This function check if this widget, or any of its parents (in which case it'll be released shortly as well) +-- are currently being released. This allows addon to handle any callbacks accordingly. +-- @param widget The widget to check +function AceGUI:IsReleasing(widget) + if widget.isQueuedForRelease then + return true + end + + if widget.parent and widget.parent.AceGUIWidgetVersion then + return AceGUI:IsReleasing(widget.parent) + end + + return false +end + ----------- -- Focus -- ----------- @@ -335,6 +348,10 @@ do AceGUI:Release(self) end + WidgetBase.IsReleasing = function(self) + return AceGUI:IsReleasing(self) + end + WidgetBase.SetPoint = function(self, ...) return self.frame:SetPoint(...) end @@ -566,25 +583,25 @@ AceGUI.counts = AceGUI.counts or {} -- This is used by widgets that require a named frame, e.g. when a Blizzard -- Template requires it. -- @param type The widget type -function AceGUI:GetNextWidgetNum(type) - if not self.counts[type] then - self.counts[type] = 0 +function AceGUI:GetNextWidgetNum(widgetType) + if not self.counts[widgetType] then + self.counts[widgetType] = 0 end - self.counts[type] = self.counts[type] + 1 - return self.counts[type] + self.counts[widgetType] = self.counts[widgetType] + 1 + return self.counts[widgetType] end --- Return the number of created widgets for this type. -- In contrast to GetNextWidgetNum, the number is not incremented. --- @param type The widget type -function AceGUI:GetWidgetCount(type) - return self.counts[type] or 0 +-- @param widgetType The widget type +function AceGUI:GetWidgetCount(widgetType) + return self.counts[widgetType] or 0 end --- Return the version of the currently registered widget type. --- @param type The widget type -function AceGUI:GetWidgetVersion(type) - return WidgetVersions[type] +-- @param widgetType The widget type +function AceGUI:GetWidgetVersion(widgetType) + return WidgetVersions[widgetType] end ------------- @@ -747,7 +764,6 @@ AceGUI:RegisterLayout("Flow", usedwidth = 0 rowstart = frame - rowstartoffset = frameoffset if child.DoLayout then child:DoLayout() @@ -790,7 +806,8 @@ local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child) or colObj and (colObj["align" .. dir] or colObj.align) or tableObj["align" .. dir] or tableObj.align or "CENTERLEFT" - local child, cell, val = child or 0, cell or 0, nil + local val + child, cell = child or 0, cell or 0 if type(fn) == "string" then fn = fn:lower() @@ -804,7 +821,7 @@ local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child) val = fn end - return fn, max(0, min(val, cell)) + return fn, math_max(0, math_min(val, cell)) end -- Get width or height for multiple cells combined @@ -813,7 +830,7 @@ local GetCellDimension = function (dir, laneDim, from, to, space) for cell=from,to do dim = dim + (laneDim[cell] or 0) end - return dim + max(0, to - from) * (space or 0) + return dim + math_max(0, to - from) * (space or 0) end --[[ Options @@ -859,7 +876,7 @@ AceGUI:RegisterLayout("Table", repeat n = n + 1 local col = (n - 1) % #cols + 1 - local row = ceil(n / #cols) + local row = math_ceil(n / #cols) local rowspan = rowspans[col] local cell = rowspan and rowspan.child or child local cellObj = cell:GetUserData("cell") @@ -875,7 +892,7 @@ AceGUI:RegisterLayout("Table", end -- Colspan - local colspan = max(0, min((cellObj and cellObj.colspan or 1) - 1, #cols - col)) + local colspan = math_max(0, math_min((cellObj and cellObj.colspan or 1) - 1, #cols - col)) n = n + colspan -- Place the cell @@ -892,7 +909,7 @@ AceGUI:RegisterLayout("Table", end end - local rows = ceil(n / #cols) + local rows = math_ceil(n / #cols) -- Determine fixed size cols and collect weights local extantH, totalWeight = totalH, 0 @@ -917,16 +934,16 @@ AceGUI:RegisterLayout("Table", f:ClearAllPoints() local childH = f:GetWidth() or 0 - laneH[col] = max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH)) + laneH[col] = math_max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH)) end end - laneH[col] = max(colObj.min or colObj[1] or 0, min(laneH[col], colObj.max or colObj[2] or laneH[col])) + laneH[col] = math_max(colObj.min or colObj[1] or 0, math_min(laneH[col], colObj.max or colObj[2] or laneH[col])) else -- Rel./Abs. width laneH[col] = colObj.width < 1 and colObj.width * totalH or colObj.width end - extantH = max(0, extantH - laneH[col]) + extantH = math_max(0, extantH - laneH[col]) end end @@ -965,7 +982,7 @@ AceGUI:RegisterLayout("Table", child:DoLayout() end - rowV = max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV)) + rowV = math_max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV)) end end diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua index 9a48f8b..d95db58 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua @@ -2,7 +2,7 @@ BlizOptionsGroup Container Simple container widget for the integration of AceGUI into the Blizzard Interface Options -------------------------------------------------------------------------------]] -local Type, Version = "BlizOptionsGroup", 21 +local Type, Version = "BlizOptionsGroup", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -99,7 +99,7 @@ local methods = { Constructor -------------------------------------------------------------------------------]] local function Constructor() - local frame = CreateFrame("Frame") + local frame = CreateFrame("Frame", nil, InterfaceOptionsFramePanelContainer) frame:Hide() -- support functions for the Blizzard Interface Options @@ -108,6 +108,11 @@ local function Constructor() frame.default = default frame.refresh = refresh + -- 10.0 support function aliases (cancel has been removed) + frame.OnCommit = okay + frame.OnDefault = default + frame.OnRefresh = refresh + frame:SetScript("OnHide", OnHide) frame:SetScript("OnShow", OnShow) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua index 4b09d64..cd83755 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua @@ -2,7 +2,7 @@ DropdownGroup Container Container controlled by a dropdown on the top. -------------------------------------------------------------------------------]] -local Type, Version = "DropdownGroup", 21 +local Type, Version = "DropdownGroup", 22 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -125,7 +125,7 @@ local function Constructor() dropdown.frame:Show() dropdown:SetLabel("") - local border = CreateFrame("Frame", nil, frame) + local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") border:SetPoint("TOPLEFT", 0, -26) border:SetPoint("BOTTOMRIGHT", 0, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua index ec98f4b..39a1004 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- Frame Container -------------------------------------------------------------------------------]] -local Type, Version = "Frame", 26 +local Type, Version = "Frame", 30 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -13,10 +13,6 @@ local wipe = table.wipe local PlaySound = PlaySound local CreateFrame, UIParent = CreateFrame, UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: CLOSE - --[[----------------------------------------------------------------------------- Scripts -------------------------------------------------------------------------------]] @@ -83,6 +79,7 @@ local methods = { ["OnAcquire"] = function(self) self.frame:SetParent(UIParent) self.frame:SetFrameStrata("FULLSCREEN_DIALOG") + self.frame:SetFrameLevel(100) -- Lots of room to draw under it self:SetTitle() self:SetStatusText() self:ApplyStatus() @@ -179,16 +176,21 @@ local PaneBackdrop = { } local function Constructor() - local frame = CreateFrame("Frame", nil, UIParent) + local frame = CreateFrame("Frame", nil, UIParent, "BackdropTemplate") frame:Hide() frame:EnableMouse(true) frame:SetMovable(true) frame:SetResizable(true) frame:SetFrameStrata("FULLSCREEN_DIALOG") + frame:SetFrameLevel(100) -- Lots of room to draw under it frame:SetBackdrop(FrameBackdrop) frame:SetBackdropColor(0, 0, 0, 1) - frame:SetMinResize(400, 200) + if frame.SetResizeBounds then -- WoW 10.0 + frame:SetResizeBounds(400, 200) + else + frame:SetMinResize(400, 200) + end frame:SetToplevel(true) frame:SetScript("OnShow", Frame_OnShow) frame:SetScript("OnHide", Frame_OnClose) @@ -201,7 +203,7 @@ local function Constructor() closebutton:SetWidth(100) closebutton:SetText(CLOSE) - local statusbg = CreateFrame("Button", nil, frame) + local statusbg = CreateFrame("Button", nil, frame, "BackdropTemplate") statusbg:SetPoint("BOTTOMLEFT", 15, 15) statusbg:SetPoint("BOTTOMRIGHT", -132, 15) statusbg:SetHeight(24) @@ -269,7 +271,7 @@ local function Constructor() line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border - local x = 0.1 * 8/17 + x = 0.1 * 8/17 line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) local sizer_s = CreateFrame("Frame", nil, frame) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua index f3db7d6..1676ae4 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua @@ -2,7 +2,7 @@ InlineGroup Container Simple container widget that creates a visible "box" with an optional title. -------------------------------------------------------------------------------]] -local Type, Version = "InlineGroup", 21 +local Type, Version = "InlineGroup", 22 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -75,7 +75,7 @@ local function Constructor() titletext:SetJustifyH("LEFT") titletext:SetHeight(18) - local border = CreateFrame("Frame", nil, frame) + local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") border:SetPoint("TOPLEFT", 0, -17) border:SetPoint("BOTTOMRIGHT", -1, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua index 053e27d..8e46876 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua @@ -2,22 +2,18 @@ TabGroup Container Container that uses tabs on top to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TabGroup", 36 +local Type, Version = "TabGroup", 38 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -- Lua APIs -local pairs, ipairs, assert, type, wipe = pairs, ipairs, assert, type, wipe +local pairs, ipairs, assert, type, wipe = pairs, ipairs, assert, type, table.wipe -- WoW APIs local PlaySound = PlaySound local CreateFrame, UIParent = CreateFrame, UIParent local _G = _G --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: PanelTemplates_TabResize, PanelTemplates_SetDisabledTabState, PanelTemplates_SelectTab, PanelTemplates_DeselectTab - -- local upvalue storage used by BuildTabs local widths = {} local rowwidths = {} @@ -26,6 +22,143 @@ local rowends = {} --[[----------------------------------------------------------------------------- Support functions -------------------------------------------------------------------------------]] + +local function PanelTemplates_TabResize(tab, padding, absoluteSize, minWidth, maxWidth, absoluteTextSize) + local tabName = tab:GetName(); + + local buttonMiddle = tab.Middle or tab.middleTexture or _G[tabName.."Middle"]; + local buttonMiddleDisabled = tab.MiddleDisabled or (tabName and _G[tabName.."MiddleDisabled"]); + local left = tab.Left or tab.leftTexture or _G[tabName.."Left"]; + local sideWidths = 2 * left:GetWidth(); + local tabText = tab.Text or _G[tab:GetName().."Text"]; + local highlightTexture = tab.HighlightTexture or (tabName and _G[tabName.."HighlightTexture"]); + + local width, tabWidth; + local textWidth; + if ( absoluteTextSize ) then + textWidth = absoluteTextSize; + else + tabText:SetWidth(0); + textWidth = tabText:GetWidth(); + end + -- If there's an absolute size specified then use it + if ( absoluteSize ) then + if ( absoluteSize < sideWidths) then + width = 1; + tabWidth = sideWidths + else + width = absoluteSize - sideWidths; + tabWidth = absoluteSize + end + tabText:SetWidth(width); + else + -- Otherwise try to use padding + if ( padding ) then + width = textWidth + padding; + else + width = textWidth + 24; + end + -- If greater than the maxWidth then cap it + if ( maxWidth and width > maxWidth ) then + if ( padding ) then + width = maxWidth + padding; + else + width = maxWidth + 24; + end + tabText:SetWidth(width); + else + tabText:SetWidth(0); + end + if (minWidth and width < minWidth) then + width = minWidth; + end + tabWidth = width + sideWidths; + end + + if ( buttonMiddle ) then + buttonMiddle:SetWidth(width); + end + if ( buttonMiddleDisabled ) then + buttonMiddleDisabled:SetWidth(width); + end + + tab:SetWidth(tabWidth); + + if ( highlightTexture ) then + highlightTexture:SetWidth(tabWidth); + end +end + +local function PanelTemplates_DeselectTab(tab) + local name = tab:GetName(); + + local left = tab.Left or _G[name.."Left"]; + local middle = tab.Middle or _G[name.."Middle"]; + local right = tab.Right or _G[name.."Right"]; + left:Show(); + middle:Show(); + right:Show(); + --tab:UnlockHighlight(); + tab:Enable(); + local text = tab.Text or _G[name.."Text"]; + text:SetPoint("CENTER", tab, "CENTER", (tab.deselectedTextX or 0), (tab.deselectedTextY or 2)); + + local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"]; + local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"]; + local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"]; + leftDisabled:Hide(); + middleDisabled:Hide(); + rightDisabled:Hide(); +end + +local function PanelTemplates_SelectTab(tab) + local name = tab:GetName(); + + local left = tab.Left or _G[name.."Left"]; + local middle = tab.Middle or _G[name.."Middle"]; + local right = tab.Right or _G[name.."Right"]; + left:Hide(); + middle:Hide(); + right:Hide(); + --tab:LockHighlight(); + tab:Disable(); + tab:SetDisabledFontObject(GameFontHighlightSmall); + local text = tab.Text or _G[name.."Text"]; + text:SetPoint("CENTER", tab, "CENTER", (tab.selectedTextX or 0), (tab.selectedTextY or -3)); + + local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"]; + local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"]; + local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"]; + leftDisabled:Show(); + middleDisabled:Show(); + rightDisabled:Show(); + + if GameTooltip:IsOwned(tab) then + GameTooltip:Hide(); + end +end + +local function PanelTemplates_SetDisabledTabState(tab) + local name = tab:GetName(); + local left = tab.Left or _G[name.."Left"]; + local middle = tab.Middle or _G[name.."Middle"]; + local right = tab.Right or _G[name.."Right"]; + left:Show(); + middle:Show(); + right:Show(); + --tab:UnlockHighlight(); + tab:Disable(); + tab.text = tab:GetText(); + -- Gray out text + tab:SetDisabledFontObject(GameFontDisableSmall); + local leftDisabled = tab.LeftDisabled or _G[name.."LeftDisabled"]; + local middleDisabled = tab.MiddleDisabled or _G[name.."MiddleDisabled"]; + local rightDisabled = tab.RightDisabled or _G[name.."RightDisabled"]; + leftDisabled:Hide(); + middleDisabled:Hide(); + rightDisabled:Hide(); +end + local function UpdateTabLook(frame) if frame.disabled then PanelTemplates_SetDisabledTabState(frame) @@ -103,11 +236,64 @@ local methods = { ["CreateTab"] = function(self, id) local tabname = ("AceGUITabGroup%dTab%d"):format(self.num, id) - local tab = CreateFrame("Button", tabname, self.border, "OptionsFrameTabButtonTemplate") + local tab = CreateFrame("Button", tabname, self.border) + tab:SetSize(115, 24) + tab.deselectedTextY = -3 + tab.selectedTextY = -2 + + tab.LeftDisabled = tab:CreateTexture(tabname .. "LeftDisabled", "BORDER") + tab.LeftDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab") + tab.LeftDisabled:SetSize(20, 24) + tab.LeftDisabled:SetPoint("BOTTOMLEFT", 0, -3) + tab.LeftDisabled:SetTexCoord(0, 0.15625, 0, 1.0) + + tab.MiddleDisabled = tab:CreateTexture(tabname .. "MiddleDisabled", "BORDER") + tab.MiddleDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab") + tab.MiddleDisabled:SetSize(88, 24) + tab.MiddleDisabled:SetPoint("LEFT", tab.LeftDisabled, "RIGHT") + tab.MiddleDisabled:SetTexCoord(0.15625, 0.84375, 0, 1.0) + + tab.RightDisabled = tab:CreateTexture(tabname .. "RightDisabled", "BORDER") + tab.RightDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab") + tab.RightDisabled:SetSize(20, 24) + tab.RightDisabled:SetPoint("LEFT", tab.MiddleDisabled, "RIGHT") + tab.RightDisabled:SetTexCoord(0.84375, 1.0, 0, 1.0) + + tab.Left = tab:CreateTexture(tabname .. "Left", "BORDER") + tab.Left:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab") + tab.Left:SetSize(20, 24) + tab.Left:SetPoint("TOPLEFT") + tab.Left:SetTexCoord(0, 0.15625, 0, 1.0) + + tab.Middle = tab:CreateTexture(tabname .. "Middle", "BORDER") + tab.Middle:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab") + tab.Middle:SetSize(88, 24) + tab.Middle:SetPoint("LEFT", tab.Left, "RIGHT") + tab.Middle:SetTexCoord(0.15625, 0.84375, 0, 1.0) + + tab.Right = tab:CreateTexture(tabname .. "Right", "BORDER") + tab.Right:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab") + tab.Right:SetSize(20, 24) + tab.Right:SetPoint("LEFT", tab.Middle, "RIGHT") + tab.Right:SetTexCoord(0.84375, 1.0, 0, 1.0) + + tab.Text = tab:CreateFontString(tabname .. "Text") + tab:SetFontString(tab.Text) + + tab:SetNormalFontObject(GameFontNormalSmall) + tab:SetHighlightFontObject(GameFontHighlightSmall) + tab:SetDisabledFontObject(GameFontHighlightSmall) + tab:SetHighlightTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight", "ADD") + tab.HighlightTexture = tab:GetHighlightTexture() + tab.HighlightTexture:ClearAllPoints() + tab.HighlightTexture:SetPoint("LEFT", tab, "LEFT", 10, -4) + tab.HighlightTexture:SetPoint("RIGHT", tab, "RIGHT", -10, -4) + _G[tabname .. "HighlightTexture"] = tab.HighlightTexture + tab.obj = self tab.id = id - tab.text = _G[tabname .. "Text"] + tab.text = tab.Text -- compat tab.text:ClearAllPoints() tab.text:SetPoint("LEFT", 14, -3) tab.text:SetPoint("RIGHT", -12, -3) @@ -316,7 +502,7 @@ local function Constructor() titletext:SetHeight(18) titletext:SetText("") - local border = CreateFrame("Frame", nil, frame) + local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") border:SetPoint("TOPLEFT", 1, -27) border:SetPoint("BOTTOMRIGHT", -1, 3) border:SetBackdrop(PaneBackdrop) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua index eb94c04..89f387a 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua @@ -2,24 +2,18 @@ TreeGroup Container Container that uses a tree control to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TreeGroup", 44 +local Type, Version = "TreeGroup", 47 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -local WoW80 = select(4, GetBuildInfo()) >= 80000 - -- Lua APIs local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type -local math_min, math_max, floor = math.min, math.max, floor +local math_min, math_max, floor = math.min, math.max, math.floor local select, tremove, unpack, tconcat = select, table.remove, unpack, table.concat -- WoW APIs local CreateFrame, UIParent = CreateFrame, UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: FONT_COLOR_CODE_CLOSE - -- Recycling functions local new, del do @@ -422,8 +416,7 @@ local methods = { local maxlines = (floor(((self.treeframe:GetHeight()or 0) - 20 ) / 18)) if maxlines <= 0 then return end - -- workaround for lag spikes on WoW 8.0 - if WoW80 and self.frame:GetParent() == UIParent and not fromOnUpdate then + if self.frame:GetParent() == UIParent and not fromOnUpdate then self.frame:SetScript("OnUpdate", FirstFrameUpdate) return end @@ -570,7 +563,11 @@ local methods = { if maxtreewidth > 100 and status.treewidth > maxtreewidth then self:SetTreeWidth(maxtreewidth, status.treesizable) end - treeframe:SetMaxResize(maxtreewidth, 1600) + if treeframe.SetResizeBounds then + treeframe:SetResizeBounds(100, 1, maxtreewidth, 1600) + else + treeframe:SetMaxResize(maxtreewidth, 1600) + end end, ["OnHeightSet"] = function(self, height) @@ -632,7 +629,7 @@ local PaneBackdrop = { local DraggerBackdrop = { bgFile = "Interface\\Tooltips\\UI-Tooltip-Background", edgeFile = nil, - tile = true, tileSize = 16, edgeSize = 0, + tile = true, tileSize = 16, edgeSize = 1, insets = { left = 3, right = 3, top = 7, bottom = 7 } } @@ -640,7 +637,7 @@ local function Constructor() local num = AceGUI:GetNextWidgetNum(Type) local frame = CreateFrame("Frame", nil, UIParent) - local treeframe = CreateFrame("Frame", nil, frame) + local treeframe = CreateFrame("Frame", nil, frame, "BackdropTemplate") treeframe:SetPoint("TOPLEFT") treeframe:SetPoint("BOTTOMLEFT") treeframe:SetWidth(DEFAULT_TREE_WIDTH) @@ -649,13 +646,17 @@ local function Constructor() treeframe:SetBackdropColor(0.1, 0.1, 0.1, 0.5) treeframe:SetBackdropBorderColor(0.4, 0.4, 0.4) treeframe:SetResizable(true) - treeframe:SetMinResize(100, 1) - treeframe:SetMaxResize(400, 1600) + if treeframe.SetResizeBounds then -- WoW 10.0 + treeframe:SetResizeBounds(100, 1, 400, 1600) + else + treeframe:SetMinResize(100, 1) + treeframe:SetMaxResize(400, 1600) + end treeframe:SetScript("OnUpdate", FirstFrameUpdate) treeframe:SetScript("OnSizeChanged", Tree_OnSizeChanged) treeframe:SetScript("OnMouseWheel", Tree_OnMouseWheel) - local dragger = CreateFrame("Frame", nil, treeframe) + local dragger = CreateFrame("Frame", nil, treeframe, "BackdropTemplate") dragger:SetWidth(8) dragger:SetPoint("TOP", treeframe, "TOPRIGHT") dragger:SetPoint("BOTTOM", treeframe, "BOTTOMRIGHT") @@ -680,7 +681,7 @@ local function Constructor() scrollbg:SetAllPoints(scrollbar) scrollbg:SetColorTexture(0,0,0,0.4) - local border = CreateFrame("Frame",nil,frame) + local border = CreateFrame("Frame", nil, frame, "BackdropTemplate") border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT") border:SetPoint("BOTTOMRIGHT") border:SetBackdrop(PaneBackdrop) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua index 2e28a3d..f378d93 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua @@ -7,10 +7,6 @@ local pairs, assert, type = pairs, assert, type local PlaySound = PlaySound local CreateFrame, UIParent = CreateFrame, UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: GameFontNormal - ---------------- -- Main Frame -- ---------------- @@ -21,7 +17,7 @@ local CreateFrame, UIParent = CreateFrame, UIParent ]] do local Type = "Window" - local Version = 6 + local Version = 8 local function frameOnShow(this) this.obj:Fire("OnShow") @@ -186,7 +182,11 @@ do frame:SetScript("OnShow",frameOnShow) frame:SetScript("OnHide",frameOnClose) - frame:SetMinResize(240,240) + if frame.SetResizeBounds then -- WoW 10.0 + frame:SetResizeBounds(240,240) + else + frame:SetMinResize(240,240) + end frame:SetToplevel(true) local titlebg = frame:CreateTexture(nil, "BACKGROUND") @@ -300,7 +300,7 @@ do line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border - local x = 0.1 * 8/17 + x = 0.1 * 8/17 line2:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) local sizer_s = CreateFrame("Frame",nil,frame) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua index 53ef618..fe17e03 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua @@ -12,10 +12,6 @@ local select, pairs = select, pairs local PlaySound = PlaySound local CreateFrame, UIParent = CreateFrame, UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: SetDesaturation, GameFontHighlight - --[[----------------------------------------------------------------------------- Support functions -------------------------------------------------------------------------------]] @@ -199,14 +195,14 @@ local methods = { ["SetDescription"] = function(self, desc) if desc then if not self.desc then - local desc = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") - desc:ClearAllPoints() - desc:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21) - desc:SetWidth(self.frame.width - 30) - desc:SetPoint("RIGHT", self.frame, "RIGHT", -30, 0) - desc:SetJustifyH("LEFT") - desc:SetJustifyV("TOP") - self.desc = desc + local f = self.frame:CreateFontString(nil, "OVERLAY", "GameFontHighlightSmall") + f:ClearAllPoints() + f:SetPoint("TOPLEFT", self.checkbg, "TOPRIGHT", 5, -21) + f:SetWidth(self.frame.width - 30) + f:SetPoint("RIGHT", self.frame, "RIGHT", -30, 0) + f:SetJustifyH("LEFT") + f:SetJustifyV("TOP") + self.desc = f end self.desc:Show() --self.text:SetFontObject(GameFontNormal) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua index 1101162..d57b008 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua @@ -11,10 +11,6 @@ local pairs = pairs -- WoW APIs local CreateFrame, UIParent = CreateFrame, UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: ColorPickerFrame, OpacitySliderFrame - --[[----------------------------------------------------------------------------- Support functions -------------------------------------------------------------------------------]] diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua index 7ae1401..947184c 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown-Items.lua 1202 2019-05-15 23:11:22Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown-Items.lua 1272 2022-08-29 15:56:35Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") @@ -41,7 +41,7 @@ local ItemBase = { -- NOTE: The ItemBase version is added to each item's version number -- to ensure proper updates on ItemBase changes. -- Use at least 1000er steps. - version = 1000, + version = 2000, counter = 0, } @@ -178,7 +178,7 @@ function ItemBase.Create(type) highlight:Hide() self.highlight = highlight - local check = frame:CreateTexture("OVERLAY") + local check = frame:CreateTexture(nil, "OVERLAY") check:SetWidth(16) check:SetHeight(16) check:SetPoint("LEFT",frame,"LEFT",3,-1) @@ -186,7 +186,7 @@ function ItemBase.Create(type) check:Hide() self.check = check - local sub = frame:CreateTexture("OVERLAY") + local sub = frame:CreateTexture(nil, "OVERLAY") sub:SetWidth(16) sub:SetHeight(16) sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua index 0d6308f..59c7f53 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown.lua 1209 2019-06-24 21:01:01Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown.lua 1284 2022-09-25 09:15:30Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") -- Lua APIs @@ -11,10 +11,6 @@ local PlaySound = PlaySound local UIParent, CreateFrame = UIParent, CreateFrame local _G = _G --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: CLOSE - local function fixlevels(parent,...) local i = 1 local child = select(i, ...) @@ -39,7 +35,7 @@ end do local widgetType = "Dropdown-Pullout" - local widgetVersion = 3 + local widgetVersion = 5 --[[ Static data ]]-- @@ -193,12 +189,7 @@ do local height = 8 for i, item in pairs(items) do - if i == 1 then - item:SetPoint("TOP", itemFrame, "TOP", 0, -2) - else - item:SetPoint("TOP", items[i-1].frame, "BOTTOM", 0, 1) - end - + item:SetPoint("TOP", itemFrame, "TOP", 0, -2 + (i - 1) * -16) item:Show() height = height + 16 @@ -258,7 +249,7 @@ do local function Constructor() local count = AceGUI:GetNextWidgetNum(widgetType) - local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent) + local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent, "BackdropTemplate") local self = {} self.count = count self.type = widgetType @@ -309,7 +300,7 @@ do scrollFrame.obj = self itemFrame.obj = self - local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame) + local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame, "BackdropTemplate") slider:SetOrientation("VERTICAL") slider:SetHitRectInsets(0, 0, -10, 0) slider:SetBackdrop(sliderBackdrop) @@ -356,7 +347,7 @@ end do local widgetType = "Dropdown" - local widgetVersion = 34 + local widgetVersion = 36 --[[ Static data ]]-- @@ -381,7 +372,6 @@ do local function Dropdown_TogglePullout(this) local self = this.obj - PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON if self.open then self.open = nil self.pullout:Close() @@ -465,6 +455,7 @@ do self:SetWidth(200) self:SetLabel() self:SetPulloutWidth(nil) + self.list = {} end -- exported, AceGUI callback @@ -535,9 +526,7 @@ do -- exported local function SetValue(self, value) - if self.list then - self:SetText(self.list[value] or "") - end + self:SetText(self.list[value] or "") self.value = value end @@ -601,7 +590,7 @@ do end end local function SetList(self, list, order, itemType) - self.list = list + self.list = list or {} self.pullout:Clear() self.hasClose = nil if not list then return end @@ -629,10 +618,8 @@ do -- exported local function AddItem(self, value, text, itemType) - if self.list then - self.list[value] = text - AddListItem(self, value, text, itemType) - end + self.list[value] = text + AddListItem(self, value, text, itemType) end -- exported diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua index 29f7e00..bb1e4fd 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua @@ -14,10 +14,6 @@ local GetCursorInfo, ClearCursor, GetSpellInfo = GetCursorInfo, ClearCursor, Get local CreateFrame, UIParent = CreateFrame, UIParent local _G = _G --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: AceGUIEditBoxInsertLink, ChatFontNormal, OKAY - --[[----------------------------------------------------------------------------- Support functions -------------------------------------------------------------------------------]] diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua index ec4cead..0c779dc 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua @@ -2,7 +2,7 @@ Keybinding Widget Set Keybindings in the Config UI. -------------------------------------------------------------------------------]] -local Type, Version = "Keybinding", 25 +local Type, Version = "Keybinding", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -13,10 +13,6 @@ local pairs = pairs local IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown = IsShiftKeyDown, IsControlKeyDown, IsAltKeyDown local CreateFrame, UIParent = CreateFrame, UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: NOT_BOUND - --[[----------------------------------------------------------------------------- Scripts -------------------------------------------------------------------------------]] @@ -214,7 +210,7 @@ local function Constructor() label:SetJustifyH("CENTER") label:SetHeight(18) - local msgframe = CreateFrame("Frame", nil, UIParent) + local msgframe = CreateFrame("Frame", nil, UIParent, "BackdropTemplate") msgframe:SetHeight(30) msgframe:SetBackdrop(ControlBackdrop) msgframe:SetBackdropColor(0,0,0) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua index eec999e..d0841ef 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua @@ -2,7 +2,7 @@ Label Widget Displays text and optionally an icon. -------------------------------------------------------------------------------]] -local Type, Version = "Label", 26 +local Type, Version = "Label", 28 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -12,10 +12,6 @@ local max, select, pairs = math.max, select, pairs -- WoW APIs local CreateFrame, UIParent = CreateFrame, UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: GameFontHighlightSmall - --[[----------------------------------------------------------------------------- Support functions -------------------------------------------------------------------------------]] @@ -129,11 +125,16 @@ local methods = { end, ["SetFont"] = function(self, font, height, flags) - self.label:SetFont(font, height, flags) + if not self.fontObject then + self.fontObject = CreateFont("AceGUI30LabelFont" .. AceGUI:GetNextWidgetNum(Type)) + end + self.fontObject:SetFont(font, height, flags) + self:SetFontObject(self.fontObject) end, ["SetFontObject"] = function(self, font) - self:SetFont((font or GameFontHighlightSmall):GetFont()) + self.label:SetFontObject(font or GameFontHighlightSmall) + UpdateImageAnchor(self) end, ["SetImageSize"] = function(self, width, height) diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua index f702110..bacb2be 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua @@ -1,4 +1,4 @@ -local Type, Version = "MultiLineEditBox", 28 +local Type, Version = "MultiLineEditBox", 32 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -10,10 +10,6 @@ local GetCursorInfo, GetSpellInfo, ClearCursor = GetCursorInfo, GetSpellInfo, Cl local CreateFrame, UIParent = CreateFrame, UIParent local _G = _G --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: ACCEPT, ChatFontNormal - --[[----------------------------------------------------------------------------- Support functions -------------------------------------------------------------------------------]] @@ -145,6 +141,14 @@ local function OnVerticalScroll(self, offset) editBox:SetHitRectInsets(0, 0, offset, editBox:GetHeight() - offset - self:GetHeight()) end +local function OnScrollRangeChanged(self, xrange, yrange) + if yrange == 0 then + self.obj.editBox:SetHitRectInsets(0, 0, 0, 0) + else + OnVerticalScroll(self, self:GetVerticalScroll()) + end +end + local function OnShowFocus(frame) frame.obj.editBox:SetFocus() frame:SetScript("OnShow", nil) @@ -257,8 +261,6 @@ local methods = { ["SetCursorPosition"] = function(self, ...) return self.editBox:SetCursorPosition(...) end, - - } --[[----------------------------------------------------------------------------- @@ -297,7 +299,7 @@ local function Constructor() text:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", -5, 1) text:SetJustifyV("MIDDLE") - local scrollBG = CreateFrame("Frame", nil, frame) + local scrollBG = CreateFrame("Frame", nil, frame, "BackdropTemplate") scrollBG:SetBackdrop(backdrop) scrollBG:SetBackdropColor(0, 0, 0) scrollBG:SetBackdropBorderColor(0.4, 0.4, 0.4) @@ -321,6 +323,7 @@ local function Constructor() scrollFrame:SetScript("OnReceiveDrag", OnReceiveDrag) scrollFrame:SetScript("OnSizeChanged", OnSizeChanged) scrollFrame:HookScript("OnVerticalScroll", OnVerticalScroll) + scrollFrame:HookScript("OnScrollRangeChanged", OnScrollRangeChanged) local editBox = CreateFrame("EditBox", ("%s%dEdit"):format(Type, widgetNum), scrollFrame) editBox:SetAllPoints() diff --git a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua index 019c84e..483d400 100644 --- a/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua +++ b/Damnation/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua @@ -2,7 +2,7 @@ Slider Widget Graphical Slider, like, for Range values. -------------------------------------------------------------------------------]] -local Type, Version = "Slider", 22 +local Type, Version = "Slider", 23 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -14,10 +14,6 @@ local tonumber, pairs = tonumber, pairs local PlaySound = PlaySound local CreateFrame, UIParent = CreateFrame, UIParent --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: GameFontHighlightSmall - --[[----------------------------------------------------------------------------- Support functions -------------------------------------------------------------------------------]] @@ -31,13 +27,13 @@ local function UpdateText(self) end local function UpdateLabels(self) - local min, max = (self.min or 0), (self.max or 100) + local min_value, max_value = (self.min or 0), (self.max or 100) if self.ispercent then - self.lowtext:SetFormattedText("%s%%", (min * 100)) - self.hightext:SetFormattedText("%s%%", (max * 100)) + self.lowtext:SetFormattedText("%s%%", (min_value * 100)) + self.hightext:SetFormattedText("%s%%", (max_value * 100)) else - self.lowtext:SetText(min) - self.hightext:SetText(max) + self.lowtext:SetText(min_value) + self.hightext:SetText(max_value) end end @@ -175,13 +171,13 @@ local methods = { self.label:SetText(text) end, - ["SetSliderValues"] = function(self, min, max, step) + ["SetSliderValues"] = function(self, min_value, max_value, step) local frame = self.slider frame.setup = true - self.min = min - self.max = max + self.min = min_value + self.max = max_value self.step = step - frame:SetMinMaxValues(min or 0,max or 100) + frame:SetMinMaxValues(min_value or 0,max_value or 100) UpdateLabels(self) frame:SetValueStep(step or 1) if self.value then @@ -225,7 +221,7 @@ local function Constructor() label:SetJustifyH("CENTER") label:SetHeight(15) - local slider = CreateFrame("Slider", nil, frame) + local slider = CreateFrame("Slider", nil, frame, "BackdropTemplate") slider:SetOrientation("HORIZONTAL") slider:SetHeight(15) slider:SetHitRectInsets(0, 0, -10, 0) @@ -247,7 +243,7 @@ local function Constructor() local hightext = slider:CreateFontString(nil, "ARTWORK", "GameFontHighlightSmall") hightext:SetPoint("TOPRIGHT", slider, "BOTTOMRIGHT", -2, 3) - local editbox = CreateFrame("EditBox", nil, frame) + local editbox = CreateFrame("EditBox", nil, frame, "BackdropTemplate") editbox:SetAutoFocus(false) editbox:SetFontObject(GameFontHighlightSmall) editbox:SetPoint("TOP", slider, "BOTTOM") diff --git a/Damnation/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua b/Damnation/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua index a8377fe..6b32193 100644 --- a/Damnation/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua +++ b/Damnation/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua @@ -1,5 +1,5 @@ ---[[ $Id: CallbackHandler-1.0.lua 1186 2018-07-21 14:19:18Z nevcairiel $ ]] -local MAJOR, MINOR = "CallbackHandler-1.0", 7 +--[[ $Id: CallbackHandler-1.0.lua 1298 2022-12-12 15:10:10Z nevcairiel $ ]] +local MAJOR, MINOR = "CallbackHandler-1.0", 8 local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) if not CallbackHandler then return end -- No upgrade needed @@ -7,26 +7,16 @@ if not CallbackHandler then return end -- No upgrade needed local meta = {__index = function(tbl, key) tbl[key] = {} return tbl[key] end} -- Lua APIs -local tconcat = table.concat -local assert, error, loadstring = assert, error, loadstring -local setmetatable, rawset, rawget = setmetatable, rawset, rawget +local securecallfunction, error = securecallfunction, error +local setmetatable, rawget = setmetatable, rawget local next, select, pairs, type, tostring = next, select, pairs, type, tostring --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: geterrorhandler - -local xpcall = xpcall - -local function errorhandler(err) - return geterrorhandler()(err) -end local function Dispatch(handlers, ...) local index, method = next(handlers) if not method then return end repeat - xpcall(method, errorhandler, ...) + securecallfunction(method, ...) index, method = next(handlers, index) until not method end @@ -39,7 +29,7 @@ end -- UnregisterName - name of the callback unregistration API, default "UnregisterCallback" -- UnregisterAllName - name of the API to unregister all callbacks, default "UnregisterAllCallbacks". false == don't publish this API. -function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName) +function CallbackHandler.New(_self, target, RegisterName, UnregisterName, UnregisterAllName) RegisterName = RegisterName or "RegisterCallback" UnregisterName = UnregisterName or "UnregisterCallback" @@ -67,13 +57,13 @@ function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAll if registry.insertQueue and oldrecurse==0 then -- Something in one of our callbacks wanted to register more callbacks; they got queued - for eventname,callbacks in pairs(registry.insertQueue) do - local first = not rawget(events, eventname) or not next(events[eventname]) -- test for empty before. not test for one member after. that one member may have been overwritten. - for self,func in pairs(callbacks) do - events[eventname][self] = func + for event,callbacks in pairs(registry.insertQueue) do + local first = not rawget(events, event) or not next(events[event]) -- test for empty before. not test for one member after. that one member may have been overwritten. + for object,func in pairs(callbacks) do + events[event][object] = func -- fire OnUsed callback? if first and registry.OnUsed then - registry.OnUsed(registry, target, eventname) + registry.OnUsed(registry, target, event) first = nil end end diff --git a/Damnation/Libs/LibStub/LibStub.lua b/Damnation/Libs/LibStub/LibStub.lua index 0a41ac0..d50c267 100644 --- a/Damnation/Libs/LibStub/LibStub.lua +++ b/Damnation/Libs/LibStub/LibStub.lua @@ -7,24 +7,24 @@ if not LibStub or LibStub.minor < LIBSTUB_MINOR then LibStub = LibStub or {libs = {}, minors = {} } _G[LIBSTUB_MAJOR] = LibStub LibStub.minor = LIBSTUB_MINOR - + function LibStub:NewLibrary(major, minor) assert(type(major) == "string", "Bad argument #2 to `NewLibrary' (string expected)") - minor = assert(tonumber(strmatch(minor, "%d+")), "Minor version must either be a number or contain a number.") - + minor = assert(tonumber(string.match(minor, "%d+")), "Minor version must either be a number or contain a number.") + local oldminor = self.minors[major] if oldminor and oldminor >= minor then return nil end self.minors[major], self.libs[major] = minor, self.libs[major] or {} return self.libs[major], oldminor end - + function LibStub:GetLibrary(major, silent) if not self.libs[major] and not silent then error(("Cannot find a library instance of %q."):format(tostring(major)), 2) end return self.libs[major], self.minors[major] end - + function LibStub:IterateLibraries() return pairs(self.libs) end setmetatable(LibStub, { __call = LibStub.GetLibrary }) end