diff --git a/Titan/Titan.toc b/Titan/Titan.toc index 690755d..aa9b4f3 100644 --- a/Titan/Titan.toc +++ b/Titan/Titan.toc @@ -1,7 +1,7 @@ ## Interface: 80200 -## Title: Titan Panel |cff00aa005.17.5.80200|r +## Title: Titan Panel |cff00aa005.18.0.80200|r ## Author: Titan Panel Development Team -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## SavedVariables: TitanAll, TitanSettings, TitanSkins, ServerTimeOffsets, ServerHourFormat ## OptionalDeps: Ace3, AceGUI-3.0-SharedMediaWidgets, LibSharedMedia-3.0, LibQTip-1.0, !LibUIDropDownMenu ## Notes: Adds a display bar on the top and/or bottom of the screen. Allows users to show and control information/launcher plugins. diff --git a/Titan/libs/Ace3.lua b/Titan/libs/Ace3.lua index fb0a3fa..aef37e7 100755 --- a/Titan/libs/Ace3.lua +++ b/Titan/libs/Ace3.lua @@ -60,14 +60,14 @@ function Ace3:Open() self:Print("No Configs are Registered") return end - + if not frame then frame = gui:Create("Frame") frame:ReleaseChildren() frame:SetTitle("Ace3 Options") frame:SetLayout("FILL") frame:SetCallback("OnClose", frameOnClose) - + select = gui:Create("DropdownGroup") select:SetGroupList(configs) select:SetCallback("OnGroupSelected", ConfigSelected) diff --git a/Titan/libs/Ace3.toc b/Titan/libs/Ace3.toc index 0d3e5ce..6faf538 100755 --- a/Titan/libs/Ace3.toc +++ b/Titan/libs/Ace3.toc @@ -1,4 +1,4 @@ -## Interface: 80100 +## Interface: 80200 ## Title: Lib: Ace3 ## Notes: AddOn development framework diff --git a/Titan/libs/AceAddon-3.0/AceAddon-3.0.lua b/Titan/libs/AceAddon-3.0/AceAddon-3.0.lua index b338695..791bc77 100755 --- a/Titan/libs/AceAddon-3.0/AceAddon-3.0.lua +++ b/Titan/libs/AceAddon-3.0/AceAddon-3.0.lua @@ -6,29 +6,29 @@ -- * **OnEnable** which gets called during the PLAYER_LOGIN event, when most of the data provided by the game is already present. -- * **OnDisable**, which is only called when your addon is manually being disabled. -- @usage --- -- A small (but complete) addon, that doesn't do anything, +-- -- A small (but complete) addon, that doesn't do anything, -- -- but shows usage of the callbacks. -- local MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") --- +-- -- function MyAddon:OnInitialize() --- -- do init tasks here, like loading the Saved Variables, +-- -- do init tasks here, like loading the Saved Variables, -- -- or setting up slash commands. -- end --- +-- -- function MyAddon:OnEnable() -- -- Do more initialization here, that really enables the use of your addon. --- -- Register Events, Hook functions, Create Frames, Get information from +-- -- Register Events, Hook functions, Create Frames, Get information from -- -- the game that wasn't available in OnInitialize -- end -- -- function MyAddon:OnDisable() -- -- Unhook, Unregister Events, Hide frames that you created. --- -- You would probably only use an OnDisable if you want to +-- -- You would probably only use an OnDisable if you want to -- -- build a "standby" mode, or be able to toggle modules on/off. -- end -- @class file -- @name AceAddon-3.0.lua --- @release $Id: AceAddon-3.0.lua 1084 2013-04-27 20:14:11Z nevcairiel $ +-- @release $Id: AceAddon-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ local MAJOR, MINOR = "AceAddon-3.0", 12 local AceAddon, oldminor = LibStub:NewLibrary(MAJOR, MINOR) @@ -62,43 +62,12 @@ local function errorhandler(err) return geterrorhandler()(err) end -local function CreateDispatcher(argCount) - local code = [[ - local xpcall, eh = ... - local method, ARGS - local function call() return method(ARGS) end - - local function dispatch(func, ...) - method = func - if not method then return end - ARGS = ... - return xpcall(call, eh) - end - - return dispatch - ]] - - local ARGS = {} - for i = 1, argCount do ARGS[i] = "arg"..i end - code = code:gsub("ARGS", tconcat(ARGS, ", ")) - return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler) -end - -local Dispatchers = setmetatable({}, {__index=function(self, argCount) - local dispatcher = CreateDispatcher(argCount) - rawset(self, argCount, dispatcher) - return dispatcher -end}) -Dispatchers[0] = function(func) - return xpcall(func, errorhandler) -end - local function safecall(func, ...) -- we check to see if the func is passed is actually a function here and don't error when it isn't -- this safecall is used for optional functions like OnInitialize OnEnable etc. When they are not -- present execution should continue without hinderance if type(func) == "function" then - return Dispatchers[select('#', ...)](func, ...) + return xpcall(func, errorhandler, ...) end end @@ -106,7 +75,7 @@ end local Enable, Disable, EnableModule, DisableModule, Embed, NewModule, GetModule, GetName, SetDefaultModuleState, SetDefaultModuleLibraries, SetEnabledState, SetDefaultModulePrototype -- used in the addon metatable -local function addontostring( self ) return self.name end +local function addontostring( self ) return self.name end -- Check if the addon is queued for initialization local function queuedForInitialization(addon) @@ -119,14 +88,14 @@ local function queuedForInitialization(addon) end --- Create a new AceAddon-3.0 addon. --- Any libraries you specified will be embeded, and the addon will be scheduled for +-- Any libraries you specified will be embeded, and the addon will be scheduled for -- its OnInitialize and OnEnable callbacks. -- The final addon object, with all libraries embeded, will be returned. -- @paramsig [object ,]name[, lib, ...] -- @param object Table to use as a base for the addon (optional) -- @param name Name of the addon object to create -- @param lib List of libraries to embed into the addon --- @usage +-- @usage -- -- Create a simple addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceEvent-3.0") -- @@ -146,10 +115,10 @@ function AceAddon:NewAddon(objectorname, ...) if type(name)~="string" then error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - string expected got '%s'."):format(type(name)), 2) end - if self.addons[name] then + if self.addons[name] then error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - Addon '%s' already exists."):format(name), 2) end - + object = object or {} object.name = name @@ -159,7 +128,7 @@ function AceAddon:NewAddon(objectorname, ...) for k, v in pairs(oldmeta) do addonmeta[k] = v end end addonmeta.__tostring = addontostring - + setmetatable( object, addonmeta ) self.addons[name] = object object.modules = {} @@ -167,7 +136,7 @@ function AceAddon:NewAddon(objectorname, ...) object.defaultModuleLibraries = {} Embed( object ) -- embed NewModule, GetModule methods self:EmbedLibraries(object, select(i,...)) - + -- add to queue of addons to be initialized upon ADDON_LOADED tinsert(self.initializequeue, object) return object @@ -178,7 +147,7 @@ end -- Throws an error if the addon object cannot be found (except if silent is set). -- @param name unique name of the addon object -- @param silent if true, the addon is optional, silently return nil if its not found --- @usage +-- @usage -- -- Get the Addon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") function AceAddon:GetAddon(name, silent) @@ -233,7 +202,7 @@ end -- @paramsig name[, silent] -- @param name unique name of the module -- @param silent if true, the module is optional, silently return nil if its not found (optional) --- @usage +-- @usage -- -- Get the Addon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- -- Get the Module @@ -256,23 +225,23 @@ local function IsModuleTrue(self) return true end -- @param name unique name of the module -- @param prototype object to derive this module from, methods and values from this table will be mixed into the module (optional) -- @param lib List of libraries to embed into the addon --- @usage +-- @usage -- -- Create a module with some embeded libraries -- MyModule = MyAddon:NewModule("MyModule", "AceEvent-3.0", "AceHook-3.0") --- +-- -- -- Create a module with a prototype -- local prototype = { OnEnable = function(self) print("OnEnable called!") end } -- MyModule = MyAddon:NewModule("MyModule", prototype, "AceEvent-3.0", "AceHook-3.0") function NewModule(self, name, prototype, ...) if type(name) ~= "string" then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'name' - string expected got '%s'."):format(type(name)), 2) end if type(prototype) ~= "string" and type(prototype) ~= "table" and type(prototype) ~= "nil" then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'prototype' - table (prototype), string (lib) or nil expected got '%s'."):format(type(prototype)), 2) end - + if self.modules[name] then error(("Usage: NewModule(name, [prototype, [lib, lib, lib, ...]): 'name' - Module '%s' already exists."):format(name), 2) end - + -- modules are basically addons. We treat them as such. They will be added to the initializequeue properly as well. -- NewModule can only be called after the parent addon is present thus the modules will be initialized after their parent is. local module = AceAddon:NewAddon(fmt("%s_%s", self.name or tostring(self), name)) - + module.IsModule = IsModuleTrue module:SetEnabledState(self.defaultModuleState) module.moduleName = name @@ -287,24 +256,24 @@ function NewModule(self, name, prototype, ...) if not prototype or type(prototype) == "string" then prototype = self.defaultModulePrototype or nil end - + if type(prototype) == "table" then local mt = getmetatable(module) mt.__index = prototype setmetatable(module, mt) -- More of a Base class type feel. end - + safecall(self.OnModuleCreated, self, module) -- Was in Ace2 and I think it could be a cool thing to have handy. self.modules[name] = module tinsert(self.orderedModules, module) - + return module end --- Returns the real name of the addon or module, without any prefix. -- @name //addon//:GetName --- @paramsig --- @usage +-- @paramsig +-- @usage -- print(MyAddon:GetName()) -- -- prints "MyAddon" function GetName(self) @@ -316,8 +285,8 @@ end -- and enabling all modules of the addon (unless explicitly disabled).\\ -- :Enable() also sets the internal `enableState` variable to true -- @name //addon//:Enable --- @paramsig --- @usage +-- @paramsig +-- @usage -- -- Enable MyModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") @@ -337,8 +306,8 @@ end -- and disabling all modules of the addon.\\ -- :Disable() also sets the internal `enableState` variable to false -- @name //addon//:Disable --- @paramsig --- @usage +-- @paramsig +-- @usage -- -- Disable MyAddon -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyAddon:Disable() @@ -351,7 +320,7 @@ end -- Short-hand function that retrieves the module via `:GetModule` and calls `:Enable` on the module object. -- @name //addon//:EnableModule -- @paramsig name --- @usage +-- @usage -- -- Enable MyModule using :GetModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") @@ -369,7 +338,7 @@ end -- Short-hand function that retrieves the module via `:GetModule` and calls `:Disable` on the module object. -- @name //addon//:DisableModule -- @paramsig name --- @usage +-- @usage -- -- Disable MyModule using :GetModule -- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -- MyModule = MyAddon:GetModule("MyModule") @@ -388,7 +357,7 @@ end -- @name //addon//:SetDefaultModuleLibraries -- @paramsig lib[, lib, ...] -- @param lib List of libraries to embed into the addon --- @usage +-- @usage -- -- Create the addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") -- -- Configure default libraries for modules (all modules need AceEvent-3.0) @@ -407,7 +376,7 @@ end -- @name //addon//:SetDefaultModuleState -- @paramsig state -- @param state Default state for new modules, true for enabled, false for disabled --- @usage +-- @usage -- -- Create the addon object -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") -- -- Set the default state to "disabled" @@ -427,7 +396,7 @@ end -- @name //addon//:SetDefaultModulePrototype -- @paramsig prototype -- @param prototype Default prototype for the new modules (table) --- @usage +-- @usage -- -- Define a prototype -- local prototype = { OnEnable = function(self) print("OnEnable called!") end } -- -- Set the default prototype @@ -459,8 +428,8 @@ end --- Return an iterator of all modules associated to the addon. -- @name //addon//:IterateModules --- @paramsig --- @usage +-- @paramsig +-- @usage -- -- Enable all modules -- for name, module in MyAddon:IterateModules() do -- module:Enable() @@ -469,13 +438,13 @@ local function IterateModules(self) return pairs(self.modules) end -- Returns an iterator of all embeds in the addon -- @name //addon//:IterateEmbeds --- @paramsig +-- @paramsig local function IterateEmbeds(self) return pairs(AceAddon.embeds[self]) end --- Query the enabledState of an addon. -- @name //addon//:IsEnabled --- @paramsig --- @usage +-- @paramsig +-- @usage -- if MyAddon:IsEnabled() then -- MyAddon:Disable() -- end @@ -520,20 +489,20 @@ end -- - Initialize the addon after creation. -- This function is only used internally during the ADDON_LOADED event --- It will call the **OnInitialize** function on the addon object (if present), +-- It will call the **OnInitialize** function on the addon object (if present), -- and the **OnEmbedInitialize** function on all embeded libraries. --- +-- -- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. -- @param addon addon object to intialize function AceAddon:InitializeAddon(addon) safecall(addon.OnInitialize, addon) - + local embeds = self.embeds[addon] for i = 1, #embeds do local lib = LibStub:GetLibrary(embeds[i], true) if lib then safecall(lib.OnEmbedInitialize, lib, addon) end end - + -- we don't call InitializeAddon on modules specifically, this is handled -- from the event handler and only done _once_ end @@ -541,7 +510,7 @@ end -- - Enable the addon after creation. -- Note: This function is only used internally during the PLAYER_LOGIN event, or during ADDON_LOADED, -- if IsLoggedIn() already returns true at that point, e.g. for LoD Addons. --- It will call the **OnEnable** function on the addon object (if present), +-- It will call the **OnEnable** function on the addon object (if present), -- and the **OnEmbedEnable** function on all embeded libraries.\\ -- This function does not toggle the enable state of the addon itself, and will return early if the addon is disabled. -- @@ -551,12 +520,12 @@ end function AceAddon:EnableAddon(addon) if type(addon) == "string" then addon = AceAddon:GetAddon(addon) end if self.statuses[addon.name] or not addon.enabledState then return false end - + -- set the statuses first, before calling the OnEnable. this allows for Disabling of the addon in OnEnable. self.statuses[addon.name] = true - + safecall(addon.OnEnable, addon) - + -- make sure we're still enabled before continueing if self.statuses[addon.name] then local embeds = self.embeds[addon] @@ -564,7 +533,7 @@ function AceAddon:EnableAddon(addon) local lib = LibStub:GetLibrary(embeds[i], true) if lib then safecall(lib.OnEmbedEnable, lib, addon) end end - + -- enable possible modules. local modules = addon.orderedModules for i = 1, #modules do @@ -576,24 +545,24 @@ end -- - Disable the addon -- Note: This function is only used internally. --- It will call the **OnDisable** function on the addon object (if present), +-- It will call the **OnDisable** function on the addon object (if present), -- and the **OnEmbedDisable** function on all embeded libraries.\\ -- This function does not toggle the enable state of the addon itself, and will return early if the addon is still enabled. -- --- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. +-- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. -- Use :Disable on the addon itself instead. -- @param addon addon object to enable function AceAddon:DisableAddon(addon) if type(addon) == "string" then addon = AceAddon:GetAddon(addon) end if not self.statuses[addon.name] then return false end - + -- set statuses first before calling OnDisable, this allows for aborting the disable in OnDisable. self.statuses[addon.name] = false - + safecall( addon.OnDisable, addon ) - + -- make sure we're still disabling... - if not self.statuses[addon.name] then + if not self.statuses[addon.name] then local embeds = self.embeds[addon] for i = 1, #embeds do local lib = LibStub:GetLibrary(embeds[i], true) @@ -605,12 +574,12 @@ function AceAddon:DisableAddon(addon) self:DisableAddon(modules[i]) end end - + return not self.statuses[addon.name] -- return true if we're disabled end --- Get an iterator over all registered addons. --- @usage +-- @usage -- -- Print a list of all installed AceAddon's -- for name, addon in AceAddon:IterateAddons() do -- print("Addon: " .. name) @@ -618,7 +587,7 @@ end function AceAddon:IterateAddons() return pairs(self.addons) end --- Get an iterator over the internal status registry. --- @usage +-- @usage -- -- Print a list of all enabled addons -- for name, status in AceAddon:IterateAddonStatus() do -- if status then @@ -644,7 +613,7 @@ local function onEvent(this, event, arg1) AceAddon:InitializeAddon(addon) tinsert(AceAddon.enablequeue, addon) end - + if IsLoggedIn() then while(#AceAddon.enablequeue > 0) do local addon = tremove(AceAddon.enablequeue, 1) diff --git a/Titan/libs/AceConfig-3.0/AceConfig-3.0.lua b/Titan/libs/AceConfig-3.0/AceConfig-3.0.lua index c2ac7cc..aae348b 100755 --- a/Titan/libs/AceConfig-3.0/AceConfig-3.0.lua +++ b/Titan/libs/AceConfig-3.0/AceConfig-3.0.lua @@ -3,7 +3,7 @@ -- as well as associate it with a slash command. -- @class file -- @name AceConfig-3.0 --- @release $Id: AceConfig-3.0.lua 1161 2017-08-12 14:30:16Z funkydude $ +-- @release $Id: AceConfig-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ --[[ AceConfig-3.0 @@ -45,7 +45,7 @@ local pcall, error, type, pairs = pcall, error, type, pairs function AceConfig:RegisterOptionsTable(appName, options, slashcmd) local ok,msg = pcall(cfgreg.RegisterOptionsTable, self, appName, options) if not ok then error(msg, 2) end - + if slashcmd then if type(slashcmd) == "table" then for _,cmd in pairs(slashcmd) do diff --git a/Titan/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua b/Titan/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua index 7902fd1..8bac7e3 100755 --- a/Titan/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua +++ b/Titan/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 1161 2017-08-12 14:30:16Z funkydude $ +-- @release $Id: AceConfigCmd-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ --[[ AceConfigCmd-3.0 @@ -63,7 +63,7 @@ local funcmsg = "expected function or member name" -- pickfirstset() - picks the first non-nil value and returns it -local function pickfirstset(...) +local function pickfirstset(...) for i=1,select("#",...) do if select(i,...)~=nil then return select(i,...) @@ -120,7 +120,7 @@ local function callfunction(info, tab, methodtype, ...) info.arg = tab.arg info.option = tab info.type = tab.type - + if type(method)=="function" then return method(info, ...) else @@ -131,7 +131,7 @@ end -- do_final() - do the final step (set/execute) along with validation and confirmation local function do_final(info, inputpos, tab, methodtype, ...) - if info.validate then + if info.validate then local res = callmethod(info,inputpos,tab,"validate",...) if type(res)=="string" then usererr(info, inputpos, "'"..strsub(info.input, inputpos).."' - "..res) @@ -139,7 +139,7 @@ local function do_final(info, inputpos, tab, methodtype, ...) end end -- console ignores .confirm - + callmethod(info,inputpos,tab,methodtype, ...) end @@ -152,8 +152,8 @@ local function getparam(info, inputpos, tab, depth, paramname, types, errormsg) if val~=nil then if val==false then val=nil - elseif not types[type(val)] then - err(info, inputpos, "'" .. paramname.. "' - "..errormsg) + elseif not types[type(val)] then + err(info, inputpos, "'" .. paramname.. "' - "..errormsg) end info[paramname] = val info[paramname.."_at"] = depth @@ -166,13 +166,13 @@ end local dummytable={} local function iterateargs(tab) - if not tab.plugins then - return pairs(tab.args) + if not tab.plugins then + return pairs(tab.args) end - + local argtabkey,argtab=next(tab.plugins) local v - + return function(_, k) while argtab do k,v = next(argtab, k) @@ -206,18 +206,18 @@ local function showhelp(info, inputpos, tab, depth, noHead) if not noHead then print("|cff33ff99"..info.appName.."|r: Arguments to |cffffff78/"..info[0].."|r "..strsub(info.input,1,inputpos-1)..":") end - + local sortTbl = {} -- [1..n]=name local refTbl = {} -- [name]=tableref - + for k,v in iterateargs(tab) do if not refTbl[k] then -- a plugin overriding something in .args tinsert(sortTbl, k) refTbl[k] = v end end - - tsort(sortTbl, function(one, two) + + tsort(sortTbl, function(one, two) local o1 = refTbl[one].order or 100 local o2 = refTbl[two].order or 100 if type(o1) == "function" or type(o1) == "string" then @@ -240,7 +240,7 @@ local function showhelp(info, inputpos, tab, depth, noHead) if o1==o2 then return tostring(one)<tostring(two) end -- compare names return o1<o2 end) - + for i = 1, #sortTbl do local k = sortTbl[i] local v = refTbl[k] @@ -327,7 +327,7 @@ local function keybindingValidateFunc(text) return s end --- handle() - selfrecursing function that processes input->optiontable +-- handle() - selfrecursing function that processes input->optiontable -- - depth - starts at 0 -- - retfalse - return false rather than produce error if a match is not found (used by inlined groups) @@ -346,16 +346,16 @@ local function handle(info, inputpos, tab, depth, retfalse) local oldfunc,oldfunc_at = getparam(info,inputpos,tab,depth,"func",functypes,funcmsg) local oldvalidate,oldvalidate_at = getparam(info,inputpos,tab,depth,"validate",functypes,funcmsg) --local oldconfirm,oldconfirm_at = getparam(info,inputpos,tab,depth,"confirm",functypes,funcmsg) - + ------------------------------------------------------------------- -- Act according to .type of this table - + if tab.type=="group" then ------------ group -------------------------------------------- - + if type(tab.args)~="table" then err(info, inputpos) end if tab.plugins and type(tab.plugins)~="table" then err(info,inputpos) end - + -- grab next arg from input local _,nextpos,arg = (info.input):find(" *([^ ]+) *", inputpos) if not arg then @@ -363,11 +363,11 @@ local function handle(info, inputpos, tab, depth, retfalse) return end nextpos=nextpos+1 - + -- loop .args and try to find a key with a matching name for k,v in iterateargs(tab) do if not(type(k)=="string" and type(v)=="table" and type(v.type)=="string") then err(info,inputpos, "options table child '"..tostring(k).."' is malformed") end - + -- is this child an inline group? if so, traverse into it if v.type=="group" and pickfirstset(v.cmdInline, v.inline, false) then info[depth+1] = k @@ -383,8 +383,8 @@ local function handle(info, inputpos, tab, depth, retfalse) return handle(info,nextpos,v,depth+1) end end - - -- no match + + -- no match if retfalse then -- restore old infotable members and return false to indicate failure info.handler,info.handler_at = oldhandler,oldhandler_at @@ -395,23 +395,23 @@ local function handle(info, inputpos, tab, depth, retfalse) --info.confirm,info.confirm_at = oldconfirm,oldconfirm_at return false end - + -- couldn't find the command, display error usererr(info, inputpos, "'"..arg.."' - " .. L["unknown argument"]) return end - + local str = strsub(info.input,inputpos); - + if tab.type=="execute" then ------------ execute -------------------------------------------- do_final(info, inputpos, tab, "func") - - + + elseif tab.type=="input" then ------------ input -------------------------------------------- - + local res = true if tab.pattern then if not(type(tab.pattern)=="string") then err(info, inputpos, "'pattern' - expected a string") end @@ -420,11 +420,11 @@ local function handle(info, inputpos, tab, depth, retfalse) return end end - + do_final(info, inputpos, tab, "set", str) - - + + elseif tab.type=="toggle" then ------------ toggle -------------------------------------------- local b @@ -444,7 +444,7 @@ local function handle(info, inputpos, tab, depth, retfalse) else b = not b end - + elseif str==L["on"] then b = true elseif str==L["off"] then @@ -459,9 +459,9 @@ local function handle(info, inputpos, tab, depth, retfalse) end return end - + do_final(info, inputpos, tab, "set", b) - + elseif tab.type=="range" then ------------ range -------------------------------------------- @@ -481,21 +481,21 @@ local function handle(info, inputpos, tab, depth, retfalse) usererr(info, inputpos, val.." - "..format(L["must be equal to or lower than %s"], tostring(info.max)) ) return end - + do_final(info, inputpos, tab, "set", val) - + elseif tab.type=="select" then ------------ select ------------------------------------ local str = strtrim(strlower(str)) - + local values = tab.values if type(values) == "function" or type(values) == "string" then info.values = values values = callmethod(info, inputpos, tab, "values") info.values = nil end - + if str == "" then local b = callmethod(info, inputpos, tab, "get") local fmt = "|cffffff78- [%s]|r %s" @@ -512,7 +512,7 @@ local function handle(info, inputpos, tab, depth, retfalse) end local ok - for k,v in pairs(values) do + for k,v in pairs(values) do if strlower(k)==str then str = k -- overwrite with key (in case of case mismatches) ok = true @@ -523,20 +523,20 @@ local function handle(info, inputpos, tab, depth, retfalse) usererr(info, inputpos, "'"..str.."' - "..L["unknown selection"]) return end - + do_final(info, inputpos, tab, "set", str) - + elseif tab.type=="multiselect" then ------------ multiselect ------------------------------------------- local str = strtrim(strlower(str)) - + local values = tab.values if type(values) == "function" or type(values) == "string" then info.values = values values = callmethod(info, inputpos, tab, "values") info.values = nil end - + if str == "" then local fmt = "|cffffff78- [%s]|r %s" local fmt_sel = "|cffffff78- [%s]|r %s |cffff0000*|r" @@ -550,7 +550,7 @@ local function handle(info, inputpos, tab, depth, retfalse) end return end - + --build a table of the selections, checking that they exist --parse for =on =off =default in the process --table will be key = true for options that should toggle, key = [on|off|default] for options to be set @@ -559,25 +559,25 @@ local function handle(info, inputpos, tab, depth, retfalse) --parse option=on etc local opt, val = v:match('(.+)=(.+)') --get option if toggling - if not opt then - opt = v + if not opt then + opt = v end - + --check that the opt is valid local ok - for k,v in pairs(values) do + for k,v in pairs(values) do if strlower(k)==opt then opt = k -- overwrite with key (in case of case mismatches) ok = true break end end - + if not ok then usererr(info, inputpos, "'"..opt.."' - "..L["unknown selection"]) return end - + --check that if val was supplied it is valid if val then if val == L["on"] or val == L["off"] or (tab.tristate and val == L["default"]) then @@ -596,14 +596,14 @@ local function handle(info, inputpos, tab, depth, retfalse) sels[opt] = true end end - + for opt, val in pairs(sels) do local newval - + if (val == true) then --toggle the option local b = callmethod(info, inputpos, tab, "get", opt) - + if tab.tristate then --cycle in true, nil, false order if b then @@ -627,11 +627,11 @@ local function handle(info, inputpos, tab, depth, retfalse) newval = nil end end - + do_final(info, inputpos, tab, "set", opt, newval) end - - + + elseif tab.type=="color" then ------------ color -------------------------------------------- local str = strtrim(strlower(str)) @@ -639,16 +639,16 @@ local function handle(info, inputpos, tab, depth, retfalse) --TODO: Show current value return end - + local r, g, b, a - + local hasAlpha = tab.hasAlpha if type(hasAlpha) == "function" or type(hasAlpha) == "string" then info.hasAlpha = hasAlpha hasAlpha = callmethod(info, inputpos, tab, 'hasAlpha') info.hasAlpha = nil end - + if hasAlpha then if str:len() == 8 and str:find("^%x*$") then --parse a hex string @@ -662,7 +662,7 @@ local function handle(info, inputpos, tab, depth, retfalse) usererr(info, inputpos, format(L["'%s' - expected 'RRGGBBAA' or 'r g b a'."], str)) return end - + if r >= 0.0 and r <= 1.0 and g >= 0.0 and g <= 1.0 and b >= 0.0 and b <= 1.0 and a >= 0.0 and a <= 1.0 then --values are valid elseif r >= 0 and r <= 255 and g >= 0 and g <= 255 and b >= 0 and b <= 255 and a >= 0 and a <= 255 then @@ -701,7 +701,7 @@ local function handle(info, inputpos, tab, depth, retfalse) usererr(info, inputpos, format(L["'%s' - values must all be either in the range 0-1 or 0-255."], str)) end end - + do_final(info, inputpos, tab, "set", r,g,b,a) elseif tab.type=="keybinding" then @@ -737,7 +737,7 @@ end -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceConsole-3.0") -- -- Use AceConsole-3.0 to register a Chat Command -- MyAddon:RegisterChatCommand("mychat", "ChatCommand") --- +-- -- -- Show the GUI if no input is supplied, otherwise handle the chat input. -- function MyAddon:ChatCommand(input) -- -- Assuming "MyOptions" is the appName of a valid options table @@ -754,7 +754,7 @@ function AceConfigCmd:HandleCommand(slashcmd, appName, input) error([[Usage: HandleCommand("slashcmd", "appName", "input"): 'appName' - no options table "]]..tostring(appName)..[[" has been registered]], 2) end local options = assert( optgetter("cmd", MAJOR) ) - + local info = { -- Don't try to recycle this, it gets handed off to callbacks and whatnot [0] = slashcmd, appName = appName, @@ -765,7 +765,7 @@ function AceConfigCmd:HandleCommand(slashcmd, appName, input) uiType = "cmd", uiName = MAJOR, } - + handle(info, 1, options, 0) -- (info, inputpos, table, depth) end diff --git a/Titan/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua b/Titan/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua index 81885ae..3e3d878 100755 --- a/Titan/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua +++ b/Titan/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 1197 2019-01-21 23:41:10Z nevcairiel $ +-- @release $Id: AceConfigDialog-3.0.lua 1212 2019-06-26 05:53:51Z nevcairiel $ local LibStub = LibStub local gui = LibStub("AceGUI-3.0") local reg = LibStub("AceConfigRegistry-3.0") -local MAJOR, MINOR = "AceConfigDialog-3.0", 69 +local MAJOR, MINOR = "AceConfigDialog-3.0", 73 local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigDialog then return end @@ -56,18 +56,18 @@ local width_multiplier = 170 --[[ Group Types Tree - All Descendant Groups will all become nodes on the tree, direct child options will appear above the tree - - Descendant Groups with inline=true and thier children will not become nodes + - Descendant Groups with inline=true and thier children will not become nodes Tab - Direct Child Groups will become tabs, direct child options will appear above the tab control - - Grandchild groups will default to inline unless specified otherwise + - Grandchild groups will default to inline unless specified otherwise Select- Same as Tab but with entries in a dropdown rather than tabs Inline Groups - - Will not become nodes of a select group, they will be effectivly part of thier parent group seperated by a border - - If declared on a direct child of a root node of a select group, they will appear above the group container control - - When a group is displayed inline, all descendants will also be inline members of the group + - Will not become nodes of a select group, they will be effectivly part of thier parent group seperated by a border + - If declared on a direct child of a root node of a select group, they will appear above the group container control + - When a group is displayed inline, all descendants will also be inline members of the group ]] @@ -168,11 +168,11 @@ local allIsLiteral = { local function GetOptionsMemberValue(membername, option, options, path, appName, ...) --get definition for the member local inherits = isInherited[membername] - + --get the member of the option, traversing the tree if it can be inherited local member - + if inherits then local group = options if group[membername] ~= nil then @@ -187,7 +187,7 @@ local function GetOptionsMemberValue(membername, option, options, path, appName, else member = option[membername] end - + --check if we need to call a functon, or if we have a literal value if ( not allIsLiteral[membername] ) and ( type(member) == "function" or ((not stringIsLiteral[membername]) and type(member) == "string") ) then --We have a function to call @@ -196,13 +196,13 @@ local function GetOptionsMemberValue(membername, option, options, path, appName, local handler local group = options handler = group.handler or handler - + for i = 1, #path do group = GetSubOption(group, path[i]) info[i] = path[i] handler = group.handler or handler end - + info.options = options info.appName = appName info[0] = appName @@ -212,8 +212,8 @@ local function GetOptionsMemberValue(membername, option, options, path, appName, info.type = option.type info.uiType = "dialog" info.uiName = MAJOR - - local a, b, c ,d + + local a, b, c ,d --using 4 returns for the get of a color type, increase if a type needs more if type(member) == "function" then --Call the function @@ -230,8 +230,8 @@ local function GetOptionsMemberValue(membername, option, options, path, appName, return a,b,c,d else --The value isnt a function to call, return it - return member - end + return member + end end --[[calls an options function that could be inherited, method name or function ref @@ -296,7 +296,7 @@ local function compareOptions(a,b) return NameA:upper() < NameB:upper() end if OrderA < 0 then - if OrderB > 0 then + if OrderB >= 0 then return false end else @@ -315,7 +315,7 @@ end local function BuildSortedOptionsTable(group, keySort, opts, options, path, appName) tempOrders = new() tempNames = new() - + if group.plugins then for plugin, t in pairs(group.plugins) do for k, v in pairs(t) do @@ -331,7 +331,7 @@ local function BuildSortedOptionsTable(group, keySort, opts, options, path, appN end end end - + for k, v in pairs(group.args) do if not opts[k] then tinsert(keySort, k) @@ -362,7 +362,7 @@ local function DelTree(tree) end local function CleanUserData(widget, event) - + local user = widget:GetUserDataTable() if user.path then @@ -402,7 +402,7 @@ end -- - Gets a status table for the given appname and options path. -- @param appName The application name as given to `:RegisterOptionsTable()` -- @param path The path to the options (a table with all group keys) --- @return +-- @return function AceConfigDialog:GetStatusTable(appName, path) local status = self.Status @@ -436,7 +436,7 @@ end function AceConfigDialog:SelectGroup(appName, ...) local path = new() - + local app = reg:GetOptionsTable(appName) if not app then error(("%s isn't registed with AceConfigRegistry, unable to open config"):format(appName), 2) @@ -448,9 +448,9 @@ function AceConfigDialog:SelectGroup(appName, ...) status.groups = {} end status = status.groups - local treevalue - local treestatus - + local treevalue + local treestatus + for n = 1, select("#",...) do local key = select(n, ...) @@ -477,12 +477,12 @@ function AceConfigDialog:SelectGroup(appName, ...) --the selected group will be overwritten if a child is the final target but still needs to be open treestatus.selected = treevalue treestatus.groups[treevalue] = true - + end - + --move to the next group in the path group = GetSubOption(group, key) - if not group then + if not group then break end tinsert(path, key) @@ -492,10 +492,10 @@ function AceConfigDialog:SelectGroup(appName, ...) end status = status.groups end - + del(path) reg:NotifyChange(appName) -end +end local function OptionOnMouseOver(widget, event) --show a tooltip/set the status bar to the desc text @@ -510,14 +510,14 @@ local function OptionOnMouseOver(widget, event) local desc = GetOptionsMemberValue("desc", opt, options, path, appName) local usage = GetOptionsMemberValue("usage", opt, options, path, appName) local descStyle = opt.descStyle - + if descStyle and descStyle ~= "tooltip" then return end - + GameTooltip:SetText(name, 1, .82, 0, true) - + if opt.type == "multiselect" then GameTooltip:AddLine(user.text, 0.5, 0.5, 0.8, true) - end + end if type(desc) == "string" then GameTooltip:AddLine(desc, 1, 1, 1, true) end @@ -675,7 +675,7 @@ local function ActivateControl(widget, event, ...) end end end - + local success if validated and option.type ~= "execute" then if type(validate) == "string" then @@ -690,7 +690,7 @@ local function ActivateControl(widget, event, ...) if not success then validated = false end end end - + local rootframe = user.rootframe if not validated or type(validated) == "string" then if not validated then @@ -715,7 +715,7 @@ local function ActivateControl(widget, event, ...) del(info) return true else - + local confirmText = option.confirmText --call confirm func/method if type(confirm) == "string" then @@ -756,10 +756,10 @@ local function ActivateControl(widget, event, ...) confirmText = confirmText.." - "..desc end end - + local iscustom = user.rootframe:GetUserData("iscustom") local rootframe - + if iscustom then rootframe = user.rootframe end @@ -796,7 +796,7 @@ local function ActivateControl(widget, event, ...) --full refresh of the frame, some controls dont cause this on all events if option.type == "color" then if event == "OnValueConfirmed" then - + if iscustom then AceConfigDialog:Open(user.appName, user.rootframe, unpack(basepath)) else @@ -1049,6 +1049,10 @@ local function CreateControl(userControlType, fallbackControlType) return control end +local function sortTblAsStrings(x,y) + return tostring(x) < tostring(y) -- Support numbers as keys +end + --[[ options - root of the options table being fed container - widget that controls will be placed in @@ -1079,7 +1083,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin else GroupContainer = gui:Create("SimpleGroup") end - + GroupContainer.width = "fill" GroupContainer:SetLayout("flow") container:AddChild(GroupContainer) @@ -1088,14 +1092,14 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin else --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) local image, width, height = GetOptionsMemberValue("image",v, options, path, appName) - + local iconControl = type(image) == "string" or type(image) == "number" control = CreateControl(v.dialogControl or v.control, iconControl and "Icon" or "Button") if iconControl then @@ -1125,7 +1129,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin elseif v.type == "input" then control = CreateControl(v.dialogControl or v.control, v.multiline and "MultiLineEditBox" or "EditBox") - + if v.multiline and control.SetNumLines then control:SetNumLines(tonumber(v.multiline) or 4) end @@ -1144,15 +1148,15 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin local value = GetOptionsMemberValue("get",v, options, path, appName) control:SetValue(value) control:SetCallback("OnValueChanged",ActivateControl) - + if v.descStyle == "inline" then local desc = GetOptionsMemberValue("desc", v, options, path, appName) control:SetDescription(desc) end - + local image = GetOptionsMemberValue("image", v, options, path, appName) local imageCoords = GetOptionsMemberValue("imageCoords", v, options, path, appName) - + if type(image) == "string" or type(image) == "number" then if type(imageCoords) == "table" then control:SetImage(image, unpack(imageCoords)) @@ -1175,6 +1179,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin elseif v.type == "select" then local values = GetOptionsMemberValue("values", v, options, path, appName) + local sorting = GetOptionsMemberValue("sorting", v, options, path, appName) if v.style == "radio" then local disabled = CheckOptionDisabled(v, options, path, appName) local width = GetOptionsMemberValue("width",v,options,path,appName) @@ -1185,12 +1190,14 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin control:PauseLayout() local optionValue = GetOptionsMemberValue("get",v, options, path, appName) - local t = {} - for value, text in pairs(values) do - t[#t+1]=value + if not sorting then + sorting = {} + for value, text in pairs(values) do + sorting[#sorting+1]=value + end + tsort(sorting, sortTblAsStrings) end - tsort(t) - for k, value in ipairs(t) do + for k, value in ipairs(sorting) do local text = values[value] local radio = gui:Create("CheckBox") radio:SetLabel(text) @@ -1224,7 +1231,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin itemType = nil end control:SetLabel(name) - control:SetList(values, nil, itemType) + control:SetList(values, sorting, itemType) local value = GetOptionsMemberValue("get",v, options, path, appName) if not values[value] then value = nil @@ -1236,7 +1243,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin elseif v.type == "multiselect" then local values = GetOptionsMemberValue("values", v, options, path, appName) local disabled = CheckOptionDisabled(v, options, path, appName) - + local valuesort = new() if values then for value, text in pairs(values) do @@ -1244,7 +1251,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin end end tsort(valuesort) - + local controlType = v.dialogControl or v.control if controlType then control = gui:Create(controlType) @@ -1313,9 +1320,9 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin control:ResumeLayout() control:DoLayout() - + end - + del(valuesort) elseif v.type == "color" then @@ -1340,7 +1347,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin elseif v.type == "description" then control = CreateControl(v.dialogControl or v.control, "Label") control:SetText(name) - + local fontSize = GetOptionsMemberValue("fontSize",v, options, path, appName) if fontSize == "medium" then control:SetFontObject(GameFontHighlight) @@ -1349,10 +1356,10 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin else -- small or invalid control:SetFontObject(GameFontHighlightSmall) end - + local imageCoords = GetOptionsMemberValue("imageCoords",v, options, path, appName) local image, width, height = GetOptionsMemberValue("image",v, options, path, appName) - + if type(image) == "string" or type(image) == "number" then if not width then width = GetOptionsMemberValue("imageWidth",v, options, path, appName) @@ -1401,7 +1408,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin InjectInfo(control, options, v, path, rootframe, appName) container:AddChild(control) end - + end end tremove(path) @@ -1426,7 +1433,7 @@ local function TreeOnButtonEnter(widget, event, uniquevalue, button) local option = user.option local path = user.path local appName = user.appName - + local feedpath = new() for i = 1, #path do feedpath[i] = path[i] @@ -1441,8 +1448,9 @@ local function TreeOnButtonEnter(widget, event, uniquevalue, button) local name = GetOptionsMemberValue("name", group, options, feedpath, appName) local desc = GetOptionsMemberValue("desc", group, options, feedpath, appName) - + GameTooltip:SetOwner(button, "ANCHOR_NONE") + GameTooltip:ClearAllPoints() if widget.type == "TabGroup" then GameTooltip:SetPoint("BOTTOM",button,"TOP") else @@ -1450,11 +1458,11 @@ local function TreeOnButtonEnter(widget, event, uniquevalue, button) end GameTooltip:SetText(name, 1, .82, 0, true) - + if type(desc) == "string" then GameTooltip:AddLine(desc, 1, 1, 1, true) end - + GameTooltip:Show() end @@ -1465,25 +1473,25 @@ end local function GroupExists(appName, options, path, uniquevalue) if not uniquevalue then return false end - + local feedpath = new() local temppath = new() for i = 1, #path do feedpath[i] = path[i] end - + BuildPath(feedpath, ("\001"):split(uniquevalue)) - + local group = options for i = 1, #feedpath do local v = feedpath[i] temppath[i] = v group = GetSubOption(group, v) - - if not group or group.type ~= "group" or CheckOptionHidden(group, options, temppath, appName) then + + if not group or group.type ~= "group" or CheckOptionHidden(group, options, temppath, appName) then del(feedpath) del(temppath) - return false + return false end end del(feedpath) @@ -1602,7 +1610,7 @@ function AceConfigDialog:FeedGroup(appName,options,container,rootframe,path, isR tab:SetCallback("OnGroupSelected", GroupSelected) tab:SetCallback("OnTabEnter", TreeOnButtonEnter) tab:SetCallback("OnTabLeave", TreeOnButtonLeave) - + local status = AceConfigDialog:GetStatusTable(appName, path) if not status.groups then status.groups = {} @@ -1622,7 +1630,7 @@ function AceConfigDialog:FeedGroup(appName,options,container,rootframe,path, isR break end end - + container:AddChild(tab) elseif grouptype == "select" then @@ -1645,7 +1653,7 @@ function AceConfigDialog:FeedGroup(appName,options,container,rootframe,path, isR if firstgroup then select:SetGroup((GroupExists(appName, options, path,status.groups.selected) and status.groups.selected) or firstgroup) end - + select.width = "fill" select.height = "fill" @@ -1657,14 +1665,14 @@ function AceConfigDialog:FeedGroup(appName,options,container,rootframe,path, isR local tree = gui:Create("TreeGroup") InjectInfo(tree, options, group, path, rootframe, appName) tree:EnableButtonTooltips(false) - + tree.width = "fill" tree.height = "fill" tree:SetCallback("OnGroupSelected", GroupSelected) tree:SetCallback("OnButtonEnter", TreeOnButtonEnter) tree:SetCallback("OnButtonLeave", TreeOnButtonLeave) - + local status = AceConfigDialog:GetStatusTable(appName, path) if not status.groups then status.groups = {} @@ -1705,7 +1713,7 @@ local function RefreshOnUpdate(this) end this.closing[appName] = nil end - + if this.closeAll then for k, v in pairs(AceConfigDialog.OpenFrames) do if not this.closeAllOverride[k] then @@ -1715,7 +1723,7 @@ local function RefreshOnUpdate(this) this.closeAll = nil wipe(this.closeAllOverride) end - + for appName in pairs(this.apps) do if AceConfigDialog.OpenFrames[appName] then local user = AceConfigDialog.OpenFrames[appName]:GetUserDataTable() @@ -1800,10 +1808,10 @@ function AceConfigDialog:Open(appName, container, ...) local options = app("dialog", MAJOR) local f - + local path = new() local name = GetOptionsMemberValue("name", options, options, path, appName) - + --If an optional path is specified add it to the path table before feeding the options --as container is optional as well it may contain the first element of the path if type(container) == "string" then @@ -1813,7 +1821,7 @@ function AceConfigDialog:Open(appName, container, ...) for n = 1, select("#",...) do tinsert(path, (select(n, ...))) end - + local option = options if type(container) == "table" and container.type == "BlizOptionsGroup" and #path > 0 then for i = 1, #path do @@ -1821,7 +1829,7 @@ function AceConfigDialog:Open(appName, container, ...) end name = format("%s - %s", name, GetOptionsMemberValue("name", option, options, path, appName)) end - + --if a container is given feed into that if container then f = container @@ -1915,19 +1923,19 @@ end -- @param name A descriptive name to display in the options tree (defaults to appName) -- @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 reference to the frame registered into the Interface Options. function AceConfigDialog:AddToBlizOptions(appName, name, parent, ...) local BlizOptions = AceConfigDialog.BlizOptions - + local key = appName for n = 1, select("#", ...) do key = key.."\001"..select(n, ...) end - + if not BlizOptions[appName] then BlizOptions[appName] = {} end - + if not BlizOptions[appName][key] then local group = gui:Create("BlizOptionsGroup") BlizOptions[appName][key] = group diff --git a/Titan/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua b/Titan/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua index e7a6d76..e563392 100755 --- a/Titan/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua +++ b/Titan/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua @@ -4,14 +4,14 @@ -- * Valid **uiTypes**: "cmd", "dropdown", "dialog". This is verified by the library at call time. \\ -- * The **uiName** field is expected to contain the full name of the calling addon, including version, e.g. "FooBar-1.0". This is verified by the library at call time.\\ -- * The **appName** field is the options table name as given at registration time \\ --- +-- -- :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 1169 2018-02-27 16:18:28Z nevcairiel $ +-- @release $Id: AceConfigRegistry-3.0.lua 1207 2019-06-23 12:08:33Z nevcairiel $ local CallbackHandler = LibStub("CallbackHandler-1.0") -local MAJOR, MINOR = "AceConfigRegistry-3.0", 18 +local MAJOR, MINOR = "AceConfigRegistry-3.0", 20 local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigRegistry then return end @@ -33,7 +33,7 @@ local error, assert = error, assert AceConfigRegistry.validated = { - -- list of options table names ran through :ValidateOptionsTable automatically. + -- list of options table names ran through :ValidateOptionsTable automatically. -- CLEARED ON PURPOSE, since newer versions may have newer validators cmd = {}, dropdown = {}, @@ -59,7 +59,6 @@ local optstring={["nil"]=true,["string"]=true, _="string"} local optstringfunc={["nil"]=true,["string"]=true,["function"]=true, _="string or funcref"} local optstringnumberfunc={["nil"]=true,["string"]=true,["number"]=true,["function"]=true, _="string, number or funcref"} local optnumber={["nil"]=true,["number"]=true, _="number"} -local optmethod={["nil"]=true,["string"]=true,["function"]=true, _="methodname or funcref"} local optmethodfalse={["nil"]=true,["string"]=true,["function"]=true,["boolean"]={[false]=true}, _="methodname, funcref or false"} local optmethodnumber={["nil"]=true,["string"]=true,["function"]=true,["number"]=true, _="methodname, funcref or number"} local optmethodtable={["nil"]=true,["string"]=true,["function"]=true,["table"]=true, _="methodname, funcref or table"} @@ -95,13 +94,20 @@ local basekeys={ } local typedkeys={ - header={}, + header={ + control=optstring, + dialogControl=optstring, + dropdownControl=optstring, + }, description={ image=optstringnumberfunc, imageCoords=optmethodtable, imageHeight=optnumber, imageWidth=optnumber, fontSize=optstringfunc, + control=optstring, + dialogControl=optstring, + dropdownControl=optstring, }, group={ args=istable, @@ -118,6 +124,9 @@ local typedkeys={ imageCoords=optmethodtable, imageHeight=optnumber, imageWidth=optnumber, + control=optstring, + dialogControl=optstring, + dropdownControl=optstring, }, input={ pattern=optstring, @@ -131,6 +140,9 @@ local typedkeys={ tristate=optbool, image=optstringnumberfunc, imageCoords=optmethodtable, + control=optstring, + dialogControl=optstring, + dropdownControl=optstring, }, tristate={ }, @@ -142,12 +154,16 @@ local typedkeys={ step=optnumber, bigStep=optnumber, isPercent=optbool, + control=optstring, + dialogControl=optstring, + dropdownControl=optstring, }, select={ values=ismethodtable, + sorting=optmethodtable, style={ - ["nil"]=true, - ["string"]={dropdown=true,radio=true}, + ["nil"]=true, + ["string"]={dropdown=true,radio=true}, _="string: 'dropdown' or 'radio'" }, control=optstring, @@ -165,9 +181,14 @@ local typedkeys={ }, color={ hasAlpha=optmethodbool, + control=optstring, + dialogControl=optstring, + dropdownControl=optstring, }, keybinding={ - -- TODO + control=optstring, + dialogControl=optstring, + dropdownControl=optstring, }, } @@ -204,13 +225,13 @@ local function validate(options,errlvl,...) if type(options.type)~="string" then err(".type: expected a string, got a "..type(options.type), errlvl,...) end - + -- get type and 'typedkeys' member local tk = typedkeys[options.type] if not tk then err(".type: unknown type '"..options.type.."'", errlvl,...) end - + -- make sure that all options[] are known parameters for k,v in pairs(options) do if not (tk[k] or basekeys[k]) then @@ -303,7 +324,7 @@ function AceConfigRegistry:RegisterOptionsTable(appName, options, skipValidation AceConfigRegistry:ValidateOptionsTable(options, appName, errlvl) -- upgradable AceConfigRegistry.validated[uiType][appName] = true end - return options + return options end elseif type(options)=="function" then AceConfigRegistry.tables[appName] = function(uiType, uiName, errlvl) @@ -341,7 +362,7 @@ function AceConfigRegistry:GetOptionsTable(appName, uiType, uiName) if not f then return nil end - + if uiType then return f(uiType,uiName,1) -- get the table for us else diff --git a/Titan/libs/AceGUI-3.0-SharedMediaWidgets.toc b/Titan/libs/AceGUI-3.0-SharedMediaWidgets.toc old mode 100644 new mode 100755 index 3c55ea5..ae23f78 --- a/Titan/libs/AceGUI-3.0-SharedMediaWidgets.toc +++ b/Titan/libs/AceGUI-3.0-SharedMediaWidgets.toc @@ -1,8 +1,4 @@ -## Interface: 70000 -## X-Curse-Packaged-Version: r57-release -## X-Curse-Project-Name: AceGUI-3.0-SharedMediaWidgets -## X-Curse-Project-ID: ace-gui-3-0-shared-media-widgets -## X-Curse-Repository-ID: wow/ace-gui-3-0-shared-media-widgets/mainline +## Interface: 80100 ## Title: Lib: AceGUI-3.0-SharedMediaWidgets ## Notes: Enables AceGUI-3.0 widgets for the 5 basic SharedMedia-3.0 types @@ -17,4 +13,4 @@ Libs\AceGUI-3.0\AceGUI-3.0.xml Libs\LibSharedMedia-3.0\lib.xml #@end-no-lib-strip@ -widget.xml \ No newline at end of file +widget.xml diff --git a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua old mode 100644 new mode 100755 index 1601747..3758c72 --- a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua +++ b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Background" - local widgetVersion = 11 + local widgetVersion = 12 local contentFrameCache = {} local function ReturnSelf(self) diff --git a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua old mode 100644 new mode 100755 index b4f31c6..a0afecb --- a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua +++ b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Border" - local widgetVersion = 11 + local widgetVersion = 12 local contentFrameCache = {} local function ReturnSelf(self) diff --git a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua old mode 100644 new mode 100755 index cd2b5db..2f38dc3 --- a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua +++ b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Font" - local widgetVersion = 11 + local widgetVersion = 12 local contentFrameCache = {} local function ReturnSelf(self) diff --git a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua old mode 100644 new mode 100755 index 60904a7..80996a9 --- a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua +++ b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Sound" - local widgetVersion = 11 + local widgetVersion = 12 local contentFrameCache = {} local function ReturnSelf(self) diff --git a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua old mode 100644 new mode 100755 index 98b85f5..b1ba19f --- a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua +++ b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Statusbar" - local widgetVersion = 11 + local widgetVersion = 12 local contentFrameCache = {} local function ReturnSelf(self) diff --git a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua old mode 100644 new mode 100755 index cd7faf9..0fc2d29 --- a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua +++ b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua @@ -1,10 +1,5 @@ -- Widget created by Yssaril ---[===[@debug@ -local DataVersion = 9001 -- dev version always overwrites everything else :) ---@end-debug@]===] ---@non-debug@ -local DataVersion = 56 ---@end-non-debug@ +local DataVersion = 9003 local AGSMW = LibStub:NewLibrary("AceGUISharedMediaWidgets-1.0", DataVersion) if not AGSMW then @@ -182,14 +177,12 @@ do self:SetHeight(UIParent:GetHeight()*2/5) self.slider:Show() self:SetScript("OnMouseWheel", OnMouseWheel) - self.scrollframe:UpdateScrollChildRect() self.slider:SetMinMaxValues(0, self.contentframe:GetHeight()-self.scrollframe:GetHeight()) else self.scrollframe:SetPoint("BOTTOMRIGHT", self, "BOTTOMRIGHT", -14, 12) self:SetHeight(self.contentframe:GetHeight()+25) self.slider:Hide() self:SetScript("OnMouseWheel", nil) - self.scrollframe:UpdateScrollChildRect() self.slider:SetMinMaxValues(0, 0) end self.contentframe:SetWidth(self.scrollframe:GetWidth()) diff --git a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/widget.xml b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/widget.xml old mode 100644 new mode 100755 index 798546f..de89805 --- a/Titan/libs/AceGUI-3.0-SharedMediaWidgets/widget.xml +++ b/Titan/libs/AceGUI-3.0-SharedMediaWidgets/widget.xml @@ -6,4 +6,4 @@ <Script file="StatusbarWidget.lua" /> <Script file="BorderWidget.lua" /> <Script file="BackgroundWidget.lua" /> -</Ui> \ No newline at end of file +</Ui> diff --git a/Titan/libs/AceGUI-3.0/AceGUI-3.0.lua b/Titan/libs/AceGUI-3.0/AceGUI-3.0.lua index fcc4e94..efdb6cb 100755 --- a/Titan/libs/AceGUI-3.0/AceGUI-3.0.lua +++ b/Titan/libs/AceGUI-3.0/AceGUI-3.0.lua @@ -1,6 +1,6 @@ --- **AceGUI-3.0** provides access to numerous widgets which can be used to create GUIs. -- AceGUI is used by AceConfigDialog to create the option GUIs, but you can use it by itself --- to create any custom GUI. There are more extensive examples in the test suite in the Ace3 +-- to create any custom GUI. There are more extensive examples in the test suite in the Ace3 -- stand-alone distribution. -- -- **Note**: When using AceGUI-3.0 directly, please do not modify the frames of the widgets directly, @@ -24,17 +24,17 @@ -- f:AddChild(btn) -- @class file -- @name AceGUI-3.0 --- @release $Id: AceGUI-3.0.lua 1177 2018-06-25 12:12:48Z nevcairiel $ +-- @release $Id: AceGUI-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 36 local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR) if not AceGUI then return end -- No upgrade needed -- Lua APIs -local tconcat, tremove, tinsert = table.concat, table.remove, table.insert +local tinsert = table.insert local select, pairs, next, type = select, pairs, next, type -local error, assert, loadstring = error, assert, loadstring -local setmetatable, rawget, rawset = setmetatable, rawget, rawset +local error, assert = error, assert +local setmetatable, rawget = setmetatable, rawget local math_max = math.max -- WoW APIs @@ -51,7 +51,7 @@ AceGUI.LayoutRegistry = AceGUI.LayoutRegistry or {} AceGUI.WidgetBase = AceGUI.WidgetBase or {} AceGUI.WidgetContainerBase = AceGUI.WidgetContainerBase or {} AceGUI.WidgetVersions = AceGUI.WidgetVersions or {} - + -- local upvalues local WidgetRegistry = AceGUI.WidgetRegistry local LayoutRegistry = AceGUI.LayoutRegistry @@ -66,39 +66,10 @@ local function errorhandler(err) return geterrorhandler()(err) end -local function CreateDispatcher(argCount) - local code = [[ - local xpcall, eh = ... - local method, ARGS - local function call() return method(ARGS) end - - local function dispatch(func, ...) - method = func - if not method then return end - ARGS = ... - return xpcall(call, eh) - end - - return dispatch - ]] - - local ARGS = {} - for i = 1, argCount do ARGS[i] = "arg"..i end - code = code:gsub("ARGS", tconcat(ARGS, ", ")) - return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler) -end - -local Dispatchers = setmetatable({}, {__index=function(self, argCount) - local dispatcher = CreateDispatcher(argCount) - rawset(self, argCount, dispatcher) - return dispatcher -end}) -Dispatchers[0] = function(func) - return xpcall(func, errorhandler) -end - local function safecall(func, ...) - return Dispatchers[select("#", ...)](func, ...) + if func then + return xpcall(func, errorhandler, ...) + end end -- Recycling functions @@ -108,7 +79,7 @@ do -- Internal Storage of the objects changed, from an array table -- to a hash table, and additionally we introduced versioning on -- the widgets which would discard all widgets from a pre-29 version - -- anyway, so we just clear the storage now, and don't try to + -- anyway, so we just clear the storage now, and don't try to -- convert the storage tables to the new format. -- This should generally not cause *many* widgets to end up in trash, -- since once dialogs are opened, all addons should be loaded already @@ -118,7 +89,7 @@ do if oldminor and oldminor < 29 and AceGUI.objPools then AceGUI.objPools = nil end - + 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 @@ -126,11 +97,11 @@ do if not WidgetRegistry[type] then error("Attempt to instantiate unknown widget type", 2) end - + if not objPools[type] then objPools[type] = {} end - + local newObj = next(objPools[type]) if not newObj then newObj = WidgetRegistry[type]() @@ -180,12 +151,12 @@ function AceGUI:Create(type) widget.OnAcquire = widget.Aquire widget.Aquire = nil end - + if rawget(widget, "Release") then - widget.OnRelease = rawget(widget, "Release") + widget.OnRelease = rawget(widget, "Release") widget.Release = nil end - + if widget.OnAcquire then widget:OnAcquire() else @@ -267,18 +238,18 @@ end --[[ Widgets must provide the following functions OnAcquire() - Called when the object is acquired, should set everything to a default hidden state - + And the following members frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes type - the type of the object, same as the name given to :RegisterWidget() - + Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet It will be cleared automatically when a widget is released Placing values directly into a widget object should be avoided - + If the Widget can act as a container for other Widgets the following content - frame or derivitive that children will be anchored to - + The Widget can supply the following Optional Members :OnRelease() - Called when the object is Released, should remove any additional anchors and clear any data :OnWidthSet(width) - Called when the width of the widget is changed @@ -294,21 +265,21 @@ end -- Widget Base Template -- -------------------------- do - local WidgetBase = AceGUI.WidgetBase - + local WidgetBase = AceGUI.WidgetBase + WidgetBase.SetParent = function(self, parent) local frame = self.frame frame:SetParent(nil) frame:SetParent(parent.content) self.parent = parent end - + WidgetBase.SetCallback = function(self, name, func) if type(func) == "function" then self.events[name] = func end end - + WidgetBase.Fire = function(self, name, ...) if self.events[name] then local success, ret = safecall(self.events[name], self, name, ...) @@ -317,7 +288,7 @@ do end end end - + WidgetBase.SetWidth = function(self, width) self.frame:SetWidth(width) self.frame.width = width @@ -325,7 +296,7 @@ do self:OnWidthSet(width) end end - + WidgetBase.SetRelativeWidth = function(self, width) if width <= 0 or width > 1 then error(":SetRelativeWidth(width): Invalid relative width.", 2) @@ -333,7 +304,7 @@ do self.relWidth = width self.width = "relative" end - + WidgetBase.SetHeight = function(self, height) self.frame:SetHeight(height) self.frame.height = height @@ -341,7 +312,7 @@ do self:OnHeightSet(height) end end - + --[[ WidgetBase.SetRelativeHeight = function(self, height) if height <= 0 or height > 1 then error(":SetRelativeHeight(height): Invalid relative height.", 2) @@ -353,47 +324,47 @@ do WidgetBase.IsVisible = function(self) return self.frame:IsVisible() end - + WidgetBase.IsShown= function(self) return self.frame:IsShown() end - + WidgetBase.Release = function(self) AceGUI:Release(self) end - + WidgetBase.SetPoint = function(self, ...) return self.frame:SetPoint(...) end - + WidgetBase.ClearAllPoints = function(self) return self.frame:ClearAllPoints() end - + WidgetBase.GetNumPoints = function(self) return self.frame:GetNumPoints() end - + WidgetBase.GetPoint = function(self, ...) return self.frame:GetPoint(...) - end - + end + WidgetBase.GetUserDataTable = function(self) return self.userdata end - + WidgetBase.SetUserData = function(self, key, value) self.userdata[key] = value end - + WidgetBase.GetUserData = function(self, key) return self.userdata[key] end - + WidgetBase.IsFullHeight = function(self) return self.height == "fill" end - + WidgetBase.SetFullHeight = function(self, isFull) if isFull then self.height = "fill" @@ -401,11 +372,11 @@ do self.height = nil end end - + WidgetBase.IsFullWidth = function(self) return self.width == "fill" end - + WidgetBase.SetFullWidth = function(self, isFull) if isFull then self.width = "fill" @@ -413,29 +384,29 @@ do self.width = nil end end - + -- local function LayoutOnUpdate(this) -- this:SetScript("OnUpdate",nil) -- this.obj:PerformLayout() -- end - + local WidgetContainerBase = AceGUI.WidgetContainerBase - + WidgetContainerBase.PauseLayout = function(self) self.LayoutPaused = true end - + WidgetContainerBase.ResumeLayout = function(self) self.LayoutPaused = nil end - + WidgetContainerBase.PerformLayout = function(self) if self.LayoutPaused then return end safecall(self.LayoutFunc, self.content, self.children) end - + --call this function to layout, makes sure layed out objects get a frame to get sizes etc WidgetContainerBase.DoLayout = function(self) self:PerformLayout() @@ -443,7 +414,7 @@ do -- self.frame:SetScript("OnUpdate", LayoutOnUpdate) -- end end - + WidgetContainerBase.AddChild = function(self, child, beforeWidget) if beforeWidget then local siblingIndex = 1 @@ -451,7 +422,7 @@ do if widget == beforeWidget then break end - siblingIndex = siblingIndex + 1 + siblingIndex = siblingIndex + 1 end tinsert(self.children, siblingIndex, child) else @@ -461,7 +432,7 @@ do child.frame:Show() self:DoLayout() end - + WidgetContainerBase.AddChildren = function(self, ...) for i = 1, select("#", ...) do local child = select(i, ...) @@ -471,7 +442,7 @@ do end self:DoLayout() end - + WidgetContainerBase.ReleaseChildren = function(self) local children = self.children for i = 1,#children do @@ -479,7 +450,7 @@ do children[i] = nil end end - + WidgetContainerBase.SetLayout = function(self, Layout) self.LayoutFunc = AceGUI:GetLayout(Layout) end @@ -503,7 +474,7 @@ do end end end - + local function ContentResize(this) if this:GetWidth() and this:GetHeight() then this.width = this:GetWidth() @@ -515,7 +486,7 @@ do setmetatable(WidgetContainerBase, {__index=WidgetBase}) --One of these function should be called on each Widget Instance as part of its creation process - + --- Register a widget-class as a container for newly created widgets. -- @param widget The widget class function AceGUI:RegisterAsContainer(widget) @@ -531,7 +502,7 @@ do widget:SetLayout("List") return widget end - + --- Register a widget-class as a widget. -- @param widget The widget class function AceGUI:RegisterAsWidget(widget) @@ -558,11 +529,11 @@ end -- @param Version The version of the widget function AceGUI:RegisterWidgetType(Name, Constructor, Version) assert(type(Constructor) == "function") - assert(type(Version) == "number") - + assert(type(Version) == "number") + local oldVersion = WidgetVersions[Name] if oldVersion and oldVersion >= Version then return end - + WidgetVersions[Name] = Version WidgetRegistry[Name] = Constructor end @@ -631,7 +602,7 @@ AceGUI:RegisterLayout("List", local width = content.width or content:GetWidth() or 0 for i = 1, #children do local child = children[i] - + local frame = child.frame frame:ClearAllPoints() frame:Show() @@ -640,22 +611,22 @@ AceGUI:RegisterLayout("List", else frame:SetPoint("TOPLEFT", children[i-1].frame, "BOTTOMLEFT") end - + if child.width == "fill" then child:SetWidth(width) frame:SetPoint("RIGHT", content) - + if child.DoLayout then child:DoLayout() end elseif child.width == "relative" then child:SetWidth(width * child.relWidth) - + if child.DoLayout then child:DoLayout() end end - + height = height + (frame.height or frame:GetHeight() or 0) end safecall(content.obj.LayoutFinished, content.obj, nil, height) @@ -690,19 +661,17 @@ AceGUI:RegisterLayout("Flow", --height of the current row local rowheight = 0 local rowoffset = 0 - local lastrowoffset - + local width = content.width or content:GetWidth() or 0 - + --control at the start of the row local rowstart local rowstartoffset - local lastrowstart local isfullheight - + local frameoffset local lastframeoffset - local oversize + local oversize for i = 1, #children do local child = children[i] oversize = nil @@ -710,17 +679,17 @@ AceGUI:RegisterLayout("Flow", local frameheight = frame.height or frame:GetHeight() or 0 local framewidth = frame.width or frame:GetWidth() or 0 lastframeoffset = frameoffset - -- HACK: Why did we set a frameoffset of (frameheight / 2) ? + -- HACK: Why did we set a frameoffset of (frameheight / 2) ? -- That was moving all widgets half the widgets size down, is that intended? -- Actually, it seems to be neccessary for many cases, we'll leave it in for now. -- If widgets seem to anchor weirdly with this, provide a valid alignoffset for them. -- TODO: Investigate moar! frameoffset = child.alignoffset or (frameheight / 2) - + if child.width == "relative" then framewidth = width * child.relWidth end - + frame:Show() frame:ClearAllPoints() if i == 1 then @@ -759,11 +728,11 @@ AceGUI:RegisterLayout("Flow", else --handles cases where the new height is higher than either control because of the offsets --math.max(rowheight-rowoffset+frameoffset, frameheight-frameoffset+rowoffset) - + --offset is always the larger of the two offsets rowoffset = math_max(rowoffset, frameoffset) rowheight = math_max(rowheight, rowoffset + (frameheight / 2)) - + frame:SetPoint("TOPLEFT", children[i-1].frame, "TOPRIGHT", 0, frameoffset - lastframeoffset) usedwidth = framewidth + usedwidth end @@ -772,11 +741,11 @@ AceGUI:RegisterLayout("Flow", if child.width == "fill" then safelayoutcall(child, "SetWidth", width) frame:SetPoint("RIGHT", content) - + usedwidth = 0 rowstart = frame rowstartoffset = frameoffset - + if child.DoLayout then child:DoLayout() end @@ -785,7 +754,7 @@ AceGUI:RegisterLayout("Flow", rowstartoffset = rowoffset elseif child.width == "relative" then safelayoutcall(child, "SetWidth", width * child.relWidth) - + if child.DoLayout then child:DoLayout() end @@ -794,20 +763,20 @@ AceGUI:RegisterLayout("Flow", frame:SetPoint("RIGHT", content) end end - + if child.height == "fill" then frame:SetPoint("BOTTOM", content) isfullheight = true end end - + --anchor the last row, if its full height needs a special case since its height has just been changed by the anchor if isfullheight then rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -height) elseif rowstart then rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -(height + (rowoffset - rowstartoffset) + 3)) end - + height = height + rowheight + 3 safecall(content.obj.LayoutFinished, content.obj, nil, height) end) @@ -871,7 +840,7 @@ AceGUI:RegisterLayout("Table", local spaceH = tableObj.spaceH or tableObj.space or 0 local spaceV = tableObj.spaceV or tableObj.space or 0 local totalH = (content:GetWidth() or content.width or 0) - spaceH * (#cols - 1) - + -- We need to reuse these because layout events can come in very frequently local layoutCache = obj:GetUserData("layoutCache") if not layoutCache then @@ -879,7 +848,7 @@ AceGUI:RegisterLayout("Table", obj:SetUserData("layoutCache", layoutCache) end local t, laneH, laneV, rowspans, rowStart, colStart = unpack(layoutCache) - + -- Create the grid local n, slotFound = 0 for i,child in ipairs(children) do @@ -944,7 +913,7 @@ AceGUI:RegisterLayout("Table", local f = child.frame f:ClearAllPoints() local childH = f:GetWidth() or 0 - + laneH[col] = max(laneH[col], childH - GetCellDimension("H", laneH, colStart[child], col - 1, spaceH)) end end @@ -978,7 +947,7 @@ AceGUI:RegisterLayout("Table", local cellObj = child:GetUserData("cell") local offsetH = GetCellDimension("H", laneH, 1, colStart[child] - 1, spaceH) + (colStart[child] == 1 and 0 or spaceH) local cellH = GetCellDimension("H", laneH, colStart[child], col, spaceH) - + local f = child.frame f:ClearAllPoints() local childH = f:GetWidth() or 0 @@ -988,7 +957,7 @@ AceGUI:RegisterLayout("Table", if child:IsFullWidth() or alignFn == "fill" or childH > cellH then f:SetPoint("RIGHT", content, "LEFT", offsetH + align + cellH, 0) end - + if child.DoLayout then child:DoLayout() end @@ -1007,7 +976,7 @@ AceGUI:RegisterLayout("Table", local cellObj = child:GetUserData("cell") local offsetV = GetCellDimension("V", laneV, 1, rowStart[child] - 1, spaceV) + (rowStart[child] == 1 and 0 or spaceV) local cellV = GetCellDimension("V", laneV, rowStart[child], row, spaceV) - + local f = child.frame local childV = f:GetHeight() or 0 @@ -1022,7 +991,7 @@ AceGUI:RegisterLayout("Table", -- Calculate total height local totalV = GetCellDimension("V", laneV, 1, #laneV, spaceV) - + -- Cleanup for _,v in pairs(layoutCache) do wipe(v) end diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua index 18e49cb..aacb0fc 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua @@ -150,7 +150,7 @@ local function Constructor() widget[method] = func end dropdown.parentgroup = widget - + return AceGUI:RegisterAsContainer(widget) end diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua index d1eb471..aff1416 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua @@ -219,7 +219,7 @@ local function Constructor() statustext:SetText("") local titlebg = frame:CreateTexture(nil, "OVERLAY") - titlebg:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header") + titlebg:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header titlebg:SetTexCoord(0.31, 0.67, 0, 0.63) titlebg:SetPoint("TOP", 0, 12) titlebg:SetWidth(100) @@ -235,14 +235,14 @@ local function Constructor() titletext:SetPoint("TOP", titlebg, "TOP", 0, -14) local titlebg_l = frame:CreateTexture(nil, "OVERLAY") - titlebg_l:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header") + titlebg_l:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header titlebg_l:SetTexCoord(0.21, 0.31, 0, 0.63) titlebg_l:SetPoint("RIGHT", titlebg, "LEFT") titlebg_l:SetWidth(30) titlebg_l:SetHeight(40) local titlebg_r = frame:CreateTexture(nil, "OVERLAY") - titlebg_r:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header") + titlebg_r:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header titlebg_r:SetTexCoord(0.67, 0.77, 0, 0.63) titlebg_r:SetPoint("LEFT", titlebg, "RIGHT") titlebg_r:SetWidth(30) @@ -260,7 +260,7 @@ local function Constructor() line1:SetWidth(14) line1:SetHeight(14) line1:SetPoint("BOTTOMRIGHT", -8, 8) - line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line1:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border local x = 0.1 * 14/17 line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) @@ -268,7 +268,7 @@ local function Constructor() line2:SetWidth(8) line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) - line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border local 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) diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua index 81e6e41..be6052f 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua @@ -2,13 +2,13 @@ ScrollFrame Container Plain container that scrolls its content and doesn't grow in height. -------------------------------------------------------------------------------]] -local Type, Version = "ScrollFrame", 24 +local Type, Version = "ScrollFrame", 26 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, assert, type = pairs, assert, type -local min, max, floor, abs = math.min, math.max, math.floor, math.abs +local min, max, floor = math.min, math.max, math.floor -- WoW APIs local CreateFrame, UIParent = CreateFrame, UIParent @@ -40,7 +40,7 @@ end Methods -------------------------------------------------------------------------------]] local methods = { - ["OnAcquire"] = function(self) + ["OnAcquire"] = function(self) self:SetScroll(0) self.scrollframe:SetScript("OnUpdate", FixScrollOnUpdate) end, @@ -53,7 +53,7 @@ local methods = { self.scrollframe:SetPoint("BOTTOMRIGHT") self.scrollbar:Hide() self.scrollBarShown = nil - self.content.height, self.content.width = nil, nil + self.content.height, self.content.width, self.content.original_width = nil, nil, nil end, ["SetScroll"] = function(self, value) @@ -77,7 +77,7 @@ local methods = { ["MoveScroll"] = function(self, value) local status = self.status or self.localstatus local height, viewheight = self.scrollframe:GetHeight(), self.content:GetHeight() - + if self.scrollBarShown then local diff = height - viewheight local delta = 1 @@ -94,7 +94,6 @@ local methods = { local status = self.status or self.localstatus local height, viewheight = self.scrollframe:GetHeight(), self.content:GetHeight() local offset = status.offset or 0 - local curvalue = self.scrollbar:GetValue() -- Give us a margin of error of 2 pixels to stop some conditions that i would blame on floating point inaccuracys -- No-one is going to miss 2 pixels at the bottom of the frame, anyhow! if viewheight < height + 2 then @@ -103,6 +102,9 @@ local methods = { self.scrollbar:Hide() self.scrollbar:SetValue(0) self.scrollframe:SetPoint("BOTTOMRIGHT") + if self.content.original_width then + self.content.width = self.content.original_width + end self:DoLayout() end else @@ -110,6 +112,9 @@ local methods = { self.scrollBarShown = true self.scrollbar:Show() self.scrollframe:SetPoint("BOTTOMRIGHT", -20, 0) + if self.content.original_width then + self.content.width = self.content.original_width - 20 + end self:DoLayout() end local value = (offset / (viewheight - height) * 1000) @@ -128,6 +133,11 @@ local methods = { ["LayoutFinished"] = function(self, width, height) self.content:SetHeight(height or 0 + 20) + + -- update the scrollframe + self:FixScroll() + + -- schedule another update when everything has "settled" self.scrollframe:SetScript("OnUpdate", FixScrollOnUpdate) end, @@ -141,7 +151,8 @@ local methods = { ["OnWidthSet"] = function(self, width) local content = self.content - content.width = width + content.width = width - (self.scrollBarShown and 20 or 0) + content.original_width = width end, ["OnHeightSet"] = function(self, height) diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua index 1d5b71a..466fbbd 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua @@ -161,22 +161,21 @@ local methods = { self.tablist = tabs self:BuildTabs() end, - + ["BuildTabs"] = function(self) local hastitle = (self.titletext:GetText() and self.titletext:GetText() ~= "") - local status = self.status or self.localstatus local tablist = self.tablist local tabs = self.tabs - + if not tablist then return end - + local width = self.frame.width or self.frame:GetWidth() or 0 - + wipe(widths) wipe(rowwidths) wipe(rowends) - + --Place Text into tabs and get thier initial width for i, v in ipairs(tablist) do local tab = tabs[i] @@ -184,19 +183,19 @@ local methods = { tab = self:CreateTab(i) tabs[i] = tab end - + tab:Show() tab:SetText(v.text) tab:SetDisabled(v.disabled) tab.value = v.value - + widths[i] = tab:GetWidth() - 6 --tabs are anchored 10 pixels from the right side of the previous one to reduce spacing, but add a fixed 4px padding for the text end - + for i = (#tablist)+1, #tabs, 1 do tabs[i]:Hide() end - + --First pass, find the minimum number of rows needed to hold all tabs and the initial tab layout local numtabs = #tablist local numrows = 1 @@ -214,7 +213,7 @@ local methods = { end rowwidths[numrows] = usedwidth + 10 --first tab in each row takes up an extra 10px rowends[numrows] = #tablist - + --Fix for single tabs being left on the last row, move a tab from the row above if applicable if numrows > 1 then --if the last row has only one tab @@ -245,22 +244,22 @@ local methods = { tab:SetPoint("LEFT", tabs[tabno-1], "RIGHT", -10, 0) end end - + -- equal padding for each tab to fill the available width, -- if the used space is above 75% already - -- the 18 pixel is the typical width of a scrollbar, so we can have a tab group inside a scrolling frame, + -- the 18 pixel is the typical width of a scrollbar, so we can have a tab group inside a scrolling frame, -- and not have the tabs jump around funny when switching between tabs that need scrolling and those that don't local padding = 0 if not (numrows == 1 and rowwidths[1] < width*0.75 - 18) then padding = (width - rowwidths[row]) / (endtab - starttab+1) end - + for i = starttab, endtab do PanelTemplates_TabResize(tabs[i], padding + 4, nil, nil, width, tabs[i]:GetFontString():GetStringWidth()) end starttab = endtab + 1 end - + self.borderoffset = (hastitle and 17 or 10)+((numrows)*20) self.border:SetPoint("TOPLEFT", 1, -self.borderoffset) end, @@ -286,7 +285,7 @@ local methods = { content:SetHeight(contentheight) content.height = contentheight end, - + ["LayoutFinished"] = function(self, width, height) if self.noAutoHeight then return end self:SetHeight((height or 0) + (self.borderoffset + 23)) @@ -343,7 +342,7 @@ local function Constructor() for method, func in pairs(methods) do widget[method] = func end - + return AceGUI:RegisterAsContainer(widget) end diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua index ca27bfb..48586ef 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua @@ -2,7 +2,7 @@ TreeGroup Container Container that uses a tree control to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TreeGroup", 41 +local Type, Version = "TreeGroup", 42 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -36,7 +36,7 @@ do function del(t) for k in pairs(t) do t[k] = nil - end + end pool[t] = true end end @@ -59,7 +59,6 @@ end local function UpdateButton(button, treeline, selected, canExpand, isExpanded) local self = button.obj local toggle = button.toggle - local frame = self.frame local text = treeline.text or "" local icon = treeline.icon local iconCoords = treeline.iconCoords @@ -67,7 +66,7 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded) local value = treeline.value local uniquevalue = treeline.uniquevalue local disabled = treeline.disabled - + button.treeline = treeline button.value = value button.uniquevalue = uniquevalue @@ -78,8 +77,6 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded) button:UnlockHighlight() button.selected = false end - local normalTexture = button:GetNormalTexture() - local line = button.line button.level = level if ( level == 1 ) then button:SetNormalFontObject("GameFontNormal") @@ -90,7 +87,7 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded) button:SetHighlightFontObject("GameFontHighlightSmall") button.text:SetPoint("LEFT", (icon and 16 or 0) + 8 * level, 2) end - + if disabled then button:EnableMouse(false) button.text:SetText("|cff808080"..text..FONT_COLOR_CODE_CLOSE) @@ -98,27 +95,27 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded) button.text:SetText(text) button:EnableMouse(true) end - + if icon then button.icon:SetTexture(icon) button.icon:SetPoint("LEFT", 8 * level, (level == 1) and 0 or 1) else button.icon:SetTexture(nil) end - + if iconCoords then button.icon:SetTexCoord(unpack(iconCoords)) else button.icon:SetTexCoord(0, 1, 0, 1) end - + if canExpand then if not isExpanded then - toggle:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-UP") - toggle:SetPushedTexture("Interface\\Buttons\\UI-PlusButton-DOWN") + toggle:SetNormalTexture(130838) -- Interface\\Buttons\\UI-PlusButton-UP + toggle:SetPushedTexture(130836) -- Interface\\Buttons\\UI-PlusButton-DOWN else - toggle:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-UP") - toggle:SetPushedTexture("Interface\\Buttons\\UI-MinusButton-DOWN") + toggle:SetNormalTexture(130821) -- Interface\\Buttons\\UI-MinusButton-UP + toggle:SetPushedTexture(130820) -- Interface\\Buttons\\UI-MinusButton-DOWN end toggle:Show() else @@ -201,7 +198,6 @@ end local function Button_OnDoubleClick(button) local self = button.obj - local status = self.status or self.localstatus local status = (self.status or self.localstatus).groups status[button.uniquevalue] = not status[button.uniquevalue] self:RefreshTree() @@ -213,6 +209,7 @@ local function Button_OnEnter(frame) if self.enabletooltips then GameTooltip:SetOwner(frame, "ANCHOR_NONE") + GameTooltip:ClearAllPoints() GameTooltip:SetPoint("LEFT",frame,"RIGHT") GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true) @@ -279,10 +276,10 @@ local function Dragger_OnMouseUp(frame) treeframe:SetHeight(0) treeframe:SetPoint("TOPLEFT", frame, "TOPLEFT",0,0) treeframe:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT",0,0) - + local status = self.status or self.localstatus status.treewidth = treeframe:GetWidth() - + treeframe.obj:Fire("OnTreeResize",treeframe:GetWidth()) -- recalculate the content width treeframe.obj:OnWidthSet(status.fullwidth) @@ -367,8 +364,8 @@ local methods = { --sets the tree to be displayed ["SetTree"] = function(self, tree, filter) self.filter = filter - if tree then - assert(type(tree) == "table") + if tree then + assert(type(tree) == "table") end self.tree = tree self:RefreshTree() @@ -376,8 +373,7 @@ local methods = { ["BuildLevel"] = function(self, tree, level, parent) local groups = (self.status or self.localstatus).groups - local hasChildren = self.hasChildren - + for i, v in ipairs(tree) do if v.children then if not self.filter or ShouldDisplayLevel(v.children) then @@ -414,7 +410,7 @@ local methods = { local tree = self.tree local treeframe = self.treeframe - + status.scrollToSelection = status.scrollToSelection or scrollToSelection -- needs to be cached in case the control hasn't been drawn yet (code bails out below) self:BuildLevel(tree, 1) @@ -431,7 +427,7 @@ local methods = { end local first, last - + scrollToSelection = status.scrollToSelection status.scrollToSelection = nil @@ -507,9 +503,9 @@ local methods = { button:Show() buttonnum = buttonnum + 1 end - + end, - + ["SetSelected"] = function(self, value) local status = self.status or self.localstatus if status.selected ~= value then @@ -559,16 +555,16 @@ local methods = { local treeframe = self.treeframe local status = self.status or self.localstatus status.fullwidth = width - + local contentwidth = width - status.treewidth - 20 if contentwidth < 0 then contentwidth = 0 end content:SetWidth(contentwidth) content.width = contentwidth - + local maxtreewidth = math_min(400, width - 50) - + if maxtreewidth > 100 and status.treewidth > maxtreewidth then self:SetTreeWidth(maxtreewidth, status.treesizable) end @@ -594,16 +590,16 @@ local methods = { treewidth = DEFAULT_TREE_WIDTH else resizable = false - treewidth = DEFAULT_TREE_WIDTH + treewidth = DEFAULT_TREE_WIDTH end end self.treeframe:SetWidth(treewidth) self.dragger:EnableMouse(resizable) - + local status = self.status or self.localstatus status.treewidth = treewidth status.treesizable = resizable - + -- recalculate the content width if status.fullwidth then self:OnWidthSet(status.fullwidth) diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua index f572804..a9192b3 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua @@ -30,21 +30,21 @@ do local function frameOnClose(this) this.obj:Fire("OnClose") end - + local function closeOnClick(this) PlaySound(799) -- SOUNDKIT.GS_TITLE_OPTION_EXIT this.obj:Hide() end - + local function frameOnMouseDown(this) AceGUI:ClearFocus() end - + local function titleOnMouseDown(this) this:GetParent():StartMoving() AceGUI:ClearFocus() end - + local function frameOnMouseUp(this) local frame = this:GetParent() frame:StopMovingOrSizing() @@ -55,22 +55,22 @@ do status.top = frame:GetTop() status.left = frame:GetLeft() end - + local function sizerseOnMouseDown(this) this:GetParent():StartSizing("BOTTOMRIGHT") AceGUI:ClearFocus() end - + local function sizersOnMouseDown(this) this:GetParent():StartSizing("BOTTOM") AceGUI:ClearFocus() end - + local function sizereOnMouseDown(this) this:GetParent():StartSizing("RIGHT") AceGUI:ClearFocus() end - + local function sizerOnMouseUp(this) this:GetParent():StopMovingOrSizing() end @@ -78,19 +78,19 @@ do local function SetTitle(self,title) self.titletext:SetText(title) end - + local function SetStatusText(self,text) -- self.statustext:SetText(text) end - + local function Hide(self) self.frame:Hide() end - + local function Show(self) self.frame:Show() end - + local function OnAcquire(self) self.frame:SetParent(UIParent) self.frame:SetFrameStrata("FULLSCREEN_DIALOG") @@ -98,21 +98,21 @@ do self:EnableResize(true) self:Show() end - + local function OnRelease(self) self.status = nil for k in pairs(self.localstatus) do self.localstatus[k] = nil end end - + -- called to set an external table to store status in local function SetStatusTable(self, status) assert(type(status) == "table") self.status = status self:ApplyStatus() end - + local function ApplyStatus(self) local status = self.status or self.localstatus local frame = self.frame @@ -125,7 +125,7 @@ do frame:SetPoint("CENTER",UIParent,"CENTER") end end - + local function OnWidthSet(self, width) local content = self.content local contentwidth = width - 34 @@ -135,8 +135,8 @@ do content:SetWidth(contentwidth) content.width = contentwidth end - - + + local function OnHeightSet(self, height) local content = self.content local contentheight = height - 57 @@ -146,19 +146,19 @@ do content:SetHeight(contentheight) content.height = contentheight end - + local function EnableResize(self, state) local func = state and "Show" or "Hide" self.sizer_se[func](self.sizer_se) self.sizer_s[func](self.sizer_s) self.sizer_e[func](self.sizer_e) end - + local function Constructor() local frame = CreateFrame("Frame",nil,UIParent) local self = {} self.type = "Window" - + self.Hide = Hide self.Show = Show self.SetTitle = SetTitle @@ -170,9 +170,9 @@ do self.OnWidthSet = OnWidthSet self.OnHeightSet = OnHeightSet self.EnableResize = EnableResize - + self.localstatus = {} - + self.frame = frame frame.obj = self frame:SetWidth(700) @@ -183,91 +183,91 @@ do frame:SetResizable(true) frame:SetFrameStrata("FULLSCREEN_DIALOG") frame:SetScript("OnMouseDown", frameOnMouseDown) - + frame:SetScript("OnShow",frameOnShow) frame:SetScript("OnHide",frameOnClose) frame:SetMinResize(240,240) frame:SetToplevel(true) local titlebg = frame:CreateTexture(nil, "BACKGROUND") - titlebg:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Title-Background]]) + titlebg:SetTexture(251966) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Title-Background titlebg:SetPoint("TOPLEFT", 9, -6) titlebg:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -28, -24) - + local dialogbg = frame:CreateTexture(nil, "BACKGROUND") - dialogbg:SetTexture([[Interface\Tooltips\UI-Tooltip-Background]]) + dialogbg:SetTexture(137056) -- Interface\\Tooltips\\UI-Tooltip-Background dialogbg:SetPoint("TOPLEFT", 8, -24) dialogbg:SetPoint("BOTTOMRIGHT", -6, 8) dialogbg:SetVertexColor(0, 0, 0, .75) - + local topleft = frame:CreateTexture(nil, "BORDER") - topleft:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + topleft:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border topleft:SetWidth(64) topleft:SetHeight(64) topleft:SetPoint("TOPLEFT") topleft:SetTexCoord(0.501953125, 0.625, 0, 1) - + local topright = frame:CreateTexture(nil, "BORDER") - topright:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + topright:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border topright:SetWidth(64) topright:SetHeight(64) topright:SetPoint("TOPRIGHT") topright:SetTexCoord(0.625, 0.75, 0, 1) - + local top = frame:CreateTexture(nil, "BORDER") - top:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + top:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border top:SetHeight(64) top:SetPoint("TOPLEFT", topleft, "TOPRIGHT") top:SetPoint("TOPRIGHT", topright, "TOPLEFT") top:SetTexCoord(0.25, 0.369140625, 0, 1) - + local bottomleft = frame:CreateTexture(nil, "BORDER") - bottomleft:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + bottomleft:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border bottomleft:SetWidth(64) bottomleft:SetHeight(64) bottomleft:SetPoint("BOTTOMLEFT") bottomleft:SetTexCoord(0.751953125, 0.875, 0, 1) - + local bottomright = frame:CreateTexture(nil, "BORDER") - bottomright:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + bottomright:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border bottomright:SetWidth(64) bottomright:SetHeight(64) bottomright:SetPoint("BOTTOMRIGHT") bottomright:SetTexCoord(0.875, 1, 0, 1) - + local bottom = frame:CreateTexture(nil, "BORDER") - bottom:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + bottom:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border bottom:SetHeight(64) bottom:SetPoint("BOTTOMLEFT", bottomleft, "BOTTOMRIGHT") bottom:SetPoint("BOTTOMRIGHT", bottomright, "BOTTOMLEFT") bottom:SetTexCoord(0.376953125, 0.498046875, 0, 1) - + local left = frame:CreateTexture(nil, "BORDER") - left:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + left:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border left:SetWidth(64) left:SetPoint("TOPLEFT", topleft, "BOTTOMLEFT") left:SetPoint("BOTTOMLEFT", bottomleft, "TOPLEFT") left:SetTexCoord(0.001953125, 0.125, 0, 1) - + local right = frame:CreateTexture(nil, "BORDER") - right:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + right:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border right:SetWidth(64) right:SetPoint("TOPRIGHT", topright, "BOTTOMRIGHT") right:SetPoint("BOTTOMRIGHT", bottomright, "TOPRIGHT") right:SetTexCoord(0.1171875, 0.2421875, 0, 1) - + local close = CreateFrame("Button", nil, frame, "UIPanelCloseButton") close:SetPoint("TOPRIGHT", 2, 1) close:SetScript("OnClick", closeOnClick) self.closebutton = close close.obj = self - + local titletext = frame:CreateFontString(nil, "ARTWORK") titletext:SetFontObject(GameFontNormal) titletext:SetPoint("TOPLEFT", 12, -8) titletext:SetPoint("TOPRIGHT", -32, -8) self.titletext = titletext - + local title = CreateFrame("Button", nil, frame) title:SetPoint("TOPLEFT", titlebg) title:SetPoint("BOTTOMRIGHT", titlebg) @@ -275,7 +275,7 @@ do title:SetScript("OnMouseDown",titleOnMouseDown) title:SetScript("OnMouseUp", frameOnMouseUp) self.title = title - + local sizer_se = CreateFrame("Frame",nil,frame) sizer_se:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0) sizer_se:SetWidth(25) @@ -290,7 +290,7 @@ do line1:SetWidth(14) line1:SetHeight(14) line1:SetPoint("BOTTOMRIGHT", -8, 8) - line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line1:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border local x = 0.1 * 14/17 line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) @@ -299,7 +299,7 @@ do line2:SetWidth(8) line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) - line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border local 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) @@ -311,7 +311,7 @@ do sizer_s:SetScript("OnMouseDown",sizersOnMouseDown) sizer_s:SetScript("OnMouseUp", sizerOnMouseUp) self.sizer_s = sizer_s - + local sizer_e = CreateFrame("Frame",nil,frame) sizer_e:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,25) sizer_e:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0) @@ -320,17 +320,17 @@ do sizer_e:SetScript("OnMouseDown",sizereOnMouseDown) sizer_e:SetScript("OnMouseUp", sizerOnMouseUp) self.sizer_e = sizer_e - + --Container Support local content = CreateFrame("Frame",nil,frame) self.content = content content.obj = self content:SetPoint("TOPLEFT",frame,"TOPLEFT",12,-32) content:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-12,13) - + AceGUI:RegisterAsContainer(self) - return self + return self end - + AceGUI:RegisterWidgetType(Type,Constructor,Version) end diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua index dfa76a5..8e650ce 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua @@ -51,7 +51,7 @@ local methods = { self:SetWidth(self.text:GetStringWidth() + 30) end end, - + ["SetAutoWidth"] = function(self, autoWidth) self.autoWidth = autoWidth if self.autoWidth then diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua index 345a0e4..d2adb88 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- Checkbox Widget -------------------------------------------------------------------------------]] -local Type, Version = "CheckBox", 24 +local Type, Version = "CheckBox", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -26,7 +26,7 @@ local function AlignImage(self) self.text:SetPoint("LEFT", self.checkbg, "RIGHT") self.text:SetPoint("RIGHT") else - self.text:SetPoint("LEFT", self.checkbg, "RIGHT", self.image:GetWidth() + 2, 0) + self.text:SetPoint("LEFT", self.image, "RIGHT", 1, 0) self.text:SetPoint("RIGHT") end end @@ -91,7 +91,7 @@ local methods = { if self.desc then self.desc:SetWidth(width - 30) if self.desc:GetText() and self.desc:GetText() ~= "" then - self:SetHeight(28 + self.desc:GetHeight()) + self:SetHeight(28 + self.desc:GetStringHeight()) end end end, @@ -119,20 +119,20 @@ local methods = { end end, - ["SetValue"] = function(self,value) + ["SetValue"] = function(self, value) local check = self.check self.checked = value if value then - SetDesaturation(self.check, false) - self.check:Show() + SetDesaturation(check, false) + check:Show() else --Nil is the unknown tristate value if self.tristate and value == nil then - SetDesaturation(self.check, true) - self.check:Show() + SetDesaturation(check, true) + check:Show() else - SetDesaturation(self.check, false) - self.check:Hide() + SetDesaturation(check, false) + check:Hide() end end self:SetDisabled(self.disabled) @@ -155,21 +155,21 @@ local methods = { local size if type == "radio" then size = 16 - checkbg:SetTexture("Interface\\Buttons\\UI-RadioButton") + checkbg:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton checkbg:SetTexCoord(0, 0.25, 0, 1) - check:SetTexture("Interface\\Buttons\\UI-RadioButton") + check:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton check:SetTexCoord(0.25, 0.5, 0, 1) check:SetBlendMode("ADD") - highlight:SetTexture("Interface\\Buttons\\UI-RadioButton") + highlight:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton highlight:SetTexCoord(0.5, 0.75, 0, 1) else size = 24 - checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up") + checkbg:SetTexture(130755) -- Interface\\Buttons\\UI-CheckBox-Up checkbg:SetTexCoord(0, 1, 0, 1) - check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check") + check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check check:SetTexCoord(0, 1, 0, 1) check:SetBlendMode("BLEND") - highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight") + highlight:SetTexture(130753) -- Interface\\Buttons\\UI-CheckBox-Highlight highlight:SetTexCoord(0, 1, 0, 1) end checkbg:SetHeight(size) @@ -211,7 +211,7 @@ local methods = { self.desc:Show() --self.text:SetFontObject(GameFontNormal) self.desc:SetText(desc) - self:SetHeight(28 + self.desc:GetHeight()) + self:SetHeight(28 + self.desc:GetStringHeight()) else if self.desc then self.desc:SetText("") @@ -221,11 +221,11 @@ local methods = { self:SetHeight(24) end end, - + ["SetImage"] = function(self, path, ...) local image = self.image image:SetTexture(path) - + if image:GetTexture() then local n = select("#", ...) if n == 4 or n == 8 then @@ -255,11 +255,11 @@ local function Constructor() checkbg:SetWidth(24) checkbg:SetHeight(24) checkbg:SetPoint("TOPLEFT") - checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up") + checkbg:SetTexture(130755) -- Interface\\Buttons\\UI-CheckBox-Up local check = frame:CreateTexture(nil, "OVERLAY") check:SetAllPoints(checkbg) - check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check") + check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check local text = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight") text:SetJustifyH("LEFT") @@ -268,7 +268,7 @@ local function Constructor() text:SetPoint("RIGHT") local highlight = frame:CreateTexture(nil, "HIGHLIGHT") - highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight") + highlight:SetTexture(130753) -- Interface\\Buttons\\UI-CheckBox-Highlight highlight:SetBlendMode("ADD") highlight:SetAllPoints(checkbg) diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua index 050bb63..f4cab66 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- ColorPicker Widget -------------------------------------------------------------------------------]] -local Type, Version = "ColorPicker", 24 +local Type, Version = "ColorPicker", 25 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -13,7 +13,7 @@ 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: ShowUIPanel, HideUIPanel, ColorPickerFrame, OpacitySliderFrame +-- GLOBALS: ColorPickerFrame, OpacitySliderFrame --[[----------------------------------------------------------------------------- Support functions @@ -47,7 +47,7 @@ local function Control_OnLeave(frame) end local function ColorSwatch_OnClick(frame) - HideUIPanel(ColorPickerFrame) + ColorPickerFrame:Hide() local self = frame.obj if not self.disabled then ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG") @@ -77,7 +77,7 @@ local function ColorSwatch_OnClick(frame) ColorCallback(self, r, g, b, a, true) end - ShowUIPanel(ColorPickerFrame) + ColorPickerFrame:Show() end AceGUI:ClearFocus() end diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua index b13688c..9dd4b60 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown-Items.lua 1167 2017-08-29 22:08:48Z funkydude $ ]]-- +--[[ $Id: AceGUIWidget-DropDown-Items.lua 1202 2019-05-15 23:11:22Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") @@ -33,7 +33,7 @@ end -- ItemBase is the base "class" for all dropdown items. -- Each item has to use ItemBase.Create(widgetType) to --- create an initial 'self' value. +-- create an initial 'self' value. -- ItemBase will add common functions and ui event handlers. -- Be sure to keep basic usage when you override functions. @@ -52,7 +52,7 @@ function ItemBase.Frame_OnEnter(this) self.highlight:Show() end self:Fire("OnEnter") - + if self.specialOnEnter then self.specialOnEnter(self) end @@ -60,10 +60,10 @@ end function ItemBase.Frame_OnLeave(this) local self = this.obj - + self.highlight:Hide() self:Fire("OnLeave") - + if self.specialOnLeave then self.specialOnLeave(self) end @@ -89,7 +89,7 @@ end -- Do not call this method directly function ItemBase.SetPullout(self, pullout) self.pullout = pullout - + self.frame:SetParent(nil) self.frame:SetParent(pullout.itemFrame) self.parent = pullout.itemFrame @@ -155,12 +155,12 @@ function ItemBase.Create(type) self.frame = frame frame.obj = self self.type = type - + self.useHighlight = true - + frame:SetHeight(17) frame:SetFrameStrata("FULLSCREEN_DIALOG") - + local text = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall") text:SetTextColor(1,1,1) text:SetJustifyH("LEFT") @@ -169,7 +169,7 @@ function ItemBase.Create(type) self.text = text local highlight = frame:CreateTexture(nil, "OVERLAY") - highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight") + highlight:SetTexture(136810) -- Interface\\QuestFrame\\UI-QuestTitleHighlight highlight:SetBlendMode("ADD") highlight:SetHeight(14) highlight:ClearAllPoints() @@ -178,11 +178,11 @@ function ItemBase.Create(type) highlight:Hide() self.highlight = highlight - local check = frame:CreateTexture("OVERLAY") + local check = frame:CreateTexture("OVERLAY") check:SetWidth(16) check:SetHeight(16) check:SetPoint("LEFT",frame,"LEFT",3,-1) - check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check") + check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check check:Hide() self.check = check @@ -190,28 +190,28 @@ function ItemBase.Create(type) sub:SetWidth(16) sub:SetHeight(16) sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1) - sub:SetTexture("Interface\\ChatFrame\\ChatFrameExpandArrow") + sub:SetTexture(130940) -- Interface\\ChatFrame\\ChatFrameExpandArrow sub:Hide() - self.sub = sub - + self.sub = sub + frame:SetScript("OnEnter", ItemBase.Frame_OnEnter) frame:SetScript("OnLeave", ItemBase.Frame_OnLeave) - + self.OnAcquire = ItemBase.OnAcquire self.OnRelease = ItemBase.OnRelease - + self.SetPullout = ItemBase.SetPullout self.GetText = ItemBase.GetText self.SetText = ItemBase.SetText self.SetDisabled = ItemBase.SetDisabled - + self.SetPoint = ItemBase.SetPoint self.Show = ItemBase.Show self.Hide = ItemBase.Hide - + self.SetOnLeave = ItemBase.SetOnLeave self.SetOnEnter = ItemBase.SetOnEnter - + return self end @@ -223,20 +223,20 @@ end --[[ Template for items: - + -- Item: -- do local widgetType = "Dropdown-Item-" local widgetVersion = 1 - + local function Constructor() local self = ItemBase.Create(widgetType) - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end --]] @@ -247,25 +247,25 @@ end do local widgetType = "Dropdown-Item-Header" local widgetVersion = 1 - + local function OnEnter(this) local self = this.obj self:Fire("OnEnter") - + if self.specialOnEnter then self.specialOnEnter(self) end end - + local function OnLeave(this) local self = this.obj self:Fire("OnLeave") - + if self.specialOnLeave then self.specialOnLeave(self) end end - + -- exported, override local function SetDisabled(self, disabled) ItemBase.SetDisabled(self, disabled) @@ -273,21 +273,21 @@ do self.text:SetTextColor(1, 1, 0) end end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.SetDisabled = SetDisabled - + self.frame:SetScript("OnEnter", OnEnter) self.frame:SetScript("OnLeave", OnLeave) - + self.text:SetTextColor(1, 1, 0) - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end @@ -296,7 +296,7 @@ end do local widgetType = "Dropdown-Item-Execute" local widgetVersion = 1 - + local function Frame_OnClick(this, button) local self = this.obj if self.disabled then return end @@ -305,16 +305,16 @@ do self.pullout:Close() end end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.frame:SetScript("OnClick", Frame_OnClick) - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end @@ -324,7 +324,7 @@ end do local widgetType = "Dropdown-Item-Toggle" local widgetVersion = 4 - + local function UpdateToggle(self) if self.value then self.check:Show() @@ -332,12 +332,12 @@ do self.check:Hide() end end - + local function OnRelease(self) ItemBase.OnRelease(self) self:SetValue(nil) end - + local function Frame_OnClick(this, button) local self = this.obj if self.disabled then return end @@ -350,31 +350,31 @@ do UpdateToggle(self) self:Fire("OnValueChanged", self.value) end - + -- exported local function SetValue(self, value) self.value = value UpdateToggle(self) end - + -- exported local function GetValue(self) return self.value end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.frame:SetScript("OnClick", Frame_OnClick) - + self.SetValue = SetValue self.GetValue = GetValue self.OnRelease = OnRelease - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end @@ -384,55 +384,55 @@ end do local widgetType = "Dropdown-Item-Menu" local widgetVersion = 2 - + local function OnEnter(this) local self = this.obj self:Fire("OnEnter") - + if self.specialOnEnter then self.specialOnEnter(self) end - + self.highlight:Show() - + if not self.disabled and self.submenu then self.submenu:Open("TOPLEFT", self.frame, "TOPRIGHT", self.pullout:GetRightBorderWidth(), 0, self.frame:GetFrameLevel() + 100) end end - + local function OnHide(this) local self = this.obj if self.submenu then self.submenu:Close() end end - + -- exported local function SetMenu(self, menu) assert(menu.type == "Dropdown-Pullout") self.submenu = menu end - + -- exported local function CloseMenu(self) self.submenu:Close() end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.sub:Show() - + self.frame:SetScript("OnEnter", OnEnter) self.frame:SetScript("OnHide", OnHide) - + self.SetMenu = SetMenu self.CloseMenu = CloseMenu - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end @@ -441,31 +441,31 @@ end do local widgetType = "Dropdown-Item-Separator" local widgetVersion = 2 - + -- exported, override local function SetDisabled(self, disabled) ItemBase.SetDisabled(self, disabled) self.useHighlight = false end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.SetDisabled = SetDisabled - + local line = self.frame:CreateTexture(nil, "OVERLAY") line:SetHeight(1) line:SetColorTexture(.5, .5, .5) line:SetPoint("LEFT", self.frame, "LEFT", 10, 0) line:SetPoint("RIGHT", self.frame, "RIGHT", -10, 0) - + self.text:Hide() - + self.useHighlight = false - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua index 93c93df..f8a0d1f 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua @@ -1,9 +1,9 @@ ---[[ $Id: AceGUIWidget-DropDown.lua 1167 2017-08-29 22:08:48Z funkydude $ ]]-- +--[[ $Id: AceGUIWidget-DropDown.lua 1209 2019-06-24 21:01:01Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") -- Lua APIs local min, max, floor = math.min, math.max, math.floor -local select, pairs, ipairs, type = select, pairs, ipairs, type +local select, pairs, ipairs, type, tostring = select, pairs, ipairs, type, tostring local tsort = table.sort -- WoW APIs @@ -40,9 +40,9 @@ end do local widgetType = "Dropdown-Pullout" local widgetVersion = 3 - + --[[ Static data ]]-- - + local backdrop = { bgFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", @@ -60,9 +60,9 @@ do local defaultWidth = 200 local defaultMaxHeight = 600 - + --[[ UI Event Handlers ]]-- - + -- HACK: This should be no part of the pullout, but there -- is no other 'clean' way to response to any item-OnEnter -- Used to close Submenus when an other item is entered @@ -74,22 +74,22 @@ do end end end - + -- See the note in Constructor() for each scroll related function local function OnMouseWheel(this, value) this.obj:MoveScroll(value) end - + local function OnScrollValueChanged(this, value) this.obj:SetScroll(value) end - + local function OnSizeChanged(this) this.obj:FixScroll() end - + --[[ Exported methods ]]-- - + -- exported local function SetScroll(self, value) local status = self.scrollStatus @@ -106,9 +106,9 @@ do child:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, offset) child:SetPoint("TOPRIGHT", frame, "TOPRIGHT", self.slider:IsShown() and -12 or 0, offset) status.offset = offset - status.scrollvalue = value + status.scrollvalue = value end - + -- exported local function MoveScroll(self, value) local status = self.scrollStatus @@ -127,7 +127,7 @@ do self.slider:SetValue(min(max(status.scrollvalue + delta*(1000/(diff/45)),0), 1000)) end end - + -- exported local function FixScroll(self) local status = self.scrollStatus @@ -140,7 +140,7 @@ do child:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 0, offset) self.slider:SetValue(0) else - self.slider:Show() + self.slider:Show() local value = (offset / (viewheight - height) * 1000) if value > 1000 then value = 1000 end self.slider:SetValue(value) @@ -153,44 +153,44 @@ do end end end - + -- exported, AceGUI callback local function OnAcquire(self) self.frame:SetParent(UIParent) --self.itemFrame:SetToplevel(true) end - + -- exported, AceGUI callback local function OnRelease(self) self:Clear() self.frame:ClearAllPoints() self.frame:Hide() end - + -- exported local function AddItem(self, item) self.items[#self.items + 1] = item - + local h = #self.items * 16 self.itemFrame:SetHeight(h) self.frame:SetHeight(min(h + 34, self.maxHeight)) -- +34: 20 for scrollFrame placement (10 offset) and +14 for item placement - + item.frame:SetPoint("LEFT", self.itemFrame, "LEFT") item.frame:SetPoint("RIGHT", self.itemFrame, "RIGHT") - + item:SetPullout(self) item:SetOnEnter(OnEnter) end - + -- exported - local function Open(self, point, relFrame, relPoint, x, y) + local function Open(self, point, relFrame, relPoint, x, y) local items = self.items local frame = self.frame local itemFrame = self.itemFrame - + frame:SetPoint(point, relFrame, relPoint, x, y) - + local height = 8 for i, item in pairs(items) do if i == 1 then @@ -198,23 +198,23 @@ do else item:SetPoint("TOP", items[i-1].frame, "BOTTOM", 0, 1) end - + item:Show() - + height = height + 16 end itemFrame:SetHeight(height) fixstrata("TOOLTIP", frame, frame:GetChildren()) frame:Show() self:Fire("OnOpen") - end - + end + -- exported local function Close(self) self.frame:Hide() self:Fire("OnClose") - end - + end + -- exported local function Clear(self) local items = self.items @@ -222,18 +222,18 @@ do AceGUI:Release(item) items[i] = nil end - end - + end + -- exported local function IterateItems(self) return ipairs(self.items) end - + -- exported local function SetHideOnLeave(self, val) self.hideOnLeave = val end - + -- exported local function SetMaxHeight(self, height) self.maxHeight = height or defaultMaxHeight @@ -243,19 +243,19 @@ do self.frame:SetHeight(self.itemFrame:GetHeight() + 34) -- see :AddItem end end - + -- exported local function GetRightBorderWidth(self) return 6 + (self.slider:IsShown() and 12 or 0) end - + -- exported local function GetLeftBorderWidth(self) return 6 end - + --[[ Constructor ]]-- - + local function Constructor() local count = AceGUI:GetNextWidgetNum(widgetType) local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent) @@ -264,7 +264,7 @@ do self.type = widgetType self.frame = frame frame.obj = self - + self.OnAcquire = OnAcquire self.OnRelease = OnRelease @@ -278,37 +278,37 @@ do self.SetScroll = SetScroll self.MoveScroll = MoveScroll self.FixScroll = FixScroll - + self.SetMaxHeight = SetMaxHeight self.GetRightBorderWidth = GetRightBorderWidth self.GetLeftBorderWidth = GetLeftBorderWidth - + self.items = {} - + self.scrollStatus = { scrollvalue = 0, } - + self.maxHeight = defaultMaxHeight - + frame:SetBackdrop(backdrop) frame:SetBackdropColor(0, 0, 0) frame:SetFrameStrata("FULLSCREEN_DIALOG") frame:SetClampedToScreen(true) frame:SetWidth(defaultWidth) - frame:SetHeight(self.maxHeight) + frame:SetHeight(self.maxHeight) --frame:SetToplevel(true) - + -- NOTE: The whole scroll frame code is copied from the AceGUI-3.0 widget ScrollFrame local scrollFrame = CreateFrame("ScrollFrame", nil, frame) local itemFrame = CreateFrame("Frame", nil, scrollFrame) - + self.scrollFrame = scrollFrame self.itemFrame = itemFrame - + scrollFrame.obj = self itemFrame.obj = self - + local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame) slider:SetOrientation("VERTICAL") slider:SetHitRectInsets(0, 0, -10, 0) @@ -318,7 +318,7 @@ do slider:SetFrameStrata("FULLSCREEN_DIALOG") self.slider = slider slider.obj = self - + scrollFrame:SetScrollChild(itemFrame) scrollFrame:SetPoint("TOPLEFT", frame, "TOPLEFT", 6, -12) scrollFrame:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -6, 12) @@ -327,46 +327,46 @@ do scrollFrame:SetScript("OnSizeChanged", OnSizeChanged) scrollFrame:SetToplevel(true) scrollFrame:SetFrameStrata("FULLSCREEN_DIALOG") - + itemFrame:SetPoint("TOPLEFT", scrollFrame, "TOPLEFT", 0, 0) itemFrame:SetPoint("TOPRIGHT", scrollFrame, "TOPRIGHT", -12, 0) itemFrame:SetHeight(400) itemFrame:SetToplevel(true) itemFrame:SetFrameStrata("FULLSCREEN_DIALOG") - + slider:SetPoint("TOPLEFT", scrollFrame, "TOPRIGHT", -16, 0) slider:SetPoint("BOTTOMLEFT", scrollFrame, "BOTTOMRIGHT", -16, 0) slider:SetScript("OnValueChanged", OnScrollValueChanged) slider:SetMinMaxValues(0, 1000) slider:SetValueStep(1) slider:SetValue(0) - + scrollFrame:Show() itemFrame:Show() slider:Hide() - + self:FixScroll() - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) end do local widgetType = "Dropdown" - local widgetVersion = 31 - + local widgetVersion = 34 + --[[ Static data ]]-- - + --[[ UI event handler ]]-- - + local function Control_OnEnter(this) this.obj.button:LockHighlight() this.obj:Fire("OnEnter") end - + local function Control_OnLeave(this) this.obj.button:UnlockHighlight() this.obj:Fire("OnLeave") @@ -378,7 +378,7 @@ do self.pullout:Close() end end - + local function Dropdown_TogglePullout(this) local self = this.obj PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON @@ -393,17 +393,17 @@ do AceGUI:SetFocus(self) end end - + local function OnPulloutOpen(this) local self = this.userdata.obj local value = self.value - + if not self.multiselect then for i, item in this:IterateItems() do item:SetValue(item.userdata.value == value) end end - + self.open = true self:Fire("OnOpened") end @@ -413,7 +413,7 @@ do self.open = nil self:Fire("OnClosed") end - + local function ShowMultiText(self) local text for i, widget in self.pullout:IterateItems() do @@ -429,10 +429,10 @@ do end self:SetText(text) end - + local function OnItemValueChanged(this, event, checked) local self = this.userdata.obj - + if self.multiselect then self:Fire("OnValueChanged", this.userdata.value, checked) ShowMultiText(self) @@ -443,14 +443,14 @@ do else this:SetValue(true) end - if self.open then + if self.open then self.pullout:Close() end end end - + --[[ Exported methods ]]-- - + -- exported, AceGUI callback local function OnAcquire(self) local pullout = AceGUI:Create("Dropdown-Pullout") @@ -460,13 +460,13 @@ do pullout:SetCallback("OnOpen", OnPulloutOpen) self.pullout.frame:SetFrameLevel(self.frame:GetFrameLevel() + 1) fixlevels(self.pullout.frame, self.pullout.frame:GetChildren()) - + self:SetHeight(44) self:SetWidth(200) self:SetLabel() self:SetPulloutWidth(nil) end - + -- exported, AceGUI callback local function OnRelease(self) if self.open then @@ -474,20 +474,20 @@ do end AceGUI:Release(self.pullout) self.pullout = nil - + self:SetText("") self:SetDisabled(false) self:SetMultiselect(false) - + self.value = nil self.list = nil self.open = nil self.hasClose = nil - + self.frame:ClearAllPoints() self.frame:Hide() end - + -- exported local function SetDisabled(self, disabled) self.disabled = disabled @@ -503,19 +503,19 @@ do self.text:SetTextColor(1,1,1) end end - + -- exported local function ClearFocus(self) if self.open then self.pullout:Close() end end - + -- exported local function SetText(self, text) self.text:SetText(text or "") end - + -- exported local function SetLabel(self, text) if text and text ~= "" then @@ -532,7 +532,7 @@ do self.alignoffset = 12 end end - + -- exported local function SetValue(self, value) if self.list then @@ -540,12 +540,12 @@ do end self.value = value end - + -- exported local function GetValue(self) return self.value end - + -- exported local function SetItemValue(self, item, value) if not self.multiselect then return end @@ -558,7 +558,7 @@ do end ShowMultiText(self) end - + -- exported local function SetItemDisabled(self, item, disabled) for i, widget in self.pullout:IterateItems() do @@ -567,7 +567,7 @@ do end end end - + local function AddListItem(self, value, text, itemType) if not itemType then itemType = "Dropdown-Item-Toggle" end local exists = AceGUI:GetWidgetVersion(itemType) @@ -580,7 +580,7 @@ do item:SetCallback("OnValueChanged", OnItemValueChanged) self.pullout:AddItem(item) end - + local function AddCloseButton(self) if not self.hasClose then local close = AceGUI:Create("Dropdown-Item-Execute") @@ -589,21 +589,29 @@ do self.hasClose = true end end - + -- exported local sortlist = {} + local function sortTbl(x,y) + local num1, num2 = tonumber(x), tonumber(y) + if num1 and num2 then -- numeric comparison, either two numbers or numeric strings + return num1 < num2 + else -- compare everything else tostring'ed + return tostring(x) < tostring(y) + end + end local function SetList(self, list, order, itemType) self.list = list self.pullout:Clear() self.hasClose = nil if not list then return end - + if type(order) ~= "table" then for v in pairs(list) do sortlist[#sortlist + 1] = v end - tsort(sortlist) - + tsort(sortlist, sortTbl) + for i, key in ipairs(sortlist) do AddListItem(self, key, list[key], itemType) sortlist[i] = nil @@ -618,7 +626,7 @@ do AddCloseButton(self) end end - + -- exported local function AddItem(self, value, text, itemType) if self.list then @@ -626,7 +634,7 @@ do AddListItem(self, value, text, itemType) end end - + -- exported local function SetMultiselect(self, multi) self.multiselect = multi @@ -635,23 +643,23 @@ do AddCloseButton(self) end end - + -- exported local function GetMultiselect(self) return self.multiselect end - + local function SetPulloutWidth(self, width) self.pulloutWidth = width end - + --[[ Constructor ]]-- - + local function Constructor() local count = AceGUI:GetNextWidgetNum(widgetType) local frame = CreateFrame("Frame", nil, UIParent) local dropdown = CreateFrame("Frame", "AceGUI30DropDown"..count, frame, "UIDropDownMenuTemplate") - + local self = {} self.type = widgetType self.frame = frame @@ -659,10 +667,10 @@ do self.count = count frame.obj = self dropdown.obj = self - + self.OnRelease = OnRelease self.OnAcquire = OnAcquire - + self.ClearFocus = ClearFocus self.SetText = SetText @@ -677,9 +685,9 @@ do self.SetItemValue = SetItemValue self.SetItemDisabled = SetItemDisabled self.SetPulloutWidth = SetPulloutWidth - + self.alignoffset = 26 - + frame:SetScript("OnHide",Dropdown_OnHide) dropdown:ClearAllPoints() @@ -690,10 +698,10 @@ do local left = _G[dropdown:GetName() .. "Left"] local middle = _G[dropdown:GetName() .. "Middle"] local right = _G[dropdown:GetName() .. "Right"] - + middle:ClearAllPoints() right:ClearAllPoints() - + middle:SetPoint("LEFT", left, "RIGHT", 0, 0) middle:SetPoint("RIGHT", right, "LEFT", 0, 0) right:SetPoint("TOPRIGHT", dropdown, "TOPRIGHT", 0, 17) @@ -704,7 +712,7 @@ do button:SetScript("OnEnter",Control_OnEnter) button:SetScript("OnLeave",Control_OnLeave) button:SetScript("OnClick",Dropdown_TogglePullout) - + local button_cover = CreateFrame("BUTTON",nil,self.frame) self.button_cover = button_cover button_cover.obj = self @@ -713,14 +721,14 @@ do button_cover:SetScript("OnEnter",Control_OnEnter) button_cover:SetScript("OnLeave",Control_OnLeave) button_cover:SetScript("OnClick",Dropdown_TogglePullout) - + local text = _G[dropdown:GetName() .. "Text"] self.text = text text.obj = self text:ClearAllPoints() text:SetPoint("RIGHT", right, "RIGHT" ,-43, 2) text:SetPoint("LEFT", left, "LEFT", 25, 2) - + local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall") label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0) label:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0) @@ -732,6 +740,6 @@ do AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) -end +end diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua index bf8b2c0..670cd4e 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua @@ -51,14 +51,14 @@ local function Constructor() left:SetHeight(8) left:SetPoint("LEFT", 3, 0) left:SetPoint("RIGHT", label, "LEFT", -5, 0) - left:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + left:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border left:SetTexCoord(0.81, 0.94, 0.5, 1) local right = frame:CreateTexture(nil, "BACKGROUND") right:SetHeight(8) right:SetPoint("RIGHT", -3, 0) right:SetPoint("LEFT", label, "RIGHT", 5, 0) - right:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + right:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border right:SetTexCoord(0.81, 0.94, 0.5, 1) local widget = { diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua index fdba650..092697e 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua @@ -56,7 +56,7 @@ local methods = { ["SetImage"] = function(self, path, ...) local image = self.image image:SetTexture(path) - + if image:GetTexture() then local n = select("#", ...) if n == 4 or n == 8 then @@ -118,7 +118,7 @@ local function Constructor() local highlight = frame:CreateTexture(nil, "HIGHLIGHT") highlight:SetAllPoints(image) - highlight:SetTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight") + highlight:SetTexture(136580) -- Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight highlight:SetTexCoord(0, 1, 0.23, 0.77) highlight:SetBlendMode("ADD") diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua index 5ab7fea..76a2cf9 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua @@ -8,13 +8,6 @@ if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -- Lua APIs local select, pairs = 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 - --[[----------------------------------------------------------------------------- Scripts -------------------------------------------------------------------------------]] diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua index cc7c8d5..79fddc4 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua @@ -2,7 +2,7 @@ Label Widget Displays text and optionally an icon. -------------------------------------------------------------------------------]] -local Type, Version = "Label", 24 +local Type, Version = "Label", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -39,25 +39,30 @@ local function UpdateImageAnchor(self) label:SetPoint("TOP", image, "BOTTOM") label:SetPoint("LEFT") label:SetWidth(width) - height = image:GetHeight() + label:GetHeight() + height = image:GetHeight() + label:GetStringHeight() else -- image on the left image:SetPoint("TOPLEFT") - if image:GetHeight() > label:GetHeight() then + if image:GetHeight() > label:GetStringHeight() then label:SetPoint("LEFT", image, "RIGHT", 4, 0) else label:SetPoint("TOPLEFT", image, "TOPRIGHT", 4, 0) end label:SetWidth(width - imagewidth - 4) - height = max(image:GetHeight(), label:GetHeight()) + height = max(image:GetHeight(), label:GetStringHeight()) end else -- no image shown label:SetPoint("TOPLEFT") label:SetWidth(width) - height = label:GetHeight() + height = label:GetStringHeight() end - + + -- avoid zero-height labels, since they can used as spacers + if not height or height == 0 then + height = 1 + end + self.resizing = true frame:SetHeight(height) frame.height = height @@ -108,7 +113,7 @@ local methods = { ["SetImage"] = function(self, path, ...) local image = self.image image:SetTexture(path) - + if image:GetTexture() then self.imageshown = true local n = select("#", ...) diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua index c9b0d86..46a75b1 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua @@ -233,7 +233,7 @@ local methods = { end Layout(self) end, - + ["ClearFocus"] = function(self) self.editBox:ClearFocus() self.frame:SetScript("OnShow", nil) @@ -253,12 +253,12 @@ local methods = { ["GetCursorPosition"] = function(self) return self.editBox:GetCursorPosition() end, - + ["SetCursorPosition"] = function(self, ...) return self.editBox:SetCursorPosition(...) end, - - + + } --[[----------------------------------------------------------------------------- @@ -273,7 +273,7 @@ local backdrop = { local function Constructor() local frame = CreateFrame("Frame", nil, UIParent) frame:Hide() - + local widgetNum = AceGUI:GetNextWidgetNum(Type) local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall") @@ -290,7 +290,7 @@ local function Constructor() button:SetText(ACCEPT) button:SetScript("OnClick", OnClick) button:Disable() - + local text = button:GetFontString() text:ClearAllPoints() text:SetPoint("TOPLEFT", button, "TOPLEFT", 5, -5) @@ -339,7 +339,7 @@ local function Constructor() editBox:SetScript("OnTextChanged", OnTextChanged) editBox:SetScript("OnTextSet", OnTextSet) editBox:SetScript("OnEditFocusGained", OnEditFocusGained) - + scrollFrame:SetScrollChild(editBox) diff --git a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua index 7466cb1..79e8628 100755 --- a/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua +++ b/Titan/libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua @@ -57,10 +57,9 @@ local function Frame_OnMouseDown(frame) AceGUI:ClearFocus() end -local function Slider_OnValueChanged(frame) +local function Slider_OnValueChanged(frame, newvalue) local self = frame.obj if not frame.setup then - local newvalue = frame:GetValue() if self.step and self.step > 0 then local min_value = self.min or 0 newvalue = floor((newvalue - min_value) / self.step + 0.5) * self.step + min_value @@ -106,7 +105,7 @@ local function EditBox_OnEnterPressed(frame) else value = tonumber(value) end - + if value then PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON self.slider:SetValue(value) diff --git a/Titan/libs/AceHook-3.0/AceHook-3.0.lua b/Titan/libs/AceHook-3.0/AceHook-3.0.lua index ad91467..6c75f9e 100755 --- a/Titan/libs/AceHook-3.0/AceHook-3.0.lua +++ b/Titan/libs/AceHook-3.0/AceHook-3.0.lua @@ -2,14 +2,14 @@ -- Using AceHook-3.0 is recommended when you need to unhook your hooks again, so the hook chain isn't broken -- when you manually restore the original function. -- --- **AceHook-3.0** can be embeded into your addon, either explicitly by calling AceHook:Embed(MyAddon) or by +-- **AceHook-3.0** can be embeded into your addon, either explicitly by calling AceHook:Embed(MyAddon) or by -- specifying it as an embeded library in your AceAddon. All functions will be available on your addon object -- and can be accessed directly, without having to explicitly call AceHook itself.\\ -- It is recommended to embed AceHook, otherwise you'll have to specify a custom `self` on all calls you -- make into AceHook. -- @class file -- @name AceHook-3.0 --- @release $Id: AceHook-3.0.lua 1118 2014-10-12 08:21:54Z nevcairiel $ +-- @release $Id: AceHook-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ local ACEHOOK_MAJOR, ACEHOOK_MINOR = "AceHook-3.0", 8 local AceHook, oldminor = LibStub:NewLibrary(ACEHOOK_MAJOR, ACEHOOK_MINOR) @@ -117,14 +117,14 @@ function donothing() end function hook(self, obj, method, handler, script, secure, raw, forceSecure, usage) if not handler then handler = method end - + -- These asserts make sure AceHooks's devs play by the rules. assert(not script or type(script) == "boolean") assert(not secure or type(secure) == "boolean") assert(not raw or type(raw) == "boolean") assert(not forceSecure or type(forceSecure) == "boolean") assert(usage) - + -- Error checking Battery! if obj and type(obj) ~= "table" then error(format("%s: 'object' - nil or table expected got %s", usage, type(obj)), 3) @@ -146,8 +146,8 @@ function hook(self, obj, method, handler, script, secure, raw, forceSecure, usag error(format("Cannot hook secure script %q; Use SecureHookScript(obj, method, [handler]) instead.", method), 3) end else - local issecure - if obj then + local issecure + if obj then issecure = onceSecure[obj] and onceSecure[obj][method] or issecurevariable(obj, method) else issecure = onceSecure[method] or issecurevariable(method) @@ -165,21 +165,21 @@ function hook(self, obj, method, handler, script, secure, raw, forceSecure, usag end end end - + local uid if obj then uid = registry[self][obj] and registry[self][obj][method] else uid = registry[self][method] end - + if uid then if actives[uid] then -- Only two sane choices exist here. We either a) error 100% of the time or b) always unhook and then hook -- choice b would likely lead to odd debuging conditions or other mysteries so we're going with a. error(format("Attempting to rehook already active hook %s.", method)) end - + if handlers[uid] == handler then -- turn on a decative hook, note enclosures break this ability, small memory leak actives[uid] = true return @@ -197,7 +197,7 @@ function hook(self, obj, method, handler, script, secure, raw, forceSecure, usag handlers[uid], actives[uid], scripts[uid] = nil, nil, nil uid = nil end - + local orig if script then orig = obj:GetScript(method) or donothing @@ -206,13 +206,13 @@ function hook(self, obj, method, handler, script, secure, raw, forceSecure, usag else orig = _G[method] end - + if not orig then error(format("%s: Attempting to hook a non existing target", usage), 3) end - + uid = createHook(self, handler, orig, secure, not (raw or secure)) - + if obj then self.hooks[obj] = self.hooks[obj] or {} registry[self][obj] = registry[self][obj] or {} @@ -221,7 +221,7 @@ function hook(self, obj, method, handler, script, secure, raw, forceSecure, usag if not secure then self.hooks[obj][method] = orig end - + if script then if not secure then obj:SetScript(method, uid) @@ -237,7 +237,7 @@ function hook(self, obj, method, handler, script, secure, raw, forceSecure, usag end else registry[self][method] = uid - + if not secure then _G[method] = uid self.hooks[method] = orig @@ -245,8 +245,8 @@ function hook(self, obj, method, handler, script, secure, raw, forceSecure, usag hooksecurefunc(method, uid) end end - - actives[uid], handlers[uid], scripts[uid] = true, handler, script and true or nil + + actives[uid], handlers[uid], scripts[uid] = true, handler, script and true or nil end --- Hook a function or a method on an object. @@ -262,7 +262,7 @@ end -- @usage -- -- create an addon with AceHook embeded -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("HookDemo", "AceHook-3.0") --- +-- -- function MyAddon:OnEnable() -- -- Hook ActionButton_UpdateHotkeys, overwriting the secure status -- self:Hook("ActionButton_UpdateHotkeys", true) @@ -275,12 +275,12 @@ function AceHook:Hook(object, method, handler, hookSecure) if type(object) == "string" then method, handler, hookSecure, object = object, method, handler, nil end - + if handler == true then handler, hookSecure = nil, true end - hook(self, object, method, handler, false, false, false, hookSecure or false, "Usage: Hook([object], method, [handler], [hookSecure])") + hook(self, object, method, handler, false, false, false, hookSecure or false, "Usage: Hook([object], method, [handler], [hookSecure])") end --- RawHook a function or a method on an object. @@ -297,7 +297,7 @@ end -- @usage -- -- create an addon with AceHook embeded -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("HookDemo", "AceHook-3.0") --- +-- -- function MyAddon:OnEnable() -- -- Hook ActionButton_UpdateHotkeys, overwriting the secure status -- self:RawHook("ActionButton_UpdateHotkeys", true) @@ -314,11 +314,11 @@ function AceHook:RawHook(object, method, handler, hookSecure) if type(object) == "string" then method, handler, hookSecure, object = object, method, handler, nil end - + if handler == true then handler, hookSecure = nil, true end - + hook(self, object, method, handler, false, false, true, hookSecure or false, "Usage: RawHook([object], method, [handler], [hookSecure])") end @@ -337,7 +337,7 @@ function AceHook:SecureHook(object, method, handler) if type(object) == "string" then method, handler, object = object, method, nil end - + hook(self, object, method, handler, false, true, false, false, "Usage: SecureHook([object], method, [handler])") end @@ -354,9 +354,9 @@ end -- @usage -- -- create an addon with AceHook embeded -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("HookDemo", "AceHook-3.0") --- +-- -- function MyAddon:OnEnable() --- -- Hook the OnShow of FriendsFrame +-- -- Hook the OnShow of FriendsFrame -- self:HookScript(FriendsFrame, "OnShow", "FriendsFrameOnShow") -- end -- @@ -380,9 +380,9 @@ end -- @usage -- -- create an addon with AceHook embeded -- MyAddon = LibStub("AceAddon-3.0"):NewAddon("HookDemo", "AceHook-3.0") --- +-- -- function MyAddon:OnEnable() --- -- Hook the OnShow of FriendsFrame +-- -- Hook the OnShow of FriendsFrame -- self:RawHookScript(FriendsFrame, "OnShow", "FriendsFrameOnShow") -- end -- @@ -420,54 +420,54 @@ function AceHook:Unhook(obj, method) if type(obj) == "string" then method, obj = obj, nil end - + if obj and type(obj) ~= "table" then error(format("%s: 'obj' - expecting nil or table got %s", usage, type(obj)), 2) end if type(method) ~= "string" then error(format("%s: 'method' - expeting string got %s", usage, type(method)), 2) end - + local uid if obj then uid = registry[self][obj] and registry[self][obj][method] else uid = registry[self][method] end - + if not uid or not actives[uid] then -- Declining to error on an unneeded unhook since the end effect is the same and this would just be annoying. return false end - + actives[uid], handlers[uid] = nil, nil - + if obj then registry[self][obj][method] = nil registry[self][obj] = next(registry[self][obj]) and registry[self][obj] or nil - + -- if the hook reference doesnt exist, then its a secure hook, just bail out and dont do any unhooking if not self.hooks[obj] or not self.hooks[obj][method] then return true end - + if scripts[uid] and obj:GetScript(method) == uid then -- unhooks scripts - obj:SetScript(method, self.hooks[obj][method] ~= donothing and self.hooks[obj][method] or nil) + obj:SetScript(method, self.hooks[obj][method] ~= donothing and self.hooks[obj][method] or nil) scripts[uid] = nil elseif obj and self.hooks[obj] and self.hooks[obj][method] and obj[method] == uid then -- unhooks methods obj[method] = self.hooks[obj][method] end - + self.hooks[obj][method] = nil self.hooks[obj] = next(self.hooks[obj]) and self.hooks[obj] or nil else registry[self][method] = nil - + -- if self.hooks[method] doesn't exist, then this is a SecureHook, just bail out if not self.hooks[method] then return true end - + if self.hooks[method] and _G[method] == uid then -- unhooks functions _G[method] = self.hooks[method] end - + self.hooks[method] = nil end return true @@ -501,7 +501,7 @@ function AceHook:IsHooked(obj, method) return true, handlers[registry[self][obj][method]] end end - + return false, nil end diff --git a/Titan/libs/AceTimer-3.0/AceTimer-3.0.lua b/Titan/libs/AceTimer-3.0/AceTimer-3.0.lua index 7d89500..f576fe7 100755 --- a/Titan/libs/AceTimer-3.0/AceTimer-3.0.lua +++ b/Titan/libs/AceTimer-3.0/AceTimer-3.0.lua @@ -15,7 +15,7 @@ -- make into AceTimer. -- @class file -- @name AceTimer-3.0 --- @release $Id: AceTimer-3.0.lua 1170 2018-03-29 17:38:58Z funkydude $ +-- @release $Id: AceTimer-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ local MAJOR, MINOR = "AceTimer-3.0", 17 -- Bump minor on changes local AceTimer, oldminor = LibStub:NewLibrary(MAJOR, MINOR) @@ -47,7 +47,7 @@ local function new(self, loop, func, delay, ...) activeTimers[timer] = timer -- Create new timer closure to wrap the "timer" object - timer.callback = function() + timer.callback = function() if not timer.cancelled then if type(timer.func) == "string" then -- We manually set the unpack count to prevent issues with an arg set that contains nil and ends with nil diff --git a/Titan/libs/CHANGES.txt b/Titan/libs/CHANGES.txt index f709a8c..4dd1447 100755 --- a/Titan/libs/CHANGES.txt +++ b/Titan/libs/CHANGES.txt @@ -1,8 +1,25 @@ ------------------------------------------------------------------------ -r102 | funkydude | 2018-07-17 19:25:42 +0000 (Tue, 17 Jul 2018) | 1 line +r60 | nevcairiel | 2019-06-14 23:53:41 +0000 (Fri, 14 Jun 2019) | 1 line Changed paths: - M /trunk/LibSharedMedia-3.0.toc + M /trunk/AceGUI-3.0-SharedMediaWidgets.toc -bump version +Update TOC +------------------------------------------------------------------------ +r59 | nevcairiel | 2019-06-14 23:53:15 +0000 (Fri, 14 Jun 2019) | 1 line +Changed paths: + M /trunk/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua + M /trunk/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua + M /trunk/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua + M /trunk/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua + M /trunk/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua + M /trunk/AceGUI-3.0-SharedMediaWidgets/prototypes.lua + +Remove unnecessary UpdateScrollChildRect() calls. The Scroll Child is recomputed when needed automatically, and this improves performance significantly +------------------------------------------------------------------------ +r58 | nevcairiel | 2018-06-21 23:05:54 +0000 (Thu, 21 Jun 2018) | 1 line +Changed paths: + M /trunk/AceGUI-3.0-SharedMediaWidgets/prototypes.lua + +Hard code a version to avoid issues with the version being populated from the hosting repository ------------------------------------------------------------------------ diff --git a/Titan/libs/CallbackHandler-1.0/CallbackHandler-1.0.lua b/Titan/libs/CallbackHandler-1.0/CallbackHandler-1.0.lua index e0fe1af..3bd4a37 100755 --- a/Titan/libs/CallbackHandler-1.0/CallbackHandler-1.0.lua +++ b/Titan/libs/CallbackHandler-1.0/CallbackHandler-1.0.lua @@ -1,5 +1,5 @@ ---[[ $Id: CallbackHandler-1.0.lua 14 2010-08-09 00:43:38Z mikk $ ]] -local MAJOR, MINOR = "CallbackHandler-1.0", 6 +--[[ $Id: CallbackHandler-1.0.lua 1186 2018-07-21 14:19:18Z nevcairiel $ ]] +local MAJOR, MINOR = "CallbackHandler-1.0", 7 local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) if not CallbackHandler then return end -- No upgrade needed @@ -22,41 +22,15 @@ local function errorhandler(err) return geterrorhandler()(err) end -local function CreateDispatcher(argCount) - local code = [[ - local next, xpcall, eh = ... - - local method, ARGS - local function call() method(ARGS) end - - local function dispatch(handlers, ...) - local index - index, method = next(handlers) - if not method then return end - local OLD_ARGS = ARGS - ARGS = ... - repeat - xpcall(call, eh) - index, method = next(handlers, index) - until not method - ARGS = OLD_ARGS - end - - return dispatch - ]] - - local ARGS, OLD_ARGS = {}, {} - for i = 1, argCount do ARGS[i], OLD_ARGS[i] = "arg"..i, "old_arg"..i end - code = code:gsub("OLD_ARGS", tconcat(OLD_ARGS, ", ")):gsub("ARGS", tconcat(ARGS, ", ")) - return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(next, xpcall, errorhandler) +local function Dispatch(handlers, ...) + local index, method = next(handlers) + if not method then return end + repeat + xpcall(method, errorhandler, ...) + index, method = next(handlers, index) + until not method end -local Dispatchers = setmetatable({}, {__index=function(self, argCount) - local dispatcher = CreateDispatcher(argCount) - rawset(self, argCount, dispatcher) - return dispatcher -end}) - -------------------------------------------------------------------------- -- CallbackHandler:New -- @@ -65,9 +39,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, OnUsed, OnUnused) - -- TODO: Remove this after beta has gone out - assert(not OnUsed and not OnUnused, "ACE-80: OnUsed/OnUnused are deprecated. Callbacks are now done to registry.OnUsed and registry.OnUnused") +function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAllName) RegisterName = RegisterName or "RegisterCallback" UnregisterName = UnregisterName or "UnregisterCallback" @@ -89,7 +61,7 @@ function CallbackHandler:New(target, RegisterName, UnregisterName, UnregisterAll local oldrecurse = registry.recurse registry.recurse = oldrecurse + 1 - Dispatchers[select('#', ...) + 1](events[eventname], eventname, ...) + Dispatch(events[eventname], eventname, ...) registry.recurse = oldrecurse diff --git a/Titan/libs/LibSharedMedia-3.0/CHANGES.txt b/Titan/libs/LibSharedMedia-3.0/CHANGES.txt deleted file mode 100755 index f709a8c..0000000 --- a/Titan/libs/LibSharedMedia-3.0/CHANGES.txt +++ /dev/null @@ -1,8 +0,0 @@ ------------------------------------------------------------------------- -r102 | funkydude | 2018-07-17 19:25:42 +0000 (Tue, 17 Jul 2018) | 1 line -Changed paths: - M /trunk/LibSharedMedia-3.0.toc - -bump version ------------------------------------------------------------------------- - diff --git a/Titan/libs/LibSharedMedia-3.0/CallbackHandler-1.0/CallbackHandler-1.0.lua b/Titan/libs/LibSharedMedia-3.0/CallbackHandler-1.0/CallbackHandler-1.0.lua new file mode 100755 index 0000000..3bd4a37 --- /dev/null +++ b/Titan/libs/LibSharedMedia-3.0/CallbackHandler-1.0/CallbackHandler-1.0.lua @@ -0,0 +1,212 @@ +--[[ $Id: CallbackHandler-1.0.lua 1186 2018-07-21 14:19:18Z nevcairiel $ ]] +local MAJOR, MINOR = "CallbackHandler-1.0", 7 +local CallbackHandler = LibStub:NewLibrary(MAJOR, MINOR) + +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 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, ...) + index, method = next(handlers, index) + until not method +end + +-------------------------------------------------------------------------- +-- CallbackHandler:New +-- +-- target - target object to embed public APIs in +-- RegisterName - name of the callback registration API, default "RegisterCallback" +-- 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) + + RegisterName = RegisterName or "RegisterCallback" + UnregisterName = UnregisterName or "UnregisterCallback" + if UnregisterAllName==nil then -- false is used to indicate "don't want this method" + UnregisterAllName = "UnregisterAllCallbacks" + end + + -- we declare all objects and exported APIs inside this closure to quickly gain access + -- to e.g. function names, the "target" parameter, etc + + + -- Create the registry object + local events = setmetatable({}, meta) + local registry = { recurse=0, events=events } + + -- registry:Fire() - fires the given event/message into the registry + function registry:Fire(eventname, ...) + if not rawget(events, eventname) or not next(events[eventname]) then return end + local oldrecurse = registry.recurse + registry.recurse = oldrecurse + 1 + + Dispatch(events[eventname], eventname, ...) + + registry.recurse = oldrecurse + + 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 + -- fire OnUsed callback? + if first and registry.OnUsed then + registry.OnUsed(registry, target, eventname) + first = nil + end + end + end + registry.insertQueue = nil + end + end + + -- Registration of a callback, handles: + -- self["method"], leads to self["method"](self, ...) + -- self with function ref, leads to functionref(...) + -- "addonId" (instead of self) with function ref, leads to functionref(...) + -- all with an optional arg, which, if present, gets passed as first argument (after self if present) + target[RegisterName] = function(self, eventname, method, ... --[[actually just a single arg]]) + if type(eventname) ~= "string" then + error("Usage: "..RegisterName.."(eventname, method[, arg]): 'eventname' - string expected.", 2) + end + + method = method or eventname + + 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. + + if type(method) ~= "string" and type(method) ~= "function" then + error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - string or function expected.", 2) + end + + local regfunc + + if type(method) == "string" then + -- self["method"] calling style + if type(self) ~= "table" then + error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): self was not a table?", 2) + elseif self==target then + error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): do not use Library:"..RegisterName.."(), use your own 'self'", 2) + elseif type(self[method]) ~= "function" then + error("Usage: "..RegisterName.."(\"eventname\", \"methodname\"): 'methodname' - method '"..tostring(method).."' not found on self.", 2) + end + + if select("#",...)>=1 then -- this is not the same as testing for arg==nil! + local arg=select(1,...) + regfunc = function(...) self[method](self,arg,...) end + else + regfunc = function(...) self[method](self,...) end + end + else + -- function ref with self=object or self="addonId" or self=thread + if type(self)~="table" and type(self)~="string" and type(self)~="thread" then + error("Usage: "..RegisterName.."(self or \"addonId\", eventname, method): 'self or addonId': table or string or thread expected.", 2) + end + + if select("#",...)>=1 then -- this is not the same as testing for arg==nil! + local arg=select(1,...) + regfunc = function(...) method(arg,...) end + else + regfunc = method + end + end + + + if events[eventname][self] or registry.recurse<1 then + -- if registry.recurse<1 then + -- we're overwriting an existing entry, or not currently recursing. just set it. + events[eventname][self] = regfunc + -- fire OnUsed callback? + if registry.OnUsed and first then + registry.OnUsed(registry, target, eventname) + end + else + -- we're currently processing a callback in this registry, so delay the registration of this new entry! + -- yes, we're a bit wasteful on garbage, but this is a fringe case, so we're picking low implementation overhead over garbage efficiency + registry.insertQueue = registry.insertQueue or setmetatable({},meta) + registry.insertQueue[eventname][self] = regfunc + end + end + + -- Unregister a callback + target[UnregisterName] = function(self, eventname) + if not self or self==target then + error("Usage: "..UnregisterName.."(eventname): bad 'self'", 2) + end + if type(eventname) ~= "string" then + error("Usage: "..UnregisterName.."(eventname): 'eventname' - string expected.", 2) + end + if rawget(events, eventname) and events[eventname][self] then + events[eventname][self] = nil + -- Fire OnUnused callback? + if registry.OnUnused and not next(events[eventname]) then + registry.OnUnused(registry, target, eventname) + end + end + if registry.insertQueue and rawget(registry.insertQueue, eventname) and registry.insertQueue[eventname][self] then + registry.insertQueue[eventname][self] = nil + end + end + + -- OPTIONAL: Unregister all callbacks for given selfs/addonIds + if UnregisterAllName then + target[UnregisterAllName] = function(...) + if select("#",...)<1 then + error("Usage: "..UnregisterAllName.."([whatFor]): missing 'self' or \"addonId\" to unregister events for.", 2) + end + if select("#",...)==1 and ...==target then + error("Usage: "..UnregisterAllName.."([whatFor]): supply a meaningful 'self' or \"addonId\"", 2) + end + + + for i=1,select("#",...) do + local self = select(i,...) + if registry.insertQueue then + for eventname, callbacks in pairs(registry.insertQueue) do + if callbacks[self] then + callbacks[self] = nil + end + end + end + for eventname, callbacks in pairs(events) do + if callbacks[self] then + callbacks[self] = nil + -- Fire OnUnused callback? + if registry.OnUnused and not next(callbacks) then + registry.OnUnused(registry, target, eventname) + end + end + end + end + end + end + + return registry +end + + +-- CallbackHandler purposefully does NOT do explicit embedding. Nor does it +-- try to upgrade old implicit embeds since the system is selfcontained and +-- relies on closures to work. + diff --git a/Titan/libs/LibSharedMedia-3.0/Changelog-LibSharedMedia-3.0-7.0.3.txt b/Titan/libs/LibSharedMedia-3.0/Changelog-LibSharedMedia-3.0-7.0.3.txt deleted file mode 100644 index 6d2cdc1..0000000 --- a/Titan/libs/LibSharedMedia-3.0/Changelog-LibSharedMedia-3.0-7.0.3.txt +++ /dev/null @@ -1,13 +0,0 @@ ------------------------------------------------------------------------- -r96 | funkydude | 2016-08-17 19:17:24 +0000 (Wed, 17 Aug 2016) | 1 line -Changed paths: - A /tags/7.0.3 (from /trunk:95) - -Tagging as 7.0.3 ------------------------------------------------------------------------- -r95 | funkydude | 2016-07-19 22:45:58 +0000 (Tue, 19 Jul 2016) | 1 line -Changed paths: - M /trunk/LibSharedMedia-3.0.toc - -bump toc ------------------------------------------------------------------------- diff --git a/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0.lua b/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0.lua deleted file mode 100755 index 4a31cfe..0000000 --- a/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0.lua +++ /dev/null @@ -1,292 +0,0 @@ ---[[ -Name: LibSharedMedia-3.0 -Revision: $Revision: 91 $ -Author: Elkano (elkano@gmx.de) -Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com) -Website: http://www.wowace.com/projects/libsharedmedia-3-0/ -Description: Shared handling of media data (fonts, sounds, textures, ...) between addons. -Dependencies: LibStub, CallbackHandler-1.0 -License: LGPL v2.1 -]] - -local MAJOR, MINOR = "LibSharedMedia-3.0", 6010002 -- 6.1.0 v2 / increase manually on changes -local lib = LibStub:NewLibrary(MAJOR, MINOR) - -if not lib then return end - -local _G = getfenv(0) - -local pairs = _G.pairs -local type = _G.type - -local band = _G.bit.band - -local table_insert = _G.table.insert -local table_sort = _G.table.sort - -local locale = GetLocale() -local locale_is_western -local LOCALE_MASK = 0 -lib.LOCALE_BIT_koKR = 1 -lib.LOCALE_BIT_ruRU = 2 -lib.LOCALE_BIT_zhCN = 4 -lib.LOCALE_BIT_zhTW = 8 -lib.LOCALE_BIT_western = 128 - -local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0") - -lib.callbacks = lib.callbacks or CallbackHandler:New(lib) - -lib.DefaultMedia = lib.DefaultMedia or {} -lib.MediaList = lib.MediaList or {} -lib.MediaTable = lib.MediaTable or {} -lib.MediaType = lib.MediaType or {} -lib.OverrideMedia = lib.OverrideMedia or {} - -local defaultMedia = lib.DefaultMedia -local mediaList = lib.MediaList -local mediaTable = lib.MediaTable -local overrideMedia = lib.OverrideMedia - - --- create mediatype constants -lib.MediaType.BACKGROUND = "background" -- background textures -lib.MediaType.BORDER = "border" -- border textures -lib.MediaType.FONT = "font" -- fonts -lib.MediaType.STATUSBAR = "statusbar" -- statusbar textures -lib.MediaType.SOUND = "sound" -- sound files - --- populate lib with default Blizzard data --- BACKGROUND -if not lib.MediaTable.background then lib.MediaTable.background = {} end -lib.MediaTable.background["None"] = [[]] -lib.MediaTable.background["Blizzard Collections Background"] = [[Interface\Collections\CollectionsBackgroundTile]] -lib.MediaTable.background["Blizzard Dialog Background"] = [[Interface\DialogFrame\UI-DialogBox-Background]] -lib.MediaTable.background["Blizzard Dialog Background Dark"] = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]] -lib.MediaTable.background["Blizzard Dialog Background Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Background]] -lib.MediaTable.background["Blizzard Garrison Background"] = [[Interface\Garrison\GarrisonUIBackground]] -lib.MediaTable.background["Blizzard Garrison Background 2"] = [[Interface\Garrison\GarrisonUIBackground2]] -lib.MediaTable.background["Blizzard Garrison Background 3"] = [[Interface\Garrison\GarrisonMissionUIInfoBoxBackgroundTile]] -lib.MediaTable.background["Blizzard Low Health"] = [[Interface\FullScreenTextures\LowHealth]] -lib.MediaTable.background["Blizzard Marble"] = [[Interface\FrameGeneral\UI-Background-Marble]] -lib.MediaTable.background["Blizzard Out of Control"] = [[Interface\FullScreenTextures\OutOfControl]] -lib.MediaTable.background["Blizzard Parchment"] = [[Interface\AchievementFrame\UI-Achievement-Parchment-Horizontal]] -lib.MediaTable.background["Blizzard Parchment 2"] = [[Interface\AchievementFrame\UI-GuildAchievement-Parchment-Horizontal]] -lib.MediaTable.background["Blizzard Rock"] = [[Interface\FrameGeneral\UI-Background-Rock]] -lib.MediaTable.background["Blizzard Tabard Background"] = [[Interface\TabardFrame\TabardFrameBackground]] -lib.MediaTable.background["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Background]] -lib.MediaTable.background["Solid"] = [[Interface\Buttons\WHITE8X8]] -lib.DefaultMedia.background = "None" - --- BORDER -if not lib.MediaTable.border then lib.MediaTable.border = {} end -lib.MediaTable.border["None"] = [[]] -lib.MediaTable.border["Blizzard Achievement Wood"] = [[Interface\AchievementFrame\UI-Achievement-WoodBorder]] -lib.MediaTable.border["Blizzard Chat Bubble"] = [[Interface\Tooltips\ChatBubble-Backdrop]] -lib.MediaTable.border["Blizzard Dialog"] = [[Interface\DialogFrame\UI-DialogBox-Border]] -lib.MediaTable.border["Blizzard Dialog Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Border]] -lib.MediaTable.border["Blizzard Party"] = [[Interface\CHARACTERFRAME\UI-Party-Border]] -lib.MediaTable.border["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Border]] -lib.DefaultMedia.border = "None" - --- FONT -if not lib.MediaTable.font then lib.MediaTable.font = {} end -local SML_MT_font = lib.MediaTable.font ---[[ -All font files are currently in all clients, the following table depicts which font supports which charset as of 5.0.4 -Fonts were checked using langcover.pl from DejaVu fonts (http://sourceforge.net/projects/dejavu/) and FontForge (http://fontforge.org/) -latin means check for: de, en, es, fr, it, pt - -file name latin koKR ruRU zhCN zhTW -2002.ttf 2002 X X X - - -2002B.ttf 2002 Bold X X X - - -ARHei.ttf AR CrystalzcuheiGBK Demibold X - X X X -ARIALN.TTF Arial Narrow X - X - - -ARKai_C.ttf AR ZhongkaiGBK Medium (Combat) X - X X X -ARKai_T.ttf AR ZhongkaiGBK Medium X - X X X -bHEI00M.ttf AR Heiti2 Medium B5 - - - - X -bHEI01B.ttf AR Heiti2 Bold B5 - - - - X -bKAI00M.ttf AR Kaiti Medium B5 - - - - X -bLEI00D.ttf AR Leisu Demi B5 - - - - X -FRIZQT__.TTF Friz Quadrata TT X - - - - -FRIZQT___CYR.TTF FrizQuadrataCTT x - X - - -K_Damage.TTF YDIWingsM - X X - - -K_Pagetext.TTF MoK X X X - - -MORPHEUS.TTF Morpheus X - - - - -MORPHEUS_CYR.TTF Morpheus X - X - - -NIM_____.ttf Nimrod MT X - X - - -SKURRI.TTF Skurri X - - - - -SKURRI_CYR.TTF Skurri X - X - - - -WARNING: Although FRIZQT___CYR is available on western clients, it doesn't support special European characters e.g. é, ï, ö -Due to this, we cannot use it as a replacement for FRIZQT__.TTF -]] - -if locale == "koKR" then - LOCALE_MASK = lib.LOCALE_BIT_koKR --- - SML_MT_font["굵은 글꼴"] = [[Fonts\2002B.TTF]] - SML_MT_font["기본 글꼴"] = [[Fonts\2002.TTF]] - SML_MT_font["데미지 글꼴"] = [[Fonts\K_Damage.TTF]] - SML_MT_font["퀘스트 글꼴"] = [[Fonts\K_Pagetext.TTF]] --- - lib.DefaultMedia["font"] = "기본 글꼴" -- someone from koKR please adjust if needed --- -elseif locale == "zhCN" then - LOCALE_MASK = lib.LOCALE_BIT_zhCN --- - SML_MT_font["伤害数字"] = [[Fonts\ARKai_C.ttf]] - SML_MT_font["默认"] = [[Fonts\ARKai_T.ttf]] - SML_MT_font["聊天"] = [[Fonts\ARHei.ttf]] --- - lib.DefaultMedia["font"] = "默认" -- someone from zhCN please adjust if needed --- -elseif locale == "zhTW" then - LOCALE_MASK = lib.LOCALE_BIT_zhTW --- - SML_MT_font["提示訊息"] = [[Fonts\bHEI00M.ttf]] - SML_MT_font["聊天"] = [[Fonts\bHEI01B.ttf]] - SML_MT_font["傷害數字"] = [[Fonts\bKAI00M.ttf]] - SML_MT_font["預設"] = [[Fonts\bLEI00D.ttf]] --- - lib.DefaultMedia["font"] = "預設" -- someone from zhTW please adjust if needed - -elseif locale == "ruRU" then - LOCALE_MASK = lib.LOCALE_BIT_ruRU --- - SML_MT_font["2002"] = [[Fonts\2002.TTF]] - SML_MT_font["2002 Bold"] = [[Fonts\2002B.TTF]] - SML_MT_font["AR CrystalzcuheiGBK Demibold"] = [[Fonts\ARHei.TTF]] - SML_MT_font["AR ZhongkaiGBK Medium (Combat)"] = [[Fonts\ARKai_C.TTF]] - SML_MT_font["AR ZhongkaiGBK Medium"] = [[Fonts\ARKai_T.TTF]] - SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]] - SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT___CYR.TTF]] - SML_MT_font["MoK"] = [[Fonts\K_Pagetext.TTF]] - SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS_CYR.TTF]] - SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]] - SML_MT_font["Skurri"] = [[Fonts\SKURRI_CYR.TTF]] --- - lib.DefaultMedia.font = "Friz Quadrata TT" --- -else - LOCALE_MASK = lib.LOCALE_BIT_western - locale_is_western = true --- - SML_MT_font["2002"] = [[Fonts\2002.TTF]] - SML_MT_font["2002 Bold"] = [[Fonts\2002B.TTF]] - SML_MT_font["AR CrystalzcuheiGBK Demibold"] = [[Fonts\ARHei.TTF]] - SML_MT_font["AR ZhongkaiGBK Medium (Combat)"] = [[Fonts\ARKai_C.TTF]] - SML_MT_font["AR ZhongkaiGBK Medium"] = [[Fonts\ARKai_T.TTF]] - SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]] - SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]] - SML_MT_font["MoK"] = [[Fonts\K_Pagetext.TTF]] - SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS_CYR.TTF]] - SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]] - SML_MT_font["Skurri"] = [[Fonts\SKURRI_CYR.TTF]] --- - lib.DefaultMedia.font = "Friz Quadrata TT" --- -end - --- STATUSBAR -if not lib.MediaTable.statusbar then lib.MediaTable.statusbar = {} end -lib.MediaTable.statusbar["Blizzard"] = [[Interface\TargetingFrame\UI-StatusBar]] -lib.MediaTable.statusbar["Blizzard Character Skills Bar"] = [[Interface\PaperDollInfoFrame\UI-Character-Skills-Bar]] -lib.MediaTable.statusbar["Blizzard Raid Bar"] = [[Interface\RaidFrame\Raid-Bar-Hp-Fill]] -lib.DefaultMedia.statusbar = "Blizzard" - --- SOUND -if not lib.MediaTable.sound then lib.MediaTable.sound = {} end -lib.MediaTable.sound["None"] = [[Interface\Quiet.ogg]] -- Relies on the fact that PlaySound[File] doesn't error on non-existing input. -lib.DefaultMedia.sound = "None" - -local function rebuildMediaList(mediatype) - local mtable = mediaTable[mediatype] - if not mtable then return end - if not mediaList[mediatype] then mediaList[mediatype] = {} end - local mlist = mediaList[mediatype] - -- list can only get larger, so simply overwrite it - local i = 0 - for k in pairs(mtable) do - i = i + 1 - mlist[i] = k - end - table_sort(mlist) -end - -function lib:Register(mediatype, key, data, langmask) - if type(mediatype) ~= "string" then - error(MAJOR..":Register(mediatype, key, data, langmask) - mediatype must be string, got "..type(mediatype)) - end - if type(key) ~= "string" then - error(MAJOR..":Register(mediatype, key, data, langmask) - key must be string, got "..type(key)) - end - mediatype = mediatype:lower() - if mediatype == lib.MediaType.FONT and ((langmask and band(langmask, LOCALE_MASK) == 0) or not (langmask or locale_is_western)) then return false end - if mediatype == lib.MediaType.SOUND and type(data) == "string" then - local path = data:lower() - -- Only ogg and mp3 are valid sounds. - if not path:find(".ogg", nil, true) and not path:find(".mp3", nil, true) then - return false - end - end - if not mediaTable[mediatype] then mediaTable[mediatype] = {} end - local mtable = mediaTable[mediatype] - if mtable[key] then return false end - - mtable[key] = data - rebuildMediaList(mediatype) - self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key) - return true -end - -function lib:Fetch(mediatype, key, noDefault) - local mtt = mediaTable[mediatype] - local overridekey = overrideMedia[mediatype] - local result = mtt and ((overridekey and mtt[overridekey] or mtt[key]) or (not noDefault and defaultMedia[mediatype] and mtt[defaultMedia[mediatype]])) or nil - return result ~= "" and result or nil -end - -function lib:IsValid(mediatype, key) - return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false -end - -function lib:HashTable(mediatype) - return mediaTable[mediatype] -end - -function lib:List(mediatype) - if not mediaTable[mediatype] then - return nil - end - if not mediaList[mediatype] then - rebuildMediaList(mediatype) - end - return mediaList[mediatype] -end - -function lib:GetGlobal(mediatype) - return overrideMedia[mediatype] -end - -function lib:SetGlobal(mediatype, key) - if not mediaTable[mediatype] then - return false - end - overrideMedia[mediatype] = (key and mediaTable[mediatype][key]) and key or nil - self.callbacks:Fire("LibSharedMedia_SetGlobal", mediatype, overrideMedia[mediatype]) - return true -end - -function lib:GetDefault(mediatype) - return defaultMedia[mediatype] -end - -function lib:SetDefault(mediatype, key) - if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then - defaultMedia[mediatype] = key - return true - else - return false - end -end diff --git a/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0.toc b/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0.toc index 2a1f890..b6b7865 100755 --- a/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0.toc +++ b/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0.toc @@ -1,15 +1,15 @@ -## Interface: 80000 +## Interface: 80200 ## LoadOnDemand: 1 ## Title: Lib: SharedMedia-3.0 ## Notes: Shared handling of media data (fonts, sounds, textures, ...) between addons. ## Author: Elkano -## Version: 3.0-102 +## Version: 3.0-112 ## X-Website: http://www.wowace.com/projects/libsharedmedia-3-0/ ## X-Category: Library -## X-Revision: 102 -## X-Date: 2018-07-17T19:25:42Z +## X-Revision: 112 +## X-Date: 2019-07-11T16:45:13Z LibStub\LibStub.lua CallbackHandler-1.0\CallbackHandler-1.0.lua diff --git a/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0/LibSharedMedia-3.0.lua b/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0/LibSharedMedia-3.0.lua new file mode 100755 index 0000000..1f588e8 --- /dev/null +++ b/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0/LibSharedMedia-3.0.lua @@ -0,0 +1,298 @@ +--[[ +Name: LibSharedMedia-3.0 +Revision: $Revision: 112 $ +Author: Elkano (elkano@gmx.de) +Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com) +Website: http://www.wowace.com/projects/libsharedmedia-3-0/ +Description: Shared handling of media data (fonts, sounds, textures, ...) between addons. +Dependencies: LibStub, CallbackHandler-1.0 +License: LGPL v2.1 +]] + +local MAJOR, MINOR = "LibSharedMedia-3.0", 8020001 -- 8.2.0 v1 / increase manually on changes +local lib = LibStub:NewLibrary(MAJOR, MINOR) + +if not lib then return end + +local _G = getfenv(0) + +local pairs = _G.pairs +local type = _G.type + +local band = _G.bit.band +local table_sort = _G.table.sort + +local locale = GetLocale() +local locale_is_western +local LOCALE_MASK = 0 +lib.LOCALE_BIT_koKR = 1 +lib.LOCALE_BIT_ruRU = 2 +lib.LOCALE_BIT_zhCN = 4 +lib.LOCALE_BIT_zhTW = 8 +lib.LOCALE_BIT_western = 128 + +local CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0") + +lib.callbacks = lib.callbacks or CallbackHandler:New(lib) + +lib.DefaultMedia = lib.DefaultMedia or {} +lib.MediaList = lib.MediaList or {} +lib.MediaTable = lib.MediaTable or {} +lib.MediaType = lib.MediaType or {} +lib.OverrideMedia = lib.OverrideMedia or {} + +local defaultMedia = lib.DefaultMedia +local mediaList = lib.MediaList +local mediaTable = lib.MediaTable +local overrideMedia = lib.OverrideMedia + + +-- create mediatype constants +lib.MediaType.BACKGROUND = "background" -- background textures +lib.MediaType.BORDER = "border" -- border textures +lib.MediaType.FONT = "font" -- fonts +lib.MediaType.STATUSBAR = "statusbar" -- statusbar textures +lib.MediaType.SOUND = "sound" -- sound files + +-- populate lib with default Blizzard data +-- BACKGROUND +if not lib.MediaTable.background then lib.MediaTable.background = {} end +lib.MediaTable.background["None"] = [[]] +lib.MediaTable.background["Blizzard Collections Background"] = [[Interface\Collections\CollectionsBackgroundTile]] +lib.MediaTable.background["Blizzard Dialog Background"] = [[Interface\DialogFrame\UI-DialogBox-Background]] +lib.MediaTable.background["Blizzard Dialog Background Dark"] = [[Interface\DialogFrame\UI-DialogBox-Background-Dark]] +lib.MediaTable.background["Blizzard Dialog Background Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Background]] +lib.MediaTable.background["Blizzard Garrison Background"] = [[Interface\Garrison\GarrisonUIBackground]] +lib.MediaTable.background["Blizzard Garrison Background 2"] = [[Interface\Garrison\GarrisonUIBackground2]] +lib.MediaTable.background["Blizzard Garrison Background 3"] = [[Interface\Garrison\GarrisonMissionUIInfoBoxBackgroundTile]] +lib.MediaTable.background["Blizzard Low Health"] = [[Interface\FullScreenTextures\LowHealth]] +lib.MediaTable.background["Blizzard Marble"] = [[Interface\FrameGeneral\UI-Background-Marble]] +lib.MediaTable.background["Blizzard Out of Control"] = [[Interface\FullScreenTextures\OutOfControl]] +lib.MediaTable.background["Blizzard Parchment"] = [[Interface\AchievementFrame\UI-Achievement-Parchment-Horizontal]] +lib.MediaTable.background["Blizzard Parchment 2"] = [[Interface\AchievementFrame\UI-GuildAchievement-Parchment-Horizontal]] +lib.MediaTable.background["Blizzard Rock"] = [[Interface\FrameGeneral\UI-Background-Rock]] +lib.MediaTable.background["Blizzard Tabard Background"] = [[Interface\TabardFrame\TabardFrameBackground]] +lib.MediaTable.background["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Background]] +lib.MediaTable.background["Solid"] = [[Interface\Buttons\WHITE8X8]] +lib.DefaultMedia.background = "None" + +-- BORDER +if not lib.MediaTable.border then lib.MediaTable.border = {} end +lib.MediaTable.border["None"] = [[]] +lib.MediaTable.border["Blizzard Achievement Wood"] = [[Interface\AchievementFrame\UI-Achievement-WoodBorder]] +lib.MediaTable.border["Blizzard Chat Bubble"] = [[Interface\Tooltips\ChatBubble-Backdrop]] +lib.MediaTable.border["Blizzard Dialog"] = [[Interface\DialogFrame\UI-DialogBox-Border]] +lib.MediaTable.border["Blizzard Dialog Gold"] = [[Interface\DialogFrame\UI-DialogBox-Gold-Border]] +lib.MediaTable.border["Blizzard Party"] = [[Interface\CHARACTERFRAME\UI-Party-Border]] +lib.MediaTable.border["Blizzard Tooltip"] = [[Interface\Tooltips\UI-Tooltip-Border]] +lib.DefaultMedia.border = "None" + +-- FONT +if not lib.MediaTable.font then lib.MediaTable.font = {} end +local SML_MT_font = lib.MediaTable.font +--[[ +All font files are currently in all clients, the following table depicts which font supports which charset as of 5.0.4 +Fonts were checked using langcover.pl from DejaVu fonts (http://sourceforge.net/projects/dejavu/) and FontForge (http://fontforge.org/) +latin means check for: de, en, es, fr, it, pt + +file name latin koKR ruRU zhCN zhTW +2002.ttf 2002 X X X - - +2002B.ttf 2002 Bold X X X - - +ARHei.ttf AR CrystalzcuheiGBK Demibold X - X X X +ARIALN.TTF Arial Narrow X - X - - +ARKai_C.ttf AR ZhongkaiGBK Medium (Combat) X - X X X +ARKai_T.ttf AR ZhongkaiGBK Medium X - X X X +bHEI00M.ttf AR Heiti2 Medium B5 - - - - X +bHEI01B.ttf AR Heiti2 Bold B5 - - - - X +bKAI00M.ttf AR Kaiti Medium B5 - - - - X +bLEI00D.ttf AR Leisu Demi B5 - - - - X +FRIZQT__.TTF Friz Quadrata TT X - - - - +FRIZQT___CYR.TTF FrizQuadrataCTT x - X - - +K_Damage.TTF YDIWingsM - X X - - +K_Pagetext.TTF MoK X X X - - +MORPHEUS.TTF Morpheus X - - - - +MORPHEUS_CYR.TTF Morpheus X - X - - +NIM_____.ttf Nimrod MT X - X - - +SKURRI.TTF Skurri X - - - - +SKURRI_CYR.TTF Skurri X - X - - + +WARNING: Although FRIZQT___CYR is available on western clients, it doesn't support special European characters e.g. é, ï, ö +Due to this, we cannot use it as a replacement for FRIZQT__.TTF +]] + +if locale == "koKR" then + LOCALE_MASK = lib.LOCALE_BIT_koKR +-- + SML_MT_font["굵은 글꼴"] = [[Fonts\2002B.TTF]] + SML_MT_font["기본 글꼴"] = [[Fonts\2002.TTF]] + SML_MT_font["데미지 글꼴"] = [[Fonts\K_Damage.TTF]] + SML_MT_font["퀘스트 글꼴"] = [[Fonts\K_Pagetext.TTF]] +-- + lib.DefaultMedia["font"] = "기본 글꼴" -- someone from koKR please adjust if needed +-- +elseif locale == "zhCN" then + LOCALE_MASK = lib.LOCALE_BIT_zhCN +-- + SML_MT_font["伤害数字"] = [[Fonts\ARKai_C.ttf]] + SML_MT_font["默认"] = [[Fonts\ARKai_T.ttf]] + SML_MT_font["聊天"] = [[Fonts\ARHei.ttf]] +-- + lib.DefaultMedia["font"] = "默认" -- someone from zhCN please adjust if needed +-- +elseif locale == "zhTW" then + LOCALE_MASK = lib.LOCALE_BIT_zhTW +-- + SML_MT_font["提示訊息"] = [[Fonts\bHEI00M.ttf]] + SML_MT_font["聊天"] = [[Fonts\bHEI01B.ttf]] + SML_MT_font["傷害數字"] = [[Fonts\bKAI00M.ttf]] + SML_MT_font["預設"] = [[Fonts\bLEI00D.ttf]] +-- + lib.DefaultMedia["font"] = "預設" -- someone from zhTW please adjust if needed + +elseif locale == "ruRU" then + LOCALE_MASK = lib.LOCALE_BIT_ruRU +-- + SML_MT_font["2002"] = [[Fonts\2002.TTF]] + SML_MT_font["2002 Bold"] = [[Fonts\2002B.TTF]] + SML_MT_font["AR CrystalzcuheiGBK Demibold"] = [[Fonts\ARHei.TTF]] + SML_MT_font["AR ZhongkaiGBK Medium (Combat)"] = [[Fonts\ARKai_C.TTF]] + SML_MT_font["AR ZhongkaiGBK Medium"] = [[Fonts\ARKai_T.TTF]] + SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]] + SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT___CYR.TTF]] + SML_MT_font["MoK"] = [[Fonts\K_Pagetext.TTF]] + SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS_CYR.TTF]] + SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]] + SML_MT_font["Skurri"] = [[Fonts\SKURRI_CYR.TTF]] +-- + lib.DefaultMedia.font = "Friz Quadrata TT" +-- +else + LOCALE_MASK = lib.LOCALE_BIT_western + locale_is_western = true +-- + SML_MT_font["2002"] = [[Fonts\2002.TTF]] + SML_MT_font["2002 Bold"] = [[Fonts\2002B.TTF]] + SML_MT_font["AR CrystalzcuheiGBK Demibold"] = [[Fonts\ARHei.TTF]] + SML_MT_font["AR ZhongkaiGBK Medium (Combat)"] = [[Fonts\ARKai_C.TTF]] + SML_MT_font["AR ZhongkaiGBK Medium"] = [[Fonts\ARKai_T.TTF]] + SML_MT_font["Arial Narrow"] = [[Fonts\ARIALN.TTF]] + SML_MT_font["Friz Quadrata TT"] = [[Fonts\FRIZQT__.TTF]] + SML_MT_font["MoK"] = [[Fonts\K_Pagetext.TTF]] + SML_MT_font["Morpheus"] = [[Fonts\MORPHEUS_CYR.TTF]] + SML_MT_font["Nimrod MT"] = [[Fonts\NIM_____.ttf]] + SML_MT_font["Skurri"] = [[Fonts\SKURRI_CYR.TTF]] +-- + lib.DefaultMedia.font = "Friz Quadrata TT" +-- +end + +-- STATUSBAR +if not lib.MediaTable.statusbar then lib.MediaTable.statusbar = {} end +lib.MediaTable.statusbar["Blizzard"] = [[Interface\TargetingFrame\UI-StatusBar]] +lib.MediaTable.statusbar["Blizzard Character Skills Bar"] = [[Interface\PaperDollInfoFrame\UI-Character-Skills-Bar]] +lib.MediaTable.statusbar["Blizzard Raid Bar"] = [[Interface\RaidFrame\Raid-Bar-Hp-Fill]] +lib.MediaTable.statusbar["Solid"] = [[Interface\Buttons\WHITE8X8]] +lib.DefaultMedia.statusbar = "Blizzard" + +-- SOUND +if not lib.MediaTable.sound then lib.MediaTable.sound = {} end +lib.MediaTable.sound["None"] = 1 -- Relies on the fact that PlaySound[File] doesn't error on existing invalid input files. +lib.DefaultMedia.sound = "None" + +local function rebuildMediaList(mediatype) + local mtable = mediaTable[mediatype] + if not mtable then return end + if not mediaList[mediatype] then mediaList[mediatype] = {} end + local mlist = mediaList[mediatype] + -- list can only get larger, so simply overwrite it + local i = 0 + for k in pairs(mtable) do + i = i + 1 + mlist[i] = k + end + table_sort(mlist) +end + +function lib:Register(mediatype, key, data, langmask) + if type(mediatype) ~= "string" then + error(MAJOR..":Register(mediatype, key, data, langmask) - mediatype must be string, got "..type(mediatype)) + end + if type(key) ~= "string" then + error(MAJOR..":Register(mediatype, key, data, langmask) - key must be string, got "..type(key)) + end + mediatype = mediatype:lower() + if mediatype == lib.MediaType.FONT and ((langmask and band(langmask, LOCALE_MASK) == 0) or not (langmask or locale_is_western)) then + -- ignore fonts that aren't flagged as supporting local glyphs on non-western clients + return false + end + if type(data) == "string" and (mediatype == lib.MediaType.BACKGROUND or mediatype == lib.MediaType.BORDER or mediatype == lib.MediaType.STATUSBAR or mediatype == lib.MediaType.SOUND) then + local path = data:lower() + if not path:find("^interface") then + -- files accessed via path only allowed from interface folder + return false + end + if mediatype == lib.MediaType.SOUND and not (path:find(".ogg", nil, true) or not path:find(".mp3", nil, true)) then + -- Only ogg and mp3 are valid sounds. + return false + end + end + if not mediaTable[mediatype] then mediaTable[mediatype] = {} end + local mtable = mediaTable[mediatype] + if mtable[key] then return false end + + mtable[key] = data + rebuildMediaList(mediatype) + self.callbacks:Fire("LibSharedMedia_Registered", mediatype, key) + return true +end + +function lib:Fetch(mediatype, key, noDefault) + local mtt = mediaTable[mediatype] + local overridekey = overrideMedia[mediatype] + local result = mtt and ((overridekey and mtt[overridekey] or mtt[key]) or (not noDefault and defaultMedia[mediatype] and mtt[defaultMedia[mediatype]])) or nil + return result ~= "" and result or nil +end + +function lib:IsValid(mediatype, key) + return mediaTable[mediatype] and (not key or mediaTable[mediatype][key]) and true or false +end + +function lib:HashTable(mediatype) + return mediaTable[mediatype] +end + +function lib:List(mediatype) + if not mediaTable[mediatype] then + return nil + end + if not mediaList[mediatype] then + rebuildMediaList(mediatype) + end + return mediaList[mediatype] +end + +function lib:GetGlobal(mediatype) + return overrideMedia[mediatype] +end + +function lib:SetGlobal(mediatype, key) + if not mediaTable[mediatype] then + return false + end + overrideMedia[mediatype] = (key and mediaTable[mediatype][key]) and key or nil + self.callbacks:Fire("LibSharedMedia_SetGlobal", mediatype, overrideMedia[mediatype]) + return true +end + +function lib:GetDefault(mediatype) + return defaultMedia[mediatype] +end + +function lib:SetDefault(mediatype, key) + if mediaTable[mediatype] and mediaTable[mediatype][key] and not defaultMedia[mediatype] then + defaultMedia[mediatype] = key + return true + else + return false + end +end diff --git a/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0/lib.xml b/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0/lib.xml new file mode 100755 index 0000000..7313228 --- /dev/null +++ b/Titan/libs/LibSharedMedia-3.0/LibSharedMedia-3.0/lib.xml @@ -0,0 +1,4 @@ +<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ +..\FrameXML\UI.xsd"> + <Script file="LibSharedMedia-3.0.lua" /> +</Ui> diff --git a/Titan/libs/LibSharedMedia-3.0/LibStub/LibStub.lua b/Titan/libs/LibSharedMedia-3.0/LibStub/LibStub.lua new file mode 100755 index 0000000..f5fc919 --- /dev/null +++ b/Titan/libs/LibSharedMedia-3.0/LibStub/LibStub.lua @@ -0,0 +1,51 @@ +-- $Id: LibStub.lua 76 2007-09-03 01:50:17Z mikk $ +-- LibStub is a simple versioning stub meant for use in Libraries. http://www.wowace.com/wiki/LibStub for more info +-- LibStub is hereby placed in the Public Domain +-- Credits: Kaelten, Cladhaire, ckknight, Mikk, Ammo, Nevcairiel, joshborke +local LIBSTUB_MAJOR, LIBSTUB_MINOR = "LibStub", 2 -- NEVER MAKE THIS AN SVN REVISION! IT NEEDS TO BE USABLE IN ALL REPOS! +local LibStub = _G[LIBSTUB_MAJOR] + +-- Check to see is this version of the stub is obsolete +if not LibStub or LibStub.minor < LIBSTUB_MINOR then + LibStub = LibStub or {libs = {}, minors = {} } + _G[LIBSTUB_MAJOR] = LibStub + LibStub.minor = LIBSTUB_MINOR + + -- LibStub:NewLibrary(major, minor) + -- major (string) - the major version of the library + -- minor (string or number ) - the minor version of the library + -- + -- returns nil if a newer or same version of the lib is already present + -- returns empty library object or old library object if upgrade is needed + 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.") + + 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 + + -- LibStub:GetLibrary(major, [silent]) + -- major (string) - the major version of the library + -- silent (boolean) - if true, library is optional, silently return nil if its not found + -- + -- throws an error if the library can not be found (except silent is set) + -- returns the library object if found + 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 + + -- LibStub:IterateLibraries() + -- + -- Returns an iterator for the currently registered libraries + function LibStub:IterateLibraries() + return pairs(self.libs) + end + + setmetatable(LibStub, { __call = LibStub.GetLibrary }) +end diff --git a/Titan/libs/LibSharedMedia-3.0/lib.xml b/Titan/libs/LibSharedMedia-3.0/lib.xml index 7313228..fd1c0cd 100755 --- a/Titan/libs/LibSharedMedia-3.0/lib.xml +++ b/Titan/libs/LibSharedMedia-3.0/lib.xml @@ -1,4 +1,5 @@ <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd"> - <Script file="LibSharedMedia-3.0.lua" /> + <Include file="LibSharedMedia-3.0\lib.xml"/> </Ui> + diff --git a/Titan/libs/Libs/AceGUI-3.0/AceGUI-3.0.lua b/Titan/libs/Libs/AceGUI-3.0/AceGUI-3.0.lua old mode 100644 new mode 100755 index 5ebb35d..efdb6cb --- a/Titan/libs/Libs/AceGUI-3.0/AceGUI-3.0.lua +++ b/Titan/libs/Libs/AceGUI-3.0/AceGUI-3.0.lua @@ -1,6 +1,6 @@ --- **AceGUI-3.0** provides access to numerous widgets which can be used to create GUIs. -- AceGUI is used by AceConfigDialog to create the option GUIs, but you can use it by itself --- to create any custom GUI. There are more extensive examples in the test suite in the Ace3 +-- to create any custom GUI. There are more extensive examples in the test suite in the Ace3 -- stand-alone distribution. -- -- **Note**: When using AceGUI-3.0 directly, please do not modify the frames of the widgets directly, @@ -24,17 +24,17 @@ -- f:AddChild(btn) -- @class file -- @name AceGUI-3.0 --- @release $Id: AceGUI-3.0.lua 1102 2013-10-25 14:15:23Z nevcairiel $ -local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 34 +-- @release $Id: AceGUI-3.0.lua 1202 2019-05-15 23:11:22Z nevcairiel $ +local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 36 local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR) if not AceGUI then return end -- No upgrade needed -- Lua APIs -local tconcat, tremove, tinsert = table.concat, table.remove, table.insert +local tinsert = table.insert local select, pairs, next, type = select, pairs, next, type -local error, assert, loadstring = error, assert, loadstring -local setmetatable, rawget, rawset = setmetatable, rawget, rawset +local error, assert = error, assert +local setmetatable, rawget = setmetatable, rawget local math_max = math.max -- WoW APIs @@ -51,7 +51,7 @@ AceGUI.LayoutRegistry = AceGUI.LayoutRegistry or {} AceGUI.WidgetBase = AceGUI.WidgetBase or {} AceGUI.WidgetContainerBase = AceGUI.WidgetContainerBase or {} AceGUI.WidgetVersions = AceGUI.WidgetVersions or {} - + -- local upvalues local WidgetRegistry = AceGUI.WidgetRegistry local LayoutRegistry = AceGUI.LayoutRegistry @@ -66,39 +66,10 @@ local function errorhandler(err) return geterrorhandler()(err) end -local function CreateDispatcher(argCount) - local code = [[ - local xpcall, eh = ... - local method, ARGS - local function call() return method(ARGS) end - - local function dispatch(func, ...) - method = func - if not method then return end - ARGS = ... - return xpcall(call, eh) - end - - return dispatch - ]] - - local ARGS = {} - for i = 1, argCount do ARGS[i] = "arg"..i end - code = code:gsub("ARGS", tconcat(ARGS, ", ")) - return assert(loadstring(code, "safecall Dispatcher["..argCount.."]"))(xpcall, errorhandler) -end - -local Dispatchers = setmetatable({}, {__index=function(self, argCount) - local dispatcher = CreateDispatcher(argCount) - rawset(self, argCount, dispatcher) - return dispatcher -end}) -Dispatchers[0] = function(func) - return xpcall(func, errorhandler) -end - local function safecall(func, ...) - return Dispatchers[select("#", ...)](func, ...) + if func then + return xpcall(func, errorhandler, ...) + end end -- Recycling functions @@ -108,7 +79,7 @@ do -- Internal Storage of the objects changed, from an array table -- to a hash table, and additionally we introduced versioning on -- the widgets which would discard all widgets from a pre-29 version - -- anyway, so we just clear the storage now, and don't try to + -- anyway, so we just clear the storage now, and don't try to -- convert the storage tables to the new format. -- This should generally not cause *many* widgets to end up in trash, -- since once dialogs are opened, all addons should be loaded already @@ -118,7 +89,7 @@ do if oldminor and oldminor < 29 and AceGUI.objPools then AceGUI.objPools = nil end - + 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 @@ -126,11 +97,11 @@ do if not WidgetRegistry[type] then error("Attempt to instantiate unknown widget type", 2) end - + if not objPools[type] then objPools[type] = {} end - + local newObj = next(objPools[type]) if not newObj then newObj = WidgetRegistry[type]() @@ -180,12 +151,12 @@ function AceGUI:Create(type) widget.OnAcquire = widget.Aquire widget.Aquire = nil end - + if rawget(widget, "Release") then - widget.OnRelease = rawget(widget, "Release") + widget.OnRelease = rawget(widget, "Release") widget.Release = nil end - + if widget.OnAcquire then widget:OnAcquire() else @@ -267,18 +238,18 @@ end --[[ Widgets must provide the following functions OnAcquire() - Called when the object is acquired, should set everything to a default hidden state - + And the following members frame - the frame or derivitive object that will be treated as the widget for size and anchoring purposes type - the type of the object, same as the name given to :RegisterWidget() - + Widgets contain a table called userdata, this is a safe place to store data associated with the wigdet It will be cleared automatically when a widget is released Placing values directly into a widget object should be avoided - + If the Widget can act as a container for other Widgets the following content - frame or derivitive that children will be anchored to - + The Widget can supply the following Optional Members :OnRelease() - Called when the object is Released, should remove any additional anchors and clear any data :OnWidthSet(width) - Called when the width of the widget is changed @@ -294,21 +265,21 @@ end -- Widget Base Template -- -------------------------- do - local WidgetBase = AceGUI.WidgetBase - + local WidgetBase = AceGUI.WidgetBase + WidgetBase.SetParent = function(self, parent) local frame = self.frame frame:SetParent(nil) frame:SetParent(parent.content) self.parent = parent end - + WidgetBase.SetCallback = function(self, name, func) if type(func) == "function" then self.events[name] = func end end - + WidgetBase.Fire = function(self, name, ...) if self.events[name] then local success, ret = safecall(self.events[name], self, name, ...) @@ -317,7 +288,7 @@ do end end end - + WidgetBase.SetWidth = function(self, width) self.frame:SetWidth(width) self.frame.width = width @@ -325,7 +296,7 @@ do self:OnWidthSet(width) end end - + WidgetBase.SetRelativeWidth = function(self, width) if width <= 0 or width > 1 then error(":SetRelativeWidth(width): Invalid relative width.", 2) @@ -333,7 +304,7 @@ do self.relWidth = width self.width = "relative" end - + WidgetBase.SetHeight = function(self, height) self.frame:SetHeight(height) self.frame.height = height @@ -341,7 +312,7 @@ do self:OnHeightSet(height) end end - + --[[ WidgetBase.SetRelativeHeight = function(self, height) if height <= 0 or height > 1 then error(":SetRelativeHeight(height): Invalid relative height.", 2) @@ -353,47 +324,47 @@ do WidgetBase.IsVisible = function(self) return self.frame:IsVisible() end - + WidgetBase.IsShown= function(self) return self.frame:IsShown() end - + WidgetBase.Release = function(self) AceGUI:Release(self) end - + WidgetBase.SetPoint = function(self, ...) return self.frame:SetPoint(...) end - + WidgetBase.ClearAllPoints = function(self) return self.frame:ClearAllPoints() end - + WidgetBase.GetNumPoints = function(self) return self.frame:GetNumPoints() end - + WidgetBase.GetPoint = function(self, ...) return self.frame:GetPoint(...) - end - + end + WidgetBase.GetUserDataTable = function(self) return self.userdata end - + WidgetBase.SetUserData = function(self, key, value) self.userdata[key] = value end - + WidgetBase.GetUserData = function(self, key) return self.userdata[key] end - + WidgetBase.IsFullHeight = function(self) return self.height == "fill" end - + WidgetBase.SetFullHeight = function(self, isFull) if isFull then self.height = "fill" @@ -401,11 +372,11 @@ do self.height = nil end end - + WidgetBase.IsFullWidth = function(self) return self.width == "fill" end - + WidgetBase.SetFullWidth = function(self, isFull) if isFull then self.width = "fill" @@ -413,29 +384,29 @@ do self.width = nil end end - + -- local function LayoutOnUpdate(this) -- this:SetScript("OnUpdate",nil) -- this.obj:PerformLayout() -- end - + local WidgetContainerBase = AceGUI.WidgetContainerBase - + WidgetContainerBase.PauseLayout = function(self) self.LayoutPaused = true end - + WidgetContainerBase.ResumeLayout = function(self) self.LayoutPaused = nil end - + WidgetContainerBase.PerformLayout = function(self) if self.LayoutPaused then return end safecall(self.LayoutFunc, self.content, self.children) end - + --call this function to layout, makes sure layed out objects get a frame to get sizes etc WidgetContainerBase.DoLayout = function(self) self:PerformLayout() @@ -443,7 +414,7 @@ do -- self.frame:SetScript("OnUpdate", LayoutOnUpdate) -- end end - + WidgetContainerBase.AddChild = function(self, child, beforeWidget) if beforeWidget then local siblingIndex = 1 @@ -451,7 +422,7 @@ do if widget == beforeWidget then break end - siblingIndex = siblingIndex + 1 + siblingIndex = siblingIndex + 1 end tinsert(self.children, siblingIndex, child) else @@ -461,7 +432,7 @@ do child.frame:Show() self:DoLayout() end - + WidgetContainerBase.AddChildren = function(self, ...) for i = 1, select("#", ...) do local child = select(i, ...) @@ -471,7 +442,7 @@ do end self:DoLayout() end - + WidgetContainerBase.ReleaseChildren = function(self) local children = self.children for i = 1,#children do @@ -479,7 +450,7 @@ do children[i] = nil end end - + WidgetContainerBase.SetLayout = function(self, Layout) self.LayoutFunc = AceGUI:GetLayout(Layout) end @@ -503,7 +474,7 @@ do end end end - + local function ContentResize(this) if this:GetWidth() and this:GetHeight() then this.width = this:GetWidth() @@ -515,7 +486,7 @@ do setmetatable(WidgetContainerBase, {__index=WidgetBase}) --One of these function should be called on each Widget Instance as part of its creation process - + --- Register a widget-class as a container for newly created widgets. -- @param widget The widget class function AceGUI:RegisterAsContainer(widget) @@ -531,7 +502,7 @@ do widget:SetLayout("List") return widget end - + --- Register a widget-class as a widget. -- @param widget The widget class function AceGUI:RegisterAsWidget(widget) @@ -558,11 +529,11 @@ end -- @param Version The version of the widget function AceGUI:RegisterWidgetType(Name, Constructor, Version) assert(type(Constructor) == "function") - assert(type(Version) == "number") - + assert(type(Version) == "number") + local oldVersion = WidgetVersions[Name] if oldVersion and oldVersion >= Version then return end - + WidgetVersions[Name] = Version WidgetRegistry[Name] = Constructor end @@ -631,7 +602,7 @@ AceGUI:RegisterLayout("List", local width = content.width or content:GetWidth() or 0 for i = 1, #children do local child = children[i] - + local frame = child.frame frame:ClearAllPoints() frame:Show() @@ -640,22 +611,22 @@ AceGUI:RegisterLayout("List", else frame:SetPoint("TOPLEFT", children[i-1].frame, "BOTTOMLEFT") end - + if child.width == "fill" then child:SetWidth(width) frame:SetPoint("RIGHT", content) - + if child.DoLayout then child:DoLayout() end elseif child.width == "relative" then child:SetWidth(width * child.relWidth) - + if child.DoLayout then child:DoLayout() end end - + height = height + (frame.height or frame:GetHeight() or 0) end safecall(content.obj.LayoutFinished, content.obj, nil, height) @@ -690,19 +661,17 @@ AceGUI:RegisterLayout("Flow", --height of the current row local rowheight = 0 local rowoffset = 0 - local lastrowoffset - + local width = content.width or content:GetWidth() or 0 - + --control at the start of the row local rowstart local rowstartoffset - local lastrowstart local isfullheight - + local frameoffset local lastframeoffset - local oversize + local oversize for i = 1, #children do local child = children[i] oversize = nil @@ -710,17 +679,17 @@ AceGUI:RegisterLayout("Flow", local frameheight = frame.height or frame:GetHeight() or 0 local framewidth = frame.width or frame:GetWidth() or 0 lastframeoffset = frameoffset - -- HACK: Why did we set a frameoffset of (frameheight / 2) ? + -- HACK: Why did we set a frameoffset of (frameheight / 2) ? -- That was moving all widgets half the widgets size down, is that intended? -- Actually, it seems to be neccessary for many cases, we'll leave it in for now. -- If widgets seem to anchor weirdly with this, provide a valid alignoffset for them. -- TODO: Investigate moar! frameoffset = child.alignoffset or (frameheight / 2) - + if child.width == "relative" then framewidth = width * child.relWidth end - + frame:Show() frame:ClearAllPoints() if i == 1 then @@ -759,11 +728,11 @@ AceGUI:RegisterLayout("Flow", else --handles cases where the new height is higher than either control because of the offsets --math.max(rowheight-rowoffset+frameoffset, frameheight-frameoffset+rowoffset) - + --offset is always the larger of the two offsets rowoffset = math_max(rowoffset, frameoffset) rowheight = math_max(rowheight, rowoffset + (frameheight / 2)) - + frame:SetPoint("TOPLEFT", children[i-1].frame, "TOPRIGHT", 0, frameoffset - lastframeoffset) usedwidth = framewidth + usedwidth end @@ -772,11 +741,11 @@ AceGUI:RegisterLayout("Flow", if child.width == "fill" then safelayoutcall(child, "SetWidth", width) frame:SetPoint("RIGHT", content) - + usedwidth = 0 rowstart = frame rowstartoffset = frameoffset - + if child.DoLayout then child:DoLayout() end @@ -785,7 +754,7 @@ AceGUI:RegisterLayout("Flow", rowstartoffset = rowoffset elseif child.width == "relative" then safelayoutcall(child, "SetWidth", width * child.relWidth) - + if child.DoLayout then child:DoLayout() end @@ -794,20 +763,238 @@ AceGUI:RegisterLayout("Flow", frame:SetPoint("RIGHT", content) end end - + if child.height == "fill" then frame:SetPoint("BOTTOM", content) isfullheight = true end end - + --anchor the last row, if its full height needs a special case since its height has just been changed by the anchor if isfullheight then rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -height) elseif rowstart then rowstart:SetPoint("TOPLEFT", content, "TOPLEFT", 0, -(height + (rowoffset - rowstartoffset) + 3)) end - + height = height + rowheight + 3 safecall(content.obj.LayoutFinished, content.obj, nil, height) end) + +-- Get alignment method and value. Possible alignment methods are a callback, a number, "start", "middle", "end", "fill" or "TOPLEFT", "BOTTOMRIGHT" etc. +local GetCellAlign = function (dir, tableObj, colObj, cellObj, cell, child) + local fn = cellObj and (cellObj["align" .. dir] or cellObj.align) + 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 + + if type(fn) == "string" then + fn = fn:lower() + fn = dir == "V" and (fn:sub(1, 3) == "top" and "start" or fn:sub(1, 6) == "bottom" and "end" or fn:sub(1, 6) == "center" and "middle") + or dir == "H" and (fn:sub(-4) == "left" and "start" or fn:sub(-5) == "right" and "end" or fn:sub(-6) == "center" and "middle") + or fn + val = (fn == "start" or fn == "fill") and 0 or fn == "end" and cell - child or (cell - child) / 2 + elseif type(fn) == "function" then + val = fn(child or 0, cell, dir) + else + val = fn + end + + return fn, max(0, min(val, cell)) +end + +-- Get width or height for multiple cells combined +local GetCellDimension = function (dir, laneDim, from, to, space) + local dim = 0 + for cell=from,to do + dim = dim + (laneDim[cell] or 0) + end + return dim + max(0, to - from) * (space or 0) +end + +--[[ Options +============ +Container: + - columns ({col, col, ...}): Column settings. "col" can be a number (<= 0: content width, <1: rel. width, <10: weight, >=10: abs. width) or a table with column setting. + - space, spaceH, spaceV: Overall, horizontal and vertical spacing between cells. + - align, alignH, alignV: Overall, horizontal and vertical cell alignment. See GetCellAlign() for possible values. +Columns: + - width: Fixed column width (nil or <=0: content width, <1: rel. width, >=1: abs. width). + - min or 1: Min width for content based width + - max or 2: Max width for content based width + - weight: Flexible column width. The leftover width after accounting for fixed-width columns is distributed to weighted columns according to their weights. + - align, alignH, alignV: Overwrites the container setting for alignment. +Cell: + - colspan: Makes a cell span multiple columns. + - rowspan: Makes a cell span multiple rows. + - align, alignH, alignV: Overwrites the container and column setting for alignment. +]] +AceGUI:RegisterLayout("Table", + function (content, children) + local obj = content.obj + obj:PauseLayout() + + local tableObj = obj:GetUserData("table") + local cols = tableObj.columns + local spaceH = tableObj.spaceH or tableObj.space or 0 + local spaceV = tableObj.spaceV or tableObj.space or 0 + local totalH = (content:GetWidth() or content.width or 0) - spaceH * (#cols - 1) + + -- We need to reuse these because layout events can come in very frequently + local layoutCache = obj:GetUserData("layoutCache") + if not layoutCache then + layoutCache = {{}, {}, {}, {}, {}, {}} + obj:SetUserData("layoutCache", layoutCache) + end + local t, laneH, laneV, rowspans, rowStart, colStart = unpack(layoutCache) + + -- Create the grid + local n, slotFound = 0 + for i,child in ipairs(children) do + if child:IsShown() then + repeat + n = n + 1 + local col = (n - 1) % #cols + 1 + local row = ceil(n / #cols) + local rowspan = rowspans[col] + local cell = rowspan and rowspan.child or child + local cellObj = cell:GetUserData("cell") + slotFound = not rowspan + + -- Rowspan + if not rowspan and cellObj and cellObj.rowspan then + rowspan = {child = child, from = row, to = row + cellObj.rowspan - 1} + rowspans[col] = rowspan + end + if rowspan and i == #children then + rowspan.to = row + end + + -- Colspan + local colspan = max(0, min((cellObj and cellObj.colspan or 1) - 1, #cols - col)) + n = n + colspan + + -- Place the cell + if not rowspan or rowspan.to == row then + t[n] = cell + rowStart[cell] = rowspan and rowspan.from or row + colStart[cell] = col + + if rowspan then + rowspans[col] = nil + end + end + until slotFound + end + end + + local rows = ceil(n / #cols) + + -- Determine fixed size cols and collect weights + local extantH, totalWeight = totalH, 0 + for col,colObj in ipairs(cols) do + laneH[col] = 0 + + if type(colObj) == "number" then + colObj = {[colObj >= 1 and colObj < 10 and "weight" or "width"] = colObj} + cols[col] = colObj + end + + if colObj.weight then + -- Weight + totalWeight = totalWeight + (colObj.weight or 1) + else + if not colObj.width or colObj.width <= 0 then + -- Content width + for row=1,rows do + local child = t[(row - 1) * #cols + col] + if child then + local f = child.frame + f:ClearAllPoints() + local childH = f:GetWidth() or 0 + + laneH[col] = 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])) + else + -- Rel./Abs. width + laneH[col] = colObj.width < 1 and colObj.width * totalH or colObj.width + end + extantH = max(0, extantH - laneH[col]) + end + end + + -- Determine sizes based on weight + local scale = totalWeight > 0 and extantH / totalWeight or 0 + for col,colObj in pairs(cols) do + if colObj.weight then + laneH[col] = scale * colObj.weight + end + end + + -- Arrange children + for row=1,rows do + local rowV = 0 + + -- Horizontal placement and sizing + for col=1,#cols do + local child = t[(row - 1) * #cols + col] + if child then + local colObj = cols[colStart[child]] + local cellObj = child:GetUserData("cell") + local offsetH = GetCellDimension("H", laneH, 1, colStart[child] - 1, spaceH) + (colStart[child] == 1 and 0 or spaceH) + local cellH = GetCellDimension("H", laneH, colStart[child], col, spaceH) + + local f = child.frame + f:ClearAllPoints() + local childH = f:GetWidth() or 0 + + local alignFn, align = GetCellAlign("H", tableObj, colObj, cellObj, cellH, childH) + f:SetPoint("LEFT", content, offsetH + align, 0) + if child:IsFullWidth() or alignFn == "fill" or childH > cellH then + f:SetPoint("RIGHT", content, "LEFT", offsetH + align + cellH, 0) + end + + if child.DoLayout then + child:DoLayout() + end + + rowV = max(rowV, (f:GetHeight() or 0) - GetCellDimension("V", laneV, rowStart[child], row - 1, spaceV)) + end + end + + laneV[row] = rowV + + -- Vertical placement and sizing + for col=1,#cols do + local child = t[(row - 1) * #cols + col] + if child then + local colObj = cols[colStart[child]] + local cellObj = child:GetUserData("cell") + local offsetV = GetCellDimension("V", laneV, 1, rowStart[child] - 1, spaceV) + (rowStart[child] == 1 and 0 or spaceV) + local cellV = GetCellDimension("V", laneV, rowStart[child], row, spaceV) + + local f = child.frame + local childV = f:GetHeight() or 0 + + local alignFn, align = GetCellAlign("V", tableObj, colObj, cellObj, cellV, childV) + if child:IsFullHeight() or alignFn == "fill" then + f:SetHeight(cellV) + end + f:SetPoint("TOP", content, 0, -(offsetV + align)) + end + end + end + + -- Calculate total height + local totalV = GetCellDimension("V", laneV, 1, #laneV, spaceV) + + -- Cleanup + for _,v in pairs(layoutCache) do wipe(v) end + + safecall(obj.LayoutFinished, obj, nil, totalV) + obj:ResumeLayout() + end) diff --git a/Titan/libs/Libs/AceGUI-3.0/AceGUI-3.0.xml b/Titan/libs/Libs/AceGUI-3.0/AceGUI-3.0.xml old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-BlizOptionsGroup.lua old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua old mode 100644 new mode 100755 index 18e49cb..aacb0fc --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-DropDownGroup.lua @@ -150,7 +150,7 @@ local function Constructor() widget[method] = func end dropdown.parentgroup = widget - + return AceGUI:RegisterAsContainer(widget) end diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua old mode 100644 new mode 100755 index bb93cc5..aff1416 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-Frame.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- Frame Container -------------------------------------------------------------------------------]] -local Type, Version = "Frame", 24 +local Type, Version = "Frame", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -21,10 +21,14 @@ local CreateFrame, UIParent = CreateFrame, UIParent Scripts -------------------------------------------------------------------------------]] local function Button_OnClick(frame) - PlaySound("gsTitleOptionExit") + PlaySound(799) -- SOUNDKIT.GS_TITLE_OPTION_EXIT frame.obj:Hide() end +local function Frame_OnShow(frame) + frame.obj:Fire("OnShow") +end + local function Frame_OnClose(frame) frame.obj:Fire("OnClose") end @@ -186,6 +190,7 @@ local function Constructor() frame:SetBackdropColor(0, 0, 0, 1) frame:SetMinResize(400, 200) frame:SetToplevel(true) + frame:SetScript("OnShow", Frame_OnShow) frame:SetScript("OnHide", Frame_OnClose) frame:SetScript("OnMouseDown", Frame_OnMouseDown) @@ -214,7 +219,7 @@ local function Constructor() statustext:SetText("") local titlebg = frame:CreateTexture(nil, "OVERLAY") - titlebg:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header") + titlebg:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header titlebg:SetTexCoord(0.31, 0.67, 0, 0.63) titlebg:SetPoint("TOP", 0, 12) titlebg:SetWidth(100) @@ -230,14 +235,14 @@ local function Constructor() titletext:SetPoint("TOP", titlebg, "TOP", 0, -14) local titlebg_l = frame:CreateTexture(nil, "OVERLAY") - titlebg_l:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header") + titlebg_l:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header titlebg_l:SetTexCoord(0.21, 0.31, 0, 0.63) titlebg_l:SetPoint("RIGHT", titlebg, "LEFT") titlebg_l:SetWidth(30) titlebg_l:SetHeight(40) local titlebg_r = frame:CreateTexture(nil, "OVERLAY") - titlebg_r:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header") + titlebg_r:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header titlebg_r:SetTexCoord(0.67, 0.77, 0, 0.63) titlebg_r:SetPoint("LEFT", titlebg, "RIGHT") titlebg_r:SetWidth(30) @@ -255,7 +260,7 @@ local function Constructor() line1:SetWidth(14) line1:SetHeight(14) line1:SetPoint("BOTTOMRIGHT", -8, 8) - line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line1:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border local x = 0.1 * 14/17 line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) @@ -263,7 +268,7 @@ local function Constructor() line2:SetWidth(8) line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) - line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border local 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) diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-InlineGroup.lua old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua old mode 100644 new mode 100755 index 1695f48..be6052f --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-ScrollFrame.lua @@ -2,15 +2,13 @@ ScrollFrame Container Plain container that scrolls its content and doesn't grow in height. -------------------------------------------------------------------------------]] -local Type, Version = "ScrollFrame", 24 +local Type, Version = "ScrollFrame", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -local IsLegion = select(4, GetBuildInfo()) >= 70000 - -- Lua APIs local pairs, assert, type = pairs, assert, type -local min, max, floor, abs = math.min, math.max, math.floor, math.abs +local min, max, floor = math.min, math.max, math.floor -- WoW APIs local CreateFrame, UIParent = CreateFrame, UIParent @@ -42,7 +40,7 @@ end Methods -------------------------------------------------------------------------------]] local methods = { - ["OnAcquire"] = function(self) + ["OnAcquire"] = function(self) self:SetScroll(0) self.scrollframe:SetScript("OnUpdate", FixScrollOnUpdate) end, @@ -55,7 +53,7 @@ local methods = { self.scrollframe:SetPoint("BOTTOMRIGHT") self.scrollbar:Hide() self.scrollBarShown = nil - self.content.height, self.content.width = nil, nil + self.content.height, self.content.width, self.content.original_width = nil, nil, nil end, ["SetScroll"] = function(self, value) @@ -79,7 +77,7 @@ local methods = { ["MoveScroll"] = function(self, value) local status = self.status or self.localstatus local height, viewheight = self.scrollframe:GetHeight(), self.content:GetHeight() - + if self.scrollBarShown then local diff = height - viewheight local delta = 1 @@ -96,7 +94,6 @@ local methods = { local status = self.status or self.localstatus local height, viewheight = self.scrollframe:GetHeight(), self.content:GetHeight() local offset = status.offset or 0 - local curvalue = self.scrollbar:GetValue() -- Give us a margin of error of 2 pixels to stop some conditions that i would blame on floating point inaccuracys -- No-one is going to miss 2 pixels at the bottom of the frame, anyhow! if viewheight < height + 2 then @@ -105,6 +102,9 @@ local methods = { self.scrollbar:Hide() self.scrollbar:SetValue(0) self.scrollframe:SetPoint("BOTTOMRIGHT") + if self.content.original_width then + self.content.width = self.content.original_width + end self:DoLayout() end else @@ -112,6 +112,9 @@ local methods = { self.scrollBarShown = true self.scrollbar:Show() self.scrollframe:SetPoint("BOTTOMRIGHT", -20, 0) + if self.content.original_width then + self.content.width = self.content.original_width - 20 + end self:DoLayout() end local value = (offset / (viewheight - height) * 1000) @@ -130,6 +133,11 @@ local methods = { ["LayoutFinished"] = function(self, width, height) self.content:SetHeight(height or 0 + 20) + + -- update the scrollframe + self:FixScroll() + + -- schedule another update when everything has "settled" self.scrollframe:SetScript("OnUpdate", FixScrollOnUpdate) end, @@ -143,7 +151,8 @@ local methods = { ["OnWidthSet"] = function(self, width) local content = self.content - content.width = width + content.width = width - (self.scrollBarShown and 20 or 0) + content.original_width = width end, ["OnHeightSet"] = function(self, height) @@ -178,11 +187,7 @@ local function Constructor() local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND") scrollbg:SetAllPoints(scrollbar) - if IsLegion then - scrollbg:SetColorTexture(0, 0, 0, 0.4) - else - scrollbg:SetTexture(0, 0, 0, 0.4) - end + scrollbg:SetColorTexture(0, 0, 0, 0.4) --Container Support local content = CreateFrame("Frame", nil, scrollframe) diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-SimpleGroup.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-SimpleGroup.lua old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua old mode 100644 new mode 100755 index ab63f31..466fbbd --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-TabGroup.lua @@ -2,7 +2,7 @@ TabGroup Container Container that uses tabs on top to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TabGroup", 35 +local Type, Version = "TabGroup", 36 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -63,7 +63,7 @@ Scripts -------------------------------------------------------------------------------]] local function Tab_OnClick(frame) if not (frame.selected or frame.disabled) then - PlaySound("igCharacterInfoTab") + PlaySound(841) -- SOUNDKIT.IG_CHARACTER_INFO_TAB frame.obj:SelectTab(frame.value) end end @@ -161,22 +161,21 @@ local methods = { self.tablist = tabs self:BuildTabs() end, - + ["BuildTabs"] = function(self) local hastitle = (self.titletext:GetText() and self.titletext:GetText() ~= "") - local status = self.status or self.localstatus local tablist = self.tablist local tabs = self.tabs - + if not tablist then return end - + local width = self.frame.width or self.frame:GetWidth() or 0 - + wipe(widths) wipe(rowwidths) wipe(rowends) - + --Place Text into tabs and get thier initial width for i, v in ipairs(tablist) do local tab = tabs[i] @@ -184,19 +183,19 @@ local methods = { tab = self:CreateTab(i) tabs[i] = tab end - + tab:Show() tab:SetText(v.text) tab:SetDisabled(v.disabled) tab.value = v.value - + widths[i] = tab:GetWidth() - 6 --tabs are anchored 10 pixels from the right side of the previous one to reduce spacing, but add a fixed 4px padding for the text end - + for i = (#tablist)+1, #tabs, 1 do tabs[i]:Hide() end - + --First pass, find the minimum number of rows needed to hold all tabs and the initial tab layout local numtabs = #tablist local numrows = 1 @@ -214,7 +213,7 @@ local methods = { end rowwidths[numrows] = usedwidth + 10 --first tab in each row takes up an extra 10px rowends[numrows] = #tablist - + --Fix for single tabs being left on the last row, move a tab from the row above if applicable if numrows > 1 then --if the last row has only one tab @@ -245,22 +244,22 @@ local methods = { tab:SetPoint("LEFT", tabs[tabno-1], "RIGHT", -10, 0) end end - + -- equal padding for each tab to fill the available width, -- if the used space is above 75% already - -- the 18 pixel is the typical width of a scrollbar, so we can have a tab group inside a scrolling frame, + -- the 18 pixel is the typical width of a scrollbar, so we can have a tab group inside a scrolling frame, -- and not have the tabs jump around funny when switching between tabs that need scrolling and those that don't local padding = 0 if not (numrows == 1 and rowwidths[1] < width*0.75 - 18) then padding = (width - rowwidths[row]) / (endtab - starttab+1) end - + for i = starttab, endtab do PanelTemplates_TabResize(tabs[i], padding + 4, nil, nil, width, tabs[i]:GetFontString():GetStringWidth()) end starttab = endtab + 1 end - + self.borderoffset = (hastitle and 17 or 10)+((numrows)*20) self.border:SetPoint("TOPLEFT", 1, -self.borderoffset) end, @@ -286,7 +285,7 @@ local methods = { content:SetHeight(contentheight) content.height = contentheight end, - + ["LayoutFinished"] = function(self, width, height) if self.noAutoHeight then return end self:SetHeight((height or 0) + (self.borderoffset + 23)) @@ -343,7 +342,7 @@ local function Constructor() for method, func in pairs(methods) do widget[method] = func end - + return AceGUI:RegisterAsContainer(widget) end diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua old mode 100644 new mode 100755 index 98a2080..039c997 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua @@ -2,11 +2,11 @@ TreeGroup Container Container that uses a tree control to switch between groups. -------------------------------------------------------------------------------]] -local Type, Version = "TreeGroup", 40 +local Type, Version = "TreeGroup", 41 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -local IsLegion = select(4, GetBuildInfo()) >= 70000 +local WoW80 = select(4, GetBuildInfo()) >= 80000 -- Lua APIs local next, pairs, ipairs, assert, type = next, pairs, ipairs, assert, type @@ -36,7 +36,7 @@ do function del(t) for k in pairs(t) do t[k] = nil - end + end pool[t] = true end end @@ -59,7 +59,6 @@ end local function UpdateButton(button, treeline, selected, canExpand, isExpanded) local self = button.obj local toggle = button.toggle - local frame = self.frame local text = treeline.text or "" local icon = treeline.icon local iconCoords = treeline.iconCoords @@ -67,7 +66,7 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded) local value = treeline.value local uniquevalue = treeline.uniquevalue local disabled = treeline.disabled - + button.treeline = treeline button.value = value button.uniquevalue = uniquevalue @@ -78,8 +77,6 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded) button:UnlockHighlight() button.selected = false end - local normalTexture = button:GetNormalTexture() - local line = button.line button.level = level if ( level == 1 ) then button:SetNormalFontObject("GameFontNormal") @@ -90,7 +87,7 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded) button:SetHighlightFontObject("GameFontHighlightSmall") button.text:SetPoint("LEFT", (icon and 16 or 0) + 8 * level, 2) end - + if disabled then button:EnableMouse(false) button.text:SetText("|cff808080"..text..FONT_COLOR_CODE_CLOSE) @@ -98,27 +95,27 @@ local function UpdateButton(button, treeline, selected, canExpand, isExpanded) button.text:SetText(text) button:EnableMouse(true) end - + if icon then button.icon:SetTexture(icon) button.icon:SetPoint("LEFT", 8 * level, (level == 1) and 0 or 1) else button.icon:SetTexture(nil) end - + if iconCoords then button.icon:SetTexCoord(unpack(iconCoords)) else button.icon:SetTexCoord(0, 1, 0, 1) end - + if canExpand then if not isExpanded then - toggle:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-UP") - toggle:SetPushedTexture("Interface\\Buttons\\UI-PlusButton-DOWN") + toggle:SetNormalTexture(130838) -- Interface\\Buttons\\UI-PlusButton-UP + toggle:SetPushedTexture(130836) -- Interface\\Buttons\\UI-PlusButton-DOWN else - toggle:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-UP") - toggle:SetPushedTexture("Interface\\Buttons\\UI-MinusButton-DOWN") + toggle:SetNormalTexture(130821) -- Interface\\Buttons\\UI-MinusButton-UP + toggle:SetPushedTexture(130820) -- Interface\\Buttons\\UI-MinusButton-DOWN end toggle:Show() else @@ -164,7 +161,7 @@ end local function FirstFrameUpdate(frame) local self = frame.obj frame:SetScript("OnUpdate", nil) - self:RefreshTree() + self:RefreshTree(nil, true) end local function BuildUniqueValue(...) @@ -201,7 +198,6 @@ end local function Button_OnDoubleClick(button) local self = button.obj - local status = self.status or self.localstatus local status = (self.status or self.localstatus).groups status[button.uniquevalue] = not status[button.uniquevalue] self:RefreshTree() @@ -279,10 +275,10 @@ local function Dragger_OnMouseUp(frame) treeframe:SetHeight(0) treeframe:SetPoint("TOPLEFT", frame, "TOPLEFT",0,0) treeframe:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT",0,0) - + local status = self.status or self.localstatus status.treewidth = treeframe:GetWidth() - + treeframe.obj:Fire("OnTreeResize",treeframe:GetWidth()) -- recalculate the content width treeframe.obj:OnWidthSet(status.fullwidth) @@ -302,6 +298,8 @@ local methods = { ["OnRelease"] = function(self) self.status = nil + self.tree = nil + self.frame:SetScript("OnUpdate", nil) for k, v in pairs(self.localstatus) do if k == "groups" then for k2 in pairs(v) do @@ -365,8 +363,8 @@ local methods = { --sets the tree to be displayed ["SetTree"] = function(self, tree, filter) self.filter = filter - if tree then - assert(type(tree) == "table") + if tree then + assert(type(tree) == "table") end self.tree = tree self:RefreshTree() @@ -374,8 +372,7 @@ local methods = { ["BuildLevel"] = function(self, tree, level, parent) local groups = (self.status or self.localstatus).groups - local hasChildren = self.hasChildren - + for i, v in ipairs(tree) do if v.children then if not self.filter or ShouldDisplayLevel(v.children) then @@ -390,8 +387,8 @@ local methods = { end end, - ["RefreshTree"] = function(self,scrollToSelection) - local buttons = self.buttons + ["RefreshTree"] = function(self,scrollToSelection,fromOnUpdate) + local buttons = self.buttons local lines = self.lines for i, v in ipairs(buttons) do @@ -412,7 +409,7 @@ local methods = { local tree = self.tree local treeframe = self.treeframe - + status.scrollToSelection = status.scrollToSelection or scrollToSelection -- needs to be cached in case the control hasn't been drawn yet (code bails out below) self:BuildLevel(tree, 1) @@ -422,8 +419,14 @@ 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 + self.frame:SetScript("OnUpdate", FirstFrameUpdate) + return + end + local first, last - + scrollToSelection = status.scrollToSelection status.scrollToSelection = nil @@ -499,9 +502,9 @@ local methods = { button:Show() buttonnum = buttonnum + 1 end - + end, - + ["SetSelected"] = function(self, value) local status = self.status or self.localstatus if status.selected ~= value then @@ -551,16 +554,16 @@ local methods = { local treeframe = self.treeframe local status = self.status or self.localstatus status.fullwidth = width - + local contentwidth = width - status.treewidth - 20 if contentwidth < 0 then contentwidth = 0 end content:SetWidth(contentwidth) content.width = contentwidth - + local maxtreewidth = math_min(400, width - 50) - + if maxtreewidth > 100 and status.treewidth > maxtreewidth then self:SetTreeWidth(maxtreewidth, status.treesizable) end @@ -586,16 +589,16 @@ local methods = { treewidth = DEFAULT_TREE_WIDTH else resizable = false - treewidth = DEFAULT_TREE_WIDTH + treewidth = DEFAULT_TREE_WIDTH end end self.treeframe:SetWidth(treewidth) self.dragger:EnableMouse(resizable) - + local status = self.status or self.localstatus status.treewidth = treewidth status.treesizable = resizable - + -- recalculate the content width if status.fullwidth then self:OnWidthSet(status.fullwidth) @@ -672,12 +675,7 @@ local function Constructor() local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND") scrollbg:SetAllPoints(scrollbar) - - if IsLegion then - scrollbg:SetColorTexture(0,0,0,0.4) - else - scrollbg:SetTexture(0,0,0,0.4) - end + scrollbg:SetColorTexture(0,0,0,0.4) local border = CreateFrame("Frame",nil,frame) border:SetPoint("TOPLEFT", treeframe, "TOPRIGHT") diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua old mode 100644 new mode 100755 index 33ed7d8..a9192b3 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIContainer-Window.lua @@ -21,26 +21,30 @@ local CreateFrame, UIParent = CreateFrame, UIParent ]] do local Type = "Window" - local Version = 4 + local Version = 6 + + local function frameOnShow(this) + this.obj:Fire("OnShow") + end local function frameOnClose(this) this.obj:Fire("OnClose") end - + local function closeOnClick(this) - PlaySound("gsTitleOptionExit") + PlaySound(799) -- SOUNDKIT.GS_TITLE_OPTION_EXIT this.obj:Hide() end - + local function frameOnMouseDown(this) AceGUI:ClearFocus() end - + local function titleOnMouseDown(this) this:GetParent():StartMoving() AceGUI:ClearFocus() end - + local function frameOnMouseUp(this) local frame = this:GetParent() frame:StopMovingOrSizing() @@ -51,22 +55,22 @@ do status.top = frame:GetTop() status.left = frame:GetLeft() end - + local function sizerseOnMouseDown(this) this:GetParent():StartSizing("BOTTOMRIGHT") AceGUI:ClearFocus() end - + local function sizersOnMouseDown(this) this:GetParent():StartSizing("BOTTOM") AceGUI:ClearFocus() end - + local function sizereOnMouseDown(this) this:GetParent():StartSizing("RIGHT") AceGUI:ClearFocus() end - + local function sizerOnMouseUp(this) this:GetParent():StopMovingOrSizing() end @@ -74,19 +78,19 @@ do local function SetTitle(self,title) self.titletext:SetText(title) end - + local function SetStatusText(self,text) -- self.statustext:SetText(text) end - + local function Hide(self) self.frame:Hide() end - + local function Show(self) self.frame:Show() end - + local function OnAcquire(self) self.frame:SetParent(UIParent) self.frame:SetFrameStrata("FULLSCREEN_DIALOG") @@ -94,21 +98,21 @@ do self:EnableResize(true) self:Show() end - + local function OnRelease(self) self.status = nil for k in pairs(self.localstatus) do self.localstatus[k] = nil end end - + -- called to set an external table to store status in local function SetStatusTable(self, status) assert(type(status) == "table") self.status = status self:ApplyStatus() end - + local function ApplyStatus(self) local status = self.status or self.localstatus local frame = self.frame @@ -121,7 +125,7 @@ do frame:SetPoint("CENTER",UIParent,"CENTER") end end - + local function OnWidthSet(self, width) local content = self.content local contentwidth = width - 34 @@ -131,8 +135,8 @@ do content:SetWidth(contentwidth) content.width = contentwidth end - - + + local function OnHeightSet(self, height) local content = self.content local contentheight = height - 57 @@ -142,19 +146,19 @@ do content:SetHeight(contentheight) content.height = contentheight end - + local function EnableResize(self, state) local func = state and "Show" or "Hide" self.sizer_se[func](self.sizer_se) self.sizer_s[func](self.sizer_s) self.sizer_e[func](self.sizer_e) end - + local function Constructor() local frame = CreateFrame("Frame",nil,UIParent) local self = {} self.type = "Window" - + self.Hide = Hide self.Show = Show self.SetTitle = SetTitle @@ -166,9 +170,9 @@ do self.OnWidthSet = OnWidthSet self.OnHeightSet = OnHeightSet self.EnableResize = EnableResize - + self.localstatus = {} - + self.frame = frame frame.obj = self frame:SetWidth(700) @@ -179,90 +183,91 @@ do frame:SetResizable(true) frame:SetFrameStrata("FULLSCREEN_DIALOG") frame:SetScript("OnMouseDown", frameOnMouseDown) - + + frame:SetScript("OnShow",frameOnShow) frame:SetScript("OnHide",frameOnClose) frame:SetMinResize(240,240) frame:SetToplevel(true) local titlebg = frame:CreateTexture(nil, "BACKGROUND") - titlebg:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Title-Background]]) + titlebg:SetTexture(251966) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Title-Background titlebg:SetPoint("TOPLEFT", 9, -6) titlebg:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -28, -24) - + local dialogbg = frame:CreateTexture(nil, "BACKGROUND") - dialogbg:SetTexture([[Interface\Tooltips\UI-Tooltip-Background]]) + dialogbg:SetTexture(137056) -- Interface\\Tooltips\\UI-Tooltip-Background dialogbg:SetPoint("TOPLEFT", 8, -24) dialogbg:SetPoint("BOTTOMRIGHT", -6, 8) dialogbg:SetVertexColor(0, 0, 0, .75) - + local topleft = frame:CreateTexture(nil, "BORDER") - topleft:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + topleft:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border topleft:SetWidth(64) topleft:SetHeight(64) topleft:SetPoint("TOPLEFT") topleft:SetTexCoord(0.501953125, 0.625, 0, 1) - + local topright = frame:CreateTexture(nil, "BORDER") - topright:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + topright:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border topright:SetWidth(64) topright:SetHeight(64) topright:SetPoint("TOPRIGHT") topright:SetTexCoord(0.625, 0.75, 0, 1) - + local top = frame:CreateTexture(nil, "BORDER") - top:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + top:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border top:SetHeight(64) top:SetPoint("TOPLEFT", topleft, "TOPRIGHT") top:SetPoint("TOPRIGHT", topright, "TOPLEFT") top:SetTexCoord(0.25, 0.369140625, 0, 1) - + local bottomleft = frame:CreateTexture(nil, "BORDER") - bottomleft:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + bottomleft:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border bottomleft:SetWidth(64) bottomleft:SetHeight(64) bottomleft:SetPoint("BOTTOMLEFT") bottomleft:SetTexCoord(0.751953125, 0.875, 0, 1) - + local bottomright = frame:CreateTexture(nil, "BORDER") - bottomright:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + bottomright:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border bottomright:SetWidth(64) bottomright:SetHeight(64) bottomright:SetPoint("BOTTOMRIGHT") bottomright:SetTexCoord(0.875, 1, 0, 1) - + local bottom = frame:CreateTexture(nil, "BORDER") - bottom:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + bottom:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border bottom:SetHeight(64) bottom:SetPoint("BOTTOMLEFT", bottomleft, "BOTTOMRIGHT") bottom:SetPoint("BOTTOMRIGHT", bottomright, "BOTTOMLEFT") bottom:SetTexCoord(0.376953125, 0.498046875, 0, 1) - + local left = frame:CreateTexture(nil, "BORDER") - left:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + left:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border left:SetWidth(64) left:SetPoint("TOPLEFT", topleft, "BOTTOMLEFT") left:SetPoint("BOTTOMLEFT", bottomleft, "TOPLEFT") left:SetTexCoord(0.001953125, 0.125, 0, 1) - + local right = frame:CreateTexture(nil, "BORDER") - right:SetTexture([[Interface\PaperDollInfoFrame\UI-GearManager-Border]]) + right:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border right:SetWidth(64) right:SetPoint("TOPRIGHT", topright, "BOTTOMRIGHT") right:SetPoint("BOTTOMRIGHT", bottomright, "TOPRIGHT") right:SetTexCoord(0.1171875, 0.2421875, 0, 1) - + local close = CreateFrame("Button", nil, frame, "UIPanelCloseButton") close:SetPoint("TOPRIGHT", 2, 1) close:SetScript("OnClick", closeOnClick) self.closebutton = close close.obj = self - + local titletext = frame:CreateFontString(nil, "ARTWORK") titletext:SetFontObject(GameFontNormal) titletext:SetPoint("TOPLEFT", 12, -8) titletext:SetPoint("TOPRIGHT", -32, -8) self.titletext = titletext - + local title = CreateFrame("Button", nil, frame) title:SetPoint("TOPLEFT", titlebg) title:SetPoint("BOTTOMRIGHT", titlebg) @@ -270,7 +275,7 @@ do title:SetScript("OnMouseDown",titleOnMouseDown) title:SetScript("OnMouseUp", frameOnMouseUp) self.title = title - + local sizer_se = CreateFrame("Frame",nil,frame) sizer_se:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,0) sizer_se:SetWidth(25) @@ -285,7 +290,7 @@ do line1:SetWidth(14) line1:SetHeight(14) line1:SetPoint("BOTTOMRIGHT", -8, 8) - line1:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line1:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border local x = 0.1 * 14/17 line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) @@ -294,7 +299,7 @@ do line2:SetWidth(8) line2:SetHeight(8) line2:SetPoint("BOTTOMRIGHT", -8, 8) - line2:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + line2:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border local 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) @@ -306,7 +311,7 @@ do sizer_s:SetScript("OnMouseDown",sizersOnMouseDown) sizer_s:SetScript("OnMouseUp", sizerOnMouseUp) self.sizer_s = sizer_s - + local sizer_e = CreateFrame("Frame",nil,frame) sizer_e:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",0,25) sizer_e:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0) @@ -315,17 +320,17 @@ do sizer_e:SetScript("OnMouseDown",sizereOnMouseDown) sizer_e:SetScript("OnMouseUp", sizerOnMouseUp) self.sizer_e = sizer_e - + --Container Support local content = CreateFrame("Frame",nil,frame) self.content = content content.obj = self content:SetPoint("TOPLEFT",frame,"TOPLEFT",12,-32) content:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-12,13) - + AceGUI:RegisterAsContainer(self) - return self + return self end - + AceGUI:RegisterWidgetType(Type,Constructor,Version) end diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua old mode 100644 new mode 100755 index dbcad18..8e650ce --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua @@ -2,7 +2,7 @@ Button Widget Graphical Button. -------------------------------------------------------------------------------]] -local Type, Version = "Button", 23 +local Type, Version = "Button", 24 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -18,7 +18,7 @@ Scripts -------------------------------------------------------------------------------]] local function Button_OnClick(frame, ...) AceGUI:ClearFocus() - PlaySound("igMainMenuOption") + PlaySound(852) -- SOUNDKIT.IG_MAINMENU_OPTION frame.obj:Fire("OnClick", ...) end @@ -51,7 +51,7 @@ local methods = { self:SetWidth(self.text:GetStringWidth() + 30) end end, - + ["SetAutoWidth"] = function(self, autoWidth) self.autoWidth = autoWidth if self.autoWidth then diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua old mode 100644 new mode 100755 index 284ea8c..d2adb88 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-CheckBox.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- Checkbox Widget -------------------------------------------------------------------------------]] -local Type, Version = "CheckBox", 22 +local Type, Version = "CheckBox", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -26,7 +26,7 @@ local function AlignImage(self) self.text:SetPoint("LEFT", self.checkbg, "RIGHT") self.text:SetPoint("RIGHT") else - self.text:SetPoint("LEFT", self.image,"RIGHT", 1, 0) + self.text:SetPoint("LEFT", self.image, "RIGHT", 1, 0) self.text:SetPoint("RIGHT") end end @@ -60,9 +60,9 @@ local function CheckBox_OnMouseUp(frame) self:ToggleChecked() if self.checked then - PlaySound("igMainMenuOptionCheckBoxOn") + PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON else -- for both nil and false (tristate) - PlaySound("igMainMenuOptionCheckBoxOff") + PlaySound(857) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_OFF end self:Fire("OnValueChanged", self.checked) @@ -91,7 +91,7 @@ local methods = { if self.desc then self.desc:SetWidth(width - 30) if self.desc:GetText() and self.desc:GetText() ~= "" then - self:SetHeight(28 + self.desc:GetHeight()) + self:SetHeight(28 + self.desc:GetStringHeight()) end end end, @@ -119,20 +119,20 @@ local methods = { end end, - ["SetValue"] = function(self,value) + ["SetValue"] = function(self, value) local check = self.check self.checked = value if value then - SetDesaturation(self.check, false) - self.check:Show() + SetDesaturation(check, false) + check:Show() else --Nil is the unknown tristate value if self.tristate and value == nil then - SetDesaturation(self.check, true) - self.check:Show() + SetDesaturation(check, true) + check:Show() else - SetDesaturation(self.check, false) - self.check:Hide() + SetDesaturation(check, false) + check:Hide() end end self:SetDisabled(self.disabled) @@ -155,21 +155,21 @@ local methods = { local size if type == "radio" then size = 16 - checkbg:SetTexture("Interface\\Buttons\\UI-RadioButton") + checkbg:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton checkbg:SetTexCoord(0, 0.25, 0, 1) - check:SetTexture("Interface\\Buttons\\UI-RadioButton") + check:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton check:SetTexCoord(0.25, 0.5, 0, 1) check:SetBlendMode("ADD") - highlight:SetTexture("Interface\\Buttons\\UI-RadioButton") + highlight:SetTexture(130843) -- Interface\\Buttons\\UI-RadioButton highlight:SetTexCoord(0.5, 0.75, 0, 1) else size = 24 - checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up") + checkbg:SetTexture(130755) -- Interface\\Buttons\\UI-CheckBox-Up checkbg:SetTexCoord(0, 1, 0, 1) - check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check") + check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check check:SetTexCoord(0, 1, 0, 1) check:SetBlendMode("BLEND") - highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight") + highlight:SetTexture(130753) -- Interface\\Buttons\\UI-CheckBox-Highlight highlight:SetTexCoord(0, 1, 0, 1) end checkbg:SetHeight(size) @@ -203,6 +203,7 @@ local methods = { 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 @@ -210,7 +211,7 @@ local methods = { self.desc:Show() --self.text:SetFontObject(GameFontNormal) self.desc:SetText(desc) - self:SetHeight(28 + self.desc:GetHeight()) + self:SetHeight(28 + self.desc:GetStringHeight()) else if self.desc then self.desc:SetText("") @@ -220,11 +221,11 @@ local methods = { self:SetHeight(24) end end, - + ["SetImage"] = function(self, path, ...) local image = self.image image:SetTexture(path) - + if image:GetTexture() then local n = select("#", ...) if n == 4 or n == 8 then @@ -254,11 +255,11 @@ local function Constructor() checkbg:SetWidth(24) checkbg:SetHeight(24) checkbg:SetPoint("TOPLEFT") - checkbg:SetTexture("Interface\\Buttons\\UI-CheckBox-Up") + checkbg:SetTexture(130755) -- Interface\\Buttons\\UI-CheckBox-Up local check = frame:CreateTexture(nil, "OVERLAY") check:SetAllPoints(checkbg) - check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check") + check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check local text = frame:CreateFontString(nil, "OVERLAY", "GameFontHighlight") text:SetJustifyH("LEFT") @@ -267,7 +268,7 @@ local function Constructor() text:SetPoint("RIGHT") local highlight = frame:CreateTexture(nil, "HIGHLIGHT") - highlight:SetTexture("Interface\\Buttons\\UI-CheckBox-Highlight") + highlight:SetTexture(130753) -- Interface\\Buttons\\UI-CheckBox-Highlight highlight:SetBlendMode("ADD") highlight:SetAllPoints(checkbg) diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua old mode 100644 new mode 100755 index 8e5f3ae..f4cab66 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua @@ -1,12 +1,10 @@ --[[----------------------------------------------------------------------------- ColorPicker Widget -------------------------------------------------------------------------------]] -local Type, Version = "ColorPicker", 23 +local Type, Version = "ColorPicker", 25 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end -local IsLegion = select(4, GetBuildInfo()) >= 70000 - -- Lua APIs local pairs = pairs @@ -15,7 +13,7 @@ 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: ShowUIPanel, HideUIPanel, ColorPickerFrame, OpacitySliderFrame +-- GLOBALS: ColorPickerFrame, OpacitySliderFrame --[[----------------------------------------------------------------------------- Support functions @@ -49,7 +47,7 @@ local function Control_OnLeave(frame) end local function ColorSwatch_OnClick(frame) - HideUIPanel(ColorPickerFrame) + ColorPickerFrame:Hide() local self = frame.obj if not self.disabled then ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG") @@ -79,7 +77,7 @@ local function ColorSwatch_OnClick(frame) ColorCallback(self, r, g, b, a, true) end - ShowUIPanel(ColorPickerFrame) + ColorPickerFrame:Show() end AceGUI:ClearFocus() end @@ -142,24 +140,22 @@ local function Constructor() local colorSwatch = frame:CreateTexture(nil, "OVERLAY") colorSwatch:SetWidth(19) colorSwatch:SetHeight(19) - colorSwatch:SetTexture("Interface\\ChatFrame\\ChatFrameColorSwatch") + colorSwatch:SetTexture(130939) -- Interface\\ChatFrame\\ChatFrameColorSwatch colorSwatch:SetPoint("LEFT") local texture = frame:CreateTexture(nil, "BACKGROUND") + colorSwatch.background = texture texture:SetWidth(16) texture:SetHeight(16) - if IsLegion then - texture:SetColorTexture(1, 1, 1) - else - texture:SetTexture(1, 1, 1) - end + texture:SetColorTexture(1, 1, 1) texture:SetPoint("CENTER", colorSwatch) texture:Show() local checkers = frame:CreateTexture(nil, "BACKGROUND") + colorSwatch.checkers = checkers checkers:SetWidth(14) checkers:SetHeight(14) - checkers:SetTexture("Tileset\\Generic\\Checkers") + checkers:SetTexture(188523) -- Tileset\\Generic\\Checkers checkers:SetTexCoord(.25, 0, 0.5, .25) checkers:SetDesaturated(true) checkers:SetVertexColor(1, 1, 1, 0.75) @@ -174,7 +170,7 @@ local function Constructor() text:SetPoint("RIGHT") --local highlight = frame:CreateTexture(nil, "HIGHLIGHT") - --highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight") + --highlight:SetTexture(136810) -- Interface\\QuestFrame\\UI-QuestTitleHighlight --highlight:SetBlendMode("ADD") --highlight:SetAllPoints(frame) diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua old mode 100644 new mode 100755 index 9e5e4f5..9dd4b60 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown-Items.lua @@ -1,9 +1,7 @@ ---[[ $Id: AceGUIWidget-DropDown-Items.lua 1137 2016-05-15 10:57:36Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown-Items.lua 1202 2019-05-15 23:11:22Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") -local IsLegion = select(4, GetBuildInfo()) >= 70000 - -- Lua APIs local select, assert = select, assert @@ -35,7 +33,7 @@ end -- ItemBase is the base "class" for all dropdown items. -- Each item has to use ItemBase.Create(widgetType) to --- create an initial 'self' value. +-- create an initial 'self' value. -- ItemBase will add common functions and ui event handlers. -- Be sure to keep basic usage when you override functions. @@ -54,7 +52,7 @@ function ItemBase.Frame_OnEnter(this) self.highlight:Show() end self:Fire("OnEnter") - + if self.specialOnEnter then self.specialOnEnter(self) end @@ -62,10 +60,10 @@ end function ItemBase.Frame_OnLeave(this) local self = this.obj - + self.highlight:Hide() self:Fire("OnLeave") - + if self.specialOnLeave then self.specialOnLeave(self) end @@ -91,7 +89,7 @@ end -- Do not call this method directly function ItemBase.SetPullout(self, pullout) self.pullout = pullout - + self.frame:SetParent(nil) self.frame:SetParent(pullout.itemFrame) self.parent = pullout.itemFrame @@ -157,12 +155,12 @@ function ItemBase.Create(type) self.frame = frame frame.obj = self self.type = type - + self.useHighlight = true - + frame:SetHeight(17) frame:SetFrameStrata("FULLSCREEN_DIALOG") - + local text = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall") text:SetTextColor(1,1,1) text:SetJustifyH("LEFT") @@ -171,7 +169,7 @@ function ItemBase.Create(type) self.text = text local highlight = frame:CreateTexture(nil, "OVERLAY") - highlight:SetTexture("Interface\\QuestFrame\\UI-QuestTitleHighlight") + highlight:SetTexture(136810) -- Interface\\QuestFrame\\UI-QuestTitleHighlight highlight:SetBlendMode("ADD") highlight:SetHeight(14) highlight:ClearAllPoints() @@ -180,11 +178,11 @@ function ItemBase.Create(type) highlight:Hide() self.highlight = highlight - local check = frame:CreateTexture("OVERLAY") + local check = frame:CreateTexture("OVERLAY") check:SetWidth(16) check:SetHeight(16) check:SetPoint("LEFT",frame,"LEFT",3,-1) - check:SetTexture("Interface\\Buttons\\UI-CheckBox-Check") + check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check check:Hide() self.check = check @@ -192,28 +190,28 @@ function ItemBase.Create(type) sub:SetWidth(16) sub:SetHeight(16) sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1) - sub:SetTexture("Interface\\ChatFrame\\ChatFrameExpandArrow") + sub:SetTexture(130940) -- Interface\\ChatFrame\\ChatFrameExpandArrow sub:Hide() - self.sub = sub - + self.sub = sub + frame:SetScript("OnEnter", ItemBase.Frame_OnEnter) frame:SetScript("OnLeave", ItemBase.Frame_OnLeave) - + self.OnAcquire = ItemBase.OnAcquire self.OnRelease = ItemBase.OnRelease - + self.SetPullout = ItemBase.SetPullout self.GetText = ItemBase.GetText self.SetText = ItemBase.SetText self.SetDisabled = ItemBase.SetDisabled - + self.SetPoint = ItemBase.SetPoint self.Show = ItemBase.Show self.Hide = ItemBase.Hide - + self.SetOnLeave = ItemBase.SetOnLeave self.SetOnEnter = ItemBase.SetOnEnter - + return self end @@ -225,20 +223,20 @@ end --[[ Template for items: - + -- Item: -- do local widgetType = "Dropdown-Item-" local widgetVersion = 1 - + local function Constructor() local self = ItemBase.Create(widgetType) - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end --]] @@ -249,25 +247,25 @@ end do local widgetType = "Dropdown-Item-Header" local widgetVersion = 1 - + local function OnEnter(this) local self = this.obj self:Fire("OnEnter") - + if self.specialOnEnter then self.specialOnEnter(self) end end - + local function OnLeave(this) local self = this.obj self:Fire("OnLeave") - + if self.specialOnLeave then self.specialOnLeave(self) end end - + -- exported, override local function SetDisabled(self, disabled) ItemBase.SetDisabled(self, disabled) @@ -275,21 +273,21 @@ do self.text:SetTextColor(1, 1, 0) end end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.SetDisabled = SetDisabled - + self.frame:SetScript("OnEnter", OnEnter) self.frame:SetScript("OnLeave", OnLeave) - + self.text:SetTextColor(1, 1, 0) - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end @@ -298,7 +296,7 @@ end do local widgetType = "Dropdown-Item-Execute" local widgetVersion = 1 - + local function Frame_OnClick(this, button) local self = this.obj if self.disabled then return end @@ -307,16 +305,16 @@ do self.pullout:Close() end end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.frame:SetScript("OnClick", Frame_OnClick) - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end @@ -325,8 +323,8 @@ end -- Does not close the pullout on click. do local widgetType = "Dropdown-Item-Toggle" - local widgetVersion = 3 - + local widgetVersion = 4 + local function UpdateToggle(self) if self.value then self.check:Show() @@ -334,49 +332,49 @@ do self.check:Hide() end end - + local function OnRelease(self) ItemBase.OnRelease(self) self:SetValue(nil) end - + local function Frame_OnClick(this, button) local self = this.obj if self.disabled then return end self.value = not self.value if self.value then - PlaySound("igMainMenuOptionCheckBoxOn") + PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON else - PlaySound("igMainMenuOptionCheckBoxOff") + PlaySound(857) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_OFF end UpdateToggle(self) self:Fire("OnValueChanged", self.value) end - + -- exported local function SetValue(self, value) self.value = value UpdateToggle(self) end - + -- exported local function GetValue(self) return self.value end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.frame:SetScript("OnClick", Frame_OnClick) - + self.SetValue = SetValue self.GetValue = GetValue self.OnRelease = OnRelease - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end @@ -386,55 +384,55 @@ end do local widgetType = "Dropdown-Item-Menu" local widgetVersion = 2 - + local function OnEnter(this) local self = this.obj self:Fire("OnEnter") - + if self.specialOnEnter then self.specialOnEnter(self) end - + self.highlight:Show() - + if not self.disabled and self.submenu then self.submenu:Open("TOPLEFT", self.frame, "TOPRIGHT", self.pullout:GetRightBorderWidth(), 0, self.frame:GetFrameLevel() + 100) end end - + local function OnHide(this) local self = this.obj if self.submenu then self.submenu:Close() end end - + -- exported local function SetMenu(self, menu) assert(menu.type == "Dropdown-Pullout") self.submenu = menu end - + -- exported local function CloseMenu(self) self.submenu:Close() end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.sub:Show() - + self.frame:SetScript("OnEnter", OnEnter) self.frame:SetScript("OnHide", OnHide) - + self.SetMenu = SetMenu self.CloseMenu = CloseMenu - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end @@ -443,35 +441,31 @@ end do local widgetType = "Dropdown-Item-Separator" local widgetVersion = 2 - + -- exported, override local function SetDisabled(self, disabled) ItemBase.SetDisabled(self, disabled) self.useHighlight = false end - + local function Constructor() local self = ItemBase.Create(widgetType) - + self.SetDisabled = SetDisabled - + local line = self.frame:CreateTexture(nil, "OVERLAY") line:SetHeight(1) - if IsLegion then - line:SetColorTexture(.5, .5, .5) - else - line:SetTexture(.5, .5, .5) - end + line:SetColorTexture(.5, .5, .5) line:SetPoint("LEFT", self.frame, "LEFT", 10, 0) line:SetPoint("RIGHT", self.frame, "RIGHT", -10, 0) - + self.text:Hide() - + self.useHighlight = false - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion + ItemBase.version) end diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua old mode 100644 new mode 100755 index d2b0f15..2242b78 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown.lua 1116 2014-10-12 08:15:46Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown.lua 1202 2019-05-15 23:11:22Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") -- Lua APIs @@ -40,9 +40,9 @@ end do local widgetType = "Dropdown-Pullout" local widgetVersion = 3 - + --[[ Static data ]]-- - + local backdrop = { bgFile = "Interface\\ChatFrame\\ChatFrameBackground", edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", @@ -60,9 +60,9 @@ do local defaultWidth = 200 local defaultMaxHeight = 600 - + --[[ UI Event Handlers ]]-- - + -- HACK: This should be no part of the pullout, but there -- is no other 'clean' way to response to any item-OnEnter -- Used to close Submenus when an other item is entered @@ -74,22 +74,22 @@ do end end end - + -- See the note in Constructor() for each scroll related function local function OnMouseWheel(this, value) this.obj:MoveScroll(value) end - + local function OnScrollValueChanged(this, value) this.obj:SetScroll(value) end - + local function OnSizeChanged(this) this.obj:FixScroll() end - + --[[ Exported methods ]]-- - + -- exported local function SetScroll(self, value) local status = self.scrollStatus @@ -106,9 +106,9 @@ do child:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, offset) child:SetPoint("TOPRIGHT", frame, "TOPRIGHT", self.slider:IsShown() and -12 or 0, offset) status.offset = offset - status.scrollvalue = value + status.scrollvalue = value end - + -- exported local function MoveScroll(self, value) local status = self.scrollStatus @@ -127,7 +127,7 @@ do self.slider:SetValue(min(max(status.scrollvalue + delta*(1000/(diff/45)),0), 1000)) end end - + -- exported local function FixScroll(self) local status = self.scrollStatus @@ -140,7 +140,7 @@ do child:SetPoint("TOPRIGHT", frame, "TOPRIGHT", 0, offset) self.slider:SetValue(0) else - self.slider:Show() + self.slider:Show() local value = (offset / (viewheight - height) * 1000) if value > 1000 then value = 1000 end self.slider:SetValue(value) @@ -153,44 +153,44 @@ do end end end - + -- exported, AceGUI callback local function OnAcquire(self) self.frame:SetParent(UIParent) --self.itemFrame:SetToplevel(true) end - + -- exported, AceGUI callback local function OnRelease(self) self:Clear() self.frame:ClearAllPoints() self.frame:Hide() end - + -- exported local function AddItem(self, item) self.items[#self.items + 1] = item - + local h = #self.items * 16 self.itemFrame:SetHeight(h) self.frame:SetHeight(min(h + 34, self.maxHeight)) -- +34: 20 for scrollFrame placement (10 offset) and +14 for item placement - + item.frame:SetPoint("LEFT", self.itemFrame, "LEFT") item.frame:SetPoint("RIGHT", self.itemFrame, "RIGHT") - + item:SetPullout(self) item:SetOnEnter(OnEnter) end - + -- exported - local function Open(self, point, relFrame, relPoint, x, y) + local function Open(self, point, relFrame, relPoint, x, y) local items = self.items local frame = self.frame local itemFrame = self.itemFrame - + frame:SetPoint(point, relFrame, relPoint, x, y) - + local height = 8 for i, item in pairs(items) do if i == 1 then @@ -198,23 +198,23 @@ do else item:SetPoint("TOP", items[i-1].frame, "BOTTOM", 0, 1) end - + item:Show() - + height = height + 16 end itemFrame:SetHeight(height) fixstrata("TOOLTIP", frame, frame:GetChildren()) frame:Show() self:Fire("OnOpen") - end - + end + -- exported local function Close(self) self.frame:Hide() self:Fire("OnClose") - end - + end + -- exported local function Clear(self) local items = self.items @@ -222,18 +222,18 @@ do AceGUI:Release(item) items[i] = nil end - end - + end + -- exported local function IterateItems(self) return ipairs(self.items) end - + -- exported local function SetHideOnLeave(self, val) self.hideOnLeave = val end - + -- exported local function SetMaxHeight(self, height) self.maxHeight = height or defaultMaxHeight @@ -243,19 +243,19 @@ do self.frame:SetHeight(self.itemFrame:GetHeight() + 34) -- see :AddItem end end - + -- exported local function GetRightBorderWidth(self) return 6 + (self.slider:IsShown() and 12 or 0) end - + -- exported local function GetLeftBorderWidth(self) return 6 end - + --[[ Constructor ]]-- - + local function Constructor() local count = AceGUI:GetNextWidgetNum(widgetType) local frame = CreateFrame("Frame", "AceGUI30Pullout"..count, UIParent) @@ -264,7 +264,7 @@ do self.type = widgetType self.frame = frame frame.obj = self - + self.OnAcquire = OnAcquire self.OnRelease = OnRelease @@ -278,37 +278,37 @@ do self.SetScroll = SetScroll self.MoveScroll = MoveScroll self.FixScroll = FixScroll - + self.SetMaxHeight = SetMaxHeight self.GetRightBorderWidth = GetRightBorderWidth self.GetLeftBorderWidth = GetLeftBorderWidth - + self.items = {} - + self.scrollStatus = { scrollvalue = 0, } - + self.maxHeight = defaultMaxHeight - + frame:SetBackdrop(backdrop) frame:SetBackdropColor(0, 0, 0) frame:SetFrameStrata("FULLSCREEN_DIALOG") frame:SetClampedToScreen(true) frame:SetWidth(defaultWidth) - frame:SetHeight(self.maxHeight) + frame:SetHeight(self.maxHeight) --frame:SetToplevel(true) - + -- NOTE: The whole scroll frame code is copied from the AceGUI-3.0 widget ScrollFrame local scrollFrame = CreateFrame("ScrollFrame", nil, frame) local itemFrame = CreateFrame("Frame", nil, scrollFrame) - + self.scrollFrame = scrollFrame self.itemFrame = itemFrame - + scrollFrame.obj = self itemFrame.obj = self - + local slider = CreateFrame("Slider", "AceGUI30PulloutScrollbar"..count, scrollFrame) slider:SetOrientation("VERTICAL") slider:SetHitRectInsets(0, 0, -10, 0) @@ -318,7 +318,7 @@ do slider:SetFrameStrata("FULLSCREEN_DIALOG") self.slider = slider slider.obj = self - + scrollFrame:SetScrollChild(itemFrame) scrollFrame:SetPoint("TOPLEFT", frame, "TOPLEFT", 6, -12) scrollFrame:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -6, 12) @@ -327,46 +327,46 @@ do scrollFrame:SetScript("OnSizeChanged", OnSizeChanged) scrollFrame:SetToplevel(true) scrollFrame:SetFrameStrata("FULLSCREEN_DIALOG") - + itemFrame:SetPoint("TOPLEFT", scrollFrame, "TOPLEFT", 0, 0) itemFrame:SetPoint("TOPRIGHT", scrollFrame, "TOPRIGHT", -12, 0) itemFrame:SetHeight(400) itemFrame:SetToplevel(true) itemFrame:SetFrameStrata("FULLSCREEN_DIALOG") - + slider:SetPoint("TOPLEFT", scrollFrame, "TOPRIGHT", -16, 0) slider:SetPoint("BOTTOMLEFT", scrollFrame, "BOTTOMRIGHT", -16, 0) slider:SetScript("OnValueChanged", OnScrollValueChanged) slider:SetMinMaxValues(0, 1000) slider:SetValueStep(1) slider:SetValue(0) - + scrollFrame:Show() itemFrame:Show() slider:Hide() - + self:FixScroll() - + AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) end do local widgetType = "Dropdown" - local widgetVersion = 30 - + local widgetVersion = 31 + --[[ Static data ]]-- - + --[[ UI event handler ]]-- - + local function Control_OnEnter(this) this.obj.button:LockHighlight() this.obj:Fire("OnEnter") end - + local function Control_OnLeave(this) this.obj.button:UnlockHighlight() this.obj:Fire("OnLeave") @@ -378,10 +378,10 @@ do self.pullout:Close() end end - + local function Dropdown_TogglePullout(this) local self = this.obj - PlaySound("igMainMenuOptionCheckBoxOn") -- missleading name, but the Blizzard code uses this sound + PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON if self.open then self.open = nil self.pullout:Close() @@ -393,17 +393,17 @@ do AceGUI:SetFocus(self) end end - + local function OnPulloutOpen(this) local self = this.userdata.obj local value = self.value - + if not self.multiselect then for i, item in this:IterateItems() do item:SetValue(item.userdata.value == value) end end - + self.open = true self:Fire("OnOpened") end @@ -413,7 +413,7 @@ do self.open = nil self:Fire("OnClosed") end - + local function ShowMultiText(self) local text for i, widget in self.pullout:IterateItems() do @@ -429,10 +429,10 @@ do end self:SetText(text) end - + local function OnItemValueChanged(this, event, checked) local self = this.userdata.obj - + if self.multiselect then self:Fire("OnValueChanged", this.userdata.value, checked) ShowMultiText(self) @@ -443,14 +443,14 @@ do else this:SetValue(true) end - if self.open then + if self.open then self.pullout:Close() end end end - + --[[ Exported methods ]]-- - + -- exported, AceGUI callback local function OnAcquire(self) local pullout = AceGUI:Create("Dropdown-Pullout") @@ -460,13 +460,13 @@ do pullout:SetCallback("OnOpen", OnPulloutOpen) self.pullout.frame:SetFrameLevel(self.frame:GetFrameLevel() + 1) fixlevels(self.pullout.frame, self.pullout.frame:GetChildren()) - + self:SetHeight(44) self:SetWidth(200) self:SetLabel() self:SetPulloutWidth(nil) end - + -- exported, AceGUI callback local function OnRelease(self) if self.open then @@ -474,20 +474,20 @@ do end AceGUI:Release(self.pullout) self.pullout = nil - + self:SetText("") self:SetDisabled(false) self:SetMultiselect(false) - + self.value = nil self.list = nil self.open = nil self.hasClose = nil - + self.frame:ClearAllPoints() self.frame:Hide() end - + -- exported local function SetDisabled(self, disabled) self.disabled = disabled @@ -503,19 +503,19 @@ do self.text:SetTextColor(1,1,1) end end - + -- exported local function ClearFocus(self) if self.open then self.pullout:Close() end end - + -- exported local function SetText(self, text) self.text:SetText(text or "") end - + -- exported local function SetLabel(self, text) if text and text ~= "" then @@ -532,7 +532,7 @@ do self.alignoffset = 12 end end - + -- exported local function SetValue(self, value) if self.list then @@ -540,12 +540,12 @@ do end self.value = value end - + -- exported local function GetValue(self) return self.value end - + -- exported local function SetItemValue(self, item, value) if not self.multiselect then return end @@ -558,7 +558,7 @@ do end ShowMultiText(self) end - + -- exported local function SetItemDisabled(self, item, disabled) for i, widget in self.pullout:IterateItems() do @@ -567,7 +567,7 @@ do end end end - + local function AddListItem(self, value, text, itemType) if not itemType then itemType = "Dropdown-Item-Toggle" end local exists = AceGUI:GetWidgetVersion(itemType) @@ -580,7 +580,7 @@ do item:SetCallback("OnValueChanged", OnItemValueChanged) self.pullout:AddItem(item) end - + local function AddCloseButton(self) if not self.hasClose then local close = AceGUI:Create("Dropdown-Item-Execute") @@ -589,7 +589,7 @@ do self.hasClose = true end end - + -- exported local sortlist = {} local function SetList(self, list, order, itemType) @@ -597,13 +597,13 @@ do self.pullout:Clear() self.hasClose = nil if not list then return end - + if type(order) ~= "table" then for v in pairs(list) do sortlist[#sortlist + 1] = v end tsort(sortlist) - + for i, key in ipairs(sortlist) do AddListItem(self, key, list[key], itemType) sortlist[i] = nil @@ -618,7 +618,7 @@ do AddCloseButton(self) end end - + -- exported local function AddItem(self, value, text, itemType) if self.list then @@ -626,7 +626,7 @@ do AddListItem(self, value, text, itemType) end end - + -- exported local function SetMultiselect(self, multi) self.multiselect = multi @@ -635,23 +635,23 @@ do AddCloseButton(self) end end - + -- exported local function GetMultiselect(self) return self.multiselect end - + local function SetPulloutWidth(self, width) self.pulloutWidth = width end - + --[[ Constructor ]]-- - + local function Constructor() local count = AceGUI:GetNextWidgetNum(widgetType) local frame = CreateFrame("Frame", nil, UIParent) local dropdown = CreateFrame("Frame", "AceGUI30DropDown"..count, frame, "UIDropDownMenuTemplate") - + local self = {} self.type = widgetType self.frame = frame @@ -659,10 +659,10 @@ do self.count = count frame.obj = self dropdown.obj = self - + self.OnRelease = OnRelease self.OnAcquire = OnAcquire - + self.ClearFocus = ClearFocus self.SetText = SetText @@ -677,9 +677,9 @@ do self.SetItemValue = SetItemValue self.SetItemDisabled = SetItemDisabled self.SetPulloutWidth = SetPulloutWidth - + self.alignoffset = 26 - + frame:SetScript("OnHide",Dropdown_OnHide) dropdown:ClearAllPoints() @@ -690,10 +690,10 @@ do local left = _G[dropdown:GetName() .. "Left"] local middle = _G[dropdown:GetName() .. "Middle"] local right = _G[dropdown:GetName() .. "Right"] - + middle:ClearAllPoints() right:ClearAllPoints() - + middle:SetPoint("LEFT", left, "RIGHT", 0, 0) middle:SetPoint("RIGHT", right, "LEFT", 0, 0) right:SetPoint("TOPRIGHT", dropdown, "TOPRIGHT", 0, 17) @@ -704,7 +704,7 @@ do button:SetScript("OnEnter",Control_OnEnter) button:SetScript("OnLeave",Control_OnLeave) button:SetScript("OnClick",Dropdown_TogglePullout) - + local button_cover = CreateFrame("BUTTON",nil,self.frame) self.button_cover = button_cover button_cover.obj = self @@ -713,14 +713,14 @@ do button_cover:SetScript("OnEnter",Control_OnEnter) button_cover:SetScript("OnLeave",Control_OnLeave) button_cover:SetScript("OnClick",Dropdown_TogglePullout) - + local text = _G[dropdown:GetName() .. "Text"] self.text = text text.obj = self text:ClearAllPoints() text:SetPoint("RIGHT", right, "RIGHT" ,-43, 2) text:SetPoint("LEFT", left, "LEFT", 25, 2) - + local label = frame:CreateFontString(nil,"OVERLAY","GameFontNormalSmall") label:SetPoint("TOPLEFT",frame,"TOPLEFT",0,0) label:SetPoint("TOPRIGHT",frame,"TOPRIGHT",0,0) @@ -732,6 +732,6 @@ do AceGUI:RegisterAsWidget(self) return self end - + AceGUI:RegisterWidgetType(widgetType, Constructor, widgetVersion) -end +end diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua old mode 100644 new mode 100755 index 6d16f37..cc1b6a3 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- EditBox Widget -------------------------------------------------------------------------------]] -local Type, Version = "EditBox", 26 +local Type, Version = "EditBox", 28 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -73,7 +73,7 @@ local function EditBox_OnEnterPressed(frame) local value = frame:GetText() local cancel = self:Fire("OnEnterPressed", value) if not cancel then - PlaySound("igMainMenuOptionCheckBoxOn") + PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON HideButton(self) end end @@ -81,23 +81,21 @@ end local function EditBox_OnReceiveDrag(frame) local self = frame.obj local type, id, info = GetCursorInfo() + local name if type == "item" then - self:SetText(info) - self:Fire("OnEnterPressed", info) - ClearCursor() + name = info elseif type == "spell" then - local name = GetSpellInfo(id, info) - self:SetText(name) - self:Fire("OnEnterPressed", name) - ClearCursor() + name = GetSpellInfo(id, info) elseif type == "macro" then - local name = GetMacroInfo(id) + name = GetMacroInfo(id) + end + if name then self:SetText(name) self:Fire("OnEnterPressed", name) ClearCursor() + HideButton(self) + AceGUI:ClearFocus() end - HideButton(self) - AceGUI:ClearFocus() end local function EditBox_OnTextChanged(frame) diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua old mode 100644 new mode 100755 index bf8b2c0..670cd4e --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Heading.lua @@ -51,14 +51,14 @@ local function Constructor() left:SetHeight(8) left:SetPoint("LEFT", 3, 0) left:SetPoint("RIGHT", label, "LEFT", -5, 0) - left:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + left:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border left:SetTexCoord(0.81, 0.94, 0.5, 1) local right = frame:CreateTexture(nil, "BACKGROUND") right:SetHeight(8) right:SetPoint("RIGHT", -3, 0) right:SetPoint("LEFT", label, "RIGHT", 5, 0) - right:SetTexture("Interface\\Tooltips\\UI-Tooltip-Border") + right:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border right:SetTexCoord(0.81, 0.94, 0.5, 1) local widget = { diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua old mode 100644 new mode 100755 index fdba650..092697e --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Icon.lua @@ -56,7 +56,7 @@ local methods = { ["SetImage"] = function(self, path, ...) local image = self.image image:SetTexture(path) - + if image:GetTexture() then local n = select("#", ...) if n == 4 or n == 8 then @@ -118,7 +118,7 @@ local function Constructor() local highlight = frame:CreateTexture(nil, "HIGHLIGHT") highlight:SetAllPoints(image) - highlight:SetTexture("Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight") + highlight:SetTexture(136580) -- Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight highlight:SetTexCoord(0, 1, 0.23, 0.77) highlight:SetBlendMode("ADD") diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua old mode 100644 new mode 100755 index e1388a1..76a2cf9 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-InteractiveLabel.lua @@ -1,20 +1,13 @@ --[[----------------------------------------------------------------------------- InteractiveLabel Widget -------------------------------------------------------------------------------]] -local Type, Version = "InteractiveLabel", 20 +local Type, Version = "InteractiveLabel", 21 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 select, pairs = 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 - --[[----------------------------------------------------------------------------- Scripts -------------------------------------------------------------------------------]] diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Keybinding.lua old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua old mode 100644 new mode 100755 index 9a181c5..79fddc4 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Label.lua @@ -2,7 +2,7 @@ Label Widget Displays text and optionally an icon. -------------------------------------------------------------------------------]] -local Type, Version = "Label", 23 +local Type, Version = "Label", 26 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -39,25 +39,30 @@ local function UpdateImageAnchor(self) label:SetPoint("TOP", image, "BOTTOM") label:SetPoint("LEFT") label:SetWidth(width) - height = image:GetHeight() + label:GetHeight() + height = image:GetHeight() + label:GetStringHeight() else -- image on the left image:SetPoint("TOPLEFT") - if image:GetHeight() > label:GetHeight() then + if image:GetHeight() > label:GetStringHeight() then label:SetPoint("LEFT", image, "RIGHT", 4, 0) else label:SetPoint("TOPLEFT", image, "TOPRIGHT", 4, 0) end label:SetWidth(width - imagewidth - 4) - height = max(image:GetHeight(), label:GetHeight()) + height = max(image:GetHeight(), label:GetStringHeight()) end else -- no image shown label:SetPoint("TOPLEFT") label:SetWidth(width) - height = label:GetHeight() + height = label:GetStringHeight() end - + + -- avoid zero-height labels, since they can used as spacers + if not height or height == 0 then + height = 1 + end + self.resizing = true frame:SetHeight(height) frame.height = height @@ -78,6 +83,8 @@ local methods = { self:SetImageSize(16, 16) self:SetColor() self:SetFontObject() + self:SetJustifyH("LEFT") + self:SetJustifyV("TOP") -- reset the flag self.resizing = nil @@ -106,7 +113,7 @@ local methods = { ["SetImage"] = function(self, path, ...) local image = self.image image:SetTexture(path) - + if image:GetTexture() then self.imageshown = true local n = select("#", ...) @@ -134,6 +141,14 @@ local methods = { self.image:SetHeight(height) UpdateImageAnchor(self) end, + + ["SetJustifyH"] = function(self, justifyH) + self.label:SetJustifyH(justifyH) + end, + + ["SetJustifyV"] = function(self, justifyV) + self.label:SetJustifyV(justifyV) + end, } --[[----------------------------------------------------------------------------- @@ -144,9 +159,6 @@ local function Constructor() frame:Hide() local label = frame:CreateFontString(nil, "BACKGROUND", "GameFontHighlightSmall") - label:SetJustifyH("LEFT") - label:SetJustifyV("TOP") - local image = frame:CreateTexture(nil, "BACKGROUND") -- create widget diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua old mode 100644 new mode 100755 index c9b0d86..46a75b1 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-MultiLineEditBox.lua @@ -233,7 +233,7 @@ local methods = { end Layout(self) end, - + ["ClearFocus"] = function(self) self.editBox:ClearFocus() self.frame:SetScript("OnShow", nil) @@ -253,12 +253,12 @@ local methods = { ["GetCursorPosition"] = function(self) return self.editBox:GetCursorPosition() end, - + ["SetCursorPosition"] = function(self, ...) return self.editBox:SetCursorPosition(...) end, - - + + } --[[----------------------------------------------------------------------------- @@ -273,7 +273,7 @@ local backdrop = { local function Constructor() local frame = CreateFrame("Frame", nil, UIParent) frame:Hide() - + local widgetNum = AceGUI:GetNextWidgetNum(Type) local label = frame:CreateFontString(nil, "OVERLAY", "GameFontNormalSmall") @@ -290,7 +290,7 @@ local function Constructor() button:SetText(ACCEPT) button:SetScript("OnClick", OnClick) button:Disable() - + local text = button:GetFontString() text:ClearAllPoints() text:SetPoint("TOPLEFT", button, "TOPLEFT", 5, -5) @@ -339,7 +339,7 @@ local function Constructor() editBox:SetScript("OnTextChanged", OnTextChanged) editBox:SetScript("OnTextSet", OnTextSet) editBox:SetScript("OnEditFocusGained", OnEditFocusGained) - + scrollFrame:SetScrollChild(editBox) diff --git a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua old mode 100644 new mode 100755 index 4a17767..79e8628 --- a/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua +++ b/Titan/libs/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua @@ -2,7 +2,7 @@ Slider Widget Graphical Slider, like, for Range values. -------------------------------------------------------------------------------]] -local Type, Version = "Slider", 21 +local Type, Version = "Slider", 22 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -57,10 +57,9 @@ local function Frame_OnMouseDown(frame) AceGUI:ClearFocus() end -local function Slider_OnValueChanged(frame) +local function Slider_OnValueChanged(frame, newvalue) local self = frame.obj if not frame.setup then - local newvalue = frame:GetValue() if self.step and self.step > 0 then local min_value = self.min or 0 newvalue = floor((newvalue - min_value) / self.step + 0.5) * self.step + min_value @@ -106,9 +105,9 @@ local function EditBox_OnEnterPressed(frame) else value = tonumber(value) end - + if value then - PlaySound("igMainMenuOptionCheckBoxOn") + PlaySound(856) -- SOUNDKIT.IG_MAINMENU_OPTION_CHECKBOX_ON self.slider:SetValue(value) self:Fire("OnMouseUp", value) end diff --git a/Titan/libs/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua b/Titan/libs/Libs/CallbackHandler-1.0/CallbackHandler-1.0.lua old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/CallbackHandler-1.0/CallbackHandler-1.0.xml b/Titan/libs/Libs/CallbackHandler-1.0/CallbackHandler-1.0.xml old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/LibSharedMedia-3.0/LibSharedMedia-3.0.lua b/Titan/libs/Libs/LibSharedMedia-3.0/LibSharedMedia-3.0.lua old mode 100644 new mode 100755 index 4a31cfe..1e1e25f --- a/Titan/libs/Libs/LibSharedMedia-3.0/LibSharedMedia-3.0.lua +++ b/Titan/libs/Libs/LibSharedMedia-3.0/LibSharedMedia-3.0.lua @@ -1,6 +1,6 @@ --[[ Name: LibSharedMedia-3.0 -Revision: $Revision: 91 $ +Revision: $Revision: 106 $ Author: Elkano (elkano@gmx.de) Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com) Website: http://www.wowace.com/projects/libsharedmedia-3-0/ @@ -20,8 +20,6 @@ local pairs = _G.pairs local type = _G.type local band = _G.bit.band - -local table_insert = _G.table.insert local table_sort = _G.table.sort local locale = GetLocale() diff --git a/Titan/libs/Libs/LibSharedMedia-3.0/lib.xml b/Titan/libs/Libs/LibSharedMedia-3.0/lib.xml old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/LibStub/LibStub.lua b/Titan/libs/Libs/LibStub/LibStub.lua old mode 100644 new mode 100755 diff --git a/Titan/libs/Libs/LibStub/LibStub.toc b/Titan/libs/Libs/LibStub/LibStub.toc old mode 100644 new mode 100755 index b43e20c..fb3de08 --- a/Titan/libs/Libs/LibStub/LibStub.toc +++ b/Titan/libs/Libs/LibStub/LibStub.toc @@ -5,9 +5,5 @@ ## X-Website: http://jira.wowace.com/browse/LS ## X-Category: Library ## X-License: Public Domain -## X-Curse-Packaged-Version: 1.0 -## X-Curse-Project-Name: LibStub -## X-Curse-Project-ID: libstub -## X-Curse-Repository-ID: wow/libstub/mainline LibStub.lua diff --git a/Titan/libs/changelog.txt b/Titan/libs/changelog.txt index 3a7599d..9e28255 100755 --- a/Titan/libs/changelog.txt +++ b/Titan/libs/changelog.txt @@ -1,3 +1,12 @@ +Ace3 Release - Revision r1214 (June 26th, 2019) +----------------------------------------------- +- AceConfigDialog-3.0: Exposed "select" type sorting control through a new "sorting" config table member +- AceConfigDialog-3.0: Clear existing anchors on the GameTooltip before re-anchoring it for 8.2 compatibility +- AceConfigDialog-3.0: Improved options table sorting algorithm to produce a stable result in certain edge cases (Ticket #501) +- AceConfigRegistry-3.0: Added missing custom controls entries for all types added in the last release (Ticket #494) +- AceGUI-3.0: ColorPicker: Removed usage of Show/HideUIPanel for WoW 8.2 compatibiliy +- AceGUI-3.0: DropDown: Improved dropdown sorting algorithm to support tables with mixed string and numeric keys + Ace3 Release - Revision r1200 (January 24th, 2019) -------------------------------------------------- - Cleanup for WoW 8.0 improvements diff --git a/Titan/libs/widget.xml b/Titan/libs/widget.xml old mode 100644 new mode 100755 index 7e4a4c7..ca8847a --- a/Titan/libs/widget.xml +++ b/Titan/libs/widget.xml @@ -1,4 +1,4 @@ <Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ ..\FrameXML\UI.xsd"> <Include file="AceGUI-3.0-SharedMediaWidgets\widget.xml" /> -</Ui> \ No newline at end of file +</Ui> diff --git a/TitanBag/TitanBag.toc b/TitanBag/TitanBag.toc index 05580cf..8a3686c 100644 --- a/TitanBag/TitanBag.toc +++ b/TitanBag/TitanBag.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fBag|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fBag|r] |cff00aa005.18.0.80200|r ## Notes: Adds bag and free slot information to Titan Panel ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanBag.xml diff --git a/TitanClock/TitanClock.toc b/TitanClock/TitanClock.toc index d609df6..443a797 100644 --- a/TitanClock/TitanClock.toc +++ b/TitanClock/TitanClock.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fClock|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fClock|r] |cff00aa005.18.0.80200|r ## Notes: Adds a clock to Titan Panel ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanClock.xml diff --git a/TitanGold/TitanGold.toc b/TitanGold/TitanGold.toc index f6953c9..2bc728e 100644 --- a/TitanGold/TitanGold.toc +++ b/TitanGold/TitanGold.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fGold|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fGold|r] |cff00aa005.18.0.80200|r ## Notes: Keeps track of all gold held by a player's toons on a per server/faction basis. ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: GoldSave ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanGold.xml diff --git a/TitanLocation/TitanLocation.toc b/TitanLocation/TitanLocation.toc index c93c9dd..8113afb 100644 --- a/TitanLocation/TitanLocation.toc +++ b/TitanLocation/TitanLocation.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fLocation|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fLocation|r] |cff00aa005.18.0.80200|r ## Notes: Adds coordinates and location information to Titan Panel ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanLocation.xml diff --git a/TitanLootType/TitanLootType.toc b/TitanLootType/TitanLootType.toc index 40a42c2..ac50842 100644 --- a/TitanLootType/TitanLootType.toc +++ b/TitanLootType/TitanLootType.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fLootType|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fLootType|r] |cff00aa005.18.0.80200|r ## Notes: Adds group loot and instance difficulty information to Titan Panel ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanLootType.xml diff --git a/TitanPerformance/TitanPerformance.toc b/TitanPerformance/TitanPerformance.toc index aeef877..ba32972 100644 --- a/TitanPerformance/TitanPerformance.toc +++ b/TitanPerformance/TitanPerformance.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fPerformance|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fPerformance|r] |cff00aa005.18.0.80200|r ## Notes: Adds FPS and Garbage collection information to Titan Panel ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanPerformance.xml diff --git a/TitanRepair/TitanRepair.toc b/TitanRepair/TitanRepair.toc index 0f079f2..a66ef32 100644 --- a/TitanRepair/TitanRepair.toc +++ b/TitanRepair/TitanRepair.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fRepair|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fRepair|r] |cff00aa005.18.0.80200|r ## Notes: Provides a configurable durability display. Also adds the ability to auto repair items and inventory at vendors ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanRepair.xml diff --git a/TitanVolume/TitanVolume.toc b/TitanVolume/TitanVolume.toc index 953bb03..c8095d1 100644 --- a/TitanVolume/TitanVolume.toc +++ b/TitanVolume/TitanVolume.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fVolume|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fVolume|r] |cff00aa005.18.0.80200|r ## Notes: Adds a volume control icon on your Titan Bar ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanVolume.xml diff --git a/TitanXP/TitanXP.toc b/TitanXP/TitanXP.toc index 1b6f67b..00b2652 100644 --- a/TitanXP/TitanXP.toc +++ b/TitanXP/TitanXP.toc @@ -1,10 +1,10 @@ ## Interface: 80200 -## Title: Titan Panel [|cffeda55fXP|r] |cff00aa005.17.5.80200|r +## Title: Titan Panel [|cffeda55fXP|r] |cff00aa005.18.0.80200|r ## Notes: Adds information to Titan Panel about XP earned and time to level ## Author: Titan Panel Development Team (http://www.titanpanel.org) ## SavedVariables: ## OptionalDeps: ## Dependencies: Titan -## Version: 5.17.5.80200 +## Version: 5.18.0.80200 ## X-Child-Of: Titan TitanXP.xml