From 8d48f673ca48be99cb8e13eacea020c55a0a078d Mon Sep 17 00:00:00 2001 From: Munglunch Date: Tue, 19 Aug 2014 11:13:56 -0500 Subject: [PATCH] updates --- Interface/AddOns/SVUI/Bindings.xml | 15 - Interface/AddOns/SVUI/SVUI.lua | 590 ++-- Interface/AddOns/SVUI/SVUI.toc | 2 +- Interface/AddOns/SVUI/SVUI.xml | 6 +- .../AddOns/SVUI/assets/artwork/Icons/DOCK-CALL.blp | Bin 2580 -> 0 bytes .../SVUI/assets/artwork/Icons/DOCK-LABORER.blp | Bin 2580 -> 0 bytes .../AddOns/SVUI/assets/artwork/Icons/DOCK-PVP.blp | Bin 6676 -> 0 bytes .../SVUI/assets/artwork/Icons/LABORER-COOKING.blp | Bin 6676 -> 0 bytes .../SVUI/assets/artwork/Icons/LABORER-FARMING.blp | Bin 6676 -> 0 bytes .../SVUI/assets/artwork/Icons/LABORER-FISHING.blp | Bin 6676 -> 0 bytes .../SVUI/assets/artwork/Icons/LABORER-SURVEY.blp | Bin 6676 -> 0 bytes .../SVUI/assets/artwork/Icons/PVP-INCOMING.blp | Bin 2580 -> 0 bytes .../AddOns/SVUI/assets/artwork/Icons/PVP-SAFE.blp | Bin 2580 -> 0 bytes Interface/AddOns/SVUI/libs/oUF/elements/health.lua | 211 +- .../AddOns/SVUI/libs/oUF/elements/portraits.lua | 41 +- .../oUF_ActionPanel/oUF_ActionPanel.lua | 4 +- .../oUF_Plugins/oUF_AuraWatch/oUF_AuraWatch.lua | 2 +- .../SVUI/libs/oUF_Plugins/oUF_GPS/oUF_GPS.lua | 6 +- .../AddOns/SVUI/packages/actionbar/KeyBind.lua | 69 +- Interface/AddOns/SVUI/packages/actionbar/SVBar.lua | 770 +++-- Interface/AddOns/SVUI/packages/aura/SVAura.lua | 65 +- Interface/AddOns/SVUI/packages/aura/SVAura.xml | 2 +- Interface/AddOns/SVUI/packages/bag/SVBag.lua | 57 +- .../AddOns/SVUI/packages/bag/tools/breakstuff.lua | 2 +- Interface/AddOns/SVUI/packages/chat/SVChat.lua | 144 +- Interface/AddOns/SVUI/packages/dock/SVDock.lua | 425 +-- Interface/AddOns/SVUI/packages/gear/SVGear.lua | 88 +- .../AddOns/SVUI/packages/henchmen/SVHenchmen.lua | 40 +- .../AddOns/SVUI/packages/laborer/SVLaborer.lua | 504 --- .../AddOns/SVUI/packages/laborer/SVLaborer.xml | 26 - .../SVUI/packages/laborer/modes/archaeology.lua | 513 --- .../AddOns/SVUI/packages/laborer/modes/cooking.lua | 227 -- .../AddOns/SVUI/packages/laborer/modes/farming.lua | 613 ---- .../AddOns/SVUI/packages/laborer/modes/fishing.lua | 379 -- Interface/AddOns/SVUI/packages/map/SVMap.lua | 64 +- .../AddOns/SVUI/packages/override/SVOverride.lua | 20 +- Interface/AddOns/SVUI/packages/plates/SVPlate.lua | 109 +- Interface/AddOns/SVUI/packages/stats/SVStats.lua | 51 +- .../AddOns/SVUI/packages/stats/stats/gold.lua | 49 +- .../AddOns/SVUI/packages/stats/stats/guild.lua | 5 +- .../SVUI/packages/stats/stats/reputation.lua | 2 + .../AddOns/SVUI/packages/stats/stats/tokens.lua | 23 +- Interface/AddOns/SVUI/packages/tip/SVTip.lua | 31 +- Interface/AddOns/SVUI/packages/unit/SVUnit.lua | 46 +- Interface/AddOns/SVUI/packages/unit/SVUnit.xml | 3 +- Interface/AddOns/SVUI/packages/unit/config.lua | 2431 +++++++++++++ .../AddOns/SVUI/packages/unit/elements/auras.lua | 27 +- .../SVUI/packages/unit/elements/essentials.lua | 265 +- .../AddOns/SVUI/packages/unit/elements/misc.lua | 12 +- .../AddOns/SVUI/packages/unit/elements/tags.lua | 4 +- Interface/AddOns/SVUI/packages/unit/frames.lua | 137 +- Interface/AddOns/SVUI/scripts/comix.lua | 10 +- Interface/AddOns/SVUI/scripts/misc.lua | 212 +- Interface/AddOns/SVUI/scripts/questwatch.lua | 3 +- Interface/AddOns/SVUI/scripts/raid.lua | 5 +- Interface/AddOns/SVUI/scripts/spellbind.lua | 491 +-- Interface/AddOns/SVUI/system/alerts.lua | 6 +- Interface/AddOns/SVUI/system/cartography.lua | 2 +- Interface/AddOns/SVUI/system/common.lua | 1344 ++++++++ Interface/AddOns/SVUI/system/database.lua | 3638 ++------------------ Interface/AddOns/SVUI/system/deepcopy.lua | 264 ++ Interface/AddOns/SVUI/system/installer.lua | 84 +- Interface/AddOns/SVUI/system/mentalo.lua | 4 +- Interface/AddOns/SVUI/system/presets.lua | 329 +- Interface/AddOns/SVUI/system/screen.lua | 144 - Interface/AddOns/SVUI/system/slash.lua | 35 - Interface/AddOns/SVUI/system/system.lua | 204 +- Interface/AddOns/SVUI/system/templates.lua | 1217 ------- Interface/AddOns/SVUI/system/utilities.lua | 47 +- .../SVUI_AnsweringService.lua | 1016 ++++++ .../SVUI_AnsweringService.toc | 8 + .../SVUI_AnsweringService/artwork/DOCK-CALL.blp | Bin 0 -> 2580 bytes Interface/AddOns/SVUI_ArtOfWar/Bindings.xml | 5 + Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.lua | 708 ++++ Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.toc | 10 + .../AddOns/SVUI_ArtOfWar/artwork/DOCK-PVP.blp | Bin 0 -> 6676 bytes .../AddOns/SVUI_ArtOfWar/artwork/DOCK-SCAN.blp | Bin 0 -> 6676 bytes .../AddOns/SVUI_ArtOfWar/artwork/PVP-INCOMING.blp | Bin 0 -> 2580 bytes .../AddOns/SVUI_ArtOfWar/artwork/PVP-SAFE.blp | Bin 0 -> 2580 bytes .../SVUI_ArtOfWar/artwork/SCAN-ANIMATION.blp | Bin 0 -> 6676 bytes .../AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua | 27 +- .../AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.toc | 2 +- .../widgets/AceGUIContainer-TreeGroup.lua | 2 +- .../widgets/AceGUIWidget-InteractiveLabel.lua | 2 +- .../AceGUI-3.0-SharedMediaWidgets/prototypes.lua | 2 +- .../widgets/AceGUIContainer-TreeGroup.lua | 2 +- .../widgets/AceGUIWidget-InteractiveLabel.lua | 2 +- .../AddOns/SVUI_ConfigOMatic/modules/_load.xml | 1 - .../AddOns/SVUI_ConfigOMatic/modules/chat.lua | 34 +- .../AddOns/SVUI_ConfigOMatic/modules/plate.lua | 1 - .../SVUI_ConfigOMatic/modules/units/party.lua | 14 +- Interface/AddOns/SVUI_Laborer/Bindings.xml | 14 + Interface/AddOns/SVUI_Laborer/SVUI_Laborer.lua | 678 ++++ Interface/AddOns/SVUI_Laborer/SVUI_Laborer.toc | 10 + Interface/AddOns/SVUI_Laborer/SVUI_Laborer.xml | 43 + .../AddOns/SVUI_Laborer/artwork/DOCK-LABORER.blp | Bin 0 -> 2580 bytes .../SVUI_Laborer/artwork/LABORER-COOKING.blp | Bin 0 -> 6676 bytes .../SVUI_Laborer/artwork/LABORER-FARMING.blp | Bin 0 -> 6676 bytes .../SVUI_Laborer/artwork/LABORER-FISHING.blp | Bin 0 -> 6676 bytes .../AddOns/SVUI_Laborer/artwork/LABORER-SURVEY.blp | Bin 0 -> 6676 bytes .../AddOns/SVUI_Laborer/modes/archaeology.lua | 513 +++ Interface/AddOns/SVUI_Laborer/modes/cooking.lua | 228 ++ Interface/AddOns/SVUI_Laborer/modes/farming.lua | 613 ++++ Interface/AddOns/SVUI_Laborer/modes/fishing.lua | 380 ++ Interface/AddOns/SVUI_LogOMatic/SVUI_LogOMatic.lua | 120 +- .../AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua | 372 +- .../AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.toc | 2 +- Interface/AddOns/SVUI_StyleOMatic/addons/alert.lua | 2 +- .../AddOns/SVUI_StyleOMatic/addons/character.lua | 44 +- .../AddOns/SVUI_StyleOMatic/addons/friends.lua | 12 +- Interface/AddOns/SVUI_StyleOMatic/addons/guild.lua | 2 +- Interface/AddOns/SVUI_StyleOMatic/addons/help.lua | 8 +- Interface/AddOns/SVUI_StyleOMatic/addons/lfd.lua | 8 +- Interface/AddOns/SVUI_StyleOMatic/addons/macro.lua | 6 +- .../AddOns/SVUI_StyleOMatic/addons/petbattle.lua | 22 +- .../AddOns/SVUI_StyleOMatic/addons/petjournal.lua | 22 +- .../AddOns/SVUI_StyleOMatic/addons/reforging.lua | 2 +- .../AddOns/SVUI_StyleOMatic/addons/spellbook.lua | 8 +- .../SVUI_StyleOMatic/addons/supervillain.lua | 23 +- .../AddOns/SVUI_StyleOMatic/addons/system.lua | 6 +- .../AddOns/SVUI_StyleOMatic/addons/tabard.lua | 6 +- .../AddOns/SVUI_StyleOMatic/addons/talents.lua | 4 +- .../SVUI_StyleOMatic/addons/thirdparty/DBM.lua | 316 +- .../SVUI_StyleOMatic/addons/thirdparty/DXE.lua | 19 +- .../SVUI_StyleOMatic/addons/thirdparty/Recount.lua | 2 +- .../SVUI_StyleOMatic/addons/thirdparty/VEM.lua | 2 +- .../AddOns/SVUI_StyleOMatic/addons/worldmap.lua | 2 +- .../AddOns/SVUI_StyleOMatic/common/methods.lua | 28 +- 128 files changed, 11824 insertions(+), 9648 deletions(-) delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/DOCK-CALL.blp delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/DOCK-LABORER.blp delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/DOCK-PVP.blp delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/LABORER-COOKING.blp delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/LABORER-FARMING.blp delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/LABORER-FISHING.blp delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/LABORER-SURVEY.blp delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/PVP-INCOMING.blp delete mode 100644 Interface/AddOns/SVUI/assets/artwork/Icons/PVP-SAFE.blp delete mode 100644 Interface/AddOns/SVUI/packages/laborer/SVLaborer.lua delete mode 100644 Interface/AddOns/SVUI/packages/laborer/SVLaborer.xml delete mode 100644 Interface/AddOns/SVUI/packages/laborer/modes/archaeology.lua delete mode 100644 Interface/AddOns/SVUI/packages/laborer/modes/cooking.lua delete mode 100644 Interface/AddOns/SVUI/packages/laborer/modes/farming.lua delete mode 100644 Interface/AddOns/SVUI/packages/laborer/modes/fishing.lua create mode 100644 Interface/AddOns/SVUI/packages/unit/config.lua create mode 100644 Interface/AddOns/SVUI/system/common.lua create mode 100644 Interface/AddOns/SVUI/system/deepcopy.lua delete mode 100644 Interface/AddOns/SVUI/system/screen.lua delete mode 100644 Interface/AddOns/SVUI/system/templates.lua create mode 100644 Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.lua create mode 100644 Interface/AddOns/SVUI_AnsweringService/SVUI_AnsweringService.toc create mode 100644 Interface/AddOns/SVUI_AnsweringService/artwork/DOCK-CALL.blp create mode 100644 Interface/AddOns/SVUI_ArtOfWar/Bindings.xml create mode 100644 Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.lua create mode 100644 Interface/AddOns/SVUI_ArtOfWar/SVUI_ArtOfWar.toc create mode 100644 Interface/AddOns/SVUI_ArtOfWar/artwork/DOCK-PVP.blp create mode 100644 Interface/AddOns/SVUI_ArtOfWar/artwork/DOCK-SCAN.blp create mode 100644 Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-INCOMING.blp create mode 100644 Interface/AddOns/SVUI_ArtOfWar/artwork/PVP-SAFE.blp create mode 100644 Interface/AddOns/SVUI_ArtOfWar/artwork/SCAN-ANIMATION.blp create mode 100644 Interface/AddOns/SVUI_Laborer/Bindings.xml create mode 100644 Interface/AddOns/SVUI_Laborer/SVUI_Laborer.lua create mode 100644 Interface/AddOns/SVUI_Laborer/SVUI_Laborer.toc create mode 100644 Interface/AddOns/SVUI_Laborer/SVUI_Laborer.xml create mode 100644 Interface/AddOns/SVUI_Laborer/artwork/DOCK-LABORER.blp create mode 100644 Interface/AddOns/SVUI_Laborer/artwork/LABORER-COOKING.blp create mode 100644 Interface/AddOns/SVUI_Laborer/artwork/LABORER-FARMING.blp create mode 100644 Interface/AddOns/SVUI_Laborer/artwork/LABORER-FISHING.blp create mode 100644 Interface/AddOns/SVUI_Laborer/artwork/LABORER-SURVEY.blp create mode 100644 Interface/AddOns/SVUI_Laborer/modes/archaeology.lua create mode 100644 Interface/AddOns/SVUI_Laborer/modes/cooking.lua create mode 100644 Interface/AddOns/SVUI_Laborer/modes/farming.lua create mode 100644 Interface/AddOns/SVUI_Laborer/modes/fishing.lua diff --git a/Interface/AddOns/SVUI/Bindings.xml b/Interface/AddOns/SVUI/Bindings.xml index 4071d30..0293f5f 100644 --- a/Interface/AddOns/SVUI/Bindings.xml +++ b/Interface/AddOns/SVUI/Bindings.xml @@ -2,25 +2,10 @@ RaidMark_HotkeyPressed(keystate) - - SVUIFishingMode() - - - SVUIFarmingMode() - - - SVUIArchaeologyMode() - - - SVUICookingMode() - HideSuperDocks() SVUILetsRide() - - SVUISayIncoming() - \ No newline at end of file diff --git a/Interface/AddOns/SVUI/SVUI.lua b/Interface/AddOns/SVUI/SVUI.lua index 717c741..3208c96 100644 --- a/Interface/AddOns/SVUI/SVUI.lua +++ b/Interface/AddOns/SVUI/SVUI.lua @@ -41,26 +41,24 @@ local tsort, tconcat = table.sort, table.concat; ADDON DATA ########################################################## ]]-- +local SVUI = {}; local SVUINameSpace, SVUICore = ...; local version = GetAddOnMetadata(..., "Version"); +local build = select(2, GetBuildInfo()); +local SetAddonCore; +local callbacks = {}; +local numCallbacks = 0; --[[ ########################################################## CONSTANTS ########################################################## ]]-- -BINDING_HEADER_SVUI = GetAddOnMetadata(..., "Title"); +BINDING_HEADER_SVUI = "SuperVillain UI"; SLASH_RELOADUI1="/rl" SLASH_RELOADUI2="/reloadui" SlashCmdList.RELOADUI=ReloadUI --[[ ########################################################## -LOCALS -########################################################## -]]-- -local callbacks = {}; -local numCallbacks = 0; ---[[ -########################################################## MUNGLUNCH's FASTER ASSERT FUNCTION ########################################################## ]]-- @@ -165,7 +163,7 @@ do for i, class in ipairs(classes) do local color = supercolors[class] local r, g, b = color.r, color.g, color.b - local hex = format("ff%02x%02x%02x", r * 255, g * 255, b * 255) + local hex = ("ff%02x%02x%02x"):format(r * 255, g * 255, b * 255) if not SVUI_CLASS_COLORS[class] or not SVUI_CLASS_COLORS[class].r or not SVUI_CLASS_COLORS[class].g or not SVUI_CLASS_COLORS[class].b then SVUI_CLASS_COLORS[class] = { r = r, @@ -239,277 +237,344 @@ function string.link(this, prefix, text, color) end --[[ ########################################################## -OBJECT CONSTRUCTOR GLOBAL +DEFINE REGISTRY HELPERS ########################################################## ]]-- -local PreLoadQueue, InitQueue, PostLoadQueue = {},{},{}; - -local INFO_BY = "%s by %s"; -local INFO_VERSION = "%s%s - Version: %d"; -local INFO_NEW = "%s (Newest: %d)"; -local INFO_NAME = "Plugins"; -local INFO_HEADER = "SuperVillain UI (version %.3f): Plugins"; - -if GetLocale() == "ruRU" then - INFO_BY = "%s от %s"; - INFO_VERSION = "%s%s - Версия: %d"; - INFO_NEW = "%s (Последняя: %d)"; - INFO_NAME = "Плагины"; - INFO_HEADER = "SuperVillain UI (устарела %.3f): Плагины"; -end - -local rootstring = function(self) return self.__namekey end - -local changeDBVar = function(self, value, key, sub1, sub2, sub3) - local config = self.__owner.db[self.__namekey] - if((sub1 and sub2 and sub3) and (config[sub1] and config[sub1][sub2] and config[sub1][sub2][sub3])) then - self.__owner.db[self.__namekey][sub1][sub2][sub3][key] = value - elseif((sub1 and sub2) and (config[sub1] and config[sub1][sub2])) then - self.__owner.db[self.__namekey][sub1][sub2][key] = value - elseif(sub1 and config[sub1]) then - self.__owner.db[self.__namekey][sub1][key] = value - else - self.__owner.db[self.__namekey][key] = value +do + local PackageQueue, ScriptQueue = {},{}; + + local INFO_BY = "%s by %s"; + local INFO_VERSION = "%s%s - Version: %d"; + local INFO_NEW = "%s (Newest: %d)"; + local INFO_NAME = "Plugins"; + local INFO_HEADER = "SuperVillain UI (version %.3f): Plugins"; + + if GetLocale() == "ruRU" then + INFO_BY = "%s от %s"; + INFO_VERSION = "%s%s - Версия: %d"; + INFO_NEW = "%s (Последняя: %d)"; + INFO_NAME = "Плагины"; + INFO_HEADER = "SuperVillain UI (устарела %.3f): Плагины"; end - self.db = self.__owner.db[self.__namekey] -end -local innerOnEvent = function(self, event, ...) - local obj = self.__owner - if self[event] and type(self[event]) == "function" then - self[event](obj, event, ...) + local rootstring = function(self) return self.___name end + + local changeDBVar = function(self, value, key, sub1, sub2, sub3) + local config = self.__owner.db[self.___name] + if((sub1 and sub2 and sub3) and (config[sub1] and config[sub1][sub2] and config[sub1][sub2][sub3])) then + self.__owner.db[self.___name][sub1][sub2][sub3][key] = value + elseif((sub1 and sub2) and (config[sub1] and config[sub1][sub2])) then + self.__owner.db[self.___name][sub1][sub2][key] = value + elseif(sub1 and config[sub1]) then + self.__owner.db[self.___name][sub1][key] = value + else + self.__owner.db[self.___name][key] = value + end + self.db = self.__owner.db[self.___name] + if(self.UpdateLocals) then + self:UpdateLocals() + end end -end -local registerEvent = function(self, eventname, eventfunc) - if not self.___eventframe then - self.___eventframe = CreateFrame("Frame", nil) - self.___eventframe.__owner = self - self.___eventframe:SetScript("OnEvent", innerOnEvent) + local innerOnEvent = function(self, event, ...) + local obj = self.__owner + if self[event] and type(self[event]) == "function" then + self[event](obj, event, ...) + end end - local fn = eventfunc - if type(eventfunc) == "string" then - fn = self[eventfunc] - elseif(not fn and self[eventname]) then - fn = self[eventname] + + local registerEvent = function(self, eventname, eventfunc) + if not self.___eventframe then + self.___eventframe = CreateFrame("Frame", nil) + self.___eventframe.__owner = self + self.___eventframe:SetScript("OnEvent", innerOnEvent) + end + local fn = eventfunc + if type(eventfunc) == "string" then + fn = self[eventfunc] + elseif(not fn and self[eventname]) then + fn = self[eventname] + end + self.___eventframe[eventname] = fn + self.___eventframe:RegisterEvent(eventname) end - self.___eventframe[eventname] = fn - self.___eventframe:RegisterEvent(eventname) -end -local unregisterEvent = function(self, event, ...) - if(self.___eventframe) then - self.___eventframe:UnregisterEvent(event) + local unregisterEvent = function(self, event, ...) + if(self.___eventframe) then + self.___eventframe:UnregisterEvent(event) + end end -end -local addonEvent = function(self, event, addon) - if addon == "SVUI_ConfigOMatic" then - local list = self.__owner.Plugins - for i, plugin in pairs(list) do - if(plugin.callback) then - plugin.callback() + local addonEvent = function(self, event, addon) + if addon == "SVUI_ConfigOMatic" then + local list = self.__owner.Plugins + for i, plugin in pairs(list) do + if(plugin.callback) then + plugin.callback() + end end end end -end -local function SetNewPackage(obj, name, parent) - local addonmeta = {} - local oldmeta = getmetatable(obj) - if oldmeta then - for k, v in pairs(oldmeta) do addonmeta[k] = v end + local function SetNewComponent(obj, name, parent, plugin) + local addonmeta = {} + local oldmeta = getmetatable(obj) + if oldmeta then + for k, v in pairs(oldmeta) do addonmeta[k] = v end + end + addonmeta.__tostring = rootstring + setmetatable( obj, addonmeta ) + obj.___name = name + obj.__owner = parent + obj.initialized = false + obj.CombatLocked = false + obj.ChangeDBVar = changeDBVar + obj.RegisterEvent = registerEvent + obj.UnregisterEvent = unregisterEvent + if(not plugin) then + return obj + end end - addonmeta.__tostring = rootstring - setmetatable( obj, addonmeta ) - obj.__namekey = name - obj.__owner = parent - obj.initialized = false - obj.CombatLocked = false - obj.ChangeDBVar = changeDBVar - obj.RegisterEvent = registerEvent - obj.UnregisterEvent = unregisterEvent - return obj -end -local Registry_SetCallback = function(self, fn) - if(fn and type(fn) == "function") then - self.Callbacks[#self.Callbacks+1] = fn - end -end - -local Registry_NewScript = function(self, fn) - if(fn and type(fn) == "function") then - PostLoadQueue[#PostLoadQueue+1] = fn - end -end - -local Registry_NewPackage = function(self, obj, name, priority) - if self.__owner[name] then return end - if(priority == "pre") then - PreLoadQueue[#PreLoadQueue+1] = name - else - InitQueue[#InitQueue+1] = name + local Registry_SetCallback = function(self, fn) + if(fn and type(fn) == "function") then + self.Callbacks[#self.Callbacks+1] = fn + end end - self.Packages[#self.Packages+1] = name - self.__owner[name] = SetNewPackage(obj, name, self.__owner) - - if(self.__owner.AddonLaunched) then - if(self.__owner[name].Load) then - self.__owner[name]:Load() - end + + local Registry_NewScript = function(self, fn) + if(fn and type(fn) == "function") then + ScriptQueue[#ScriptQueue+1] = fn + end end -end -local Registry_FetchPlugins = function(self) - local list = ""; - for name, plugin in pairs(self.Plugins) do - if name ~= self.MAJOR then - local author = GetAddOnMetadata(name, "Author") - local Pname = GetAddOnMetadata(name, "Title") or name - local color = plugin.old and "|cffFF0000" or "|cff00FF00" - list = ("%s%s"):format(list, Pname) - if author then - list = self.INFO_BY:format(list, author) - end - list = self.INFO_VERSION:format(list, color, plugin.version) - if plugin.old then - list = self.INFO_NEW:format(list, plugin.newversion) + local Registry_NewPackage = function(self, obj, name) + if self.__owner[name] then return end + PackageQueue[#PackageQueue+1] = name + self.Packages[#self.Packages+1] = name + + self.__owner[name] = SetNewComponent(obj, name, self.__owner) + + if(self.__owner.AddonLaunched) then + if(self.__owner[name].Load) then + self.__owner[name]:Load() end - list = ("%s|r\n"):format(list) end end - return list -end -local Registry_NewPlugin = function(self, name, func) - local ver = name == self.MAJOR and self.MINOR or GetAddOnMetadata(name, "Version") - self.Plugins[name] = { - version = ver, - callback = func - } - local enable, loadable = select(4,GetAddOnInfo("SVUI_ConfigOMatic")) - if(enable and loadable and IsAddOnLoaded("SVUI_ConfigOMatic")) then - if name ~= self.MAJOR then - self.__owner.Options.args.plugins.args.pluginlist.name = self:FetchPlugins() - end - if(func) then - func() + local Registry_FetchPlugins = function(self) + local list = ""; + for addon, plugin in pairs(self.Plugins) do + if addon ~= self.__owner.___name then + local author = GetAddOnMetadata(addon, "Author") + local Pname = GetAddOnMetadata(addon, "Title") or addon + local color = plugin.old and "|cffFF0000" or "|cff00FF00" + list = ("%s%s"):format(list, Pname) + if author then + list = self.INFO_BY:format(list, author) + end + list = self.INFO_VERSION:format(list, color, plugin.___ver) + if plugin.old then + list = self.INFO_NEW:format(list, plugin.newversion) + end + list = ("%s|r\n"):format(list) + end end + return list end -end -local Registry_RunCallbacks = function(self) - for i=1, #self.Callbacks do - local fn = self.Callbacks[i] - if(fn and type(fn) == "function") then - fn() + local Registry_NewPlugin = function(self, obj, name, callbackFunc) + if(callbackFunc and type(callbackFunc) == "function") then + local addon = obj.___name + local ver = obj.___ver or GetAddOnMetadata(addon, "Version") + self.Plugins[addon] = { + version = ver, + callback = callbackFunc + } + if addon ~= self.__owner.___name then + local fetch = self:FetchPlugins() or "" + self.__owner.Options.args.plugins.args.pluginOptions.args.pluginlist.args.active.name = fetch + end + callbackFunc() end - end -end -local Registry_Update = function(self, name, dataOnly) - local obj = self.__owner[name] - if obj then - if self.__owner.db[name] then - obj.db = self.__owner.db[name] - end - if obj.ReLoad and not dataOnly then - obj:ReLoad() - end + SetNewComponent(obj, name, self.__owner, true) end -end -local Registry_UpdateAll = function(self) - local list = self.Packages - for _,name in pairs(list) do - local obj = self.__owner[name] - if self.__owner.db[name] then - obj.db = self.__owner.db[name] - end - if obj and obj.ReLoad then - obj:ReLoad() + local Registry_RunCallbacks = function(self) + for i=1, #self.Callbacks do + local fn = self.Callbacks[i] + if(fn and type(fn) == "function") then + fn() + end end end -end -local Registry_PreLoad = function(self) - if not PreLoadQueue then return end - for i=1,#PreLoadQueue do - local name = PreLoadQueue[i] + local Registry_Update = function(self, name, dataOnly) local obj = self.__owner[name] - if obj and not obj.initialized then + if obj then if self.__owner.db[name] then obj.db = self.__owner.db[name] end - if obj.Load then - obj:Load() - obj.Load = nil + if obj.ReLoad and not dataOnly then + obj:ReLoad() end - obj.initialized = true; - end + end end - PreLoadQueue = nil -end -local Registry_Load = function(self) - if not InitQueue then return end - for i=1,#InitQueue do - local name = InitQueue[i] - local obj = self.__owner[name] - if obj and not obj.initialized then + local Registry_UpdateAll = function(self) + local list = self.Packages + for _,name in pairs(list) do + local obj = self.__owner[name] if self.__owner.db[name] then obj.db = self.__owner.db[name] end - if obj.Load then - obj:Load() - obj.Load = nil + if obj and obj.ReLoad then + obj:ReLoad() end - obj.initialized = true; - end + end end - InitQueue = nil - if not PostLoadQueue then return end - for i=1, #PostLoadQueue do - local fn = PostLoadQueue[i] - if(fn and type(fn) == "function") then - fn() - end + local Registry_PreLoad = function(self) + if not PackageQueue then return end + for i=1,#PackageQueue do + local name = PackageQueue[i] + local obj = self.__owner[name] + if(obj and obj.PriorityLoad and (not obj.initialized)) then + if self.__owner.db[name] then + obj.db = self.__owner.db[name] + end + obj:PriorityLoad() + obj.PriorityLoad = nil + obj.initialized = true; + end + end end - PostLoadQueue = nil -end -local function AppendRegistry(obj, major, minor) - local methods = { - __owner = obj, - Packages = {}, - Plugins = {}, - Callbacks = {}, - MAJOR = major, - MINOR = minor, - INFO_BY = INFO_BY, - INFO_VERSION = INFO_VERSION, - INFO_NEW = INFO_NEW, - INFO_NAME = INFO_NAME, - INFO_HEADER = INFO_HEADER, - SetCallback = Registry_SetCallback, - NewScript = Registry_NewScript, - NewPackage = Registry_NewPackage, - FetchPlugins = Registry_FetchPlugins, - NewPlugin = Registry_NewPlugin, - RunCallbacks = Registry_RunCallbacks, - Update = Registry_Update, - UpdateAll = Registry_UpdateAll, - PreLoadPackages = Registry_PreLoad, - LoadPackages = Registry_Load, - Prototype = Registry_Prototype, - } - local mt = {__tostring = rootstring} - setmetatable(methods, mt) - return methods + local Registry_Load = function(self) + if not PackageQueue then return end + for i=1,#PackageQueue do + local name = PackageQueue[i] + local obj = self.__owner[name] + if obj and not obj.initialized then + if self.__owner.db[name] then + obj.db = self.__owner.db[name] + end + if obj.Load then + obj:Load() + obj.Load = nil + end + obj.initialized = true; + end + end + + PackageQueue = nil + + if not ScriptQueue then return end + for i=1, #ScriptQueue do + local fn = ScriptQueue[i] + if(fn and type(fn) == "function") then + fn() + end + end + + ScriptQueue = nil + end + + --[[ GLOBAL NAMESPACE ]]-- + + function SetAddonCore(obj,n,v) + obj = { + ___name = n, + ___ver = v, + db = {}, + Global = { + Accountant = {}, + profiles = {}, + profileKeys = {}, + }, + Configs = {}, + Media = {}, + DisplayAudit = {}, + DynamicOptions = {}, + Dispellable = {}, + Snap = {}, + Options = { + type = "group", + name = "|cff339fffConfig-O-Matic|r", + args = { + plugins = { + order = -2, + type = "group", + name = "Plugins", + childGroups = "tab", + args = { + pluginheader = { + order = 1, + type = "header", + name = "SuperVillain Plugins", + }, + pluginOptions = { + order = 2, + type = "group", + name = "", + args = { + pluginlist = { + order = 1, + type = "group", + name = "Summary", + args = { + active = { + order = 1, + type = "description", + name = "" + } + } + }, + } + } + } + } + } + }, + Registry = { + Packages = {}, + Plugins = {}, + Callbacks = {}, + INFO_BY = INFO_BY, + INFO_VERSION = INFO_VERSION, + INFO_NEW = INFO_NEW, + INFO_NAME = INFO_NAME, + INFO_HEADER = INFO_HEADER, + SetCallback = Registry_SetCallback, + NewScript = Registry_NewScript, + NewPackage = Registry_NewPackage, + FetchPlugins = Registry_FetchPlugins, + NewPlugin = Registry_NewPlugin, + RunCallbacks = Registry_RunCallbacks, + Update = Registry_Update, + UpdateAll = Registry_UpdateAll, + PreLoadPackages = Registry_PreLoad, + LoadPackages = Registry_Load, + } + } + local mt = {} + local old = getmetatable(obj) + if old then + for k, v in pairs(old) do mt[k] = v end + end + mt.__tostring = rootstring + setmetatable(obj, mt) + + obj.Registry.__owner = obj + + return obj + end end +SVUI = SetAddonCore(SVUI, SVUINameSpace, version) + +--[[ LOCALIZATION HELPERS ]]-- local failsafe = function() assert(false) end local metaread = { @@ -537,37 +602,27 @@ local metawrite = setmetatable({}, { __index = failsafe }) ---[[ -########################################################## -BUILD ADDON OBJECTS, CREATE GLOBAL NAMESPACE -########################################################## -]]-- -local function SetPrototype() - local obj = {} - local mt = {} - local old = getmetatable(obj) - if old then - for k, v in pairs(old) do mt[k] = v end - end - mt.__tostring = rootstring - setmetatable(obj, mt) - return obj -end +SVUI.Localization = setmetatable({}, metaread) -local SuperVillain = SetPrototype() +--[[ MISC ]]-- +SVUI.fubar = function() return end +SVUI.class = select(2,UnitClass("player")); +SVUI.ClassRole = ""; +SVUI.ConfigurationMode = false; +--[[ MISC ]]-- -SuperVillain.__namekey = SVUINameSpace -SuperVillain.version = version -SuperVillain.Localization = setmetatable({}, metaread) -SuperVillain.Global = { - Accountant = {}, - profiles = {}, - profileKeys = {}, -} +--[[ UTILITY FRAMES ]]-- +SVUI.UIParent = CreateFrame("Frame", "SVUIParent", UIParent); +SVUI.UIParent:SetFrameLevel(UIParent:GetFrameLevel()); +SVUI.UIParent:SetPoint("CENTER", UIParent, "CENTER"); +SVUI.UIParent:SetSize(UIParent:GetSize()); +SVUI.Snap[1] = SVUI.UIParent; -SuperVillain.Registry = AppendRegistry(SuperVillain, SVUINameSpace, version) +SVUI.Cloaked = CreateFrame("Frame", nil, UIParent); +SVUI.Cloaked:Hide(); +--[[ UTILITY FRAMES ]]-- -function SuperVillain:SetLocaleStrings(locale, isDefault) +function SVUI:SetLocaleStrings(locale, isDefault) local gameLocale = GetLocale() if gameLocale == "enGB" then gameLocale = "enUS" end @@ -580,15 +635,24 @@ function SuperVillain:SetLocaleStrings(locale, isDefault) end end -function SuperVillain:Prototype(n, v) - local obj = SetPrototype() - obj.__namekey = n - obj.version = v +function SVUI:Prototype(n, v) + local obj = { + ___name = n, + ___ver = v + } + local mt = {} + local old = getmetatable(obj) + if old then + for k, v in pairs(old) do mt[k] = v end + end + mt.__tostring = rootstring + setmetatable(obj, mt) return obj end -SVUICore[1] = SuperVillain -SVUICore[2] = SuperVillain.Localization -SVUICore[3] = SuperVillain.Global +SVUICore[1] = SVUI +SVUICore[2] = SVUI.Localization +SVUICore[3] = SVUI.Global +SVUICore[4] = SVUI.Configs _G[SVUINameSpace] = SVUICore; \ No newline at end of file diff --git a/Interface/AddOns/SVUI/SVUI.toc b/Interface/AddOns/SVUI/SVUI.toc index 08a5357..c6a7b15 100644 --- a/Interface/AddOns/SVUI/SVUI.toc +++ b/Interface/AddOns/SVUI/SVUI.toc @@ -1,6 +1,6 @@ ## Interface: 50400 ## Author: Munglunch -## Version: 4.076 +## Version: 4.08 ## Title: |cffFF9900SVUI|r ## Notes: Supervillain UI [|cff9911FFCore Framework|r]. ## SavedVariables: SVUI_Global diff --git a/Interface/AddOns/SVUI/SVUI.xml b/Interface/AddOns/SVUI/SVUI.xml index 896020d..a162118 100644 --- a/Interface/AddOns/SVUI/SVUI.xml +++ b/Interface/AddOns/SVUI/SVUI.xml @@ -116,12 +116,11 @@