From 0d3344b8cfe41fe238057cd49c92aeff47c4ab91 Mon Sep 17 00:00:00 2001 From: Steven Jackson Date: Wed, 15 Oct 2014 18:14:41 -0500 Subject: [PATCH] 5.0.4 --- Interface/AddOns/SVUI/SVUI.toc | 2 +- .../LibSuperVillain-1.0/LibSuperVillain-1.0.lua | 106 ++++++++++--- Interface/AddOns/SVUI/packages/unit/SVUnit.lua | 23 +-- Interface/AddOns/SVUI/packages/unit/frames.lua | 33 ++-- Interface/AddOns/SVUI/scripts/questwatch.lua | 52 +++--- Interface/AddOns/SVUI/system/_load.xml | 1 + Interface/AddOns/SVUI/system/common.lua | 4 +- Interface/AddOns/SVUI/system/core.lua | 2 +- Interface/AddOns/SVUI/system/credits.lua | 148 +++++++++++++++++ Interface/AddOns/SVUI/system/timers.lua | 2 +- Interface/AddOns/SVUI/xml/widgets.xml | 166 +++++++++++++++++++- .../AddOns/SVUI_ConfigOMatic/SVUI_ConfigOMatic.lua | 142 +++++++---------- .../AddOns/SVUI_StyleOMatic/SVUI_StyleOMatic.lua | 6 +- .../components/blizzard/encounterjournal.lua | 2 +- .../components/blizzard/system.lua | 18 ++- .../PaperDollInfoFrame/UI-Character-ScrollBar.blp | Bin 12124 -> 23060 bytes .../UI-Character-Skills-BarBorder.blp | Bin 6684 -> 12164 bytes .../PaperDollInfoFrame/UI-GearManager-Border.blp | Bin 0 -> 44932 bytes .../UI-GearManager-Collapsed.blp | Bin 0 -> 6676 bytes .../UI-GearManager-FlyoutButton.blp | Bin 3940 -> 3940 bytes .../UI-GearManager-Title-Background.blp | Bin 0 -> 6772 bytes 21 files changed, 519 insertions(+), 188 deletions(-) create mode 100644 Interface/AddOns/SVUI/system/credits.lua create mode 100644 Interface/PaperDollInfoFrame/UI-GearManager-Border.blp create mode 100644 Interface/PaperDollInfoFrame/UI-GearManager-Collapsed.blp create mode 100644 Interface/PaperDollInfoFrame/UI-GearManager-Title-Background.blp diff --git a/Interface/AddOns/SVUI/SVUI.toc b/Interface/AddOns/SVUI/SVUI.toc index 88c0c52..a396bfd 100644 --- a/Interface/AddOns/SVUI/SVUI.toc +++ b/Interface/AddOns/SVUI/SVUI.toc @@ -3,7 +3,7 @@ ## Version: 5.0 ## Title: |cffFF9900SVUI|r ## Notes: Supervillain UI [|cff9911FFCore Framework|r]. -## SavedVariables: SVUI_Global +## SavedVariables: SVUI_Global, SVUI_Errors ## SavedVariablesPerCharacter: SVUI_Profile, SVUI_Cache ## OptionalDeps: Blizzard_DebugTools, Blizzard_PetJournal, SharedMedia ## X-SVUI-Header: SuperVillain UI diff --git a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua index fc3bd43..3b5b808 100644 --- a/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua +++ b/Interface/AddOns/SVUI/libs/LibSuperVillain-1.0/LibSuperVillain-1.0.lua @@ -93,10 +93,11 @@ local InterfaceVersion = select(4, GetBuildInfo()); --[[ COMMON LOCAL VARS ]]-- local GLOBAL_FILENAME = CoreName.."_Global"; +local ERROR_FILENAME = CoreName.."_Errors"; local PROFILE_FILENAME = CoreName.."_Profile"; local CACHE_FILENAME = CoreName.."_Cache"; local SOURCE_KEY = 1; -local GLOBAL_SV, PROFILE_SV, CACHE_SV, PLUGINS, MODULES; +local GLOBAL_SV, PROFILE_SV, CACHE_SV, ERROR_CACHE, PLUGINS, MODULES; local PluginString = "" local AllowedIndexes, LoadOnDemand = {},{}; local Callbacks, ScriptQueue = {},{}; @@ -562,6 +563,42 @@ core add-ins functioning outside of the core object. --]] --REGISTRY LOCAL HELPERS + +local function HandleErrors(schema, action, catch) + if(CoreObject.DebugMode == true) then + schema = schema or "LibSuperVillain" + action = action or "Unknown Function" + local timestamp = date("%m/%d/%y %H:%M:%S") + local err_message = ("%s [%s] - (%s) %s"):format(schema, action, timestamp, catch) + tinsert(ERROR_CACHE.FOUND, err_message) + ScriptErrorsFrame_OnError(catch, false, true) + CoreObject:Debugger(err_message) + end +end + +local function LoadingProxy(schema, obj) + if(not obj) then return end + if(not obj.initialized) then + if(obj.Load and type(obj.Load) == "function") then + local _, catch = pcall(obj.Load, obj) + if(catch) then + HandleErrors(schema, "Load", catch) + else + obj.initialized = true + end + end + else + if(obj.ReLoad and type(obj.ReLoad) == "function") then + local _, catch = pcall(obj.ReLoad, obj) + if(catch) then + HandleErrors(schema, "ReLoad", catch) + end + end + end +end + +--OBJECT INTERNALS + local changeDBVar = function(self, value, key, sub1, sub2, sub3) local db = CoreObject.db[self.Schema] if((sub1 and sub2 and sub3) and (db[sub1] and db[sub1][sub2] and db[sub1][sub2][sub3])) then @@ -581,8 +618,13 @@ end local innerOnEvent = function(self, event, ...) local obj = self.___owner - if self[event] and type(self[event]) == "function" then - self[event](obj, event, ...) + local fn = self[event] + if(fn and type(fn) == "function" and obj.initialized) then + local _, catch = pcall(fn, obj, event, ...) + if(catch) then + local schema = obj.Schema + HandleErrors(schema, event, catch) + end end end @@ -618,9 +660,9 @@ local innerOnUpdate = function(self, elapsed) local callbacks = self.callbacks for name, fn in pairs(callbacks) do - local _, error = pcall(fn, obj) - if(error and CoreObject.Debugging) then - print(error) + local _, catch = pcall(fn, obj) + if(catch and CoreObject.Debugging) then + print(catch) end end @@ -670,38 +712,33 @@ function lib:RunCallbacks() for i=1, #Callbacks do local fn = Callbacks[i] if(fn and type(fn) == "function") then - fn() + local _, catch = pcall(fn) + if(catch) then + HandleErrors("LibSuperVillain", "Callback", catch) + end end end end function lib:RefreshModule(schema) local obj = CoreObject[schema] - if obj and obj.ReLoad then - obj:ReLoad() - end + LoadingProxy(schema, obj) end function lib:RefreshPlugin(schema) local obj = _G[schema] - if obj and obj.ReLoad then - obj:ReLoad() - end + LoadingProxy(schema, obj) end function lib:RefreshAll() for _,schema in pairs(MODULES) do local obj = CoreObject[schema] - if obj and obj.ReLoad then - obj:ReLoad() - end + LoadingProxy(schema, obj) end for _,schema in pairs(PLUGINS) do local obj = _G[schema] - if obj and obj.ReLoad then - obj:ReLoad() - end + LoadingProxy(schema, obj) end end @@ -747,9 +784,8 @@ function lib:LoadQueuedModules() if IsAddOnLoaded(addon) then halt = true end end end - if(obj.Load and (not halt)) then - obj:Load() - obj.initialized = true + if(not halt) then + LoadingProxy(schema, obj) end end end @@ -769,9 +805,8 @@ function lib:LoadQueuedPlugins() if IsAddOnLoaded(addon) then halt = true end end end - if(obj.Load and (not halt)) then - obj:Load() - obj.initialized = true + if(not halt) then + LoadingProxy(schema, obj) end end end @@ -984,7 +1019,7 @@ local Core_ResetData = function(self, sub, sub2, sub3) tablecopy(sv, src) end -function lib:NewCore(gfile, pfile, cfile) +function lib:NewCore(gfile, efile, pfile, cfile) --meta assurance local mt = {}; local old = getmetatable(CoreObject); @@ -996,6 +1031,7 @@ function lib:NewCore(gfile, pfile, cfile) --database GLOBAL_FILENAME = gfile or GLOBAL_FILENAME + ERROR_FILENAME = efile or ERROR_FILENAME PROFILE_FILENAME = pfile or PROFILE_FILENAME CACHE_FILENAME = cfile or CACHE_FILENAME @@ -1009,6 +1045,8 @@ function lib:NewCore(gfile, pfile, cfile) end --internals + CoreObject.___errors = {}; + CoreObject.NameID = CoreName; CoreObject.Version = AddonVersion; CoreObject.GameVersion = tonumber(InterfaceVersion); @@ -1058,6 +1096,22 @@ function lib:Initialize() GLOBAL_SV.profileKeys[k] = k end + --SAVED ERRORS + if not _G[ERROR_FILENAME] then _G[ERROR_FILENAME] = {} end + ERROR_CACHE = _G[ERROR_FILENAME] + + local datestamp = date("%m_%d_%y") + + if(ERROR_CACHE.TODAY and ERROR_CACHE.TODAY ~= datestamp) then + ERROR_CACHE.FOUND = {} + end + + if(not ERROR_CACHE.FOUND) then + ERROR_CACHE.FOUND = {} + end + + ERROR_CACHE.TODAY = datestamp + --CACHE SAVED VARIABLES if not _G[CACHE_FILENAME] then _G[CACHE_FILENAME] = {} end CACHE_SV = _G[CACHE_FILENAME] diff --git a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua index a084307..4370a86 100644 --- a/Interface/AddOns/SVUI/packages/unit/SVUnit.lua +++ b/Interface/AddOns/SVUI/packages/unit/SVUnit.lua @@ -1381,28 +1381,17 @@ function MOD:FrameForge() end function MOD:KillBlizzardRaidFrames() - if InCombatLockdown() then return end - CompactRaidFrameManager:Die() - CompactRaidFrameContainer:Die() - CompactUnitFrameProfiles:Die() + if(InCombatLockdown()) then return end + if(not _G.CompactRaidFrameManager) then return end + _G.CompactRaidFrameManager:Die() + _G.CompactRaidFrameContainer:Die() + _G.CompactUnitFrameProfiles:Die() local crfmTest = CompactRaidFrameManager_GetSetting("IsShown") if crfmTest and crfmTest ~= "0" then - CompactRaidFrameManager_SetSetting("IsShown","0") + CompactRaidFrameManager_SetSetting("IsShown", "0") end end --- function MOD:GROUP_ROSTER_UPDATE() --- self:KillBlizzardRaidFrames() --- if(IsInGroup()) then --- if(not self:IsEventRegistered("ZONE_CHANGED_NEW_AREA")) then --- self:ZONE_CHANGED_NEW_AREA() --- self:RegisterEvent("ZONE_CHANGED_NEW_AREA") --- end --- else --- self:UnregisterEvent("ZONE_CHANGED_NEW_AREA") --- end; --- end - function MOD:PLAYER_REGEN_DISABLED() for _,frame in pairs(self.Headers) do if frame and frame.forceShow then diff --git a/Interface/AddOns/SVUI/packages/unit/frames.lua b/Interface/AddOns/SVUI/packages/unit/frames.lua index 3595815..8f7ee76 100644 --- a/Interface/AddOns/SVUI/packages/unit/frames.lua +++ b/Interface/AddOns/SVUI/packages/unit/frames.lua @@ -1127,16 +1127,13 @@ local Raid10Visibility = function(self, event) self:UnregisterEvent("PLAYER_REGEN_ENABLED") end if not InCombatLockdown() then - if(instance and (instanceType == "raid" or instanceType == "pvp") and (maxPlayers == 10)) then + if(instance and (instanceType == "raid" or instanceType == "pvp")) then UnregisterStateDriver(self, "visibility") - if(raidType == 'Mythic') then - self:Hide() - else + if(maxPlayers == 10) then self:Show() + else + self:Hide() end - elseif(instance and (instanceType == "raid")) then - UnregisterStateDriver(self, "visibility") - self:Hide() elseif db.visibility then RegisterStateDriver(self, "visibility", db.visibility) end @@ -1156,16 +1153,13 @@ local Raid25Visibility = function(self, event) self:UnregisterEvent("PLAYER_REGEN_ENABLED") end if not InCombatLockdown()then - if(instance and (instanceType == "raid" or instanceType == "pvp") and (maxPlayers > 10 and maxPlayers < 40)) then + if(instance and (instanceType == "raid" or instanceType == "pvp")) then UnregisterStateDriver(self, "visibility") - if(raidType == 'Mythic') then - self:Hide() - else + if(maxPlayers > 10 and maxPlayers < 40) then self:Show() + else + self:Hide() end - elseif(instance and (instanceType == "raid")) then - UnregisterStateDriver(self, "visibility") - self:Hide() elseif db.visibility then RegisterStateDriver(self, "visibility", db.visibility) end @@ -1185,16 +1179,13 @@ local Raid40Visibility = function(self, event) self:UnregisterEvent("PLAYER_REGEN_ENABLED") end if not InCombatLockdown()then - if(instance and (instanceType == "raid" or instanceType == "pvp") and (maxPlayers == 40)) then + if(instance and (instanceType == "raid" or instanceType == "pvp")) then UnregisterStateDriver(self, "visibility") - if(raidType == 'Mythic') then - self:Hide() - else + if(maxPlayers == 40) then self:Show() + else + self:Hide() end - elseif(instance and (instanceType == "raid")) then - UnregisterStateDriver(self, "visibility") - self:Hide() elseif db.visibility then RegisterStateDriver(self, "visibility", db.visibility) end diff --git a/Interface/AddOns/SVUI/scripts/questwatch.lua b/Interface/AddOns/SVUI/scripts/questwatch.lua index 4932ff6..332f9c5 100644 --- a/Interface/AddOns/SVUI/scripts/questwatch.lua +++ b/Interface/AddOns/SVUI/scripts/questwatch.lua @@ -58,17 +58,11 @@ local L = SV.L LOCAL VARS ########################################################## ]]-- -local SuperDockWindowRight, QuestFrame; +local SuperDockWindowRight, QuestFrame, ObjectiveTrackerFrame; local ICON_FILE = [[Interface\AddOns\SVUI\assets\artwork\Icons\DOCK-QUESTS]] local OBJECTIVE_TRACKER_LINE_WIDTH = _G.OBJECTIVE_TRACKER_LINE_WIDTH; --[[ ########################################################## -PRE VARS/FUNCTIONS -########################################################## -]]-- - ---[[ -########################################################## CORE FUNCTIONS ########################################################## ]]-- @@ -92,8 +86,8 @@ end local function CreateQuestFrame() SuperDockWindowRight = _G.SuperDockWindowRight - local ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame - + ObjectiveTrackerFrame = _G.ObjectiveTrackerFrame + if(not ObjectiveTrackerFrame) then return end if(not SV.db.general.questWatch) then ObjectiveTrackerFrame:RemoveTextures(true) @@ -121,6 +115,7 @@ local function CreateQuestFrame() else local bgTex = [[Interface\BUTTONS\WHITE8X8]] local bdTex = SV.Media.bar.glow + local WIDTH, HEIGHT = SuperDockWindowRight:GetSize() QuestFrame = CreateFrame("Frame", "SVUI_QuestFrame", SuperDockWindowRight); QuestFrame:SetFrameStrata("BACKGROUND"); @@ -162,14 +157,9 @@ local function CreateQuestFrame() ObjectiveTrackerFrame:SetClampedToScreen(false) ObjectiveTrackerFrame:SetParent(listFrame) ObjectiveTrackerFrame:SetHeight(500) + ObjectiveTrackerFrame:SetWidth(WIDTH) ObjectiveTrackerFrame:SetPoint("TOPRIGHT", listFrame, "TOPRIGHT", -31, 0) ObjectiveTrackerFrame:SetFrameLevel(listFrame:GetFrameLevel() + 1) - if listFrame then - OBJECTIVE_TRACKER_LINE_WIDTH = (listFrame:GetWidth() - 100); - else - OBJECTIVE_TRACKER_LINE_WIDTH = (ObjectiveTrackerFrame:GetWidth() - 100); - end - ObjectiveTrackerFrame:SetWidth(OBJECTIVE_TRACKER_LINE_WIDTH) listFrame:SetScrollChild(ObjectiveTrackerFrame) scrollFrame:SetScript("OnValueChanged", function(self, argValue) @@ -178,13 +168,37 @@ local function CreateQuestFrame() scrollFrame:ClearAllPoints() scrollFrame:SetPoint("TOPRIGHT", QuestFrame, "TOPRIGHT", -3, 0) + ObjectiveTrackerFrame.ClearAllPoints = SV.fubar; + ObjectiveTrackerFrame.SetAllPoints = SV.fubar; + ObjectiveTrackerFrame.SetPoint = SV.fubar; + ObjectiveTrackerFrame.SetWidth = SV.fubar; + + ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetWidth((WIDTH - 60)) + ObjectiveTrackerFrame.BlocksFrame.QuestHeader:RemoveTextures(true) + ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetFixedPanelTemplate("Headline", true) + --ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetPanelColor("unique") + ObjectiveTrackerFrame.BlocksFrame.QuestHeader:SetBackdropColor(0, 0, 0, 0.5) + + ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetWidth((WIDTH - 60)) + ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:RemoveTextures(true) + ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetFixedPanelTemplate("Headline", true) + --ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetPanelColor("unique") + ObjectiveTrackerFrame.BlocksFrame.AchievementHeader:SetBackdropColor(0, 0, 0, 0.5) + + ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetWidth((WIDTH - 60)) + ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:RemoveTextures(true) + ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetFixedPanelTemplate("Headline", true) + --ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetPanelColor("unique") + ObjectiveTrackerFrame.BlocksFrame.ScenarioHeader:SetBackdropColor(0, 0, 0, 0.5) + + + ObjectiveTrackerFrame.HeaderMenu.MinimizeButton:Hide() + ObjectiveTrackerFrame.BlocksFrame:RemoveTextures(true) ObjectiveTrackerFrame.BlocksFrame:SetPoint("TOPLEFT", ObjectiveTrackerFrame, "TOPLEFT", 87, 0) ObjectiveTrackerFrame.BlocksFrame:SetPoint("BOTTOMLEFT", ObjectiveTrackerFrame, "BOTTOMLEFT", 87, 0) - ObjectiveTrackerFrame.BlocksFrame:SetWidth(OBJECTIVE_TRACKER_LINE_WIDTH) - ObjectiveTrackerFrame.ClearAllPoints = SV.fubar; - ObjectiveTrackerFrame.SetPoint = SV.fubar; - ObjectiveTrackerFrame.SetAllPoints = SV.fubar; + ObjectiveTrackerFrame.BlocksFrame:SetWidth(WIDTH) + ObjectiveTrackerFrame.BlocksFrame.SetWidth = SV.fubar; local eventHandler = CreateFrame("Frame") eventHandler:RegisterEvent("QUEST_AUTOCOMPLETE") diff --git a/Interface/AddOns/SVUI/system/_load.xml b/Interface/AddOns/SVUI/system/_load.xml index 08da957..458130c 100644 --- a/Interface/AddOns/SVUI/system/_load.xml +++ b/Interface/AddOns/SVUI/system/_load.xml @@ -11,4 +11,5 @@