diff --git a/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.lua b/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.lua deleted file mode 100644 index a7f7279..0000000 --- a/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.lua +++ /dev/null @@ -1,674 +0,0 @@ ---- **AceAddon-3.0** provides a template for creating addon objects. --- It'll provide you with a set of callback functions that allow you to simplify the loading --- process of your addon.\\ --- Callbacks provided are:\\ --- * **OnInitialize**, which is called directly after the addon is fully loaded. --- * **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, --- -- 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, --- -- 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 --- -- 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 --- -- 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 $ - -local MAJOR, MINOR = "AceAddon-3.0", 12 -local AceAddon, oldminor = LibStub:NewLibrary(MAJOR, MINOR) - -if not AceAddon then return end -- No Upgrade needed. - -AceAddon.frame = AceAddon.frame or CreateFrame("Frame", "AceAddon30Frame") -- Our very own frame -AceAddon.addons = AceAddon.addons or {} -- addons in general -AceAddon.statuses = AceAddon.statuses or {} -- statuses of addon. -AceAddon.initializequeue = AceAddon.initializequeue or {} -- addons that are new and not initialized -AceAddon.enablequeue = AceAddon.enablequeue or {} -- addons that are initialized and waiting to be enabled -AceAddon.embeds = AceAddon.embeds or setmetatable({}, {__index = function(tbl, key) tbl[key] = {} return tbl[key] end }) -- contains a list of libraries embedded in an addon - --- Lua APIs -local tinsert, tconcat, tremove = table.insert, table.concat, table.remove -local fmt, tostring = string.format, tostring -local select, pairs, next, type, unpack = select, pairs, next, type, unpack -local loadstring, assert, error = loadstring, assert, error -local setmetatable, getmetatable, rawset, rawget = setmetatable, getmetatable, rawset, rawget - --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: LibStub, IsLoggedIn, geterrorhandler - ---[[ - xpcall safecall implementation -]] -local xpcall = xpcall - -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, ...) - end -end - --- local functions that will be implemented further down -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 - --- Check if the addon is queued for initialization -local function queuedForInitialization(addon) - for i = 1, #AceAddon.initializequeue do - if AceAddon.initializequeue[i] == addon then - return true - end - end - return false -end - ---- Create a new AceAddon-3.0 addon. --- 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 --- -- Create a simple addon object --- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon", "AceEvent-3.0") --- --- -- Create a Addon object based on the table of a frame --- local MyFrame = CreateFrame("Frame") --- MyAddon = LibStub("AceAddon-3.0"):NewAddon(MyFrame, "MyAddon", "AceEvent-3.0") -function AceAddon:NewAddon(objectorname, ...) - local object,name - local i=1 - if type(objectorname)=="table" then - object=objectorname - name=... - i=2 - else - name=objectorname - end - 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 - error(("Usage: NewAddon([object,] name, [lib, lib, lib, ...]): 'name' - Addon '%s' already exists."):format(name), 2) - end - - object = object or {} - object.name = name - - local addonmeta = {} - local oldmeta = getmetatable(object) - if oldmeta then - for k, v in pairs(oldmeta) do addonmeta[k] = v end - end - addonmeta.__tostring = addontostring - - setmetatable( object, addonmeta ) - self.addons[name] = object - object.modules = {} - object.orderedModules = {} - 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 -end - - ---- Get the addon object by its name from the internal AceAddon registry. --- 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 --- -- Get the Addon --- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") -function AceAddon:GetAddon(name, silent) - if not silent and not self.addons[name] then - error(("Usage: GetAddon(name): 'name' - Cannot find an AceAddon '%s'."):format(tostring(name)), 2) - end - return self.addons[name] -end - --- - Embed a list of libraries into the specified addon. --- This function will try to embed all of the listed libraries into the addon --- and error if a single one fails. --- --- **Note:** This function is for internal use by :NewAddon/:NewModule --- @paramsig addon, [lib, ...] --- @param addon addon object to embed the libs in --- @param lib List of libraries to embed into the addon -function AceAddon:EmbedLibraries(addon, ...) - for i=1,select("#", ... ) do - local libname = select(i, ...) - self:EmbedLibrary(addon, libname, false, 4) - end -end - --- - Embed a library into the addon object. --- This function will check if the specified library is registered with LibStub --- and if it has a :Embed function to call. It'll error if any of those conditions --- fails. --- --- **Note:** This function is for internal use by :EmbedLibraries --- @paramsig addon, libname[, silent[, offset]] --- @param addon addon object to embed the library in --- @param libname name of the library to embed --- @param silent marks an embed to fail silently if the library doesn't exist (optional) --- @param offset will push the error messages back to said offset, defaults to 2 (optional) -function AceAddon:EmbedLibrary(addon, libname, silent, offset) - local lib = LibStub:GetLibrary(libname, true) - if not lib and not silent then - error(("Usage: EmbedLibrary(addon, libname, silent, offset): 'libname' - Cannot find a library instance of %q."):format(tostring(libname)), offset or 2) - elseif lib and type(lib.Embed) == "function" then - lib:Embed(addon) - tinsert(self.embeds[addon], libname) - return true - elseif lib then - error(("Usage: EmbedLibrary(addon, libname, silent, offset): 'libname' - Library '%s' is not Embed capable"):format(libname), offset or 2) - end -end - ---- Return the specified module from an addon object. --- Throws an error if the addon object cannot be found (except if silent is set) --- @name //addon//:GetModule --- @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 --- -- Get the Addon --- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") --- -- Get the Module --- MyModule = MyAddon:GetModule("MyModule") -function GetModule(self, name, silent) - if not self.modules[name] and not silent then - error(("Usage: GetModule(name, silent): 'name' - Cannot find module '%s'."):format(tostring(name)), 2) - end - return self.modules[name] -end - -local function IsModuleTrue(self) return true end - ---- Create a new module for the addon. --- The new module can have its own embeded libraries and/or use a module prototype to be mixed into the module.\\ --- A module has the same functionality as a real addon, it can have modules of its own, and has the same API as --- an addon object. --- @name //addon//:NewModule --- @paramsig name[, prototype|lib[, lib, ...]] --- @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 --- -- 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 - - if type(prototype) == "string" then - AceAddon:EmbedLibraries(module, prototype, ...) - else - AceAddon:EmbedLibraries(module, ...) - end - AceAddon:EmbedLibraries(module, unpack(self.defaultModuleLibraries)) - - 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 --- print(MyAddon:GetName()) --- -- prints "MyAddon" -function GetName(self) - return self.moduleName or self.name -end - ---- Enables the Addon, if possible, return true or false depending on success. --- This internally calls AceAddon:EnableAddon(), thus dispatching a OnEnable callback --- and enabling all modules of the addon (unless explicitly disabled).\\ --- :Enable() also sets the internal `enableState` variable to true --- @name //addon//:Enable --- @paramsig --- @usage --- -- Enable MyModule --- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") --- MyModule = MyAddon:GetModule("MyModule") --- MyModule:Enable() -function Enable(self) - self:SetEnabledState(true) - - -- nevcairiel 2013-04-27: don't enable an addon/module if its queued for init still - -- it'll be enabled after the init process - if not queuedForInitialization(self) then - return AceAddon:EnableAddon(self) - end -end - ---- Disables the Addon, if possible, return true or false depending on success. --- This internally calls AceAddon:DisableAddon(), thus dispatching a OnDisable callback --- and disabling all modules of the addon.\\ --- :Disable() also sets the internal `enableState` variable to false --- @name //addon//:Disable --- @paramsig --- @usage --- -- Disable MyAddon --- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") --- MyAddon:Disable() -function Disable(self) - self:SetEnabledState(false) - return AceAddon:DisableAddon(self) -end - ---- Enables the Module, if possible, return true or false depending on success. --- Short-hand function that retrieves the module via `:GetModule` and calls `:Enable` on the module object. --- @name //addon//:EnableModule --- @paramsig name --- @usage --- -- Enable MyModule using :GetModule --- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") --- MyModule = MyAddon:GetModule("MyModule") --- MyModule:Enable() --- --- -- Enable MyModule using the short-hand --- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") --- MyAddon:EnableModule("MyModule") -function EnableModule(self, name) - local module = self:GetModule( name ) - return module:Enable() -end - ---- Disables the Module, if possible, return true or false depending on success. --- Short-hand function that retrieves the module via `:GetModule` and calls `:Disable` on the module object. --- @name //addon//:DisableModule --- @paramsig name --- @usage --- -- Disable MyModule using :GetModule --- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") --- MyModule = MyAddon:GetModule("MyModule") --- MyModule:Disable() --- --- -- Disable MyModule using the short-hand --- MyAddon = LibStub("AceAddon-3.0"):GetAddon("MyAddon") --- MyAddon:DisableModule("MyModule") -function DisableModule(self, name) - local module = self:GetModule( name ) - return module:Disable() -end - ---- Set the default libraries to be mixed into all modules created by this object. --- Note that you can only change the default module libraries before any module is created. --- @name //addon//:SetDefaultModuleLibraries --- @paramsig lib[, lib, ...] --- @param lib List of libraries to embed into the addon --- @usage --- -- Create the addon object --- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") --- -- Configure default libraries for modules (all modules need AceEvent-3.0) --- MyAddon:SetDefaultModuleLibraries("AceEvent-3.0") --- -- Create a module --- MyModule = MyAddon:NewModule("MyModule") -function SetDefaultModuleLibraries(self, ...) - if next(self.modules) then - error("Usage: SetDefaultModuleLibraries(...): cannot change the module defaults after a module has been registered.", 2) - end - self.defaultModuleLibraries = {...} -end - ---- Set the default state in which new modules are being created. --- Note that you can only change the default state before any module is created. --- @name //addon//:SetDefaultModuleState --- @paramsig state --- @param state Default state for new modules, true for enabled, false for disabled --- @usage --- -- Create the addon object --- MyAddon = LibStub("AceAddon-3.0"):NewAddon("MyAddon") --- -- Set the default state to "disabled" --- MyAddon:SetDefaultModuleState(false) --- -- Create a module and explicilty enable it --- MyModule = MyAddon:NewModule("MyModule") --- MyModule:Enable() -function SetDefaultModuleState(self, state) - if next(self.modules) then - error("Usage: SetDefaultModuleState(state): cannot change the module defaults after a module has been registered.", 2) - end - self.defaultModuleState = state -end - ---- Set the default prototype to use for new modules on creation. --- Note that you can only change the default prototype before any module is created. --- @name //addon//:SetDefaultModulePrototype --- @paramsig prototype --- @param prototype Default prototype for the new modules (table) --- @usage --- -- Define a prototype --- local prototype = { OnEnable = function(self) print("OnEnable called!") end } --- -- Set the default prototype --- MyAddon:SetDefaultModulePrototype(prototype) --- -- Create a module and explicitly Enable it --- MyModule = MyAddon:NewModule("MyModule") --- MyModule:Enable() --- -- should print "OnEnable called!" now --- @see NewModule -function SetDefaultModulePrototype(self, prototype) - if next(self.modules) then - error("Usage: SetDefaultModulePrototype(prototype): cannot change the module defaults after a module has been registered.", 2) - end - if type(prototype) ~= "table" then - error(("Usage: SetDefaultModulePrototype(prototype): 'prototype' - table expected got '%s'."):format(type(prototype)), 2) - end - self.defaultModulePrototype = prototype -end - ---- Set the state of an addon or module --- This should only be called before any enabling actually happend, e.g. in/before OnInitialize. --- @name //addon//:SetEnabledState --- @paramsig state --- @param state the state of an addon or module (enabled=true, disabled=false) -function SetEnabledState(self, state) - self.enabledState = state -end - - ---- Return an iterator of all modules associated to the addon. --- @name //addon//:IterateModules --- @paramsig --- @usage --- -- Enable all modules --- for name, module in MyAddon:IterateModules() do --- module:Enable() --- end -local function IterateModules(self) return pairs(self.modules) end - --- Returns an iterator of all embeds in the addon --- @name //addon//:IterateEmbeds --- @paramsig -local function IterateEmbeds(self) return pairs(AceAddon.embeds[self]) end - ---- Query the enabledState of an addon. --- @name //addon//:IsEnabled --- @paramsig --- @usage --- if MyAddon:IsEnabled() then --- MyAddon:Disable() --- end -local function IsEnabled(self) return self.enabledState end -local mixins = { - NewModule = NewModule, - GetModule = GetModule, - Enable = Enable, - Disable = Disable, - EnableModule = EnableModule, - DisableModule = DisableModule, - IsEnabled = IsEnabled, - SetDefaultModuleLibraries = SetDefaultModuleLibraries, - SetDefaultModuleState = SetDefaultModuleState, - SetDefaultModulePrototype = SetDefaultModulePrototype, - SetEnabledState = SetEnabledState, - IterateModules = IterateModules, - IterateEmbeds = IterateEmbeds, - GetName = GetName, -} -local function IsModule(self) return false end -local pmixins = { - defaultModuleState = true, - enabledState = true, - IsModule = IsModule, -} --- Embed( target ) --- target (object) - target object to embed aceaddon in --- --- this is a local function specifically since it's meant to be only called internally -function Embed(target, skipPMixins) - for k, v in pairs(mixins) do - target[k] = v - end - if not skipPMixins then - for k, v in pairs(pmixins) do - target[k] = target[k] or v - end - end -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), --- 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 - --- - 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), --- 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. --- --- **Note:** Do not call this function manually, unless you're absolutely sure that you know what you are doing. --- Use :Enable on the addon itself instead. --- @param addon addon object to enable -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] - for i = 1, #embeds do - 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 - self:EnableAddon(modules[i]) - end - end - return self.statuses[addon.name] -- return true if we're disabled -end - --- - Disable the addon --- Note: This function is only used internally. --- 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. --- 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 - local embeds = self.embeds[addon] - for i = 1, #embeds do - local lib = LibStub:GetLibrary(embeds[i], true) - if lib then safecall(lib.OnEmbedDisable, lib, addon) end - end - -- disable possible modules. - local modules = addon.orderedModules - for i = 1, #modules do - 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 --- -- Print a list of all installed AceAddon's --- for name, addon in AceAddon:IterateAddons() do --- print("Addon: " .. name) --- end -function AceAddon:IterateAddons() return pairs(self.addons) end - ---- Get an iterator over the internal status registry. --- @usage --- -- Print a list of all enabled addons --- for name, status in AceAddon:IterateAddonStatus() do --- if status then --- print("EnabledAddon: " .. name) --- end --- end -function AceAddon:IterateAddonStatus() return pairs(self.statuses) end - --- Following Iterators are deprecated, and their addon specific versions should be used --- e.g. addon:IterateEmbeds() instead of :IterateEmbedsOnAddon(addon) -function AceAddon:IterateEmbedsOnAddon(addon) return pairs(self.embeds[addon]) end -function AceAddon:IterateModulesOfAddon(addon) return pairs(addon.modules) end - --- Event Handling -local function onEvent(this, event, arg1) - -- 2011-08-17 nevcairiel - ignore the load event of Blizzard_DebugTools, so a potential startup error isn't swallowed up - if (event == "ADDON_LOADED" and arg1 ~= "Blizzard_DebugTools") or event == "PLAYER_LOGIN" then - -- if a addon loads another addon, recursion could happen here, so we need to validate the table on every iteration - while(#AceAddon.initializequeue > 0) do - local addon = tremove(AceAddon.initializequeue, 1) - -- this might be an issue with recursion - TODO: validate - if event == "ADDON_LOADED" then addon.baseName = arg1 end - AceAddon:InitializeAddon(addon) - tinsert(AceAddon.enablequeue, addon) - end - - if IsLoggedIn() then - while(#AceAddon.enablequeue > 0) do - local addon = tremove(AceAddon.enablequeue, 1) - AceAddon:EnableAddon(addon) - end - end - end -end - -AceAddon.frame:RegisterEvent("ADDON_LOADED") -AceAddon.frame:RegisterEvent("PLAYER_LOGIN") -AceAddon.frame:SetScript("OnEvent", onEvent) - --- upgrade embeded -for name, addon in pairs(AceAddon.addons) do - Embed(addon, true) -end - --- 2010-10-27 nevcairiel - add new "orderedModules" table -if oldminor and oldminor < 10 then - for name, addon in pairs(AceAddon.addons) do - addon.orderedModules = {} - for module_name, module in pairs(addon.modules) do - tinsert(addon.orderedModules, module) - end - end -end diff --git a/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.xml b/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.xml deleted file mode 100644 index e6ad639..0000000 --- a/ElvUI_SLE/libs/AceAddon-3.0/AceAddon-3.0.xml +++ /dev/null @@ -1,4 +0,0 @@ -<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="AceAddon-3.0.lua"/> -</Ui> \ No newline at end of file diff --git a/ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua b/ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua index 3bedf8c..f581e95 100644 --- a/ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua +++ b/ElvUI_SLE/libs/AceConfig-3.0/AceConfig-3.0.lua @@ -12,13 +12,13 @@ Very light wrapper library that combines all the AceConfig subcomponents into on ]] -local MAJOR, MINOR = "AceConfig-3.0", 2 +local MAJOR, MINOR = "AceConfig-3.0-ElvUI", 1 local AceConfig = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfig then return end -local cfgreg = LibStub("AceConfigRegistry-3.0") -local cfgcmd = LibStub("AceConfigCmd-3.0") +local cfgreg = LibStub("AceConfigRegistry-3.0-ElvUI") +local cfgcmd = LibStub("AceConfigCmd-3.0-ElvUI") --TODO: local cfgdlg = LibStub("AceConfigDialog-3.0", true) --TODO: local cfgdrp = LibStub("AceConfigDropdown-3.0", true) diff --git a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua index 2023981..8e1f93f 100644 --- a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua +++ b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigCmd-3.0/AceConfigCmd-3.0.lua @@ -15,7 +15,7 @@ REQUIRES: AceConsole-3.0 for command registration (loaded on demand) -- TODO: plugin args -local MAJOR, MINOR = "AceConfigCmd-3.0", 13 +local MAJOR, MINOR = "AceConfigCmd-3.0-ElvUI", 1 local AceConfigCmd = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigCmd then return end @@ -23,7 +23,7 @@ if not AceConfigCmd then return end AceConfigCmd.commands = AceConfigCmd.commands or {} local commands = AceConfigCmd.commands -local cfgreg = LibStub("AceConfigRegistry-3.0") +local cfgreg = LibStub("AceConfigRegistry-3.0-ElvUI") local AceConsole -- LoD local AceConsoleName = "AceConsole-3.0" diff --git a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua index 1c28821..cc8dc5d 100644 --- a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua +++ b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigDialog-3.0/AceConfigDialog-3.0.lua @@ -1,10 +1,10 @@ --- 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 1089 2013-09-13 14:32:35Z nevcairiel $ +-- @release $Id: AceConfigDialog-3.0.lua 1126 2014-11-10 06:38:01Z nevcairiel $ local LibStub = LibStub -local MAJOR, MINOR = "AceConfigDialog-3.0", 58 +local MAJOR, MINOR = "AceConfigDialog-3.0-ElvUI", 1 local AceConfigDialog, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigDialog then return end @@ -18,7 +18,7 @@ AceConfigDialog.frame.closing = AceConfigDialog.frame.closing or {} AceConfigDialog.frame.closeAllOverride = AceConfigDialog.frame.closeAllOverride or {} local gui = LibStub("AceGUI-3.0") -local reg = LibStub("AceConfigRegistry-3.0") +local reg = LibStub("AceConfigRegistry-3.0-ElvUI") -- Lua APIs local tconcat, tinsert, tsort, tremove, tsort = table.concat, table.insert, table.sort, table.remove, table.sort @@ -242,21 +242,21 @@ local function GetOptionsMemberValue(membername, option, options, path, appName, info.uiType = "dialog" info.uiName = MAJOR - local a, b, c ,d + local a, b, c ,d, e, f, g, h --using 4 returns for the get of a color type, increase if a type needs more if type(member) == "function" then --Call the function - a,b,c,d = member(info, ...) + a,b,c,d, e, f, g, h = member(info, ...) else --Call the method if handler and handler[member] then - a,b,c,d = handler[member](handler, info, ...) + a,b,c,d,e, f, g, h = handler[member](handler, info, ...) else error(format("Method %s doesn't exist in handler for type %s", member, membername)) end end del(info) - return a,b,c,d + return a,b,c,d,e, f, g, h else --The value isnt a function to call, return it return member @@ -542,16 +542,16 @@ local function OptionOnMouseOver(widget, event) if descStyle and descStyle ~= "tooltip" then return end - GameTooltip:SetText(name, 1, .82, 0, 1) + GameTooltip:SetText(name, 1, .82, 0, true) if opt.type == "multiselect" then - GameTooltip:AddLine(user.text,0.5, 0.5, 0.8, 1) + GameTooltip:AddLine(user.text, 0.5, 0.5, 0.8, true) end if type(desc) == "string" then - GameTooltip:AddLine(desc, 1, 1, 1, 1) + GameTooltip:AddLine(desc, 1, 1, 1, true) end if type(usage) == "string" then - GameTooltip:AddLine("Usage: "..usage, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1) + GameTooltip:AddLine("Usage: "..usage, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, true) end GameTooltip:Show() @@ -1320,7 +1320,7 @@ local function FeedOptions(appName, options,container,rootframe,path,group,inlin del(valuesort) elseif v.type == "color" then - control = gui:Create("ColorPicker") + control = gui:Create("ColorPicker-ElvUI") control:SetLabel(name) control:SetHasAlpha(GetOptionsMemberValue("hasAlpha",v, options, path, appName)) control:SetColor(GetOptionsMemberValue("get",v, options, path, appName)) @@ -1441,17 +1441,17 @@ 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:SetOwner(button, "ANCHOR_CURSOR") if widget.type == "TabGroup" then GameTooltip:SetPoint("BOTTOM",button,"TOP") else GameTooltip:SetPoint("LEFT",button,"RIGHT") end - GameTooltip:SetText(name, 1, .82, 0, 1) + GameTooltip:SetText(name, 1, .82, 0, true) if type(desc) == "string" then - GameTooltip:AddLine(desc, 1, 1, 1, 1) + GameTooltip:AddLine(desc, 1, 1, 1, true) end GameTooltip:Show() @@ -1817,6 +1817,13 @@ function AceConfigDialog:Open(appName, container, ...) 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 + option = options.args[path[i]] + 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 diff --git a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua index 74f4880..eea5365 100644 --- a/ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua +++ b/ElvUI_SLE/libs/AceConfig-3.0/AceConfigRegistry-3.0/AceConfigRegistry-3.0.lua @@ -8,8 +8,8 @@ -- :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 1045 2011-12-09 17:58:40Z nevcairiel $ -local MAJOR, MINOR = "AceConfigRegistry-3.0", 14 +-- @release $Id: AceConfigRegistry-3.0.lua 1105 2013-12-08 22:11:58Z nevcairiel $ +local MAJOR, MINOR = "AceConfigRegistry-3.0-ElvUI", 1 local AceConfigRegistry = LibStub:NewLibrary(MAJOR, MINOR) if not AceConfigRegistry then return end @@ -163,6 +163,7 @@ local typedkeys={ }, color={ hasAlpha=optmethodbool, + reset=opttable, }, keybinding={ -- TODO @@ -288,7 +289,8 @@ end -- @param appName The application name as given to `:RegisterOptionsTable()` -- @param options The options table, OR a function reference that generates it on demand. \\ -- See the top of the page for info on arguments passed to such functions. -function AceConfigRegistry:RegisterOptionsTable(appName, options) +-- @param skipValidation Skip options table validation (primarily useful for extremely huge options, with a noticeable slowdown) +function AceConfigRegistry:RegisterOptionsTable(appName, options, skipValidation) if type(options)=="table" then if options.type~="group" then -- quick sanity checker error(MAJOR..": RegisterOptionsTable(appName, options): 'options' - missing type='group' member in root group", 2) @@ -296,7 +298,7 @@ function AceConfigRegistry:RegisterOptionsTable(appName, options) AceConfigRegistry.tables[appName] = function(uiType, uiName, errlvl) errlvl=(errlvl or 0)+1 validateGetterArgs(uiType, uiName, errlvl) - if not AceConfigRegistry.validated[uiType][appName] then + if not AceConfigRegistry.validated[uiType][appName] and not skipValidation then AceConfigRegistry:ValidateOptionsTable(options, appName, errlvl) -- upgradable AceConfigRegistry.validated[uiType][appName] = true end @@ -307,7 +309,7 @@ function AceConfigRegistry:RegisterOptionsTable(appName, options) errlvl=(errlvl or 0)+1 validateGetterArgs(uiType, uiName, errlvl) local tab = assert(options(uiType, uiName, appName)) - if not AceConfigRegistry.validated[uiType][appName] then + if not AceConfigRegistry.validated[uiType][appName] and not skipValidation then AceConfigRegistry:ValidateOptionsTable(tab, appName, errlvl) -- upgradable AceConfigRegistry.validated[uiType][appName] = true end diff --git a/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.lua b/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.lua deleted file mode 100644 index c001123..0000000 --- a/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.lua +++ /dev/null @@ -1,250 +0,0 @@ ---- **AceConsole-3.0** provides registration facilities for slash commands. --- You can register slash commands to your custom functions and use the `GetArgs` function to parse them --- to your addons individual needs. --- --- **AceConsole-3.0** can be embeded into your addon, either explicitly by calling AceConsole: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 AceConsole itself.\\ --- It is recommended to embed AceConsole, otherwise you'll have to specify a custom `self` on all calls you --- make into AceConsole. --- @class file --- @name AceConsole-3.0 --- @release $Id: AceConsole-3.0.lua 878 2009-11-02 18:51:58Z nevcairiel $ -local MAJOR,MINOR = "AceConsole-3.0", 7 - -local AceConsole, oldminor = LibStub:NewLibrary(MAJOR, MINOR) - -if not AceConsole then return end -- No upgrade needed - -AceConsole.embeds = AceConsole.embeds or {} -- table containing objects AceConsole is embedded in. -AceConsole.commands = AceConsole.commands or {} -- table containing commands registered -AceConsole.weakcommands = AceConsole.weakcommands or {} -- table containing self, command => func references for weak commands that don't persist through enable/disable - --- Lua APIs -local tconcat, tostring, select = table.concat, tostring, select -local type, pairs, error = type, pairs, error -local format, strfind, strsub = string.format, string.find, string.sub -local max = math.max - --- WoW APIs -local _G = _G - --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: DEFAULT_CHAT_FRAME, SlashCmdList, hash_SlashCmdList - -local tmp={} -local function Print(self,frame,...) - local n=0 - if self ~= AceConsole then - n=n+1 - tmp[n] = "|cff33ff99"..tostring( self ).."|r:" - end - for i=1, select("#", ...) do - n=n+1 - tmp[n] = tostring(select(i, ...)) - end - frame:AddMessage( tconcat(tmp," ",1,n) ) -end - ---- Print to DEFAULT_CHAT_FRAME or given ChatFrame (anything with an .AddMessage function) --- @paramsig [chatframe ,] ... --- @param chatframe Custom ChatFrame to print to (or any frame with an .AddMessage function) --- @param ... List of any values to be printed -function AceConsole:Print(...) - local frame = ... - if type(frame) == "table" and frame.AddMessage then -- Is first argument something with an .AddMessage member? - return Print(self, frame, select(2,...)) - else - return Print(self, DEFAULT_CHAT_FRAME, ...) - end -end - - ---- Formatted (using format()) print to DEFAULT_CHAT_FRAME or given ChatFrame (anything with an .AddMessage function) --- @paramsig [chatframe ,] "format"[, ...] --- @param chatframe Custom ChatFrame to print to (or any frame with an .AddMessage function) --- @param format Format string - same syntax as standard Lua format() --- @param ... Arguments to the format string -function AceConsole:Printf(...) - local frame = ... - if type(frame) == "table" and frame.AddMessage then -- Is first argument something with an .AddMessage member? - return Print(self, frame, format(select(2,...))) - else - return Print(self, DEFAULT_CHAT_FRAME, format(...)) - end -end - - - - ---- Register a simple chat command --- @param command Chat command to be registered WITHOUT leading "/" --- @param func Function to call when the slash command is being used (funcref or methodname) --- @param persist if false, the command will be soft disabled/enabled when aceconsole is used as a mixin (default: true) -function AceConsole:RegisterChatCommand( command, func, persist ) - if type(command)~="string" then error([[Usage: AceConsole:RegisterChatCommand( "command", func[, persist ]): 'command' - expected a string]], 2) end - - if persist==nil then persist=true end -- I'd rather have my addon's "/addon enable" around if the author screws up. Having some extra slash regged when it shouldnt be isn't as destructive. True is a better default. /Mikk - - local name = "ACECONSOLE_"..command:upper() - - if type( func ) == "string" then - SlashCmdList[name] = function(input, editBox) - self[func](self, input, editBox) - end - else - SlashCmdList[name] = func - end - _G["SLASH_"..name.."1"] = "/"..command:lower() - AceConsole.commands[command] = name - -- non-persisting commands are registered for enabling disabling - if not persist then - if not AceConsole.weakcommands[self] then AceConsole.weakcommands[self] = {} end - AceConsole.weakcommands[self][command] = func - end - return true -end - ---- Unregister a chatcommand --- @param command Chat command to be unregistered WITHOUT leading "/" -function AceConsole:UnregisterChatCommand( command ) - local name = AceConsole.commands[command] - if name then - SlashCmdList[name] = nil - _G["SLASH_" .. name .. "1"] = nil - hash_SlashCmdList["/" .. command:upper()] = nil - AceConsole.commands[command] = nil - end -end - ---- Get an iterator over all Chat Commands registered with AceConsole --- @return Iterator (pairs) over all commands -function AceConsole:IterateChatCommands() return pairs(AceConsole.commands) end - - -local function nils(n, ...) - if n>1 then - return nil, nils(n-1, ...) - elseif n==1 then - return nil, ... - else - return ... - end -end - - ---- Retreive one or more space-separated arguments from a string. --- Treats quoted strings and itemlinks as non-spaced. --- @param string The raw argument string --- @param numargs How many arguments to get (default 1) --- @param startpos Where in the string to start scanning (default 1) --- @return Returns arg1, arg2, ..., nextposition\\ --- Missing arguments will be returned as nils. 'nextposition' is returned as 1e9 at the end of the string. -function AceConsole:GetArgs(str, numargs, startpos) - numargs = numargs or 1 - startpos = max(startpos or 1, 1) - - local pos=startpos - - -- find start of new arg - pos = strfind(str, "[^ ]", pos) - if not pos then -- whoops, end of string - return nils(numargs, 1e9) - end - - if numargs<1 then - return pos - end - - -- quoted or space separated? find out which pattern to use - local delim_or_pipe - local ch = strsub(str, pos, pos) - if ch=='"' then - pos = pos + 1 - delim_or_pipe='([|"])' - elseif ch=="'" then - pos = pos + 1 - delim_or_pipe="([|'])" - else - delim_or_pipe="([| ])" - end - - startpos = pos - - while true do - -- find delimiter or hyperlink - local ch,_ - pos,_,ch = strfind(str, delim_or_pipe, pos) - - if not pos then break end - - if ch=="|" then - -- some kind of escape - - if strsub(str,pos,pos+1)=="|H" then - -- It's a |H....|hhyper link!|h - pos=strfind(str, "|h", pos+2) -- first |h - if not pos then break end - - pos=strfind(str, "|h", pos+2) -- second |h - if not pos then break end - elseif strsub(str,pos, pos+1) == "|T" then - -- It's a |T....|t texture - pos=strfind(str, "|t", pos+2) - if not pos then break end - end - - pos=pos+2 -- skip past this escape (last |h if it was a hyperlink) - - else - -- found delimiter, done with this arg - return strsub(str, startpos, pos-1), AceConsole:GetArgs(str, numargs-1, pos+1) - end - - end - - -- search aborted, we hit end of string. return it all as one argument. (yes, even if it's an unterminated quote or hyperlink) - return strsub(str, startpos), nils(numargs-1, 1e9) -end - - ---- embedding and embed handling - -local mixins = { - "Print", - "Printf", - "RegisterChatCommand", - "UnregisterChatCommand", - "GetArgs", -} - --- Embeds AceConsole into the target object making the functions from the mixins list available on target:.. --- @param target target object to embed AceBucket in -function AceConsole:Embed( target ) - for k, v in pairs( mixins ) do - target[v] = self[v] - end - self.embeds[target] = true - return target -end - -function AceConsole:OnEmbedEnable( target ) - if AceConsole.weakcommands[target] then - for command, func in pairs( AceConsole.weakcommands[target] ) do - target:RegisterChatCommand( command, func, false, true ) -- nonpersisting and silent registry - end - end -end - -function AceConsole:OnEmbedDisable( target ) - if AceConsole.weakcommands[target] then - for command, func in pairs( AceConsole.weakcommands[target] ) do - target:UnregisterChatCommand( command ) -- TODO: this could potentially unregister a command from another application in case of command conflicts. Do we care? - end - end -end - -for addon in pairs(AceConsole.embeds) do - AceConsole:Embed(addon) -end diff --git a/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.xml b/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.xml deleted file mode 100644 index be9f47c..0000000 --- a/ElvUI_SLE/libs/AceConsole-3.0/AceConsole-3.0.xml +++ /dev/null @@ -1,4 +0,0 @@ -<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="AceConsole-3.0.lua"/> -</Ui> \ No newline at end of file diff --git a/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.lua b/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.lua deleted file mode 100644 index 79f4b39..0000000 --- a/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.lua +++ /dev/null @@ -1,745 +0,0 @@ ---- **AceDB-3.0** manages the SavedVariables of your addon. --- It offers profile management, smart defaults and namespaces for modules.\\ --- Data can be saved in different data-types, depending on its intended usage. --- The most common data-type is the `profile` type, which allows the user to choose --- the active profile, and manage the profiles of all of his characters.\\ --- The following data types are available: --- * **char** Character-specific data. Every character has its own database. --- * **realm** Realm-specific data. All of the players characters on the same realm share this database. --- * **class** Class-specific data. All of the players characters of the same class share this database. --- * **race** Race-specific data. All of the players characters of the same race share this database. --- * **faction** Faction-specific data. All of the players characters of the same faction share this database. --- * **factionrealm** Faction and realm specific data. All of the players characters on the same realm and of the same faction share this database. --- * **global** Global Data. All characters on the same account share this database. --- * **profile** Profile-specific data. All characters using the same profile share this database. The user can control which profile should be used. --- --- Creating a new Database using the `:New` function will return a new DBObject. A database will inherit all functions --- of the DBObjectLib listed here. \\ --- If you create a new namespaced child-database (`:RegisterNamespace`), you'll get a DBObject as well, but note --- that the child-databases cannot individually change their profile, and are linked to their parents profile - and because of that, --- the profile related APIs are not available. Only `:RegisterDefaults` and `:ResetProfile` are available on child-databases. --- --- For more details on how to use AceDB-3.0, see the [[AceDB-3.0 Tutorial]]. --- --- You may also be interested in [[libdualspec-1-0|LibDualSpec-1.0]] to do profile switching automatically when switching specs. --- --- @usage --- MyAddon = LibStub("AceAddon-3.0"):NewAddon("DBExample") --- --- -- declare defaults to be used in the DB --- local defaults = { --- profile = { --- setting = true, --- } --- } --- --- function MyAddon:OnInitialize() --- -- Assuming the .toc says ## SavedVariables: MyAddonDB --- self.db = LibStub("AceDB-3.0"):New("MyAddonDB", defaults, true) --- end --- @class file --- @name AceDB-3.0.lua --- @release $Id: AceDB-3.0.lua 1115 2014-09-21 11:52:35Z kaelten $ -local ACEDB_MAJOR, ACEDB_MINOR = "AceDB-3.0", 25 -local AceDB, oldminor = LibStub:NewLibrary(ACEDB_MAJOR, ACEDB_MINOR) - -if not AceDB then return end -- No upgrade needed - --- Lua APIs -local type, pairs, next, error = type, pairs, next, error -local setmetatable, getmetatable, rawset, rawget = setmetatable, getmetatable, rawset, rawget - --- WoW APIs -local _G = _G - --- Global vars/functions that we don't upvalue since they might get hooked, or upgraded --- List them here for Mikk's FindGlobals script --- GLOBALS: LibStub - -AceDB.db_registry = AceDB.db_registry or {} -AceDB.frame = AceDB.frame or CreateFrame("Frame") - -local CallbackHandler -local CallbackDummy = { Fire = function() end } - -local DBObjectLib = {} - ---[[------------------------------------------------------------------------- - AceDB Utility Functions ----------------------------------------------------------------------------]] - --- Simple shallow copy for copying defaults -local function copyTable(src, dest) - if type(dest) ~= "table" then dest = {} end - if type(src) == "table" then - for k,v in pairs(src) do - if type(v) == "table" then - -- try to index the key first so that the metatable creates the defaults, if set, and use that table - v = copyTable(v, dest[k]) - end - dest[k] = v - end - end - return dest -end - --- Called to add defaults to a section of the database --- --- When a ["*"] default section is indexed with a new key, a table is returned --- and set in the host table. These tables must be cleaned up by removeDefaults --- in order to ensure we don't write empty default tables. -local function copyDefaults(dest, src) - -- this happens if some value in the SV overwrites our default value with a non-table - --if type(dest) ~= "table" then return end - for k, v in pairs(src) do - if k == "*" or k == "**" then - if type(v) == "table" then - -- This is a metatable used for table defaults - local mt = { - -- This handles the lookup and creation of new subtables - __index = function(t,k) - if k == nil then return nil end - local tbl = {} - copyDefaults(tbl, v) - rawset(t, k, tbl) - return tbl - end, - } - setmetatable(dest, mt) - -- handle already existing tables in the SV - for dk, dv in pairs(dest) do - if not rawget(src, dk) and type(dv) == "table" then - copyDefaults(dv, v) - end - end - else - -- Values are not tables, so this is just a simple return - local mt = {__index = function(t,k) return k~=nil and v or nil end} - setmetatable(dest, mt) - end - elseif type(v) == "table" then - if not rawget(dest, k) then rawset(dest, k, {}) end - if type(dest[k]) == "table" then - copyDefaults(dest[k], v) - if src['**'] then - copyDefaults(dest[k], src['**']) - end - end - else - if rawget(dest, k) == nil then - rawset(dest, k, v) - end - end - end -end - --- Called to remove all defaults in the default table from the database -local function removeDefaults(db, defaults, blocker) - -- remove all metatables from the db, so we don't accidentally create new sub-tables through them - setmetatable(db, nil) - -- loop through the defaults and remove their content - for k,v in pairs(defaults) do - if k == "*" or k == "**" then - if type(v) == "table" then - -- Loop through all the actual k,v pairs and remove - for key, value in pairs(db) do - if type(value) == "table" then - -- if the key was not explicitly specified in the defaults table, just strip everything from * and ** tables - if defaults[key] == nil and (not blocker or blocker[key] == nil) then - removeDefaults(value, v) - -- if the table is empty afterwards, remove it - if next(value) == nil then - db[key] = nil - end - -- if it was specified, only strip ** content, but block values which were set in the key table - elseif k == "**" then - removeDefaults(value, v, defaults[key]) - end - end - end - elseif k == "*" then - -- check for non-table default - for key, value in pairs(db) do - if defaults[key] == nil and v == value then - db[key] = nil - end - end - end - elseif type(v) == "table" and type(db[k]) == "table" then - -- if a blocker was set, dive into it, to allow multi-level defaults - removeDefaults(db[k], v, blocker and blocker[k]) - if next(db[k]) == nil then - db[k] = nil - end - else - -- check if the current value matches the default, and that its not blocked by another defaults table - if db[k] == defaults[k] and (not blocker or blocker[k] == nil) then - db[k] = nil - end - end - end -end - --- This is called when a table section is first accessed, to set up the defaults -local function initSection(db, section, svstore, key, defaults) - local sv = rawget(db, "sv") - - local tableCreated - if not sv[svstore] then sv[svstore] = {} end - if not sv[svstore][key] then - sv[svstore][key] = {} - tableCreated = true - end - - local tbl = sv[svstore][key] - - if defaults then - copyDefaults(tbl, defaults) - end - rawset(db, section, tbl) - - return tableCreated, tbl -end - --- Metatable to handle the dynamic creation of sections and copying of sections. -local dbmt = { - __index = function(t, section) - local keys = rawget(t, "keys") - local key = keys[section] - if key then - local defaultTbl = rawget(t, "defaults") - local defaults = defaultTbl and defaultTbl[section] - - if section == "profile" then - local new = initSection(t, section, "profiles", key, defaults) - if new then - -- Callback: OnNewProfile, database, newProfileKey - t.callbacks:Fire("OnNewProfile", t, key) - end - elseif section == "profiles" then - local sv = rawget(t, "sv") - if not sv.profiles then sv.profiles = {} end - rawset(t, "profiles", sv.profiles) - elseif section == "global" then - local sv = rawget(t, "sv") - if not sv.global then sv.global = {} end - if defaults then - copyDefaults(sv.global, defaults) - end - rawset(t, section, sv.global) - else - initSection(t, section, section, key, defaults) - end - end - - return rawget(t, section) - end -} - -local function validateDefaults(defaults, keyTbl, offset) - if not defaults then return end - offset = offset or 0 - for k in pairs(defaults) do - if not keyTbl[k] or k == "profiles" then - error(("Usage: AceDBObject:RegisterDefaults(defaults): '%s' is not a valid datatype."):format(k), 3 + offset) - end - end -end - -local preserve_keys = { - ["callbacks"] = true, - ["RegisterCallback"] = true, - ["UnregisterCallback"] = true, - ["UnregisterAllCallbacks"] = true, - ["children"] = true, -} - -local realmKey = GetRealmName() -local charKey = UnitName("player") .. " - " .. realmKey -local _, classKey = UnitClass("player") -local _, raceKey = UnitRace("player") -local factionKey = UnitFactionGroup("player") -local factionrealmKey = factionKey .. " - " .. realmKey -local localeKey = GetLocale():lower() - -local regionTable = { "US", "KR", "EU", "TW", "CN" } -local regionKey = _G["GetCurrentRegion"] and regionTable[GetCurrentRegion()] or string.sub(GetCVar("realmList"), 1, 2):upper() -local factionrealmregionKey = factionrealmKey .. " - " .. regionKey - --- Actual database initialization function -local function initdb(sv, defaults, defaultProfile, olddb, parent) - -- Generate the database keys for each section - - -- map "true" to our "Default" profile - if defaultProfile == true then defaultProfile = "Default" end - - local profileKey - if not parent then - -- Make a container for profile keys - if not sv.profileKeys then sv.profileKeys = {} end - - -- Try to get the profile selected from the char db - profileKey = sv.profileKeys[charKey] or defaultProfile or charKey - - -- save the selected profile for later - sv.profileKeys[charKey] = profileKey - else - -- Use the profile of the parents DB - profileKey = parent.keys.profile or defaultProfile or charKey - - -- clear the profileKeys in the DB, namespaces don't need to store them - sv.profileKeys = nil - end - - -- This table contains keys that enable the dynamic creation - -- of each section of the table. The 'global' and 'profiles' - -- have a key of true, since they are handled in a special case - local keyTbl= { - ["char"] = charKey, - ["realm"] = realmKey, - ["class"] = classKey, - ["race"] = raceKey, - ["faction"] = factionKey, - ["factionrealm"] = factionrealmKey, - ["factionrealmregion"] = factionrealmregionKey, - ["profile"] = profileKey, - ["locale"] = localeKey, - ["global"] = true, - ["profiles"] = true, - } - - validateDefaults(defaults, keyTbl, 1) - - -- This allows us to use this function to reset an entire database - -- Clear out the old database - if olddb then - for k,v in pairs(olddb) do if not preserve_keys[k] then olddb[k] = nil end end - end - - -- Give this database the metatable so it initializes dynamically - local db = setmetatable(olddb or {}, dbmt) - - if not rawget(db, "callbacks") then - -- try to load CallbackHandler-1.0 if it loaded after our library - if not CallbackHandler then CallbackHandler = LibStub:GetLibrary("CallbackHandler-1.0", true) end - db.callbacks = CallbackHandler and CallbackHandler:New(db) or CallbackDummy - end - - -- Copy methods locally into the database object, to avoid hitting - -- the metatable when calling methods - - if not parent then - for name, func in pairs(DBObjectLib) do - db[name] = func - end - else - -- hack this one in - db.RegisterDefaults = DBObjectLib.RegisterDefaults - db.ResetProfile = DBObjectLib.ResetProfile - end - - -- Set some properties in the database object - db.profiles = sv.profiles - db.keys = keyTbl - db.sv = sv - --db.sv_name = name - db.defaults = defaults - db.parent = parent - - -- store the DB in the registry - AceDB.db_registry[db] = true - - return db -end - --- handle PLAYER_LOGOUT --- strip all defaults from all databases --- and cleans up empty sections -local function logoutHandler(frame, event) - if event == "PLAYER_LOGOUT" then - for db in pairs(AceDB.db_registry) do - db.callbacks:Fire("OnDatabaseShutdown", db) - db:RegisterDefaults(nil) - - -- cleanup sections that are empty without defaults - local sv = rawget(db, "sv") - for section in pairs(db.keys) do - if rawget(sv, section) then - -- global is special, all other sections have sub-entrys - -- also don't delete empty profiles on main dbs, only on namespaces - if section ~= "global" and (section ~= "profiles" or rawget(db, "parent")) then - for key in pairs(sv[section]) do - if not next(sv[section][key]) then - sv[section][key] = nil - end - end - end - if not next(sv[section]) then - sv[section] = nil - end - end - end - end - end -end - -AceDB.frame:RegisterEvent("PLAYER_LOGOUT") -AceDB.frame:SetScript("OnEvent", logoutHandler) - - ---[[------------------------------------------------------------------------- - AceDB Object Method Definitions ----------------------------------------------------------------------------]] - ---- Sets the defaults table for the given database object by clearing any --- that are currently set, and then setting the new defaults. --- @param defaults A table of defaults for this database -function DBObjectLib:RegisterDefaults(defaults) - if defaults and type(defaults) ~= "table" then - error("Usage: AceDBObject:RegisterDefaults(defaults): 'defaults' - table or nil expected.", 2) - end - - validateDefaults(defaults, self.keys) - - -- Remove any currently set defaults - if self.defaults then - for section,key in pairs(self.keys) do - if self.defaults[section] and rawget(self, section) then - removeDefaults(self[section], self.defaults[section]) - end - end - end - - -- Set the DBObject.defaults table - self.defaults = defaults - - -- Copy in any defaults, only touching those sections already created - if defaults then - for section,key in pairs(self.keys) do - if defaults[section] and rawget(self, section) then - copyDefaults(self[section], defaults[section]) - end - end - end -end - ---- Changes the profile of the database and all of it's namespaces to the --- supplied named profile --- @param name The name of the profile to set as the current profile -function DBObjectLib:SetProfile(name) - if type(name) ~= "string" then - error("Usage: AceDBObject:SetProfile(name): 'name' - string expected.", 2) - end - - -- changing to the same profile, dont do anything - if name == self.keys.profile then return end - - local oldProfile = self.profile - local defaults = self.defaults and self.defaults.profile - - -- Callback: OnProfileShutdown, database - self.callbacks:Fire("OnProfileShutdown", self) - - if oldProfile and defaults then - -- Remove the defaults from the old profile - removeDefaults(oldProfile, defaults) - end - - self.profile = nil - self.keys["profile"] = name - - -- if the storage exists, save the new profile - -- this won't exist on namespaces. - if self.sv.profileKeys then - self.sv.profileKeys[charKey] = name - end - - -- populate to child namespaces - if self.children then - for _, db in pairs(self.children) do - DBObjectLib.SetProfile(db, name) - end - end - - -- Callback: OnProfileChanged, database, newProfileKey - self.callbacks:Fire("OnProfileChanged", self, name) -end - ---- Returns a table with the names of the existing profiles in the database. --- You can optionally supply a table to re-use for this purpose. --- @param tbl A table to store the profile names in (optional) -function DBObjectLib:GetProfiles(tbl) - if tbl and type(tbl) ~= "table" then - error("Usage: AceDBObject:GetProfiles(tbl): 'tbl' - table or nil expected.", 2) - end - - -- Clear the container table - if tbl then - for k,v in pairs(tbl) do tbl[k] = nil end - else - tbl = {} - end - - local curProfile = self.keys.profile - - local i = 0 - for profileKey in pairs(self.profiles) do - i = i + 1 - tbl[i] = profileKey - if curProfile and profileKey == curProfile then curProfile = nil end - end - - -- Add the current profile, if it hasn't been created yet - if curProfile then - i = i + 1 - tbl[i] = curProfile - end - - return tbl, i -end - ---- Returns the current profile name used by the database -function DBObjectLib:GetCurrentProfile() - return self.keys.profile -end - ---- Deletes a named profile. This profile must not be the active profile. --- @param name The name of the profile to be deleted --- @param silent If true, do not raise an error when the profile does not exist -function DBObjectLib:DeleteProfile(name, silent) - if type(name) ~= "string" then - error("Usage: AceDBObject:DeleteProfile(name): 'name' - string expected.", 2) - end - - if self.keys.profile == name then - error("Cannot delete the active profile in an AceDBObject.", 2) - end - - if not rawget(self.profiles, name) and not silent then - error("Cannot delete profile '" .. name .. "'. It does not exist.", 2) - end - - self.profiles[name] = nil - - -- populate to child namespaces - if self.children then - for _, db in pairs(self.children) do - DBObjectLib.DeleteProfile(db, name, true) - end - end - - -- switch all characters that use this profile back to the default - if self.sv.profileKeys then - for key, profile in pairs(self.sv.profileKeys) do - if profile == name then - self.sv.profileKeys[key] = nil - end - end - end - - -- Callback: OnProfileDeleted, database, profileKey - self.callbacks:Fire("OnProfileDeleted", self, name) -end - ---- Copies a named profile into the current profile, overwriting any conflicting --- settings. --- @param name The name of the profile to be copied into the current profile --- @param silent If true, do not raise an error when the profile does not exist -function DBObjectLib:CopyProfile(name, silent) - if type(name) ~= "string" then - error("Usage: AceDBObject:CopyProfile(name): 'name' - string expected.", 2) - end - - if name == self.keys.profile then - error("Cannot have the same source and destination profiles.", 2) - end - - if not rawget(self.profiles, name) and not silent then - error("Cannot copy profile '" .. name .. "'. It does not exist.", 2) - end - - -- Reset the profile before copying - DBObjectLib.ResetProfile(self, nil, true) - - local profile = self.profile - local source = self.profiles[name] - - copyTable(source, profile) - - -- populate to child namespaces - if self.children then - for _, db in pairs(self.children) do - DBObjectLib.CopyProfile(db, name, true) - end - end - - -- Callback: OnProfileCopied, database, sourceProfileKey - self.callbacks:Fire("OnProfileCopied", self, name) -end - ---- Resets the current profile to the default values (if specified). --- @param noChildren if set to true, the reset will not be populated to the child namespaces of this DB object --- @param noCallbacks if set to true, won't fire the OnProfileReset callback -function DBObjectLib:ResetProfile(noChildren, noCallbacks) - local profile = self.profile - - for k,v in pairs(profile) do - profile[k] = nil - end - - local defaults = self.defaults and self.defaults.profile - if defaults then - copyDefaults(profile, defaults) - end - - -- populate to child namespaces - if self.children and not noChildren then - for _, db in pairs(self.children) do - DBObjectLib.ResetProfile(db, nil, noCallbacks) - end - end - - -- Callback: OnProfileReset, database - if not noCallbacks then - self.callbacks:Fire("OnProfileReset", self) - end -end - ---- Resets the entire database, using the string defaultProfile as the new default --- profile. --- @param defaultProfile The profile name to use as the default -function DBObjectLib:ResetDB(defaultProfile) - if defaultProfile and type(defaultProfile) ~= "string" then - error("Usage: AceDBObject:ResetDB(defaultProfile): 'defaultProfile' - string or nil expected.", 2) - end - - local sv = self.sv - for k,v in pairs(sv) do - sv[k] = nil - end - - local parent = self.parent - - initdb(sv, self.defaults, defaultProfile, self) - - -- fix the child namespaces - if self.children then - if not sv.namespaces then sv.namespaces = {} end - for name, db in pairs(self.children) do - if not sv.namespaces[name] then sv.namespaces[name] = {} end - initdb(sv.namespaces[name], db.defaults, self.keys.profile, db, self) - end - end - - -- Callback: OnDatabaseReset, database - self.callbacks:Fire("OnDatabaseReset", self) - -- Callback: OnProfileChanged, database, profileKey - self.callbacks:Fire("OnProfileChanged", self, self.keys["profile"]) - - return self -end - ---- Creates a new database namespace, directly tied to the database. This --- is a full scale database in it's own rights other than the fact that --- it cannot control its profile individually --- @param name The name of the new namespace --- @param defaults A table of values to use as defaults -function DBObjectLib:RegisterNamespace(name, defaults) - if type(name) ~= "string" then - error("Usage: AceDBObject:RegisterNamespace(name, defaults): 'name' - string expected.", 2) - end - if defaults and type(defaults) ~= "table" then - error("Usage: AceDBObject:RegisterNamespace(name, defaults): 'defaults' - table or nil expected.", 2) - end - if self.children and self.children[name] then - error ("Usage: AceDBObject:RegisterNamespace(name, defaults): 'name' - a namespace with that name already exists.", 2) - end - - local sv = self.sv - if not sv.namespaces then sv.namespaces = {} end - if not sv.namespaces[name] then - sv.namespaces[name] = {} - end - - local newDB = initdb(sv.namespaces[name], defaults, self.keys.profile, nil, self) - - if not self.children then self.children = {} end - self.children[name] = newDB - return newDB -end - ---- Returns an already existing namespace from the database object. --- @param name The name of the new namespace --- @param silent if true, the addon is optional, silently return nil if its not found --- @usage --- local namespace = self.db:GetNamespace('namespace') --- @return the namespace object if found -function DBObjectLib:GetNamespace(name, silent) - if type(name) ~= "string" then - error("Usage: AceDBObject:GetNamespace(name): 'name' - string expected.", 2) - end - if not silent and not (self.children and self.children[name]) then - error ("Usage: AceDBObject:GetNamespace(name): 'name' - namespace does not exist.", 2) - end - if not self.children then self.children = {} end - return self.children[name] -end - ---[[------------------------------------------------------------------------- - AceDB Exposed Methods ----------------------------------------------------------------------------]] - ---- Creates a new database object that can be used to handle database settings and profiles. --- By default, an empty DB is created, using a character specific profile. --- --- You can override the default profile used by passing any profile name as the third argument, --- or by passing //true// as the third argument to use a globally shared profile called "Default". --- --- Note that there is no token replacement in the default profile name, passing a defaultProfile as "char" --- will use a profile named "char", and not a character-specific profile. --- @param tbl The name of variable, or table to use for the database --- @param defaults A table of database defaults --- @param defaultProfile The name of the default profile. If not set, a character specific profile will be used as the default. --- You can also pass //true// to use a shared global profile called "Default". --- @usage --- -- Create an empty DB using a character-specific default profile. --- self.db = LibStub("AceDB-3.0"):New("MyAddonDB") --- @usage --- -- Create a DB using defaults and using a shared default profile --- self.db = LibStub("AceDB-3.0"):New("MyAddonDB", defaults, true) -function AceDB:New(tbl, defaults, defaultProfile) - if type(tbl) == "string" then - local name = tbl - tbl = _G[name] - if not tbl then - tbl = {} - _G[name] = tbl - end - end - - if type(tbl) ~= "table" then - error("Usage: AceDB:New(tbl, defaults, defaultProfile): 'tbl' - table expected.", 2) - end - - if defaults and type(defaults) ~= "table" then - error("Usage: AceDB:New(tbl, defaults, defaultProfile): 'defaults' - table expected.", 2) - end - - if defaultProfile and type(defaultProfile) ~= "string" and defaultProfile ~= true then - error("Usage: AceDB:New(tbl, defaults, defaultProfile): 'defaultProfile' - string or true expected.", 2) - end - - return initdb(tbl, defaults, defaultProfile) -end - --- upgrade existing databases -for db in pairs(AceDB.db_registry) do - if not db.parent then - for name,func in pairs(DBObjectLib) do - db[name] = func - end - else - db.RegisterDefaults = DBObjectLib.RegisterDefaults - db.ResetProfile = DBObjectLib.ResetProfile - end -end diff --git a/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.xml b/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.xml deleted file mode 100644 index 46b20ba..0000000 --- a/ElvUI_SLE/libs/AceDB-3.0/AceDB-3.0.xml +++ /dev/null @@ -1,4 +0,0 @@ -<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="AceDB-3.0.lua"/> -</Ui> \ No newline at end of file diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc index 54c8141..49e6398 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/AceGUI-3.0-SharedMediaWidgets.toc @@ -1,5 +1,5 @@ -## Interface: 50300 -## X-Curse-Packaged-Version: r48-release +## Interface: 60200 +## X-Curse-Packaged-Version: r52-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 diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua index e181b23..0b75952 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BackgroundWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Background" - local widgetVersion = 10 + local widgetVersion = 11 local contentFrameCache = {} local function ReturnSelf(self) @@ -57,8 +57,8 @@ do local font, size = text:GetFont() text:SetFont(font,size,"OUTLINE") - text:SetPoint("LEFT", check, "RIGHT", 1, 0) - text:SetPoint("RIGHT", frame, "RIGHT", -2, 0) + text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0) + text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0) text:SetJustifyH("LEFT") text:SetText("Test Test Test Test Test Test Test") frame.text = text diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua index 0f06117..0cd2959 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/BorderWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Border" - local widgetVersion = 10 + local widgetVersion = 11 local contentFrameCache = {} local function ReturnSelf(self) @@ -55,8 +55,8 @@ do check:Hide() frame.check = check local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite") - text:SetPoint("LEFT", check, "RIGHT", 1, 0) - text:SetPoint("RIGHT", frame, "RIGHT", -2, 0) + text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0) + text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0) text:SetJustifyH("LEFT") text:SetText("Test Test Test Test Test Test Test") frame.text = text diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r48-release.txt b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r48-release.txt deleted file mode 100644 index 2163c0d..0000000 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r48-release.txt +++ /dev/null @@ -1,19 +0,0 @@ ------------------------------------------------------------------------- -r48 | funkydude | 2013-05-26 11:10:27 +0000 (Sun, 26 May 2013) | 1 line -Changed paths: - A /tags/r48-release (from /trunk:47) - -Tagging as r48-release ------------------------------------------------------------------------- -r47 | funkydude | 2013-05-26 11:09:17 +0000 (Sun, 26 May 2013) | 1 line -Changed paths: - M /trunk/AceGUI-3.0-SharedMediaWidgets.toc - -bump toc ------------------------------------------------------------------------- -r46 | Phanx | 2013-01-02 06:47:48 +0000 (Wed, 02 Jan 2013) | 1 line -Changed paths: - M /trunk/AceGUI-3.0-SharedMediaWidgets/prototypes.lua - -Fixed an anchoring issue that could prevent interaction with menu buttons. ------------------------------------------------------------------------- diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r52-release.txt b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r52-release.txt new file mode 100644 index 0000000..3da384a --- /dev/null +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Changelog-AceGUI-3.0-SharedMediaWidgets-r52-release.txt @@ -0,0 +1,29 @@ +------------------------------------------------------------------------ +r52 | nevcairiel | 2015-07-22 14:19:41 +0000 (Wed, 22 Jul 2015) | 1 line +Changed paths: + A /tags/r52-release (from /trunk:51) + +Tagging as r52-release +------------------------------------------------------------------------ +r51 | nevcairiel | 2015-07-22 14:19:21 +0000 (Wed, 22 Jul 2015) | 1 line +Changed paths: + M /trunk/AceGUI-3.0-SharedMediaWidgets.toc + +Update TOC for 6.2 +------------------------------------------------------------------------ +r50 | nevcairiel | 2015-07-22 14:18:01 +0000 (Wed, 22 Jul 2015) | 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 + +Fix font anchoring to avoid word-wraps in the dropdown +------------------------------------------------------------------------ +r49 | funkydude | 2014-10-14 20:00:37 +0000 (Tue, 14 Oct 2014) | 1 line +Changed paths: + M /trunk/AceGUI-3.0-SharedMediaWidgets.toc + +bump toc +------------------------------------------------------------------------ diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua index 1cd19e4..eadf35f 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/FontWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Font" - local widgetVersion = 10 + local widgetVersion = 11 local contentFrameCache = {} local function ReturnSelf(self) @@ -44,8 +44,8 @@ do check:Hide() frame.check = check local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite") - text:SetPoint("LEFT", check, "RIGHT", 1, 0) - text:SetPoint("RIGHT", frame, "RIGHT", -2, 0) + text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0) + text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0) text:SetJustifyH("LEFT") text:SetText("Test Test Test Test Test Test Test") frame.text = text diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua index 53295bb..9853644 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/AceGUI-3.0.lua @@ -24,8 +24,8 @@ -- f:AddChild(btn) -- @class file -- @name AceGUI-3.0 --- @release $Id: AceGUI-3.0.lua 924 2010-05-13 15:12:20Z nevcairiel $ -local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 33 +-- @release $Id: AceGUI-3.0.lua 1102 2013-10-25 14:15:23Z nevcairiel $ +local ACEGUI_MAJOR, ACEGUI_MINOR = "AceGUI-3.0", 34 local AceGUI, oldminor = LibStub:NewLibrary(ACEGUI_MAJOR, ACEGUI_MINOR) if not AceGUI then return end -- No upgrade needed @@ -673,8 +673,16 @@ AceGUI:RegisterLayout("Fill", end end) +local layoutrecursionblock = nil +local function safelayoutcall(object, func, ...) + layoutrecursionblock = true + object[func](object, ...) + layoutrecursionblock = nil +end + AceGUI:RegisterLayout("Flow", function(content, children) + if layoutrecursionblock then return end --used height so far local height = 0 --width used in the current row @@ -762,7 +770,7 @@ AceGUI:RegisterLayout("Flow", end if child.width == "fill" then - child:SetWidth(width) + safelayoutcall(child, "SetWidth", width) frame:SetPoint("RIGHT", content) usedwidth = 0 @@ -776,7 +784,7 @@ AceGUI:RegisterLayout("Flow", rowoffset = child.alignoffset or (rowheight / 2) rowstartoffset = rowoffset elseif child.width == "relative" then - child:SetWidth(width * child.relWidth) + safelayoutcall(child, "SetWidth", width * child.relWidth) if child.DoLayout then child:DoLayout() diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua index b6b59f0..085449b 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/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", 34 +local Type, Version = "TreeGroup", 38 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -212,7 +212,7 @@ local function Button_OnEnter(frame) if self.enabletooltips then GameTooltip:SetOwner(frame, "ANCHOR_NONE") GameTooltip:SetPoint("LEFT",frame,"RIGHT") - GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, 1) + GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true) GameTooltip:Show() end @@ -231,7 +231,7 @@ local function OnScrollValueChanged(frame, value) if frame.obj.noupdate then return end local self = frame.obj local status = self.status or self.localstatus - status.scrollvalue = value + status.scrollvalue = floor(value + 0.5) self:RefreshTree() AceGUI:ClearFocus() end @@ -335,6 +335,8 @@ local methods = { button.toggle.button = button button.toggle:SetScript("OnClick",Expand_OnClick) + button.text:SetHeight(14) -- Prevents text wrapping + return button end, diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua index fd95cb7..028e524 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Button.lua @@ -2,7 +2,7 @@ Button Widget Graphical Button. -------------------------------------------------------------------------------]] -local Type, Version = "Button", 22 +local Type, Version = "Button", 23 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -45,6 +45,7 @@ local methods = { self:SetHeight(24) self:SetWidth(200) self:SetDisabled(false) + self:SetAutoWidth(false) self:SetText() end, @@ -52,6 +53,16 @@ local methods = { ["SetText"] = function(self, text) self.text:SetText(text) + if self.autoWidth then + self:SetWidth(self.text:GetStringWidth() + 30) + end + end, + + ["SetAutoWidth"] = function(self, autoWidth) + self.autoWidth = autoWidth + if self.autoWidth then + self:SetWidth(self.text:GetStringWidth() + 30) + end end, ["SetDisabled"] = function(self, disabled) diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua index f242437..f25d46c 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- ColorPicker Widget -------------------------------------------------------------------------------]] -local Type, Version = "ColorPicker", 21 +local Type, Version = "ColorPicker", 22 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -51,6 +51,7 @@ local function ColorSwatch_OnClick(frame) local self = frame.obj if not self.disabled then ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG") + ColorPickerFrame:SetFrameLevel(frame:GetFrameLevel() + 10) ColorPickerFrame:SetClampedToScreen(true) ColorPickerFrame.func = function() diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua index f46f370..0dd3bff 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown.lua 1029 2011-06-10 23:10:58Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown.lua 1116 2014-10-12 08:15:46Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") -- Lua APIs @@ -356,17 +356,19 @@ end do local widgetType = "Dropdown" - local widgetVersion = 25 + local widgetVersion = 30 --[[ 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") end @@ -386,7 +388,7 @@ do AceGUI:ClearFocus() else self.open = true - self.pullout:SetWidth(self.frame:GetWidth()) + self.pullout:SetWidth(self.pulloutWidth or self.frame:GetWidth()) self.pullout:Open("TOPLEFT", self.frame, "BOTTOMLEFT", 0, self.label:IsShown() and -2 or 0) AceGUI:SetFocus(self) end @@ -403,6 +405,7 @@ do end self.open = true + self:Fire("OnOpened") end local function OnPulloutClose(this) @@ -461,6 +464,7 @@ do self:SetHeight(44) self:SetWidth(200) self:SetLabel() + self:SetPulloutWidth(nil) end -- exported, AceGUI callback @@ -490,9 +494,11 @@ do if disabled then self.text:SetTextColor(0.5,0.5,0.5) self.button:Disable() + self.button_cover:Disable() self.label:SetTextColor(0.5,0.5,0.5) else self.button:Enable() + self.button_cover:Enable() self.label:SetTextColor(1,.82,0) self.text:SetTextColor(1,1,1) end @@ -515,9 +521,9 @@ do if text and text ~= "" then self.label:SetText(text) self.label:Show() - self.dropdown:SetPoint("TOPLEFT",self.frame,"TOPLEFT",-15,-18) - self:SetHeight(44) - self.alignoffset = 30 + self.dropdown:SetPoint("TOPLEFT",self.frame,"TOPLEFT",-15,-14) + self:SetHeight(40) + self.alignoffset = 26 else self.label:SetText("") self.label:Hide() @@ -635,6 +641,10 @@ do return self.multiselect end + local function SetPulloutWidth(self, width) + self.pulloutWidth = width + end + --[[ Constructor ]]-- local function Constructor() @@ -666,8 +676,9 @@ do self.GetMultiselect = GetMultiselect self.SetItemValue = SetItemValue self.SetItemDisabled = SetItemDisabled + self.SetPulloutWidth = SetPulloutWidth - self.alignoffset = 30 + self.alignoffset = 26 frame:SetScript("OnHide",Dropdown_OnHide) @@ -694,6 +705,15 @@ do 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 + button_cover:SetPoint("TOPLEFT",self.frame,"BOTTOMLEFT",0,25) + button_cover:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT") + 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 diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua index acd7131..c67902c 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-EditBox.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- EditBox Widget -------------------------------------------------------------------------------]] -local Type, Version = "EditBox", 24 +local Type, Version = "EditBox", 25 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -90,6 +90,11 @@ local function EditBox_OnReceiveDrag(frame) self:SetText(name) self:Fire("OnEnterPressed", name) ClearCursor() + elseif type == "macro" then + local name = GetMacroInfo(id) + self:SetText(name) + self:Fire("OnEnterPressed", name) + ClearCursor() end HideButton(self) AceGUI:ClearFocus() diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua index 7f0bd5f..583f29d 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/Libs/AceGUI-3.0/widgets/AceGUIWidget-Slider.lua @@ -2,7 +2,7 @@ Slider Widget Graphical Slider, like, for Range values. -------------------------------------------------------------------------------]] -local Type, Version = "Slider", 20 +local Type, Version = "Slider", 21 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -61,6 +61,10 @@ local function Slider_OnValueChanged(frame) 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 + end if newvalue ~= self.value and not self.disabled then self.value = newvalue self:Fire("OnValueChanged", newvalue) diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua index c2d3d84..1d39c28 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/SoundWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Sound" - local widgetVersion = 10 + local widgetVersion = 11 local contentFrameCache = {} local function ReturnSelf(self) @@ -68,8 +68,8 @@ do frame.speakeron = speakeron local text = frame:CreateFontString(nil,"OVERLAY","GameFontWhite") - text:SetPoint("LEFT", check, "RIGHT", 1, 0) - text:SetPoint("RIGHT", soundbutton, "LEFT", -2, 0) + text:SetPoint("TOPLEFT", check, "TOPRIGHT", 1, 0) + text:SetPoint("BOTTOMRIGHT", soundbutton, "BOTTOMLEFT", -2, 0) text:SetJustifyH("LEFT") text:SetText("Test Test Test Test Test Test Test") frame.text = text diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua index d8930dd..2d0e32c 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/StatusbarWidget.lua @@ -8,7 +8,7 @@ local AGSMW = LibStub("AceGUISharedMediaWidgets-1.0") do local widgetType = "LSM30_Statusbar" - local widgetVersion = 10 + local widgetVersion = 11 local contentFrameCache = {} local function ReturnSelf(self) @@ -53,8 +53,8 @@ do local font, size = text:GetFont() text:SetFont(font,size,"OUTLINE") - text:SetPoint("LEFT", check, "RIGHT", 3, 0) - text:SetPoint("RIGHT", frame, "RIGHT", -2, 0) + text:SetPoint("TOPLEFT", check, "TOPRIGHT", 3, 0) + text:SetPoint("BOTTOMRIGHT", frame, "BOTTOMRIGHT", -2, 0) text:SetJustifyH("LEFT") text:SetText("Test Test Test Test Test Test Test") frame.text = text diff --git a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua index 0c8701b..14ccd59 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0-SharedMediaWidgets/prototypes.lua @@ -3,7 +3,7 @@ local DataVersion = 9001 -- dev version always overwrites everything else :) --@end-debug@]===] --@non-debug@ -local DataVersion = 47 +local DataVersion = 51 --@end-non-debug@ local AGSMW = LibStub:NewLibrary("AceGUISharedMediaWidgets-1.0", DataVersion) diff --git a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua index 6fbe066..085449b 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIContainer-TreeGroup.lua +++ b/ElvUI_SLE/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", 36 +local Type, Version = "TreeGroup", 38 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -212,7 +212,7 @@ local function Button_OnEnter(frame) if self.enabletooltips then GameTooltip:SetOwner(frame, "ANCHOR_NONE") GameTooltip:SetPoint("LEFT",frame,"RIGHT") - GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, 1) + GameTooltip:SetText(frame.text:GetText() or "", 1, .82, 0, true) GameTooltip:Show() end @@ -335,6 +335,8 @@ local methods = { button.toggle.button = button button.toggle:SetScript("OnClick",Expand_OnClick) + button.text:SetHeight(14) -- Prevents text wrapping + return button end, diff --git a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua index f242437..d172e6f 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-ColorPicker.lua @@ -1,7 +1,7 @@ --[[----------------------------------------------------------------------------- ColorPicker Widget -------------------------------------------------------------------------------]] -local Type, Version = "ColorPicker", 21 +local Type, Version = "ColorPicker-ElvUI", 1 local AceGUI = LibStub and LibStub("AceGUI-3.0", true) if not AceGUI or (AceGUI:GetWidgetVersion(Type) or 0) >= Version then return end @@ -51,6 +51,7 @@ local function ColorSwatch_OnClick(frame) local self = frame.obj if not self.disabled then ColorPickerFrame:SetFrameStrata("FULLSCREEN_DIALOG") + ColorPickerFrame:SetFrameLevel(frame:GetFrameLevel() + 10) ColorPickerFrame:SetClampedToScreen(true) ColorPickerFrame.func = function() @@ -66,12 +67,20 @@ local function ColorSwatch_OnClick(frame) ColorCallback(self, r, g, b, a, true) end - local r, g, b, a = self.r, self.g, self.b, self.a + local r, g, b, a, dR, dG, dB, dA = self.r, self.g, self.b, self.a, self.dR, self.dG, self.dB, self.dA if self.HasAlpha then ColorPickerFrame.opacity = 1 - (a or 0) end ColorPickerFrame:SetColorRGB(r, g, b) + if(ColorPPDefault and self.dR and self.dG and self.dB) then + local alpha = 1 + if(self.dA) then + alpha = 1 - self.dA + end + ColorPPDefault.colors = {r = self.dR, g = self.dG, b = self.dB, a = alpha} + end + ColorPickerFrame.cancelFunc = function() ColorCallback(self, r, g, b, a, true) end @@ -100,11 +109,15 @@ local methods = { self.text:SetText(text) end, - ["SetColor"] = function(self, r, g, b, a) + ["SetColor"] = function(self, r, g, b, a, defaultR, defaultG, defaultB, defaultA) self.r = r self.g = g self.b = b self.a = a or 1 + self.dR = defaultR + self.dG = defaultG + self.dB = defaultB + self.dA = defaultA self.colorSwatch:SetVertexColor(r, g, b, a) end, diff --git a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua index 951cad7..0dd3bff 100644 --- a/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua +++ b/ElvUI_SLE/libs/AceGUI-3.0/widgets/AceGUIWidget-DropDown.lua @@ -1,4 +1,4 @@ ---[[ $Id: AceGUIWidget-DropDown.lua 1101 2013-10-25 12:46:47Z nevcairiel $ ]]-- +--[[ $Id: AceGUIWidget-DropDown.lua 1116 2014-10-12 08:15:46Z nevcairiel $ ]]-- local AceGUI = LibStub("AceGUI-3.0") -- Lua APIs @@ -356,7 +356,7 @@ end do local widgetType = "Dropdown" - local widgetVersion = 29 + local widgetVersion = 30 --[[ Static data ]]-- @@ -494,9 +494,11 @@ do if disabled then self.text:SetTextColor(0.5,0.5,0.5) self.button:Disable() + self.button_cover:Disable() self.label:SetTextColor(0.5,0.5,0.5) else self.button:Enable() + self.button_cover:Enable() self.label:SetTextColor(1,.82,0) self.text:SetTextColor(1,1,1) end @@ -704,6 +706,7 @@ do button:SetScript("OnClick",Dropdown_TogglePullout) local button_cover = CreateFrame("BUTTON",nil,self.frame) + self.button_cover = button_cover button_cover.obj = self button_cover:SetPoint("TOPLEFT",self.frame,"BOTTOMLEFT",0,25) button_cover:SetPoint("BOTTOMRIGHT",self.frame,"BOTTOMRIGHT") diff --git a/ElvUI_SLE/modules/loot.lua b/ElvUI_SLE/modules/loot.lua index 81189d7..a1f0e64 100644 --- a/ElvUI_SLE/modules/loot.lua +++ b/ElvUI_SLE/modules/loot.lua @@ -1,7 +1,7 @@ local E, L, V, P, G = unpack(ElvUI); local LT = E:GetModule('SLE_Loot') local M = E:GetModule('Misc') -local ACD = LibStub("AceConfigDialog-3.0") +local ACD = LibStub("AceConfigDialog-3.0-ElvUI") local check = false local t = 0 diff --git a/ElvUI_SLE/modules/screensaver.lua b/ElvUI_SLE/modules/screensaver.lua index d63c2bc..ab1ff86 100644 --- a/ElvUI_SLE/modules/screensaver.lua +++ b/ElvUI_SLE/modules/screensaver.lua @@ -3,7 +3,7 @@ local SLE = E:GetModule('SLE'); local S = E:GetModule("SLE_ScreenSaver") local LSM = LibStub("LibSharedMedia-3.0") local Sk = E:GetModule("Skins") -local ACD = LibStub("AceConfigDialog-3.0") +local ACD = LibStub("AceConfigDialog-3.0-ElvUI") local SS local ru = false diff --git a/ElvUI_SLE/modules/sledatatexts/friends.lua b/ElvUI_SLE/modules/sledatatexts/friends.lua index 9c27367..7ce395f 100644 --- a/ElvUI_SLE/modules/sledatatexts/friends.lua +++ b/ElvUI_SLE/modules/sledatatexts/friends.lua @@ -1,6 +1,6 @@ local E, L, V, P, G = unpack(ElvUI); local LibQTip = LibStub('LibQTip-1.0') -local ACD = LibStub("AceConfigDialog-3.0") +local ACD = LibStub("AceConfigDialog-3.0-ElvUI") local DT = E:GetModule('DataTexts') local LDB = LibStub("LibDataBroker-1.1"):NewDataObject("S&L Friends", { diff --git a/ElvUI_SLE/modules/sledatatexts/guild.lua b/ElvUI_SLE/modules/sledatatexts/guild.lua index 1c7a87d..9a27aee 100644 --- a/ElvUI_SLE/modules/sledatatexts/guild.lua +++ b/ElvUI_SLE/modules/sledatatexts/guild.lua @@ -1,6 +1,6 @@ local E, L, V, P, G = unpack(ElvUI); local LibQTip = LibStub('LibQTip-1.0') -local ACD = LibStub("AceConfigDialog-3.0") +local ACD = LibStub("AceConfigDialog-3.0-ElvUI") local DT = E:GetModule('DataTexts') local LDB = LibStub("LibDataBroker-1.1"):NewDataObject("S&L Guild", { diff --git a/ElvUI_SLE/modules/sledatatexts/version.lua b/ElvUI_SLE/modules/sledatatexts/version.lua index afb3f67..e85970c 100644 --- a/ElvUI_SLE/modules/sledatatexts/version.lua +++ b/ElvUI_SLE/modules/sledatatexts/version.lua @@ -2,7 +2,7 @@ --Version datatext. Only in Russian for now. local DT = E:GetModule('DataTexts') local SLE = E:GetModule('SLE') -local ACD = LibStub("AceConfigDialog-3.0") +local ACD = LibStub("AceConfigDialog-3.0-ElvUI") local displayString = ''; local lastPanel; diff --git a/ElvUI_SLE/modules/uibuttons.lua b/ElvUI_SLE/modules/uibuttons.lua index 4f14868..98599e6 100644 --- a/ElvUI_SLE/modules/uibuttons.lua +++ b/ElvUI_SLE/modules/uibuttons.lua @@ -1,6 +1,6 @@ local E, L, V, P, G = unpack(ElvUI); local UB = E:GetModule('SLE_UIButtons'); -local ACD = LibStub("AceConfigDialog-3.0") +local ACD = LibStub("AceConfigDialog-3.0-ElvUI") local lib = LibStub("LibElv-UIButtons-1.0") local SLE = E:GetModule("SLE") local S = E:GetModule("Skins") diff --git a/ElvUI_SLE/modules/vehicle.lua b/ElvUI_SLE/modules/vehicle.lua index 7f5b75e..0f3ea30 100644 --- a/ElvUI_SLE/modules/vehicle.lua +++ b/ElvUI_SLE/modules/vehicle.lua @@ -1,7 +1,7 @@ local E, L, V, P, G = unpack(ElvUI); local EVB = E:GetModule("SLE_EnhancedVehicleBar") local AB = E:GetModule("ActionBars"); -local LAB = LibStub("LibActionButton-1.0") +local LAB = LibStub("LibActionButton-1.0-ElvUI") -- Regular Button for these bars are 52. 52 * .71 = ~37.. I just rounded it up to 40 and called it good. function EVB:Animate(bar, x, y, duration) diff --git a/ElvUI_SLE/options/core_c.lua b/ElvUI_SLE/options/core_c.lua index 9ac41cf..485f077 100644 --- a/ElvUI_SLE/options/core_c.lua +++ b/ElvUI_SLE/options/core_c.lua @@ -1,7 +1,7 @@ local E, L, V, P, G = unpack(ElvUI) local SLE = E:GetModule('SLE') local LT = E:GetModule('SLE_Loot') -local ACD = LibStub("AceConfigDialog-3.0") +local ACD = LibStub("AceConfigDialog-3.0-ElvUI") local function configTable() E.Options.args.ElvUI_Header.name = E.Options.args.ElvUI_Header.name.." + Shadow & Light"..format(": |cff99ff33%s|r",SLE.version) diff --git a/ElvUI_SLE/options/errorframe_c.lua b/ElvUI_SLE/options/errorframe_c.lua index 79199ae..5f5642e 100644 --- a/ElvUI_SLE/options/errorframe_c.lua +++ b/ElvUI_SLE/options/errorframe_c.lua @@ -1,6 +1,6 @@ local E, L, V, P, G = unpack(ElvUI); local F = E:GetModule('SLE_ErrorFrame'); -local ACD = LibStub("AceConfigDialog-3.0") +local ACD = LibStub("AceConfigDialog-3.0-ElvUI") local function configTable() E.Options.args.sle.args.options.args.general.args.errorframe = {