diff --git a/ElvUI/Core/Config.lua b/ElvUI/Core/Config.lua index 60b96db71941b0240d095e4d9bf4a7592d369bec..ecd5fa62525734a6178c26e32389847ae61fbe22 100644 --- a/ElvUI/Core/Config.lua +++ b/ElvUI/Core/Config.lua @@ -707,7 +707,6 @@ function E:Config_CreateButton(info, frame, unskinned, ...) btn:HookScript('OnLeave', Config_ButtonOnLeave) btn:SetScript('OnClick', info.func) btn:SetWidth(btn:GetTextWidth() + 40) - btn.ignoreBorderColors = true return btn end diff --git a/ElvUI/Core/Core.lua b/ElvUI/Core/Core.lua index 6065b9a685154ee5fc6d8943f9d1d78b0360b5bc..b9ae3f1d2269d474f73d4e01467441d44076e9eb 100644 --- a/ElvUI/Core/Core.lua +++ b/ElvUI/Core/Core.lua @@ -4,7 +4,7 @@ local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, Profi local _G = _G local tonumber, pairs, ipairs, error, unpack, select, tostring = tonumber, pairs, ipairs, error, unpack, select, tostring -local strjoin, twipe, tinsert, tremove, tContains = strjoin, wipe, tinsert, tremove, tContains +local strsplit, strjoin, twipe, tinsert, tremove, tContains = strsplit, strjoin, wipe, tinsert, tremove, tContains local format, find, strrep, strlen, sub, gsub = format, strfind, strrep, strlen, strsub, gsub local assert, type, pcall, xpcall, next, print = assert, type, pcall, xpcall, next, print local rawget, rawset, setmetatable = rawget, rawset, setmetatable @@ -480,7 +480,7 @@ end function E:UpdateFontTemplates() for text in pairs(E.texts) do if text then - text:FontTemplate(text.font, text.fontSize, text.fontStyle) + text:FontTemplate(text.font, text.fontSize, text.fontStyle, true) else E.texts[text] = nil end @@ -1710,7 +1710,11 @@ function E:Initialize() twipe(E.global) twipe(E.private) - E.myguid = UnitGUID('player') + local playerGUID = UnitGUID('player') + local _, serverID = strsplit('-', playerGUID) + E.serverID = tonumber(serverID) + E.myguid = playerGUID + E.data = E.Libs.AceDB:New('ElvDB', E.DF, true) E.data.RegisterCallback(E, 'OnProfileChanged', 'StaggeredUpdateAll') E.data.RegisterCallback(E, 'OnProfileCopied', 'StaggeredUpdateAll') diff --git a/ElvUI/Core/Distributor.lua b/ElvUI/Core/Distributor.lua index a423fce46f4328a7c4c6e88bf5d8050ebe88d8e0..ccac8148126ec7eb721f5e97057ec000d7635a99 100644 --- a/ElvUI/Core/Distributor.lua +++ b/ElvUI/Core/Distributor.lua @@ -27,11 +27,10 @@ local Uploads = {} function D:Initialize() self.Initialized = true - self:RegisterComm(REQUEST_PREFIX) - self:RegisterEvent('CHAT_MSG_ADDON') + + D:UpdateSettings() self.statusBar = CreateFrame('StatusBar', 'ElvUI_Download', E.UIParent) - E:RegisterStatusBar(self.statusBar) self.statusBar:CreateBackdrop() self.statusBar:SetStatusBarTexture(E.media.normTex) self.statusBar:SetStatusBarColor(0.95, 0.15, 0.15) @@ -40,6 +39,17 @@ function D:Initialize() self.statusBar.text:FontTemplate() self.statusBar.text:SetPoint('CENTER') self.statusBar:Hide() + E:RegisterStatusBar(self.statusBar) +end + +function D:UpdateSettings() + if E.global.general.allowDistributor then + self:RegisterComm(REQUEST_PREFIX) + self:RegisterEvent('CHAT_MSG_ADDON') + else + self:UnregisterComm(REQUEST_PREFIX) + self:UnregisterEvent('CHAT_MSG_ADDON') + end end -- Used to start uploads @@ -123,7 +133,7 @@ function D:OnCommReceived(prefix, msg, dist, sender) end, button1 = ACCEPT, button2 = CANCEL, - timeout = 32, + timeout = 30, whileDead = 1, hideOnEscape = 1, } @@ -250,7 +260,8 @@ local blacklistedKeys = { version = true, eyefinity = true, disableTutorialButtons = true, - showMissingTalentAlert = true + showMissingTalentAlert = true, + allowDistributor = true }, chat = { classColorMentionExcludedNames = true @@ -556,7 +567,7 @@ E.PopupDialogs.DISTRIBUTOR_WAITING = { text = L["Profile request sent. Waiting for response from player."], whileDead = 1, hideOnEscape = 1, - timeout = 35, + timeout = 20, } E.PopupDialogs.DISTRIBUTOR_REQUEST_DENIED = { diff --git a/ElvUI/Core/Fonts.lua b/ElvUI/Core/Fonts.lua index 61ec6122f6952a1a8cdcf73a58de3ff685d92f88..4ac7b7eb325f9182f92bfaec776602340a05f01b 100644 --- a/ElvUI/Core/Fonts.lua +++ b/ElvUI/Core/Fonts.lua @@ -2,6 +2,7 @@ local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, Private local LSM = E.Libs.LSM local _G = _G +local strmatch = strmatch local function SetFont(obj, font, size, style, sr, sg, sb, sa, sox, soy, r, g, b) obj:SetFont(font, size, style) @@ -11,49 +12,31 @@ local function SetFont(obj, font, size, style, sr, sg, sb, sa, sox, soy, r, g, b elseif r then obj:SetAlpha(r) end end +local chatFontHeights = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} function E:UpdateBlizzardFonts() local NORMAL = E.media.normFont local NUMBER = E.media.normFont local COMBAT = LSM:Fetch('font', E.private.general.dmgfont) local NAMEFONT = LSM:Fetch('font', E.private.general.namefont) local BUBBLE = LSM:Fetch('font', E.private.general.chatBubbleFont) - local SHADOWCOLOR = _G.SHADOWCOLOR - local NORMALOFFSET = _G.NORMALOFFSET - local BIGOFFSET = _G.BIGOFFSET - local MONOCHROME = '' - _G.CHAT_FONT_HEIGHTS = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20} - - if E.db.general.font == 'Homespun' then - MONOCHROME = 'MONOCHROME' - end - - if E.eyefinity then - -- set an invisible font for xp, honor kill, etc - COMBAT = E.Media.Fonts.Invisible - end - - if E.private.general.replaceNameFont then - _G.UNIT_NAME_FONT = NAMEFONT - end - - if E.private.general.replaceCombatFont then - _G.DAMAGE_TEXT_FONT = COMBAT - -- No matter what we do here with the Combat Font, the player Combat Font will always looks like shit, so just dont touch it. - --SetFont(_G.CombatTextFont, COMBAT, 200, 'OUTLINE') -- number here just increase the font quality. - end + local MONOCHROME = strmatch(E.db.general.fontStyle, 'MONOCHROME') and 'MONOCHROME' or '' + _G.CHAT_FONT_HEIGHTS = chatFontHeights + if E.eyefinity then COMBAT = E.Media.Fonts.Invisible end -- set an invisible font for xp, honor kill, etc + if E.private.general.replaceNameFont then _G.UNIT_NAME_FONT = NAMEFONT end + if E.private.general.replaceCombatFont then _G.DAMAGE_TEXT_FONT = COMBAT end if E.private.general.replaceBlizzFonts then --_G.NAMEPLATE_FONT = NAMEFONT _G.STANDARD_TEXT_FONT = NORMAL --SetFont(_G.NumberFontNormal, LSM:Fetch('font', 'Homespun'), 10, 'MONOCHROMEOUTLINE', 1, 1, 1, 0, 0, 0) - --SetFont(_G.GameFontNormalSmall, NORMAL, 12, nil, nil, nil, nil, nil, nil, nil, unpack(E.media.rgbvaluecolor)) - SetFont(_G.AchievementFont_Small, NORMAL, E.db.general.fontSize) -- Achiev dates + --SetFont(_G.GameFontNormalSmall, NORMAL, 12, nil, nil, nil, nil, nil, nil, nil, unpack(E.media.rgbvaluecolor)) + SetFont(_G.AchievementFont_Small, NORMAL, E.db.general.fontSize) -- Achiev dates SetFont(_G.BossEmoteNormalHuge, NORMAL, 24) -- Talent Title SetFont(_G.ChatBubbleFont, BUBBLE, E.private.general.chatBubbleFontSize, E.private.general.chatBubbleFontOutline) SetFont(_G.CoreAbilityFont, NORMAL, 26) -- Core abilities(title) - SetFont(_G.DestinyFontHuge, NORMAL, 32, nil, SHADOWCOLOR, BIGOFFSET) -- Garrison Mission Report + SetFont(_G.DestinyFontHuge, NORMAL, 32) -- Garrison Mission Report SetFont(_G.DestinyFontMed, NORMAL, 14) -- Added in 7.3.5 used for ? SetFont(_G.Fancy12Font, NORMAL, 12) -- Added in 7.3.5 used for ? SetFont(_G.Fancy14Font, NORMAL, 14) -- Added in 7.3.5 used for ? @@ -73,28 +56,28 @@ function E:UpdateBlizzardFonts() SetFont(_G.Game42Font, NORMAL, 42) -- PVP Stuff SetFont(_G.Game46Font, NORMAL, 46) -- Added in 7.3.5 used for ? SetFont(_G.Game48Font, NORMAL, 48) - SetFont(_G.Game48FontShadow, NORMAL, 48, nil, SHADOWCOLOR, BIGOFFSET) + SetFont(_G.Game48FontShadow, NORMAL, 48) SetFont(_G.Game60Font, NORMAL, 60) SetFont(_G.Game72Font, NORMAL, 72) SetFont(_G.Game120Font, NORMAL, 120) - SetFont(_G.GameFont_Gigantic, NORMAL, 32, nil, SHADOWCOLOR, BIGOFFSET) -- Used at the install steps + SetFont(_G.GameFont_Gigantic, NORMAL, 32) -- Used at the install steps SetFont(_G.GameFontHighlightMedium, NORMAL, 15) -- Fix QuestLog Title mouseover - SetFont(_G.GameFontHighlightSmall2, NORMAL, E.db.general.fontSize) -- Skill or Recipe description on TradeSkill frame + SetFont(_G.GameFontHighlightSmall2, NORMAL, E.db.general.fontSize) -- Skill or Recipe description on TradeSkill frame SetFont(_G.GameFontNormalHuge2, NORMAL, 24) -- Mythic weekly best dungeon name SetFont(_G.GameFontNormalLarge2, NORMAL, 15) -- Garrison Follower Names SetFont(_G.GameFontNormalMed1, NORMAL, 14) -- WoW Token Info - SetFont(_G.GameFontNormalMed2, NORMAL, E.db.general.fontSize*1.1) -- Quest tracker + SetFont(_G.GameFontNormalMed2, NORMAL, E.db.general.fontSize*1.1) -- Quest tracker SetFont(_G.GameFontNormalMed3, NORMAL, 15) SetFont(_G.GameFontNormalSmall2, NORMAL, 12) -- MissionUI Followers names SetFont(_G.GameTooltipHeader, NORMAL, E.db.general.fontSize) SetFont(_G.InvoiceFont_Med, NORMAL, 12) -- Mail - SetFont(_G.InvoiceFont_Small, NORMAL, E.db.general.fontSize) -- Mail + SetFont(_G.InvoiceFont_Small, NORMAL, E.db.general.fontSize) -- Mail SetFont(_G.MailFont_Large, NORMAL, 14) -- Mail SetFont(_G.NumberFont_Outline_Huge, NUMBER, 28, MONOCHROME..'THICKOUTLINE', 28) SetFont(_G.NumberFont_Outline_Large, NUMBER, 15, MONOCHROME..'OUTLINE') SetFont(_G.NumberFont_Outline_Med, NUMBER, E.db.general.fontSize*1.1, 'OUTLINE') SetFont(_G.NumberFont_OutlineThick_Mono_Small, NUMBER, E.db.general.fontSize, 'OUTLINE') - SetFont(_G.NumberFont_Shadow_Med, NORMAL, E.db.general.fontSize) -- Chat EditBox + SetFont(_G.NumberFont_Shadow_Med, NORMAL, E.db.general.fontSize) -- Chat EditBox SetFont(_G.NumberFont_Shadow_Small, NORMAL, E.db.general.fontSize) SetFont(_G.NumberFontNormalSmall, NORMAL, 11, 'OUTLINE') -- Calendar, EncounterJournal SetFont(_G.Number11Font, NORMAL, 11) @@ -104,13 +87,13 @@ function E:UpdateBlizzardFonts() SetFont(_G.PVPArenaTextString, NORMAL, 22, MONOCHROME..'OUTLINE') SetFont(_G.PVPInfoTextString, NORMAL, 22, MONOCHROME..'OUTLINE') SetFont(_G.QuestFont, NORMAL, E.db.general.fontSize) - SetFont(_G.QuestFont_Enormous, NORMAL, 24, nil, SHADOWCOLOR, NORMALOFFSET) -- Garrison Titles - SetFont(_G.QuestFont_Huge, NORMAL, 15, nil, SHADOWCOLOR, BIGOFFSET) -- Quest rewards title(Rewards) + SetFont(_G.QuestFont_Enormous, NORMAL, 24) -- Garrison Titles + SetFont(_G.QuestFont_Huge, NORMAL, 15) -- Quest rewards title(Rewards) SetFont(_G.QuestFont_Large, NORMAL, 14) - SetFont(_G.QuestFont_Shadow_Huge, NORMAL, 15, nil, SHADOWCOLOR, NORMALOFFSET) -- Quest Title - SetFont(_G.QuestFont_Shadow_Small, NORMAL, 14, nil, SHADOWCOLOR, NORMALOFFSET) - SetFont(_G.QuestFont_Super_Huge, NORMAL, 22, nil, SHADOWCOLOR, BIGOFFSET) - SetFont(_G.ReputationDetailFont, NORMAL, E.db.general.fontSize) -- Rep Desc when clicking a rep + SetFont(_G.QuestFont_Shadow_Huge, NORMAL, 15) -- Quest Title + SetFont(_G.QuestFont_Shadow_Small, NORMAL, 14) + SetFont(_G.QuestFont_Super_Huge, NORMAL, 22) + SetFont(_G.ReputationDetailFont, NORMAL, E.db.general.fontSize) -- Rep Desc when clicking a rep SetFont(_G.SubZoneTextFont, NORMAL, 24, MONOCHROME..'OUTLINE') -- World Map(SubZone) SetFont(_G.SubZoneTextString, NORMAL, 25, MONOCHROME..'OUTLINE') SetFont(_G.SystemFont_Huge1, NORMAL, 20) -- Garrison Mission XP @@ -123,7 +106,7 @@ function E:UpdateBlizzardFonts() SetFont(_G.SystemFont_OutlineThick_Huge2, NORMAL, 20, MONOCHROME..'THICKOUTLINE') SetFont(_G.SystemFont_OutlineThick_WTF, NORMAL, 32, MONOCHROME..'OUTLINE') -- World Map SetFont(_G.SystemFont_Shadow_Huge1, NORMAL, 20, MONOCHROME..'OUTLINE') -- Raid Warning, Boss emote frame too - SetFont(_G.SystemFont_Shadow_Huge3, NORMAL, 22, nil, SHADOWCOLOR, BIGOFFSET) -- FlightMap + SetFont(_G.SystemFont_Shadow_Huge3, NORMAL, 22) -- FlightMap SetFont(_G.SystemFont_Shadow_Large, NORMAL, 15) SetFont(_G.SystemFont_Shadow_Large2, NORMAL, 18) -- Auction House ItemDisplay SetFont(_G.SystemFont_Shadow_Large_Outline, NUMBER, 20, 'OUTLINE') diff --git a/ElvUI/Core/Install.lua b/ElvUI/Core/Install.lua index 94059ed6086f8d33df08a167763ced3d050bd6cf..677ce56d273b7c806219ccac7c45146fb5938737 100644 --- a/ElvUI/Core/Install.lua +++ b/ElvUI/Core/Install.lua @@ -775,7 +775,7 @@ function E:Install() f.Status.anim.progress:SetDuration(.3) f.Status.text = f.Status:CreateFontString(nil, 'OVERLAY') - f.Status.text:FontTemplate() + f.Status.text:FontTemplate(nil, 14, 'OUTLINE') f.Status.text:SetPoint('CENTER') f.Status.text:SetText(CURRENT_PAGE..' / '..MAX_PAGE) diff --git a/ElvUI/Core/Movers.lua b/ElvUI/Core/Movers.lua index fba0407cfa70dd1da13bc19f15f63498763e0bfe..2e4824eb0196e49f4a07f07f9360e589d2c112fd 100644 --- a/ElvUI/Core/Movers.lua +++ b/ElvUI/Core/Movers.lua @@ -3,7 +3,7 @@ local Sticky = E.Libs.SimpleSticky local _G = _G local type, unpack, pairs, error, ipairs = type, unpack, pairs, error, ipairs -local format, split, find, strupper, strlower = format, strsplit, strfind, strupper, strlower +local format, split, find, strupper = format, strsplit, strfind, strupper local CreateFrame = CreateFrame local IsShiftKeyDown = IsShiftKeyDown @@ -378,15 +378,10 @@ function E:ToggleMovers(show, which) self.configMode = show local upperText = strupper(which) - local lowerText = strlower(which) for _, holder in pairs(E.CreatedMovers) do - if show then - if (holder.mover.name == which) or strlower(holder.mover.textString) == lowerText then - holder.mover:Show() - break -- we just are doing one - elseif holder.types[upperText] then - holder.mover:Show() -- we are showing a group - end + local isName = (holder.mover.name == which) or strupper(holder.mover.textString) == upperText + if show and (isName or holder.types[upperText]) then + holder.mover:Show() else holder.mover:Hide() end diff --git a/ElvUI/Core/PluginInstaller.lua b/ElvUI/Core/PluginInstaller.lua index 759c04f041e6fb249d5a190c5d470ef997bc755c..24b0840e42a8dcca020440b2900f0c2873e8e196 100644 --- a/ElvUI/Core/PluginInstaller.lua +++ b/ElvUI/Core/PluginInstaller.lua @@ -245,7 +245,7 @@ function PI:CreateFrame() f.Status.anim.progress:SetDuration(.3) f.Status.text = f.Status:CreateFontString(nil, 'OVERLAY') - f.Status.text:FontTemplate() + f.Status.text:FontTemplate(nil, 14, 'OUTLINE') f.Status.text:SetPoint('CENTER') f.Option1 = CreateFrame('Button', 'PluginInstallOption1Button', f, 'UIPanelButtonTemplate') @@ -350,7 +350,7 @@ function PI:CreateFrame() f.side:SetWidth(140) f.side.text = f.side:CreateFontString(nil, 'OVERLAY') f.side.text:SetPoint('TOP', f.side, 'TOP', 0, -4) - f.side.text:FontTemplate(E.media.normFont, 18, 'OUTLINE') + f.side.text:FontTemplate(nil, 18, 'OUTLINE') f.side.text:SetText(L["Steps"]) f.side.Lines = {} --Table to keep shown lines f.side:Hide() @@ -365,7 +365,7 @@ function PI:CreateFrame() button.text = button:CreateFontString(nil, 'OVERLAY') button.text:SetPoint('TOPLEFT', button, 'TOPLEFT', 2, -2) button.text:SetPoint('BOTTOMRIGHT', button, 'BOTTOMRIGHT', -2, 2) - button.text:FontTemplate(E.media.normFont, 14, 'OUTLINE') + button.text:FontTemplate(nil, 14, 'OUTLINE') button:SetScript('OnClick', function() if i <= f.MaxPage then SetPage(i, f.CurrentPage) end end) button.text:SetText('') f.side.Lines[i] = button diff --git a/ElvUI/Core/Tags.lua b/ElvUI/Core/Tags.lua index c22f59057825db20af529d49c0f083c498805826..011ee7ca3545da4f195c3fb3f6d14cd3900ef4c8 100644 --- a/ElvUI/Core/Tags.lua +++ b/ElvUI/Core/Tags.lua @@ -300,7 +300,7 @@ end do local function NameHealthColor(tags,hex,unit,default) if hex == 'class' or hex == 'reaction' then - return tags.namecolor(unit) + return tags.namecolor(unit) or default elseif hex and strmatch(hex, '^%x%x%x%x%x%x$') then return '|cFF'..hex end @@ -532,13 +532,11 @@ ElvUF.Tags.Events['namecolor'] = 'UNIT_NAME_UPDATE UNIT_FACTION INSTANCE_ENCOUNT ElvUF.Tags.Methods['namecolor'] = function(unit) if UnitIsPlayer(unit) then local _, unitClass = UnitClass(unit) - local class = ElvUF.colors.class[unitClass] - if class then - return Hex(class[1], class[2], class[3]) - end + local cs = ElvUF.colors.class[unitClass] + return (cs and Hex(cs[1], cs[2], cs[3])) or '|cFFcccccc' else - local color = ElvUF.colors.reaction[UnitReaction(unit, 'player')] - return (color and Hex(color[1], color[2], color[3])) or '|cFFC2C2C2' + local cr = ElvUF.colors.reaction[UnitReaction(unit, 'player')] + return (cr and Hex(cr[1], cr[2], cr[3])) or '|cFFcccccc' end end diff --git a/ElvUI/Core/Toolkit.lua b/ElvUI/Core/Toolkit.lua index 0d9d4942c2a09b513bdbac4346d86a934b97a185..5726f37aafa34f5e3c6e6b7bd2ad4ee3fe13de50 100644 --- a/ElvUI/Core/Toolkit.lua +++ b/ElvUI/Core/Toolkit.lua @@ -397,9 +397,12 @@ local function StripTexts(object, kill, alpha) StripType(STRIP_FONT, object, kill, alpha) end -local function FontTemplate(fs, font, size, style) - fs.font, fs.fontSize, fs.fontStyle = font or E.media.normFont, size or E.db.general.fontSize, style or E.db.general.fontStyle - fs:SetFont(fs.font, fs.fontSize, fs.fontStyle) +local function FontTemplate(fs, font, size, style, skip) + if not skip then -- ignore updates from UpdateFontTemplates + fs.font, fs.fontSize, fs.fontStyle = font, size, style + end + + fs:SetFont(font or E.media.normFont, size or E.db.general.fontSize, style or E.db.general.fontStyle) if style == 'NONE' then fs:SetShadowOffset(1, -0.5) diff --git a/ElvUI/ElvUI.toc b/ElvUI/ElvUI.toc index 66577040610138157d4eab2145f757cb6991d371..1c588fd8cf85367e14fa6db4f3a0c360618bf7d0 100644 --- a/ElvUI/ElvUI.toc +++ b/ElvUI/ElvUI.toc @@ -1,6 +1,6 @@ ## Interface: 80300 ## Author: Elv, Simpy -## Version: 11.51 +## Version: 11.52 ## Title: |cff1784d1ElvUI|r ## Notes: User Interface replacement AddOn for World of Warcraft. ## SavedVariables: ElvDB, ElvPrivateDB diff --git a/ElvUI/Libraries/Ace3/AceAddon-3.0/AceAddon-3.0.lua b/ElvUI/Libraries/Ace3/AceAddon-3.0/AceAddon-3.0.lua index 600979024c2da087abed64ab5cdc95a9f12dc191..b3cb85cecfb9b4d29b6d2d6093719c9ed65b09ac 100644 --- a/ElvUI/Libraries/Ace3/AceAddon-3.0/AceAddon-3.0.lua +++ b/ElvUI/Libraries/Ace3/AceAddon-3.0/AceAddon-3.0.lua @@ -30,7 +30,7 @@ -- @name AceAddon-3.0.lua -- @release $Id$ -local MAJOR, MINOR = "AceAddon-3.0", 12 +local MAJOR, MINOR = "AceAddon-3.0", 13 local AceAddon, oldminor = LibStub:NewLibrary(MAJOR, MINOR) if not AceAddon then return end -- No Upgrade needed. @@ -601,10 +601,20 @@ function AceAddon:IterateAddonStatus() return pairs(self.statuses) end function AceAddon:IterateEmbedsOnAddon(addon) return pairs(self.embeds[addon]) end function AceAddon:IterateModulesOfAddon(addon) return pairs(addon.modules) end +-- Blizzard AddOns which can load very early in the loading process and mess with Ace3 addon loading +local BlizzardEarlyLoadAddons = { + Blizzard_DebugTools = true, + Blizzard_TimeManager = true, + Blizzard_BattlefieldMap = true, + Blizzard_MapCanvas = true, + Blizzard_SharedMapDataProviders = true, + Blizzard_CombatLog = true, +} + -- Event Handling local function onEvent(this, event, arg1) - -- 2011-08-17 nevcairiel - ignore the load event of Blizzard_DebugTools, so a potential startup error isn't swallowed up - if (event == "ADDON_LOADED" and arg1 ~= "Blizzard_DebugTools") or event == "PLAYER_LOGIN" then + -- 2020-08-28 nevcairiel - ignore the load event of Blizzard addons which occur early in the loading process + if (event == "ADDON_LOADED" and (arg1 == nil or not BlizzardEarlyLoadAddons[arg1])) or event == "PLAYER_LOGIN" then -- if a addon loads another addon, recursion could happen here, so we need to validate the table on every iteration while(#AceAddon.initializequeue > 0) do local addon = tremove(AceAddon.initializequeue, 1) diff --git a/ElvUI/Libraries/LibActionButton-1.0/LibActionButton-1.0.lua b/ElvUI/Libraries/LibActionButton-1.0/LibActionButton-1.0.lua index 57f5a024156d2fa99c5a0150816caeb3f1bce864..25d156a6bb7516e831f86d88beea973ba8cb9acc 100644 --- a/ElvUI/Libraries/LibActionButton-1.0/LibActionButton-1.0.lua +++ b/ElvUI/Libraries/LibActionButton-1.0/LibActionButton-1.0.lua @@ -1,5 +1,5 @@ --[[ -Copyright (c) 2010-2019, Hendrik "nevcairiel" Leppkes +Copyright (c) 2010-2020, Hendrik "nevcairiel" Leppkes All rights reserved. @@ -26,31 +26,21 @@ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -]] +]] local MAJOR_VERSION = "LibActionButton-1.0-ElvUI" -local MINOR_VERSION = 20 -- the real minor version is 74 +local MINOR_VERSION = 21 -- the real minor version is 79 if not LibStub then error(MAJOR_VERSION .. " requires LibStub.") end local lib, oldversion = LibStub:NewLibrary(MAJOR_VERSION, MINOR_VERSION) if not lib then return end +-- Lua functions local type, error, tostring, tonumber, assert, select = type, error, tostring, tonumber, assert, select local setmetatable, wipe, unpack, pairs, next = setmetatable, wipe, unpack, pairs, next local str_match, format, tinsert, tremove = string.match, format, tinsert, tremove --- GLOBALS: ATTACK_BUTTON_FLASH_TIME, C_ToyBox, ClearCursor, COOLDOWN_TYPE_LOSS_OF_CONTROL, COOLDOWN_TYPE_NORMAL --- GLOBALS: CooldownFrame_Set, CreateFrame, FindSpellBookSlotBySpellID, FlyoutHasSpell, GameTooltip, GameTooltip_SetDefaultAnchor --- GLOBALS: GetActionCharges, GetActionCooldown, GetActionCount, GetActionInfo, GetActionLossOfControlCooldown, GetActionText --- GLOBALS: GetActionTexture, GetBindingKey, GetBindingText, GetCursorInfo, GetCVar, GetCVarBool, GetItemCooldown, GetItemCount --- GLOBALS: GetItemIcon, GetLastZoneAbilitySpellTexture, GetMacroInfo, GetMacroSpell, GetModifiedClick, GetMouseFocus, GetSpellCharges --- GLOBALS: GetSpellCooldown, GetSpellCount, GetSpellInfo, GetSpellTexture, HasAction, HasZoneAbility, InCombatLockdown, IsActionInRange --- GLOBALS: IsAltKeyDown, IsAttackAction, IsAttackSpell, IsAutoRepeatAction, IsAutoRepeatSpell, IsConsumableAction, IsConsumableItem --- GLOBALS: IsConsumableSpell, IsControlKeyDown, IsCurrentAction, IsCurrentItem, IsCurrentSpell, IsEquippedAction, IsEquippedItem --- GLOBALS: IsItemAction, IsItemInRange, IsShiftKeyDown, IsSpellInRange, IsSpellOverlayed, IsStackableAction, IsUsableAction, IsUsableItem --- GLOBALS: IsUsableSpell, LibStub, PickupAction, PickupCompanion, PickupEquipmentSet, PickupItem, PickupMacro, PickupPetAction, PickupSpell --- GLOBALS: RANGE_INDICATOR, SetBinding, SetBindingClick, SetClampedTextureRotation, SpellFlyout, TOOLTIP_UPDATE_TIME, UIParent, ZoneAbilityFrame --- GLOBALS: GetOnBarHighlightMark +local WoWClassic = select(4, GetBuildInfo()) < 20000 local KeyBound = LibStub("LibKeyBound-1.0", true) local CBH = LibStub("CallbackHandler-1.0") @@ -109,7 +99,7 @@ local type_meta_map = { local ButtonRegistry, ActiveButtons, ActionButtons, NonActionButtons = lib.buttonRegistry, lib.activeButtons, lib.actionButtons, lib.nonActionButtons -local Update, UpdateButtonState, UpdateUsable, UpdateCount, UpdateCooldown, UpdateTooltip, UpdateNewAction, ClearNewActionHighlight +local Update, UpdateButtonState, UpdateUsable, UpdateCount, UpdateCooldown, UpdateTooltip, UpdateNewAction, UpdateSpellHighlight, ClearNewActionHighlight local StartFlash, StopFlash, UpdateFlash, UpdateHotkeys, UpdateRangeTimer, UpdateOverlayGlow local UpdateFlyout, ShowGrid, HideGrid, UpdateGrid, SetupSecureSnippets, WrapOnClick local ShowOverlayGlow, HideOverlayGlow @@ -195,6 +185,7 @@ function lib:CreateButton(id, name, header, config) -- adjust hotkey style for better readability button.HotKey:SetFont(button.HotKey:GetFont(), 13, "OUTLINE") button.HotKey:SetVertexColor(0.75, 0.75, 0.75) + button.HotKey:SetPoint("TOPLEFT", button, "TOPLEFT", -2, -4) -- adjust count/stack size button.Count:SetFont(button.Count:GetFont(), 16, "OUTLINE") @@ -702,8 +693,10 @@ function InitializeEventHandler() lib.eventFrame:RegisterEvent("ACTIONBAR_SLOT_CHANGED") lib.eventFrame:RegisterEvent("UPDATE_BINDINGS") lib.eventFrame:RegisterEvent("UPDATE_SHAPESHIFT_FORM") - lib.eventFrame:RegisterEvent("UPDATE_VEHICLE_ACTIONBAR") lib.eventFrame:RegisterEvent("PLAYER_MOUNT_DISPLAY_CHANGED") + if not WoWClassic then + lib.eventFrame:RegisterEvent("UPDATE_VEHICLE_ACTIONBAR") + end lib.eventFrame:RegisterEvent("ACTIONBAR_UPDATE_STATE") lib.eventFrame:RegisterEvent("ACTIONBAR_UPDATE_USABLE") @@ -711,23 +704,26 @@ function InitializeEventHandler() lib.eventFrame:RegisterEvent("PLAYER_TARGET_CHANGED") lib.eventFrame:RegisterEvent("TRADE_SKILL_SHOW") lib.eventFrame:RegisterEvent("TRADE_SKILL_CLOSE") - lib.eventFrame:RegisterEvent("ARCHAEOLOGY_CLOSED") + lib.eventFrame:RegisterEvent("PLAYER_ENTER_COMBAT") lib.eventFrame:RegisterEvent("PLAYER_LEAVE_COMBAT") lib.eventFrame:RegisterEvent("START_AUTOREPEAT_SPELL") lib.eventFrame:RegisterEvent("STOP_AUTOREPEAT_SPELL") - lib.eventFrame:RegisterEvent("UNIT_ENTERED_VEHICLE") - lib.eventFrame:RegisterEvent("UNIT_EXITED_VEHICLE") - lib.eventFrame:RegisterEvent("COMPANION_UPDATE") lib.eventFrame:RegisterEvent("UNIT_INVENTORY_CHANGED") lib.eventFrame:RegisterEvent("LEARNED_SPELL_IN_TAB") lib.eventFrame:RegisterEvent("PET_STABLE_UPDATE") lib.eventFrame:RegisterEvent("PET_STABLE_SHOW") - lib.eventFrame:RegisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_SHOW") - lib.eventFrame:RegisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_HIDE") lib.eventFrame:RegisterEvent("SPELL_UPDATE_CHARGES") - lib.eventFrame:RegisterEvent("UPDATE_SUMMONPETS_ACTION") lib.eventFrame:RegisterEvent("SPELL_UPDATE_ICON") + if not WoWClassic then + lib.eventFrame:RegisterEvent("ARCHAEOLOGY_CLOSED") + lib.eventFrame:RegisterEvent("UNIT_ENTERED_VEHICLE") + lib.eventFrame:RegisterEvent("UNIT_EXITED_VEHICLE") + lib.eventFrame:RegisterEvent("COMPANION_UPDATE") + lib.eventFrame:RegisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_SHOW") + lib.eventFrame:RegisterEvent("SPELL_ACTIVATION_OVERLAY_GLOW_HIDE") + lib.eventFrame:RegisterEvent("UPDATE_SUMMONPETS_ACTION") + end -- With those two, do we still need the ACTIONBAR equivalents of them? lib.eventFrame:RegisterEvent("SPELL_UPDATE_COOLDOWN") @@ -1063,13 +1059,13 @@ end --- button management function Generic:UpdateAction(force) - local type, action = self:GetAction() - if force or (type ~= self._state_type) or (action ~= self._state_action) then + local action_type, action = self:GetAction() + if force or (action_type ~= self._state_type) or (action ~= self._state_action) then -- type changed, update the metatable - if force or (self._state_type ~= type) then - local meta = type_meta_map[type] or type_meta_map.empty + if force or (self._state_type ~= action_type) then + local meta = type_meta_map[action_type] or type_meta_map.empty setmetatable(self, meta) - self._state_type = type + self._state_type = action_type end self._state_action = action Update(self) @@ -1103,6 +1099,10 @@ function Update(self, fromUpdateConfig) if self.chargeCooldown then EndChargeCooldown(self.chargeCooldown) end + + if self.LevelLinkLockIcon then + self.LevelLinkLockIcon:SetShown(false) + end end -- Add a green border if button is an equipped item @@ -1148,7 +1148,6 @@ function Update(self, fromUpdateConfig) self.icon:Show() self.rangeTimer = - 1 self:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2") - if not self.LBFSkinned and not self.MasqueSkinned then self.NormalTexture:SetTexCoord(0, 0, 0, 0) end @@ -1177,6 +1176,8 @@ function Update(self, fromUpdateConfig) UpdateButtonState(self) + UpdateSpellHighlight(self) + if GameTooltip_GetOwnerForbidden() == self then UpdateTooltip(self) end @@ -1228,6 +1229,18 @@ function UpdateUsable(self) else self.icon:SetVertexColor(unpack(self.config.colors.usable)) end + + if not WoWClassic and self._state_type == "action" then + local isLevelLinkLocked = C_LevelLink.IsActionLocked(self._state_action) + if not self.icon:IsDesaturated() then + self.icon:SetDesaturated(isLevelLinkLocked) + end + + if self.LevelLinkLockIcon then + self.LevelLinkLockIcon:SetShown(isLevelLinkLocked) + end + end + lib.callbacks:Fire("OnButtonUsable", self) end @@ -1331,7 +1344,7 @@ function UpdateCooldown(self) self.cooldown.currentCooldownType = COOLDOWN_TYPE_NORMAL end - if charges and maxCharges and charges > 0 and charges < maxCharges then + if charges and maxCharges and maxCharges > 1 and charges < maxCharges then StartChargeCooldown(self, chargeStart, chargeDuration, chargeModRate) self.chargeCooldown:SetDrawSwipe(duration <= 0 and self.config.useDrawSwipeOnCharges) @@ -1383,11 +1396,9 @@ function UpdateHotkeys(self) local key = self:GetHotkey() if not key or key == "" or self.config.hideElements.hotkey then self.HotKey:SetText(RANGE_INDICATOR) - self.HotKey:SetPoint("TOPLEFT", self, "TOPLEFT", 1, - 2) self.HotKey:Hide() else self.HotKey:SetText(key) - self.HotKey:SetPoint("TOPLEFT", self, "TOPLEFT", - 2, - 2) self.HotKey:Show() end @@ -1455,26 +1466,6 @@ hooksecurefunc("ClearNewActionHighlight", function(action, preventIdenticalActio ClearNewActionHighlight(action, preventIdenticalActionsFromClearing, nil) end) -local function UpdateSpellHighlight(self, shown) - if ( shown ) then - self.SpellHighlightTexture:Show(); - self.SpellHighlightAnim:Play(); - else - self.SpellHighlightTexture:Hide(); - self.SpellHighlightAnim:Stop(); - end -end - -hooksecurefunc("SharedActionButton_RefreshSpellHighlight", function(self) - if ( self.SpellHighlightTexture and self.SpellHighlightAnim ) then - for button in next, ButtonRegistry do - if button._state_type == "action" then - UpdateSpellHighlight(button, GetOnBarHighlightMark(button._state_action)) - end - end - end -end) - function UpdateNewAction(self) -- special handling for "New Action" markers if self.NewActionTexture then @@ -1486,6 +1477,54 @@ function UpdateNewAction(self) end end +hooksecurefunc("UpdateOnBarHighlightMarksBySpell", function(spellID) + lib.ON_BAR_HIGHLIGHT_MARK_TYPE = "spell" + lib.ON_BAR_HIGHLIGHT_MARK_ID = tonumber(spellID) + + for button in next, ButtonRegistry do + UpdateSpellHighlight(button) + end +end) + +hooksecurefunc("UpdateOnBarHighlightMarksByFlyout", function(flyoutID) + lib.ON_BAR_HIGHLIGHT_MARK_TYPE = "flyout" + lib.ON_BAR_HIGHLIGHT_MARK_ID = tonumber(flyoutID) + + for button in next, ButtonRegistry do + UpdateSpellHighlight(button) + end +end) + +hooksecurefunc("ClearOnBarHighlightMarks", function() + lib.ON_BAR_HIGHLIGHT_MARK_TYPE = nil + + for button in next, ButtonRegistry do + UpdateSpellHighlight(button) + end +end) + +function UpdateSpellHighlight(self) + local shown = false + + local highlightType, id = lib.ON_BAR_HIGHLIGHT_MARK_TYPE, lib.ON_BAR_HIGHLIGHT_MARK_ID + if highlightType == "spell" and self:GetSpellId() == id then + shown = true + elseif highlightType == "flyout" and self._state_type == "action" then + local actionType, actionId = GetActionInfo(self._state_action) + if actionType == "flyout" and actionId == id then + shown = true + end + end + + if shown then + self.SpellHighlightTexture:Show() + self.SpellHighlightAnim:Play() + else + self.SpellHighlightTexture:Hide() + self.SpellHighlightAnim:Stop() + end +end + -- Hook UpdateFlyout so we can use the blizzy templates hooksecurefunc("ActionButton_UpdateFlyout", function(self, ...) if ButtonRegistry[self] then @@ -1598,6 +1637,21 @@ Action.GetSpellId = function(self) end Action.GetLossOfControlCooldown = function(self) return GetActionLossOfControlCooldown(self._state_action) end +-- Classic overrides for item count breakage +if WoWClassic then + -- if the library is present, simply use it to override action counts + local LibClassicSpellActionCount = LibStub("LibClassicSpellActionCount-1.0", true) + if LibClassicSpellActionCount then + Action.GetCount = function(self) return LibClassicSpellActionCount:GetActionCount(self._state_action) end + else + -- if we don't have the library, only show count for items, like the default UI + Action.IsConsumableOrStackable = function(self) return IsItemAction(self._state_action) and (IsConsumableAction(self._state_action) or IsStackableAction(self._state_action)) end + end + + -- disable loss of control cooldown on classic + Action.GetLossOfControlCooldown = function(self) return 0,0 end +end + ----------------------------------------------------------- --- Spell Button Spell.HasAction = function(self) return true end @@ -1615,6 +1669,7 @@ Spell.IsConsumableOrStackable = function(self) return IsConsumableSpell(self._st Spell.IsUnitInRange = function(self, unit) return IsSpellInRange(FindSpellBookSlotBySpellID(self._state_action), "spell", unit) end -- needs spell book id as of 4.0.1.13066 Spell.SetTooltip = function(self) return GameTooltip:SetSpellByID(self._state_action) end Spell.GetSpellId = function(self) return self._state_action end +Spell.GetLossOfControlCooldown = function(self) return GetSpellLossOfControlCooldown(self._state_action) end ----------------------------------------------------------- --- Item Button @@ -1694,6 +1749,11 @@ Custom.SetTooltip = function(self) return GameTooltip:SetText(self. Custom.GetSpellId = function(self) return nil end Custom.RunCustom = function(self, unit, button) return self._state_action.func(self, unit, button) end +--- WoW Classic overrides +if WoWClassic then + UpdateOverlayGlow = function() end +end + ----------------------------------------------------------- --- Update old Buttons if oldversion and next(lib.buttonRegistry) then diff --git a/ElvUI/Libraries/LibActionButton-1.0/LibButtonGlow-1.0/LibButtonGlow-1.0.lua b/ElvUI/Libraries/LibActionButton-1.0/LibButtonGlow-1.0/LibButtonGlow-1.0.lua index 3ddad9d7de4df0b3102c6f9c128c0e96ba2502f7..8926b48f8252a21305b7d23d18da472f3bc42680 100644 --- a/ElvUI/Libraries/LibActionButton-1.0/LibButtonGlow-1.0/LibButtonGlow-1.0.lua +++ b/ElvUI/Libraries/LibActionButton-1.0/LibButtonGlow-1.0/LibButtonGlow-1.0.lua @@ -1,18 +1,18 @@ --[[ -Copyright (c) 2015-2017, Hendrik "nevcairiel" Leppkes +Copyright (c) 2015-2020, Hendrik "nevcairiel" Leppkes All rights reserved. -Redistribution and use in source and binary forms, with or without +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: - * Redistributions of source code must retain the above copyright notice, + * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. - * Redistributions in binary form must reproduce the above copyright notice, - this list of conditions and the following disclaimer in the documentation + * Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. - * Neither the name of the developer nor the names of its contributors - may be used to endorse or promote products derived from this software without + * Neither the name of the developer nor the names of its contributors + may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS @@ -28,7 +28,7 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ]] local MAJOR_VERSION = "LibButtonGlow-1.0" -local MINOR_VERSION = 6 +local MINOR_VERSION = 7 if not LibStub then error(MAJOR_VERSION .. " requires LibStub.") end local lib, oldversion = LibStub:NewLibrary(MAJOR_VERSION, MINOR_VERSION) @@ -56,6 +56,18 @@ local function OverlayGlow_OnHide(self) end end +local function OverlayGlow_OnUpdate(self, elapsed) + AnimateTexCoords(self.ants, 256, 256, 48, 48, 22, elapsed, 0.01) + local cooldown = self:GetParent().cooldown + -- we need some threshold to avoid dimming the glow during the gdc + -- (using 1500 exactly seems risky, what if casting speed is slowed or something?) + if cooldown and cooldown:IsShown() and cooldown:GetCooldownDuration() > 3000 then + self:SetAlpha(0.5) + else + self:SetAlpha(1.0) + end +end + local function CreateScaleAnim(group, target, order, duration, x, y, delay) local scale = group:CreateAnimation("Scale") scale:SetTarget(target:GetName()) @@ -185,7 +197,7 @@ local function CreateOverlayGlow() overlay.animOut:SetScript("OnFinished", OverlayGlowAnimOutFinished) -- scripts - overlay:SetScript("OnUpdate", ActionButton_OverlayGlowOnUpdate) + overlay:SetScript("OnUpdate", OverlayGlow_OnUpdate) overlay:SetScript("OnHide", OverlayGlow_OnHide) overlay.__LBGVersion = MINOR_VERSION diff --git a/ElvUI/Libraries/oUF/ouf.lua b/ElvUI/Libraries/oUF/ouf.lua index 03030b807c3723cb2e121ec5eb931228334ec3b5..02a2f59223ab2c83440aefe85afa9d917f3755f5 100644 --- a/ElvUI/Libraries/oUF/ouf.lua +++ b/ElvUI/Libraries/oUF/ouf.lua @@ -776,6 +776,7 @@ function oUF:SpawnNamePlates(namePrefix, nameplateCallback, nameplateCVars) eventHandler:RegisterEvent('NAME_PLATE_UNIT_ADDED') eventHandler:RegisterEvent('NAME_PLATE_UNIT_REMOVED') eventHandler:RegisterEvent('PLAYER_TARGET_CHANGED') + eventHandler:RegisterEvent('UNIT_FACTION') if(IsLoggedIn()) then if(nameplateCVars) then @@ -805,6 +806,13 @@ function oUF:SpawnNamePlates(namePrefix, nameplateCallback, nameplateCVars) if(nameplate) then nameplate.unitFrame:UpdateAllElements(event) end + elseif(event == 'UNIT_FACTION' and unit) then + local nameplate = C_NamePlate.GetNamePlateForUnit(unit) + if(not nameplate) then return end + + if(nameplateCallback) then + nameplateCallback(nameplate.unitFrame, event, unit) + end elseif(event == 'NAME_PLATE_UNIT_ADDED' and unit) then local nameplate = C_NamePlate.GetNamePlateForUnit(unit) if(not nameplate) then return end diff --git a/ElvUI/Locales/deDE.lua b/ElvUI/Locales/deDE.lua index fcdaa7c4941bcc3c56df146937c3b1b220ebc6ce..d869bf623e2a92a21af0d1fec975e64fe372381a 100644 --- a/ElvUI/Locales/deDE.lua +++ b/ElvUI/Locales/deDE.lua @@ -8,7 +8,7 @@ local COLOR2 = '|cfd9b9b9b' L[" |cff00ff00bound to |r"] = " |cff00ff00gebunden zu |r" L["(Hold Shift) Memory Usage"] = "(Shift gedrückt) Speichernutzung" L["(Modifer Click) Collect Garbage"] = "(Modifikator Klick) Müll säubern" -L["%s frame has a conflicting anchor point. Forcing the Buffs to be attached to the main unitframe."] = true +L["%s frame has a conflicting anchor point. Forcing the Buffs to be attached to the main unitframe."] = "%s Frame hat einen Ankerpunkt-Konflikt. Die Stärkungszauber werden am Einheitenfenster angeheftet." L["%s is attempting to share his filters with you. Would you like to accept the request?"] = "%s möchte seine Filter Einstellungen mit dir teilen. Möchtest du die Anfrage annehmen?" L["%s is attempting to share the profile %s with you. Would you like to accept the request?"] = "%s versucht das Profil %s mit dir zu teilen. Möchtest du die Anfrage annehmen?" L["%s: %s tried to call the protected function '%s'."] = "%s: %s versucht die geschützte Funktion aufrufen '%s'." @@ -16,7 +16,7 @@ L["|cFFE30000Lua error recieved. You can view the error message when you exit co L["|cffFFFFFFLeft Click:|r Change Talent Specialization"] = "|cffFFFFFFLinksklick:|r Talentspezialisierung ändern" L["|cffFFFFFFRight Click:|r Change Loot Specialization"] = "|cffFFFFFFRechtsklick:|r Beutespezialisierung ändern" L["|cffFFFFFFShift + Left Click:|r Show Talent Specialization UI"] = "|cffFFFFFFShift + Linksklick:|r Zeige Talent Spezialisierung UI" -L["A raid marker feature is available by pressing Escape -> Keybinds. Scroll to the bottom -> ElvUI -> Raid Marker."] = true +L["A raid marker feature is available by pressing Escape -> Keybinds. Scroll to the bottom -> ElvUI -> Raid Marker."] = "Eine Schlachtzugsmarkierung Funktion ist in den Blizzard Tastaturbelegungen verfügbar. -> ElvUI -> Raid Marker" L["A setting you have changed will change an option for this character only. This setting that you have changed will be uneffected by changing user profiles. Changing this setting requires that you reload your User Interface."] = "Eine Einstellung, die du geändert hast, betrifft nur einen Charakter. Diese Einstellung, die du verändert hast, wird die Benutzerprofile unbeeinflusst lassen. Eine Änderung dieser Einstellung erfordert, dass du dein Interface neu laden musst." L["ABOVE_THREAT_FORMAT"] = "%s: %.0f%% [%.0f%% above |cff%02x%02x%02x%s|r]" L["Accepting this will reset the UnitFrame settings for %s. Are you sure?"] = "Wenn du aktzeptierst wird die Einstellung des Einheitenfensters für %s auf Standard zurückgesetzt. Bist du sicher?" @@ -56,7 +56,7 @@ L["Bank Mover (Grow Up)"] = "Bank Anker (Nach oben wachsen)" L["Bank"] = true --No need to translate L["Bar "] = "Leiste " L["Bars"] = "Leisten" -L["Battleground datatexts temporarily hidden, to show type /bgstats"] = true +L["Battleground datatexts temporarily hidden, to show type /bgstats"] = "Schlachtfeld-Infotexte ist temporär versteckt, um ihn zu zeigen tippe /bgstats" L["Battleground datatexts will now show again if you are inside a battleground."] = "Schlachtfeld-Infotexte werden wieder angezeigt, solange du dich in einem Schlachtfeld befindest." L["BfA Missions"] = "BfA Missionen" L["Binding"] = "Belegung" @@ -109,11 +109,11 @@ L["Discord"] = true --No need to translate L["DND"] = "DND" L["Do you enjoy the new ElvUI?"] = "Gefällt dir das neue ElvUI?" L["Do you swear not to post in technical support about something not working without first disabling the addon/module combination first?"] = "Schwörst du, dass du keinen Beitrag im Supportforum posten wirst, ohne vorher alle anderen Addons/Module zu deaktivieren?" -L["Don't forget to backup your WTF folder, all your profiles and settings are in there."] = true +L["Don't forget to backup your WTF folder, all your profiles and settings are in there."] = "Vergess nicht ein Backup von deinem WTF Ordner zu machen, all deine Profile/Einstellungen für AddOns sind darin gespeichert." L["Download"] = "Download" L["DPS"] = "DPS" L["Earned:"] = "Verdient:" -L["ElvUI has a dual spec feature which allows you to load different profiles based on your current spec on the fly. You can enable it in the profiles tab."] = true +L["ElvUI has a dual spec feature which allows you to load different profiles based on your current spec on the fly. You can enable it in the profiles tab."] = "ElvUI hat ein Dual-Spec-Feature welches dir erlaubt verschiedene Profile basierend auf deine gegenwärtige Spezialisierung zu wechseln. Du kannst es in den Profil Einstellungen aktivieren." L["ElvUI Installation"] = "ElvUI Installation" L["ElvUI is five or more revisions out of date. You can download the newest version from www.tukui.org. Get premium membership and have ElvUI automatically updated with the Tukui Client!"] = "ElvUI ist seit fünf oder mehr Revisionen nicht aktuell. Du kannst die neuste Version bei www.tukui.org herunterladen. Hol dir die Premium-Mitgliedschaft und ElvUI wird durch den Tukui-Client automatisch aktualisiert!" L["ElvUI is out of date. You can download the newest version from www.tukui.org. Get premium membership and have ElvUI automatically updated with the Tukui Client!"] = "ElvUI ist nicht aktuell. Du kannst die neuste Version bei www.tukui.org herunterladen. Hol dir die Premium-Mitgliedschaft und ElvUI wird durch den Tukui-Client automatisch aktualisiert!" @@ -135,7 +135,7 @@ L["Focus Castbar"] = "Fokus Zauberbalken" L["Focus Frame"] = "Fokusfenster" L["FocusTarget Frame"] = "Fokus-Ziel Fenster" L["Friends List"] = "Freundesliste" -L["From time to time you should compare your ElvUI version against the most recent version on our website or the Tukui client."] = true +L["From time to time you should compare your ElvUI version against the most recent version on our website or the Tukui client."] = "Von Zeit zu Zeit solltest du deine gegenwärtige ElvUI Version mit der auf unsere Homepage oder im Tukui Clienten vergleichen." L["G"] = "G" L["Garrison"] = "Garnison" L["Ghost"] = "Geist" @@ -154,7 +154,7 @@ L["Home Protocol:"] = "Standort Protokol" L["Honor Bar"] = "Ehreleiste" L["Honor Remaining:"] = "Ehre verbleibend:" L["Honor XP:"] = "Ehre XP:" -L["Horde: "] = true +L["Horde: "] = true --No need to translate L["Hover your mouse over any actionbutton or spellbook button to bind it. Press the ESC key to clear the current actionbutton's keybinding."] = "Bewege deine Maus über einen Aktionsbutton oder dein Zauberbuch um ihn mit einem Hotkey zu belegen. Drücke Escape um die aktuelle Tastenbelegung des Buttons zu löschen." L["HP"] = "HP" L["HPS"] = "HPS" @@ -162,8 +162,8 @@ L["Hunter Akana"] = "Jäger Akana" L["I Swear"] = "Ich schwöre" L["I"] = true L["Icons Only"] = "Nur Symbole" -L["If you accidentally removed a default chat tab you can always re-run the chat part of the ElvUI installer."] = true -L["If you are experiencing issues with ElvUI try disabling all your addons except ElvUI first."] = true +L["If you accidentally removed a default chat tab you can always re-run the chat part of the ElvUI installer."] = "Wenn du ausversehen einen Standard Chat Tab entfernt hast, kannst du jeder Zeit den Installationsschritt für den Chat erneut machen." +L["If you are experiencing issues with ElvUI try disabling all your addons except ElvUI first."] = "Wenn du Fehler an ElvUI feststellst, deaktiviere alle anderen AddOns bis auf ElvUI." L["IL"] = "IL" L["Importance: |cFF33FF33Low|r"] = "Bedeutung: |cffD3CF00Niedrig|r" L["Importance: |cffD3CF00Medium|r"] = "Bedeutung: |cffD3CF00Mittel|r" @@ -209,7 +209,7 @@ L["Loss Control Icon"] = "Kontrollverlustsymbol" L["lvl"] = "lvl" L["MA Frames"] = "MA-Fenster" L["Main Hand"] = "Waffenhand" -L["Max Rank"] = true +L["Max Rank"] = "Max Rang" L["Micro Bar"] = "Mikroleiste" L["Minimap"] = "Minimap" L["MirrorTimer"] = "Spiegel Zeitgeber" @@ -221,7 +221,7 @@ L["Mov. Speed:"] = _G.STAT_MOVEMENT_SPEED L["MT Frames"] = "MT-Fenster" L["Naval Mission(s) Report:"] = "Marine Missionsbericht:" L["Nazjatar Follower XP"] = "Nazjatar Begleiter EP" -L["Need help? Join our Discord: https://discord.gg/xFWcfgE"] = true +L["Need help? Join our Discord: https://discord.gg/xFWcfgE"] = "Brauchst du Hilfe? Tritt unseren Discord bei: https://discord.gg/xFWcfgE" L["Neri Sharpfin"] = "Neri Scharffinne" L["No bindings set."] = "Keine Belegungen gesetzt." L["No gray items to delete."] = "Es sind keine grauen Gegenstände zum Löschen vorhanden." @@ -272,8 +272,8 @@ L["Remaining:"] = "Verbleibend:" L["Remove Bar %d Action Page"] = "Entferne Leiste %d Aktion Seite" L["Reputation Bar"] = "Rufleiste" L["Request was denied by user."] = "Die Anfrage wurde vom Benutzer abgelehnt." -L["Reset Counters: Hold Ctrl + Right Click"] = "Zähler zurücksetzen: Halte Ctrl + Rechtsklick" -L["Reset Data: Hold Shift + Right Click"] = "Daten zurücksetzen: Halte Shift + Rechtsklick" +L["Reset Session Data: Hold Ctrl + Right Click"] = "Setze aktuelle Session zurück: Halte STRG + Rechts Klick" +L["Reset Character Data: Hold Shift + Right Click"] = "Setze Charakter Daten zurück: Halte Shift + Rechts Klick" L["Reset Position"] = "Position zurücksetzen" L["Rested:"] = "Ausgeruht:" L["Right Chat"] = "Rechter Chat" diff --git a/ElvUI/Locales/enUS.lua b/ElvUI/Locales/enUS.lua index dc2a8bb4267e981c04264e2c551dcfeceb944924..349b5f3627f5e5be7173ad9bb874d4accb4b30ed 100644 --- a/ElvUI/Locales/enUS.lua +++ b/ElvUI/Locales/enUS.lua @@ -271,8 +271,8 @@ L["Remaining:"] = true L["Remove Bar %d Action Page"] = true L["Reputation Bar"] = true L["Request was denied by user."] = true -L["Reset Counters: Hold Ctrl + Right Click"] = true -L["Reset Data: Hold Shift + Right Click"] = true +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = true L["Rested:"] = true L["Right Chat"] = true diff --git a/ElvUI/Locales/esMX.lua b/ElvUI/Locales/esMX.lua index fc2caa8dc0bb6e4c21a8e142dc5533c6e6489558..657741143298ff0f1e65f22602beebeb6b200fcd 100644 --- a/ElvUI/Locales/esMX.lua +++ b/ElvUI/Locales/esMX.lua @@ -271,8 +271,8 @@ L["Remaining:"] = "Restante" L["Remove Bar %d Action Page"] = "Quitar Barra %d de la paginación" L["Reputation Bar"] = "Barra de Reputación" L["Request was denied by user."] = "Petición denegada por el jugador." -L["Reset Counters: Hold Ctrl + Right Click"] = "Restablecer el Contador: Mantén Ctrl + Clic Derecho" -L["Reset Data: Hold Shift + Right Click"] = "Restablecer los Datos: Mantén Shift + Clic Derecho" +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = "Reestablecer Posición" L["Rested:"] = "Descansado:" L["Right Chat"] = "Chat Derecho" diff --git a/ElvUI/Locales/frFR.lua b/ElvUI/Locales/frFR.lua index f4d536bde2e2cec1bfc95a7f4b880558137d1614..3b5905e1d8352198e196294a9571582e24e16d57 100644 --- a/ElvUI/Locales/frFR.lua +++ b/ElvUI/Locales/frFR.lua @@ -271,8 +271,8 @@ L["Remaining:"] = "Restant :" L["Remove Bar %d Action Page"] = "Retirer la pagination de la barre d'action" L["Reputation Bar"] = "Barre de réputation" L["Request was denied by user."] = "La requête a été refusée par l'utilisateur." -L["Reset Counters: Hold Ctrl + Right Click"] = "Réinitialiser les compteurs: maintenez la touche Ctrl + clic droit" -L["Reset Data: Hold Shift + Right Click"] = "RAZ des données : MAJ + Clic droit" +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = "Réinitialiser la position" L["Rested:"] = "Reposé :" L["Right Chat"] = "Chat de droite" diff --git a/ElvUI/Locales/itIT.lua b/ElvUI/Locales/itIT.lua index 9f4b272d18cf0dec772dbabebb5f7e10005e2cf9..f8b863d2efe94972a7ec668802d2433bfa170ace 100644 --- a/ElvUI/Locales/itIT.lua +++ b/ElvUI/Locales/itIT.lua @@ -271,8 +271,8 @@ L["Remaining:"] = true L["Remove Bar %d Action Page"] = true L["Reputation Bar"] = true L["Request was denied by user."] = true -L["Reset Counters: Hold Ctrl + Right Click"] = true -L["Reset Data: Hold Shift + Right Click"] = true +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = true L["Rested:"] = true L["Right Chat"] = true diff --git a/ElvUI/Locales/koKR.lua b/ElvUI/Locales/koKR.lua index 52cb73dbb362ed6c5fa96293f151c6435e4bfff0..1a8370f34a1cc939193ab50e1ce6688a732aa10c 100644 --- a/ElvUI/Locales/koKR.lua +++ b/ElvUI/Locales/koKR.lua @@ -271,8 +271,8 @@ L["Remaining:"] = "다음 레벨까지: " L["Remove Bar %d Action Page"] = "Blizzard %d번 행동단축바 숨기기" L["Reputation Bar"] = "평판 바" L["Request was denied by user."] = "상대방이 전송을 거절했습니다." -L["Reset Counters: Hold Ctrl + Right Click"] = true -L["Reset Data: Hold Shift + Right Click"] = "자료 초기화: 쉬프트+우클릭" +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = "위치 초기화" L["Rested:"] = "휴식 경험치:" L["Right Chat"] = "우측 패널" diff --git a/ElvUI/Locales/ptBR.lua b/ElvUI/Locales/ptBR.lua index 7999044df878db8ca0673aae860c11adeebd5fca..810fa4c9b350a62419fa5e14ab65f2d431264be0 100644 --- a/ElvUI/Locales/ptBR.lua +++ b/ElvUI/Locales/ptBR.lua @@ -271,8 +271,8 @@ L["Remaining:"] = "Restante:" L["Remove Bar %d Action Page"] = "Remover paginação de ação da barra %d." L["Reputation Bar"] = "Barra de Reputação" L["Request was denied by user."] = "Pedido negado pelo usuário." -L["Reset Counters: Hold Ctrl + Right Click"] = "Resetar contadores: Segurar CTRL + Clique Direito" -L["Reset Data: Hold Shift + Right Click"] = "Redefinir Dados: Segurar Shift + Clique Direito" +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = "Redefinir Posição" L["Rested:"] = "Descansado:" L["Right Chat"] = "Bate-papo direito" diff --git a/ElvUI/Locales/ruRU.lua b/ElvUI/Locales/ruRU.lua index dbdf2149c7a18b813c8f3391b4f7d89a2b92b97a..f15216000918ea06b568cf2e5a629fcd548b3f86 100644 --- a/ElvUI/Locales/ruRU.lua +++ b/ElvUI/Locales/ruRU.lua @@ -271,8 +271,8 @@ L["Remaining:"] = "Осталось:" L["Remove Bar %d Action Page"] = "Удалить панель %d из списка переключаемых" L["Reputation Bar"] = "Полоса репутации" L["Request was denied by user."] = "Запрос отклонен пользователем." -L["Reset Counters: Hold Ctrl + Right Click"] = "Сбросить счётчики: Ctrl + ПКМ" -L["Reset Data: Hold Shift + Right Click"] = "Сбросить данные: Shift + ПКМ" +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = "Сбросить позицию" L["Rested:"] = "Бодрость:" L["Right Chat"] = "Правый чат" diff --git a/ElvUI/Locales/zhCN.lua b/ElvUI/Locales/zhCN.lua index 26d0c2bc68f92f39db27df723a054acb35bdaa07..73ae865409e78fe304eaefcc4600346c72885d3b 100644 --- a/ElvUI/Locales/zhCN.lua +++ b/ElvUI/Locales/zhCN.lua @@ -271,8 +271,8 @@ L["Remaining:"] = "剩余:" L["Remove Bar %d Action Page"] = "移除第%d动作条" L["Reputation Bar"] = "声望条" L["Request was denied by user."] = "请求被对方拒绝." -L["Reset Counters: Hold Ctrl + Right Click"] = "重置计数器: 按住Ctrl + 右键点击" -L["Reset Data: Hold Shift + Right Click"] = "重置数据: 按住 Shift + 右键点击" +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = "重设位置" L["Rested:"] = "休息:" L["Right Chat"] = "右侧对话框" diff --git a/ElvUI/Locales/zhTW.lua b/ElvUI/Locales/zhTW.lua index a337366e5d8135dada160fb8141cbe851a3fabde..8b68d490d94632dca6491fc8c1413ee481820c35 100644 --- a/ElvUI/Locales/zhTW.lua +++ b/ElvUI/Locales/zhTW.lua @@ -271,8 +271,8 @@ L["Remaining:"] = "剩餘:" L["Remove Bar %d Action Page"] = "移除第 %d 快捷列" L["Reputation Bar"] = "聲望條" L["Request was denied by user."] = "請求被對方拒絕." -L["Reset Counters: Hold Ctrl + Right Click"] = "重置計數器: 按住 Ctrl +右鍵點擊" -L["Reset Data: Hold Shift + Right Click"] = "重置數據: 按住 Shift + 右鍵點擊" +L["Reset Session Data: Hold Ctrl + Right Click"] = true +L["Reset Character Data: Hold Shift + Right Click"] = true L["Reset Position"] = "重設位置" L["Rested:"] = "休息:" L["Right Chat"] = "右側對話框" diff --git a/ElvUI/Modules/ActionBars/ActionBars.lua b/ElvUI/Modules/ActionBars/ActionBars.lua index 2fb43621c46ebaaf944ef0ac883b4b21bd459dbf..b753bfac677de3b0f33ac3ad00f95502ba3bc772 100644 --- a/ElvUI/Modules/ActionBars/ActionBars.lua +++ b/ElvUI/Modules/ActionBars/ActionBars.lua @@ -27,6 +27,14 @@ local UnitHealth = UnitHealth local UnitHealthMax = UnitHealthMax local UnregisterStateDriver = UnregisterStateDriver local VehicleExit = VehicleExit +local GetSpellBookItemInfo = GetSpellBookItemInfo +local ClearOnBarHighlightMarks = ClearOnBarHighlightMarks +local ClearPetActionHighlightMarks = ClearPetActionHighlightMarks +local UpdateOnBarHighlightMarksBySpell = UpdateOnBarHighlightMarksBySpell +local UpdateOnBarHighlightMarksByFlyout = UpdateOnBarHighlightMarksByFlyout +local UpdateOnBarHighlightMarksByPetAction = UpdateOnBarHighlightMarksByPetAction +local UpdatePetActionHighlightMarks = UpdatePetActionHighlightMarks + local SPELLS_PER_PAGE = SPELLS_PER_PAGE local TOOLTIP_UPDATE_TIME = TOOLTIP_UPDATE_TIME local NUM_ACTIONBAR_BUTTONS = NUM_ACTIONBAR_BUTTONS @@ -775,6 +783,19 @@ function AB:SpellButtonOnEnter(_, tt) local slot = _G.SpellBook_GetSpellBookSlot(self) local needsUpdate = tt:SetSpellBookItem(slot, _G.SpellBookFrame.bookType) + ClearOnBarHighlightMarks() + ClearPetActionHighlightMarks() + + local slotType, actionID = GetSpellBookItemInfo(slot, _G.SpellBookFrame.bookType) + if slotType == 'SPELL' then + UpdateOnBarHighlightMarksBySpell(actionID) + elseif slotType == 'FLYOUT' then + UpdateOnBarHighlightMarksByFlyout(actionID) + elseif slotType == 'PETACTION' then + UpdateOnBarHighlightMarksByPetAction(actionID) + UpdatePetActionHighlightMarks(actionID) + end + local highlight = self.SpellHighlightTexture if highlight and highlight:IsShown() then local color = _G.LIGHTBLUE_FONT_COLOR @@ -795,6 +816,9 @@ function AB:UpdateSpellBookTooltip(event) end function AB:SpellButtonOnLeave() + ClearOnBarHighlightMarks() + ClearPetActionHighlightMarks() + SpellBookTooltip:Hide() SpellBookTooltip:SetScript('OnUpdate', nil) end diff --git a/ElvUI/Modules/Blizzard/ObjectiveFrame.lua b/ElvUI/Modules/Blizzard/ObjectiveFrame.lua index da97afccebe65c73cd4f7fc23f9c1882b21f6a22..bd25136e6ee57ac31e066b5c1d02feaf37e2bc0f 100644 --- a/ElvUI/Modules/Blizzard/ObjectiveFrame.lua +++ b/ElvUI/Modules/Blizzard/ObjectiveFrame.lua @@ -75,9 +75,13 @@ function B:MoveObjectiveFrame() ObjectiveTrackerFrame.AutoHider:SetAttribute('_onstate-objectiveHider', 'if newstate == 1 then self:Hide() else self:Show() end') ObjectiveTrackerFrame.AutoHider:SetScript('OnHide', function() if not ObjectiveTrackerFrame.collapsed then - local _, _, difficultyID = GetInstanceInfo() - if difficultyID and difficultyID ~= 8 then -- ignore hide in keystone runs + if E.db.general.objectiveFrameAutoHideInKeystone then _G.ObjectiveTracker_Collapse() + else + local _, _, difficultyID = GetInstanceInfo() + if difficultyID and difficultyID ~= 8 then -- ignore hide in keystone runs + _G.ObjectiveTracker_Collapse() + end end end end) diff --git a/ElvUI/Modules/DataTexts/Gold.lua b/ElvUI/Modules/DataTexts/Gold.lua index a882e71c6544e2ac7916d7aabd482f0336af5b1a..1e96facfa58abbb0044c6ffb2f65c6696abe669c 100644 --- a/ElvUI/Modules/DataTexts/Gold.lua +++ b/ElvUI/Modules/DataTexts/Gold.lua @@ -20,8 +20,8 @@ local Ticker local CURRENCY = CURRENCY local MAX_WATCHED_TOKENS = MAX_WATCHED_TOKENS local Profit, Spent = 0, 0 -local resetCountersFormatter = strjoin('', '|cffaaaaaa', L["Reset Counters: Hold Ctrl + Right Click"], '|r') -local resetInfoFormatter = strjoin('', '|cffaaaaaa', L["Reset Data: Hold Shift + Right Click"], '|r') +local resetCountersFormatter = strjoin('', '|cffaaaaaa', L["Reset Session Data: Hold Ctrl + Right Click"], '|r') +local resetInfoFormatter = strjoin('', '|cffaaaaaa', L["Reset Character Data: Hold Shift + Right Click"], '|r') local PRIEST_COLOR = RAID_CLASS_COLORS.PRIEST local iconString = '|T%s:16:16:0:0:64:64:4:60:4:60|t' @@ -53,6 +53,10 @@ local function OnEvent(self) ElvDB.faction[E.myrealm] = ElvDB.faction[E.myrealm] or {} ElvDB.faction[E.myrealm][E.myname] = E.myfaction + ElvDB.serverID = ElvDB.serverID or {} + ElvDB.serverID[E.serverID] = ElvDB.serverID[E.serverID] or {} + ElvDB.serverID[E.serverID][E.myrealm] = true + --prevent an error possibly from really old profiles local oldMoney = ElvDB.gold[E.myrealm][E.myname] if oldMoney and type(oldMoney) ~= 'number' then @@ -74,12 +78,12 @@ local function OnEvent(self) self.text:SetText(E:FormatMoney(NewMoney, E.db.datatexts.goldFormat or 'BLIZZARD', not E.db.datatexts.goldCoins)) end -local function deleteCharacter(self, name) - ElvDB.gold[E.myrealm][name] = nil - ElvDB.class[E.myrealm][name] = nil - ElvDB.faction[E.myrealm][name] = nil +local function deleteCharacter(self, realm, name) + ElvDB.gold[realm][name] = nil + ElvDB.class[realm][name] = nil + ElvDB.faction[realm][name] = nil - if name == E.myname then + if name == E.myname and realm == E.myrealm then OnEvent(self) end end @@ -89,8 +93,17 @@ local function Click(self, btn) if IsShiftKeyDown() then wipe(menuList) tinsert(menuList, { text = 'Delete Character', isTitle = true, notCheckable = true }) - for name in pairs(ElvDB.gold[E.myrealm]) do - tinsert(menuList, { text = name, notCheckable = true, func = function() deleteCharacter(self, name) end }) + + for realm in pairs(ElvDB.serverID[E.serverID]) do + for name in pairs(ElvDB.gold[realm]) do + tinsert(menuList, { + text = format('%s - %s', name, realm), + notCheckable = true, + func = function() + deleteCharacter(self, realm, name) + end + }) + end end DT:SetEasyMenuAnchor(DT.EasyMenu, self) @@ -125,27 +138,30 @@ local function OnEnter() DT.tooltip:AddLine(L["Character: "]) wipe(myGold) - for k,_ in pairs(ElvDB.gold[E.myrealm]) do - if ElvDB.gold[E.myrealm][k] then - local color = E:ClassColor(ElvDB.class[E.myrealm][k]) or PRIEST_COLOR - tinsert(myGold, - { - name = k, - amount = ElvDB.gold[E.myrealm][k], - amountText = E:FormatMoney(ElvDB.gold[E.myrealm][k], E.db.datatexts.goldFormat or 'BLIZZARD', not E.db.datatexts.goldCoins), - faction = ElvDB.faction[E.myrealm][k] or '', - r = color.r, g = color.g, b = color.b, - } - ) - end + for realm in pairs(ElvDB.serverID[E.serverID]) do + for k, _ in pairs(ElvDB.gold[realm]) do + if ElvDB.gold[realm][k] then + local color = E:ClassColor(ElvDB.class[realm][k]) or PRIEST_COLOR + tinsert(myGold, + { + name = k, + realm = realm, + amount = ElvDB.gold[realm][k], + amountText = E:FormatMoney(ElvDB.gold[realm][k], E.db.datatexts.goldFormat or 'BLIZZARD', not E.db.datatexts.goldCoins), + faction = ElvDB.faction[realm][k] or '', + r = color.r, g = color.g, b = color.b, + } + ) + end - if ElvDB.faction[E.myrealm][k] == 'Alliance' then - totalAlliance = totalAlliance+ElvDB.gold[E.myrealm][k] - elseif ElvDB.faction[E.myrealm][k] == 'Horde' then - totalHorde = totalHorde+ElvDB.gold[E.myrealm][k] - end + if ElvDB.faction[realm][k] == 'Alliance' then + totalAlliance = totalAlliance+ElvDB.gold[realm][k] + elseif ElvDB.faction[realm][k] == 'Horde' then + totalHorde = totalHorde+ElvDB.gold[realm][k] + end - totalGold = totalGold+ElvDB.gold[E.myrealm][k] + totalGold = totalGold+ElvDB.gold[realm][k] + end end sort(myGold, sortFunction) @@ -156,9 +172,8 @@ local function OnEnter() nameLine = format('|TInterface/FriendsFrame/PlusManz-%s:14|t ', g.faction) end - nameLine = g.name == E.myname and nameLine..g.name..' |TInterface/COMMON/Indicator-Green:14|t' or nameLine..g.name - - DT.tooltip:AddDoubleLine(nameLine, g.amountText, g.r, g.g, g.b, 1, 1, 1) + local toonName = format('%s%s%s', nameLine, g.name, (g.realm and g.realm ~= E.myrealm and ' - '..g.realm) or '') + DT.tooltip:AddDoubleLine((g.name == E.myname and toonName..' |TInterface/COMMON/Indicator-Green:14|t') or toonName, g.amountText, g.r, g.g, g.b, 1, 1, 1) end DT.tooltip:AddLine(' ') diff --git a/ElvUI/Modules/Nameplates/Nameplates.lua b/ElvUI/Modules/Nameplates/Nameplates.lua index 85b98dac9de7a02ec9eeb8ae6c76678ae72c14d4..4dc0a8726deffa56c476f00060c78e94d3bbb7dc 100644 --- a/ElvUI/Modules/Nameplates/Nameplates.lua +++ b/ElvUI/Modules/Nameplates/Nameplates.lua @@ -12,6 +12,7 @@ local GetCVarDefault = GetCVarDefault local GetInstanceInfo = GetInstanceInfo local GetNumGroupMembers = GetNumGroupMembers local GetNumSubgroupMembers = GetNumSubgroupMembers +local InCombatLockdown = InCombatLockdown local IsInGroup, IsInRaid = IsInGroup, IsInRaid local SetCVar = SetCVar local UnitClass = UnitClass @@ -501,19 +502,13 @@ function NP:ConfigureAll() if E.private.nameplates.enable ~= true then return end NP:StyleFilterConfigure() -- keep this at the top - local Scale = E.global.general.UIScale - - C_NamePlate_SetNamePlateSelfSize(NP.db.plateSize.personalWidth * Scale, NP.db.plateSize.personalHeight * Scale) - C_NamePlate_SetNamePlateEnemySize(NP.db.plateSize.enemyWidth * Scale, NP.db.plateSize.enemyHeight * Scale) - C_NamePlate_SetNamePlateFriendlySize(NP.db.plateSize.friendlyWidth * Scale, NP.db.plateSize.friendlyHeight * Scale) - + NP:SetNamePlateSizes() NP:PLAYER_REGEN_ENABLED() local playerEnabled = NP.db.units.PLAYER.enable - local staticPosition = NP.db.units.PLAYER.useStaticPosition - local staticPlate = playerEnabled and staticPosition + local isStatic = NP.db.units.PLAYER.useStaticPosition - if staticPlate then + if playerEnabled and isStatic then E:EnableMover('ElvNP_PlayerMover') _G.ElvNP_Player:Enable() _G.ElvNP_StaticSecure:Show() @@ -527,35 +522,25 @@ function NP:ConfigureAll() NP:UpdateTargetPlate(_G.ElvNP_TargetClassPower) for nameplate in pairs(NP.Plates) do - if _G.ElvNP_Player ~= nameplate or staticPlate then - NP:StyleFilterClear(nameplate) -- keep this at the top of the loop - - if nameplate.frameType == 'PLAYER' then - nameplate:SetSize(NP.db.plateSize.personalWidth, NP.db.plateSize.personalHeight) - elseif nameplate.frameType == 'FRIENDLY_PLAYER' or nameplate.frameType == 'FRIENDLY_NPC' then - nameplate:SetSize(NP.db.plateSize.friendlyWidth, NP.db.plateSize.friendlyHeight) - else - nameplate:SetSize(NP.db.plateSize.enemyWidth, NP.db.plateSize.enemyHeight) - end - - if nameplate.frameType == 'PLAYER' then - NP.PlayerNamePlateAnchor:ClearAllPoints() - NP.PlayerNamePlateAnchor:SetParent(staticPosition and _G.ElvNP_Player or nameplate) - NP.PlayerNamePlateAnchor:SetAllPoints(staticPosition and _G.ElvNP_Player or nameplate) - NP.PlayerNamePlateAnchor:Show() + NP:StyleFilterClear(nameplate) -- keep this at the top of the loop - SetCVar('nameplateShowSelf', (staticPosition or not playerEnabled) and 0 or 1) - end - - if staticPlate then - NP:NamePlateCallBack(_G.ElvNP_Player, 'NAME_PLATE_UNIT_ADDED', 'player') - else - NP:UpdatePlate(nameplate, true) - NP:StyleFilterUpdate(nameplate, 'NAME_PLATE_UNIT_ADDED') -- keep this after update plate - end + if nameplate.frameType == 'PLAYER' then + nameplate:SetSize(NP.db.plateSize.personalWidth, NP.db.plateSize.personalHeight) + SetCVar('nameplateShowSelf', (isStatic or not playerEnabled) and 0 or 1) + elseif nameplate.frameType == 'FRIENDLY_PLAYER' or nameplate.frameType == 'FRIENDLY_NPC' then + nameplate:SetSize(NP.db.plateSize.friendlyWidth, NP.db.plateSize.friendlyHeight) + else + nameplate:SetSize(NP.db.plateSize.enemyWidth, NP.db.plateSize.enemyHeight) + end - nameplate:UpdateAllElements('ForceUpdate') + if nameplate == _G.ElvNP_Player then + NP:NamePlateCallBack(_G.ElvNP_Player, (isStatic and playerEnabled) and 'NAME_PLATE_UNIT_ADDED' or 'NAME_PLATE_UNIT_REMOVED', 'player') + elseif nameplate.frameType ~= 'PLAYER' or playerEnabled then + NP:UpdatePlate(nameplate, true) + NP:StyleFilterUpdate(nameplate, 'NAME_PLATE_UNIT_ADDED') -- keep this after update plate end + + nameplate:UpdateAllElements('ForceUpdate') end NP:Update_StatusBars() @@ -587,7 +572,7 @@ function NP:UpdatePlateGUID(nameplate, guid) end function NP:NamePlateCallBack(nameplate, event, unit) - if event == 'NAME_PLATE_UNIT_ADDED' then + if event == 'NAME_PLATE_UNIT_ADDED' or (event == 'UNIT_FACTION' and nameplate) then local updateBase = NP:StyleFilterClear(nameplate) -- keep this at the top unit = unit or nameplate.unit @@ -623,7 +608,7 @@ function NP:NamePlateCallBack(nameplate, event, unit) if nameplate.isMe then nameplate.frameType = 'PLAYER' - if NP.db.units.PLAYER.enable then + if NP.db.units.PLAYER.enable and (nameplate ~= _G.ElvNP_Test) then NP.PlayerNamePlateAnchor:ClearAllPoints() NP.PlayerNamePlateAnchor:SetParent(NP.db.units.PLAYER.useStaticPosition and _G.ElvNP_Player or nameplate) NP.PlayerNamePlateAnchor:SetAllPoints(NP.db.units.PLAYER.useStaticPosition and _G.ElvNP_Player or nameplate) @@ -654,7 +639,7 @@ function NP:NamePlateCallBack(nameplate, event, unit) nameplate.previousType = nameplate.frameType end - if NP.db.fadeIn and nameplate.frameType ~= 'PLAYER' then + if NP.db.fadeIn and (event == 'NAME_PLATE_UNIT_ADDED' and nameplate.frameType ~= 'PLAYER') then NP:PlateFade(nameplate, 1, 0, 1) end @@ -705,6 +690,15 @@ function NP:HideInterfaceOptions() end end +function NP:SetNamePlateSizes() + if InCombatLockdown() then return end + + local scale = E.global.general.UIScale + C_NamePlate_SetNamePlateSelfSize(NP.db.plateSize.personalWidth * scale, NP.db.plateSize.personalHeight * scale) + C_NamePlate_SetNamePlateEnemySize(NP.db.plateSize.enemyWidth * scale, NP.db.plateSize.enemyHeight * scale) + C_NamePlate_SetNamePlateFriendlySize(NP.db.plateSize.friendlyWidth * scale, NP.db.plateSize.friendlyHeight * scale) +end + function NP:Initialize() NP.db = E.db.nameplates @@ -726,13 +720,7 @@ function NP:Initialize() BlizzPlateManaBar:UnregisterAllEvents() end - hooksecurefunc(_G.NamePlateDriverFrame, 'UpdateNamePlateOptions', function() - local Scale = E.global.general.UIScale - C_NamePlate_SetNamePlateSelfSize(NP.db.plateSize.personalWidth * Scale, NP.db.plateSize.personalHeight * Scale) - C_NamePlate_SetNamePlateEnemySize(NP.db.plateSize.enemyWidth * Scale, NP.db.plateSize.enemyHeight * Scale) - C_NamePlate_SetNamePlateFriendlySize(NP.db.plateSize.friendlyWidth * Scale, NP.db.plateSize.friendlyHeight * Scale) - end) - + hooksecurefunc(_G.NamePlateDriverFrame, 'UpdateNamePlateOptions', NP.SetNamePlateSizes) hooksecurefunc(_G.NamePlateDriverFrame, 'SetupClassNameplateBars', function(frame) if not frame or frame:IsForbidden() then return diff --git a/ElvUI/Modules/Skins/Blizzard/LossControl.lua b/ElvUI/Modules/Skins/Blizzard/LossControl.lua index 3ccd28369384461c223b648089ae78be8a730c48..a73001179332c68f23f1d1bc3b890189da755f3b 100644 --- a/ElvUI/Modules/Skins/Blizzard/LossControl.lua +++ b/ElvUI/Modules/Skins/Blizzard/LossControl.lua @@ -29,17 +29,17 @@ function S:LossOfControlFrame() s.AbilityName:ClearAllPoints() s.AbilityName:SetPoint('BOTTOM', s, 0, -28) s.AbilityName.scrollTime = nil; - s.AbilityName:FontTemplate(E.media.normFont, 20, 'OUTLINE') + s.AbilityName:FontTemplate(nil, 20, 'OUTLINE') s.TimeLeft.NumberText:ClearAllPoints() s.TimeLeft.NumberText:SetPoint('BOTTOM', s, 4, -58) s.TimeLeft.NumberText.scrollTime = nil; - s.TimeLeft.NumberText:FontTemplate(E.media.normFont, 20, 'OUTLINE') + s.TimeLeft.NumberText:FontTemplate(nil, 20, 'OUTLINE') s.TimeLeft.SecondsText:ClearAllPoints() s.TimeLeft.SecondsText:SetPoint('BOTTOM', s, 0, -80) s.TimeLeft.SecondsText.scrollTime = nil; - s.TimeLeft.SecondsText:FontTemplate(E.media.normFont, 20, 'OUTLINE') + s.TimeLeft.SecondsText:FontTemplate(nil, 20, 'OUTLINE') -- always stop shake animation on start if s.Anim:IsPlaying() then diff --git a/ElvUI/Modules/Skins/Blizzard/Mail.lua b/ElvUI/Modules/Skins/Blizzard/Mail.lua index 0d8d6ede5b4edf9ae7d5ef35e199995891dfc818..d7c8d3b03f34e550c53bf572c2c0ba8af152ef7c 100644 --- a/ElvUI/Modules/Skins/Blizzard/Mail.lua +++ b/ElvUI/Modules/Skins/Blizzard/Mail.lua @@ -121,8 +121,8 @@ function S:MailFrame() _G.InboxPrevPageButton:SetPoint('BOTTOMLEFT', 30, 100) _G.InboxNextPageButton:SetPoint('BOTTOMRIGHT', -80, 100) - _G.InvoiceTextFontNormal:FontTemplate(E.media.normFont, 13) - _G.MailTextFontNormal:FontTemplate(E.media.normFont, 13) + _G.InvoiceTextFontNormal:FontTemplate(nil, 13) + _G.MailTextFontNormal:FontTemplate(nil, 13) _G.InvoiceTextFontNormal:SetTextColor(1, 1, 1) _G.MailTextFontNormal:SetTextColor(1, 1, 1) _G.OpenMailArithmeticLine:Kill() diff --git a/ElvUI/Modules/Skins/Blizzard/ObjectiveTracker.lua b/ElvUI/Modules/Skins/Blizzard/ObjectiveTracker.lua index a1dfaee5202f8e358707e75aefdaed7d4e84e938..edb07925074c9af87a1895592c7526de9db409f8 100644 --- a/ElvUI/Modules/Skins/Blizzard/ObjectiveTracker.lua +++ b/ElvUI/Modules/Skins/Blizzard/ObjectiveTracker.lua @@ -38,7 +38,7 @@ local function SkinItemButton(_, block) item.Cooldown:SetInside() item.Count:ClearAllPoints() item.Count:SetPoint('TOPLEFT', 1, -1) - item.Count:FontTemplate(E.media.normFont, 14, 'OUTLINE') + item.Count:FontTemplate(nil, 14, 'OUTLINE') item.Count:SetShadowOffset(5, -5) E:RegisterCooldown(item.Cooldown) item.skinned = true @@ -72,7 +72,7 @@ local function SkinProgressBars(_, _, line) if label then label:ClearAllPoints() label:SetPoint('CENTER', bar, 0, 1) - label:FontTemplate(E.media.normFont, 14, 'OUTLINE') + label:FontTemplate(nil, 14, 'OUTLINE') end if icon then diff --git a/ElvUI/Modules/Skins/Blizzard/PetBattle.lua b/ElvUI/Modules/Skins/Blizzard/PetBattle.lua index 55d4498bab2e2d3611720480d6a10af4cb253c2c..4ed773b8514508a2dc11967cfabd0b69cb2994f5 100644 --- a/ElvUI/Modules/Skins/Blizzard/PetBattle.lua +++ b/ElvUI/Modules/Skins/Blizzard/PetBattle.lua @@ -206,7 +206,7 @@ function S:PetBattleFrame() end -- move duration and change font - frame.Duration:FontTemplate(E.media.normFont, 12, 'OUTLINE') + frame.Duration:FontTemplate(nil, 12, 'OUTLINE') frame.Duration:ClearAllPoints() frame.Duration:SetPoint('TOP', frame.Icon, 'BOTTOM', 1, -4) if turnsRemaining > 0 then diff --git a/ElvUI/Modules/UnitFrames/Elements/CastBar.lua b/ElvUI/Modules/UnitFrames/Elements/CastBar.lua index 9def172649b716ed4e929f20772fd3ed0c955015..6be29f5bb9a618f5487231382f85fd65caf79482 100644 --- a/ElvUI/Modules/UnitFrames/Elements/CastBar.lua +++ b/ElvUI/Modules/UnitFrames/Elements/CastBar.lua @@ -1,8 +1,7 @@ local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB local UF = E:GetModule('UnitFrames'); -local unpack, tonumber = unpack, tonumber -local abs, min = abs, min +local unpack, tonumber, abs = unpack, tonumber, abs local CreateFrame = CreateFrame local UnitSpellHaste = UnitSpellHaste @@ -51,6 +50,7 @@ function UF:Construct_Castbar(frame, moverName) castbar.Text = castbar:CreateFontString(nil, 'OVERLAY') UF:Configure_FontString(castbar.Text) castbar.Text:SetPoint('LEFT', castbar, 'LEFT', 4, 0) + castbar.Text:SetPoint('RIGHT', castbar.Time, 'LEFT', -4, 0) castbar.Text:SetTextColor(0.84, 0.75, 0.65) castbar.Text:SetJustifyH('LEFT') castbar.Text:SetWordWrap(false) @@ -289,6 +289,8 @@ function UF:CustomCastDelayText(duration) self.Time:SetFormattedText('%.1f / %.1f |cffaf5050%s %.1f|r', abs(duration - self.max), self.max, '+', self.delay) end end + + self.Time:SetWidth(self.Time:GetStringWidth()) end function UF:CustomTimeText(duration) @@ -317,6 +319,8 @@ function UF:CustomTimeText(duration) self.Time:SetFormattedText('%.1f / %.1f', abs(duration - self.max), self.max) end end + + self.Time:SetWidth(self.Time:GetStringWidth()) end function UF:HideTicks() @@ -341,19 +345,9 @@ function UF:SetCastTicks(frame, numTicks, extraTickRatio) ticks[i]:SetWidth(frame.tickWidth) end - ticks[i]:SetHeight(frame.tickHeight) - - --[[if(ms ~= 0) then - local perc = (w / frame.max) * (ms / 1e5) - if(perc > 1) then perc = 1 end - - ticks[i]:SetWidth((w * perc) / (numTicks + extraTickRatio)) - else - ticks[i]:SetWidth(1) - end]] - ticks[i]:ClearAllPoints() ticks[i]:SetPoint('RIGHT', frame, 'LEFT', d * i, 0) + ticks[i]:SetHeight(frame.tickHeight) ticks[i]:Show() end end @@ -364,37 +358,15 @@ function UF:PostCastStart(unit) if unit == 'vehicle' then unit = 'player' end + self.unit = unit + if db.castbar.displayTarget and self.curTarget then self.Text:SetText(self.spellName..' > '..self.curTarget) end - -- Get length of Time, then calculate available length for Text - local timeWidth = self.Time:GetStringWidth() - local textWidth = self:GetWidth() - timeWidth - 10 - local textStringWidth = self.Text:GetStringWidth() - - if timeWidth == 0 or textStringWidth == 0 then - E:Delay(0.05, function() -- Delay may need tweaking - textWidth = self:GetWidth() - self.Time:GetStringWidth() - 10 - textStringWidth = self.Text:GetStringWidth() - if textWidth > 0 then self.Text:SetWidth(min(textWidth, textStringWidth)) end - end) - else - self.Text:SetWidth(min(textWidth, textStringWidth)) - end - - self.unit = unit - if self.channeling and db.castbar.ticks and unit == 'player' then local unitframe = E.global.unitframe local baseTicks = unitframe.ChannelTicks[self.spellID] - ---- Detect channeling spell and if it's the same as the previously channeled one - --if baseTicks and self.spellID == self.prevSpellCast then - -- self.chainChannel = true - --elseif baseTicks then - -- self.chainChannel = nil - -- self.prevSpellCast = self.spellID - --end if baseTicks and unitframe.ChannelTicksSize[self.spellID] and unitframe.HastedChannelTicks[self.spellID] then local tickIncRate = 1 / baseTicks diff --git a/ElvUI/Settings/Global.lua b/ElvUI/Settings/Global.lua index 5e1bee7f97dde150a4c59d690ebb61cd8dba6652..131f4a573e4dff9ae3c26e5326d30a9e4bef7938 100644 --- a/ElvUI/Settings/Global.lua +++ b/ElvUI/Settings/Global.lua @@ -3,10 +3,11 @@ local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateD --Global Settings G.general = { UIScale = 0.64, - version = 11.51, + version = 11.52, locale = E:GetLocale(), eyefinity = false, smallerWorldMap = true, + allowDistributor = false, smallerWorldMapScale = 0.9, fadeMapWhenMoving = true, mapAlphaWhenMoving = 0.2, diff --git a/ElvUI/Settings/Profile.lua b/ElvUI/Settings/Profile.lua index f3939172635c6d5b4e0e0420c45798d3f1920f0a..c467dc7cb62759fa8ce022924170830f4b48b834 100644 --- a/ElvUI/Settings/Profile.lua +++ b/ElvUI/Settings/Profile.lua @@ -23,6 +23,7 @@ P.general = { enhancedPvpMessages = true, objectiveFrameHeight = 480, objectiveFrameAutoHide = true, + objectiveFrameAutoHideInKeystone = false, bonusObjectivePosition = 'LEFT', talkingHeadFrameScale = 0.9, talkingHeadFrameBackdrop = false, diff --git a/ElvUI_OptionsUI/ActionBars.lua b/ElvUI_OptionsUI/ActionBars.lua index bf371ec9ed61e8750d2df1c24ea394a369ad097a..43a26773912c61d30929be036a1f20a43202fb6b 100644 --- a/ElvUI_OptionsUI/ActionBars.lua +++ b/ElvUI_OptionsUI/ActionBars.lua @@ -214,6 +214,7 @@ E.Options.args.actionbar = { order = 30, type = 'group', name = L["COLORS"], + disabled = function() return E.Masque or not E.private.actionbar.enable end, get = function(info) local t = E.db.actionbar[info[#info]] local d = P.actionbar[info[#info]] @@ -304,6 +305,7 @@ E.Options.args.actionbar = { type = 'group', order = 50, name = L["Text Position"], + disabled = function() return E.Masque or not E.private.actionbar.enable end, args = { countTextPosition = { type = 'select', diff --git a/ElvUI_OptionsUI/Core.lua b/ElvUI_OptionsUI/Core.lua index fe300f65976c211044b367bdd04dfecfbe141f72..bed7a4a598467fbdab519dba7a4ae8346861694f 100644 --- a/ElvUI_OptionsUI/Core.lua +++ b/ElvUI_OptionsUI/Core.lua @@ -9,7 +9,14 @@ local C, L = Engine[1], Engine[2] local _G, format, sort, tinsert, strmatch = _G, format, sort, tinsert, strmatch C.Values = { - FontFlags = { NONE = L["NONE"], OUTLINE = 'OUTLINE', MONOCHROMEOUTLINE = 'MONOCROMEOUTLINE', THICKOUTLINE = 'THICKOUTLINE' }, + FontFlags = { + NONE = L["NONE"], + OUTLINE = 'Outline', + THICKOUTLINE = 'Thick', + MONOCHROME = '|cffaaaaaaMono|r', + MONOCHROMEOUTLINE = '|cffaaaaaaMono|r Outline', + MONOCHROMETHICKOUTLINE = '|cffaaaaaaMono|r Thick', + }, FontSize = { min = 8, max = 64, step = 1 }, Strata = { BACKGROUND = 'BACKGROUND', LOW = 'LOW', MEDIUM = 'MEDIUM', HIGH = 'HIGH', DIALOG = 'DIALOG', TOOLTIP = 'TOOLTIP' }, GrowthDirection = { @@ -398,10 +405,11 @@ end --Create Profiles Table E.Options.args.profiles = ACH:Group(L["Profiles"], nil, 5, 'tab') E.Options.args.profiles.args.desc = ACH:Description(L["This feature will allow you to transfer settings to other characters."], 0) -E.Options.args.profiles.args.distributeProfile = ACH:Execute(L["Share Current Profile"], L["Sends your current profile to your target."], 1, function() if not UnitExists('target') or not UnitIsPlayer('target') or not UnitIsFriend('player', 'target') or UnitIsUnit('player', 'target') then E:Print(L["You must be targeting a player."]) return end local name, server = UnitName('target') if name and (not server or server == '') then D:Distribute(name) elseif server then D:Distribute(name, true) end end) -E.Options.args.profiles.args.distributeGlobal = ACH:Execute(L["Share Filters"], L["Sends your filter settings to your target."], 1, function() if not UnitExists('target') or not UnitIsPlayer('target') or not UnitIsFriend('player', 'target') or UnitIsUnit('player', 'target') then E:Print(L["You must be targeting a player."]) return end local name, server = UnitName('target') if name and (not server or server == '') then D:Distribute(name, false, true) elseif server then D:Distribute(name, true, true) end end) +E.Options.args.profiles.args.distributeProfile = ACH:Execute(L["Share Current Profile"], L["Sends your current profile to your target."], 1, function() if not UnitExists('target') or not UnitIsPlayer('target') or not UnitIsFriend('player', 'target') or UnitIsUnit('player', 'target') then E:Print(L["You must be targeting a player."]) return end local name, server = UnitName('target') if name and (not server or server == '') then D:Distribute(name) elseif server then D:Distribute(name, true) end end, nil, nil, nil, nil, nil, function() return not E.global.general.allowDistributor end) +E.Options.args.profiles.args.distributeGlobal = ACH:Execute(L["Share Filters"], L["Sends your filter settings to your target."], 1, function() if not UnitExists('target') or not UnitIsPlayer('target') or not UnitIsFriend('player', 'target') or UnitIsUnit('player', 'target') then E:Print(L["You must be targeting a player."]) return end local name, server = UnitName('target') if name and (not server or server == '') then D:Distribute(name, false, true) elseif server then D:Distribute(name, true, true) end end, nil, nil, nil, nil, nil, function() return not E.global.general.allowDistributor end) E.Options.args.profiles.args.exportProfile = ACH:Execute(L["Export Profile"], nil, 4, function() ExportImport_Open('export') end) E.Options.args.profiles.args.importProfile = ACH:Execute(L["Import Profile"], nil, 5, function() ExportImport_Open('import') end) +E.Options.args.profiles.args.allowDistributor = ACH:Toggle(L["Allow Sharing"], L["Both users will need this option enabled."], 6, nil, nil, nil, function() return E.global.general.allowDistributor end, function(_, value) E.global.general.allowDistributor = value; D:UpdateSettings() end) E.Options.args.profiles.args.spacer = ACH:Spacer(6) E.Options.args.profiles.args.profile = E.Libs.AceDBOptions:GetOptionsTable(E.data) diff --git a/ElvUI_OptionsUI/DataTexts.lua b/ElvUI_OptionsUI/DataTexts.lua index 59534005d3f7161f99b8aba1d76d26f99b2ce20d..ac4942631bfff9cba2d222538d82b405a435c9d2 100644 --- a/ElvUI_OptionsUI/DataTexts.lua +++ b/ElvUI_OptionsUI/DataTexts.lua @@ -93,37 +93,36 @@ local DTPanelOptions = { name = L["Tooltip"], guiInline = true, args = { - tooltipAnchor = { - order = 2, - type = 'select', - name = L["Anchor"], - width = 'double', - values = { - ANCHOR_TOP = L["ANCHOR_TOP"], - ANCHOR_RIGHT = L["ANCHOR_RIGHT"], - ANCHOR_BOTTOM = L["ANCHOR_BOTTOM"], - ANCHOR_LEFT = L["ANCHOR_LEFT"], - ANCHOR_TOPRIGHT = L["ANCHOR_TOPRIGHT"], - ANCHOR_BOTTOMRIGHT = L["ANCHOR_BOTTOMRIGHT"], - ANCHOR_TOPLEFT = L["ANCHOR_TOPLEFT"], - ANCHOR_BOTTOMLEFT = L["ANCHOR_BOTTOMLEFT"], - ANCHOR_CURSOR = L["ANCHOR_CURSOR"], - ANCHOR_CURSOR_LEFT = L["ANCHOR_CURSOR_LEFT"], - ANCHOR_CURSOR_RIGHT = L["ANCHOR_CURSOR_RIGHT"], - }, - }, tooltipXOffset = { - order = 2, + order = 1, type = 'range', name = L["X-Offset"], min = -30, max = 30, step = 1, }, tooltipYOffset = { - order = 3, + order = 2, type = 'range', name = L["Y-Offset"], min = -30, max = 30, step = 1, }, + tooltipAnchor = { + order = 3, + type = 'select', + name = L["Anchor"], + values = { + ANCHOR_TOP = L["TOP"], + ANCHOR_RIGHT = L["RIGHT"], + ANCHOR_BOTTOM = L["BOTTOM"], + ANCHOR_LEFT = L["LEFT"], + ANCHOR_TOPRIGHT = L["TOPRIGHT"], + ANCHOR_BOTTOMRIGHT = L["BOTTOMRIGHT"], + ANCHOR_TOPLEFT = L["TOPLEFT"], + ANCHOR_BOTTOMLEFT = L["BOTTOMLEFT"], + ANCHOR_CURSOR = L["CURSOR"], + ANCHOR_CURSOR_LEFT = L["CURSOR_LEFT"], + ANCHOR_CURSOR_RIGHT = L["CURSOR_RIGHT"], + }, + }, }, }, visibility = { diff --git a/ElvUI_OptionsUI/Filters.lua b/ElvUI_OptionsUI/Filters.lua index 07a009a2033a3f3dbb6c3c551c514a8d53b0a304..ee9c8c76f063a10278a42d64bf90e5712aaf9d11 100644 --- a/ElvUI_OptionsUI/Filters.lua +++ b/ElvUI_OptionsUI/Filters.lua @@ -255,7 +255,7 @@ E.Options.args.filters = { name = L["Select Spell"], type = 'select', order = 1, - width = 'double', + customWidth = 350, get = function(info) return selectedSpell or '' end, set = function(info, value) selectedSpell = (value ~= '' and value) or nil @@ -267,6 +267,7 @@ E.Options.args.filters = { name = L["Filter Search"], desc = L["Search for a spell name inside of a filter."], type = 'input', + customWidth = 200, get = function() return quickSearchText end, set = function(info,value) quickSearchText = value end, }, @@ -283,42 +284,8 @@ E.Options.args.filters = { set = function(info, value) E.global.unitframe.aurafilters[selectedFilter].type = value; UF:Update_AllFrames(); end, hidden = function() return (selectedFilter == 'Debuff Highlight' or selectedFilter == 'AuraBar Colors' or selectedFilter == 'Buff Indicator (Pet)' or selectedFilter == 'Buff Indicator (Profile)' or selectedFilter == 'Buff Indicator' or selectedFilter == 'Whitelist' or selectedFilter == 'Blacklist') end, }, - addSpell = { - order = 4, - name = L["Add SpellID"], - desc = L["Add a spell to the filter."], - type = 'input', - get = function(info) return '' end, - set = function(info, value) - value = tonumber(value) - if not value then return end - - local spellName = GetSpellInfo(value) - selectedSpell = (spellName and value) or nil - if not selectedSpell then return end - - if selectedFilter == 'Debuff Highlight' then - if not E.global.unitframe.DebuffHighlightColors[value] then - E.global.unitframe.DebuffHighlightColors[value] = { enable = true, style = 'GLOW', color = {r = 0.8, g = 0, b = 0, a = 0.85} } - end - elseif selectedFilter == 'AuraBar Colors' then - if not E.global.unitframe.AuraBarColors[value] then - E.global.unitframe.AuraBarColors[value] = E:CopyTable({}, auraBarDefaults) - end - elseif selectedFilter == 'Buff Indicator (Pet)' or selectedFilter == 'Buff Indicator (Profile)' or selectedFilter == 'Buff Indicator' then - local selectedTable = GetSelectedFilters() - if not selectedTable[value] then - selectedTable[value] = UF:AuraWatch_AddSpell(value, 'TOPRIGHT') - end - elseif not E.global.unitframe.aurafilters[selectedFilter].spells[value] then - E.global.unitframe.aurafilters[selectedFilter].spells[value] = { enable = true, priority = 0, stackThreshold = 0 } - end - - UF:Update_AllFrames() - end, - }, removeSpell = { - order = 5, + order = 4, name = L["Remove Spell"], desc = L["Remove a spell from the filter. Use the spell ID if you see the ID as part of the spell name in the filter."], type = 'select', @@ -327,6 +294,7 @@ E.Options.args.filters = { local name = (spellName and format('%s |cFF888888(%s)|r', spellName, value)) or tostring(value) return 'Remove Spell - '..name end, + customWidth = 350, get = function(info) return '' end, set = function(info, value) if not value then return end @@ -358,6 +326,41 @@ E.Options.args.filters = { end, values = SetSpellList, }, + addSpell = { + order = 5, + name = L["Add SpellID"], + desc = L["Add a spell to the filter."], + type = 'input', + customWidth = 200, + get = function(info) return '' end, + set = function(info, value) + value = tonumber(value) + if not value then return end + + local spellName = GetSpellInfo(value) + selectedSpell = (spellName and value) or nil + if not selectedSpell then return end + + if selectedFilter == 'Debuff Highlight' then + if not E.global.unitframe.DebuffHighlightColors[value] then + E.global.unitframe.DebuffHighlightColors[value] = { enable = true, style = 'GLOW', color = {r = 0.8, g = 0, b = 0, a = 0.85} } + end + elseif selectedFilter == 'AuraBar Colors' then + if not E.global.unitframe.AuraBarColors[value] then + E.global.unitframe.AuraBarColors[value] = E:CopyTable({}, auraBarDefaults) + end + elseif selectedFilter == 'Buff Indicator (Pet)' or selectedFilter == 'Buff Indicator (Profile)' or selectedFilter == 'Buff Indicator' then + local selectedTable = GetSelectedFilters() + if not selectedTable[value] then + selectedTable[value] = UF:AuraWatch_AddSpell(value, 'TOPRIGHT') + end + elseif not E.global.unitframe.aurafilters[selectedFilter].spells[value] then + E.global.unitframe.aurafilters[selectedFilter].spells[value] = { enable = true, priority = 0, stackThreshold = 0 } + end + + UF:Update_AllFrames() + end, + }, }, }, buffIndicator = { diff --git a/ElvUI_OptionsUI/General.lua b/ElvUI_OptionsUI/General.lua index 32f817fe32733cc526368f26aba11aeffb6bcf86..bf1eab994f5d026afef1f7ca12a5ea53a4d681ef 100644 --- a/ElvUI_OptionsUI/General.lua +++ b/ElvUI_OptionsUI/General.lua @@ -346,7 +346,6 @@ E.Options.args.general = { desc = L["The font that the core of the UI will use."], values = AceGUIWidgetLSMlists.font, set = function(info, value) E.db.general[info[#info]] = value; E:UpdateMedia(); E:UpdateFontTemplates(); end, - width = 'double', }, fontSize = { order = 2, @@ -396,7 +395,6 @@ E.Options.args.general = { values = AceGUIWidgetLSMlists.font, get = function(info) return E.private.general[info[#info]] end, set = function(info, value) E.private.general[info[#info]] = value; E:UpdateMedia(); E:UpdateFontTemplates(); E:StaticPopup_Show('PRIVATE_RL'); end, - width = 'double', }, replaceNameFont = { order = 8, @@ -414,7 +412,6 @@ E.Options.args.general = { values = AceGUIWidgetLSMlists.font, get = function(info) return E.private.general[info[#info]] end, set = function(info, value) E.private.general[info[#info]] = value; E:UpdateMedia(); E:UpdateFontTemplates(); E:StaticPopup_Show('PRIVATE_RL'); end, - width = 'double', }, }, }, @@ -431,7 +428,6 @@ E.Options.args.general = { name = L["Primary Texture"], desc = L["The texture that will be used mainly for statusbars."], values = AceGUIWidgetLSMlists.statusbar, - width = 'double', set = function(info, value) local previousValue = E.private.general[info[#info]] E.private.general[info[#info]] = value; @@ -452,7 +448,6 @@ E.Options.args.general = { name = L["Secondary Texture"], desc = L["This texture will get used on objects like chat windows and dropdown menus."], values = AceGUIWidgetLSMlists.statusbar, - width = 'double', set = function(info, value) E.private.general[info[#info]] = value; E:UpdateMedia() @@ -861,8 +856,15 @@ E.Options.args.general = { disabled = function() return IsAddOnLoaded('!KalielsTracker') end, set = function(info, value) E.db.general.objectiveFrameAutoHide = value; Blizzard:SetObjectiveFrameAutoHide(); end, }, - objectiveFrameHeight = { + objectiveFrameAutoHideInKeystone = { order = 32, + type = 'toggle', + name = L["Hide In Keystone"], + hidden = function() return not E.db.general.objectiveFrameAutoHide end, + set = function(info, value) E.db.general.objectiveFrameAutoHideInKeystone = value end, + }, + objectiveFrameHeight = { + order = 33, type = 'range', name = L["Objective Frame Height"], desc = L["Height of the objective tracker. Increase size to be able to see more objectives."], @@ -870,7 +872,7 @@ E.Options.args.general = { set = function(info, value) E.db.general.objectiveFrameHeight = value; Blizzard:SetObjectiveFrameHeight(); end, }, bonusObjectivePosition = { - order = 33, + order = 34, type = 'select', name = L["Bonus Reward Position"], desc = L["Position of bonus quest reward frame relative to the objective tracker."], diff --git a/ElvUI_OptionsUI/Locales/deDE.lua b/ElvUI_OptionsUI/Locales/deDE.lua index 7070500de0164f5a45d3a48c0185a3106d8a0358..154aa515bc0cc703a7db30b85217005cac208e16 100644 --- a/ElvUI_OptionsUI/Locales/deDE.lua +++ b/ElvUI_OptionsUI/Locales/deDE.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = "Server immer anzeigen" L["An X offset (in pixels) to be used when anchoring new frames."] = "X-Versatz (in Pixeln) der verwendet werden soll um neue Fenster zu ankern" L["An Y offset (in pixels) to be used when anchoring new frames."] = "Y-Versatz (in Pixeln) der verwendet werden soll um neue Fenster zu ankern" L["Anchor Point"] = "Ankerpunkt" -L["ANCHOR_CURSOR_LEFT"] = "Mausanker links" -L["ANCHOR_CURSOR_RIGHT"] = "Mausanker rechts" -L["ANCHOR_CURSOR"] = "Mausanker" +L["CURSOR_LEFT"] = "Mausanker links" +L["CURSOR_RIGHT"] = "Mausanker rechts" +L["CURSOR"] = "Mausanker" L["Announce Interrupts"] = "Unterbrechungen ankündigen" L["Announce when you interrupt a spell to the specified chat channel."] = "Melde über den angegebenen Chatkanal einen unterbrochenen Zauber." L["Any"] = "Irgendeine" @@ -454,7 +454,7 @@ L["Enabling this will check your health amount."] = "Wenn aktiviert wird dein Le L["Enabling this will check your power amount."] = "Wenn aktiviert wird dein Kraftwert überprüft." L["Enchanting"] = "Verzauberkunst" L["Enemy Aura Type"] = "Feindlicher Aurentyp" -L["Enemy Combat Toggle"] = "Im Kampf für Gegner umschalten" +L["Enemy Combat Toggle"] = "Kampf-Umschaltung (Gegner)" L["ENEMY_NPC"] = "Gegnerischer NPC" L["ENEMY_PLAYER"] = "Gegnerischer Spieler" L["Enemy"] = "Gegner" @@ -513,7 +513,7 @@ L["Frame Strata"] = "Fenster Schicht" L["Frame"] = "Fenster" L["Friend"] = "Freund" L["Friendly Aura Type"] = "Freundlicher Aurentyp" -L["Friendly Combat Toggle"] = "Im Kampf für freundliche umschalten" +L["Friendly Combat Toggle"] = "Kampf-Umschaltung (Freundlich)" L["FRIENDLY_NPC"] = "Freundlicher NPC" L["FRIENDLY_PLAYER"] = "Freundlicher Spieler" L["Friendly"] = "Freundlich" @@ -1660,7 +1660,7 @@ L["UNIT_NAMEPLATES_SHOW_ENEMY_MINIONS"] = "Diener"; L["UNIT_NAMEPLATES_SHOW_ENEMY_MINUS"] = "Trivial"; L["UNIT_NAMEPLATES_TYPE_1"] = "Namensschilder überlappen"; L["UNIT_NAMEPLATES_TYPE_2"] = "Namensschilder stapeln"; -L["UNIT_NAMEPLATES_TYPES"] = "Bewegungstyp für Namensplaketten"; +L["UNIT_NAMEPLATES_TYPES"] = "Bewegungstyp"; L["VOID_STORAGE"] = "Leerenlager"; L["WORLD_MAP"] = "Weltkarte"; L["XPBAR_LABEL"] = "EP-Balken"; diff --git a/ElvUI_OptionsUI/Locales/enUS.lua b/ElvUI_OptionsUI/Locales/enUS.lua index a18744c315adbab1765926479ed89de1c16240fa..f817565a9b4f5a31fc406eab1085a62a2ad5cf37 100644 --- a/ElvUI_OptionsUI/Locales/enUS.lua +++ b/ElvUI_OptionsUI/Locales/enUS.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = true L["An X offset (in pixels) to be used when anchoring new frames."] = true L["An Y offset (in pixels) to be used when anchoring new frames."] = true L["Anchor Point"] = true -L["ANCHOR_CURSOR_LEFT"] = true -L["ANCHOR_CURSOR_RIGHT"] = true -L["ANCHOR_CURSOR"] = true +L["CURSOR_LEFT"] = true +L["CURSOR_RIGHT"] = true +L["CURSOR"] = true L["Announce Interrupts"] = true L["Announce when you interrupt a spell to the specified chat channel."] = true L["Any"] = true diff --git a/ElvUI_OptionsUI/Locales/esMX.lua b/ElvUI_OptionsUI/Locales/esMX.lua index b3b31698f67b3b0269ce81b9e119976793edeb83..a72b0f9f66782eb4fe41fda9ba3a7cea65b90def 100644 --- a/ElvUI_OptionsUI/Locales/esMX.lua +++ b/ElvUI_OptionsUI/Locales/esMX.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = "Mostrar siempre el reino" L["An X offset (in pixels) to be used when anchoring new frames."] = true L["An Y offset (in pixels) to be used when anchoring new frames."] = true L["Anchor Point"] = "Punto de Fijación" -L["ANCHOR_CURSOR_LEFT"] = true -L["ANCHOR_CURSOR_RIGHT"] = true -L["ANCHOR_CURSOR"] = true +L["CURSOR_LEFT"] = "Izquierda del cursor" +L["CURSOR_RIGHT"] = "Derecha del cursor" +L["CURSOR"] = true L["Announce Interrupts"] = "Anunciar Interrupciones" L["Announce when you interrupt a spell to the specified chat channel."] = "Anunciar cuando interrumpas un hechizo en el canal especificado." L["Any"] = "Alguna" diff --git a/ElvUI_OptionsUI/Locales/frFR.lua b/ElvUI_OptionsUI/Locales/frFR.lua index 797d45bd9d9456beff9680e3a995c1d40a2e51bd..f7e005ef0ca419305ca140df8490c987a6f979ef 100644 --- a/ElvUI_OptionsUI/Locales/frFR.lua +++ b/ElvUI_OptionsUI/Locales/frFR.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = true L["An X offset (in pixels) to be used when anchoring new frames."] = "Un décalage X (en pixels) à utiliser lors d'un ancrage d'une nouvelle fenêtre." L["An Y offset (in pixels) to be used when anchoring new frames."] = "Un décalage Y (en pixels) à utiliser lors d'un ancrage d'une nouvelle fenêtre." L["Anchor Point"] = "Point d'ancrage" -L["ANCHOR_CURSOR_LEFT"] = true -L["ANCHOR_CURSOR_RIGHT"] = true -L["ANCHOR_CURSOR"] = true +L["CURSOR_LEFT"] = true +L["CURSOR_RIGHT"] = true +L["CURSOR"] = true L["Announce Interrupts"] = "Annoncer les interruptions" L["Announce when you interrupt a spell to the specified chat channel."] = "Annonce quand vous interrompez un sort dans le canal de chat spécifié." L["Any"] = true diff --git a/ElvUI_OptionsUI/Locales/itIT.lua b/ElvUI_OptionsUI/Locales/itIT.lua index ff2754792eff047e15e4bff356f6d898cb677cc1..65df0ea69c122b2adf660a056f2a5725ccbcaf86 100644 --- a/ElvUI_OptionsUI/Locales/itIT.lua +++ b/ElvUI_OptionsUI/Locales/itIT.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = true L["An X offset (in pixels) to be used when anchoring new frames."] = true L["An Y offset (in pixels) to be used when anchoring new frames."] = true L["Anchor Point"] = true -L["ANCHOR_CURSOR_LEFT"] = true -L["ANCHOR_CURSOR_RIGHT"] = true -L["ANCHOR_CURSOR"] = true +L["CURSOR_LEFT"] = true +L["CURSOR_RIGHT"] = true +L["CURSOR"] = true L["Announce Interrupts"] = true L["Announce when you interrupt a spell to the specified chat channel."] = true L["Any"] = true diff --git a/ElvUI_OptionsUI/Locales/koKR.lua b/ElvUI_OptionsUI/Locales/koKR.lua index b0d96b126409cbac01b360645a6c78b16513acde..0b8b08be0e93a920ed2661d4840e44341daf6746 100644 --- a/ElvUI_OptionsUI/Locales/koKR.lua +++ b/ElvUI_OptionsUI/Locales/koKR.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = true L["An X offset (in pixels) to be used when anchoring new frames."] = "기준 프레임에서 가로로 얼마만큼 떨어져 있을지를 결정합니다." L["An Y offset (in pixels) to be used when anchoring new frames."] = "기준 프레임에서 세로로 얼마만큼 떨어져 있을지를 결정합니다." L["Anchor Point"] = "기준점" -L["ANCHOR_CURSOR_LEFT"] = true -L["ANCHOR_CURSOR_RIGHT"] = true -L["ANCHOR_CURSOR"] = true +L["CURSOR_LEFT"] = true +L["CURSOR_RIGHT"] = true +L["CURSOR"] = true L["Announce Interrupts"] = "차단 성공시 알림" L["Announce when you interrupt a spell to the specified chat channel."] = "주문 차단에 성공하면 여기에서 설정한 채널로 차단성공을 알립니다." L["Any"] = true diff --git a/ElvUI_OptionsUI/Locales/ptBR.lua b/ElvUI_OptionsUI/Locales/ptBR.lua index d5b0f92f0e8744c8e07aac89ac7ae4bba8ea7c90..f3f15b6c2e42033860c5c1bc54f33fcb7c6f991f 100644 --- a/ElvUI_OptionsUI/Locales/ptBR.lua +++ b/ElvUI_OptionsUI/Locales/ptBR.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = "Sempre Mostrar Reino" L["An X offset (in pixels) to be used when anchoring new frames."] = "Um Deslocamento Eixo-X (em pixels) para ser usada quando ancorando novos quadros." L["An Y offset (in pixels) to be used when anchoring new frames."] = "Um Deslocamento Eixo-Y (em pixels) para ser usada quando ancorando novos quadros." L["Anchor Point"] = "Ponto de Fixação" -L["ANCHOR_CURSOR_LEFT"] = "FIXAÇÃO_CURSOR_ESQUERDO" -L["ANCHOR_CURSOR_RIGHT"] = "FIXAÇÃO_CURSOR_DIREITO" -L["ANCHOR_CURSOR"] = "FIXAÇÃO_CURSOR" +L["CURSOR_LEFT"] = "Esquerdo do cursor" +L["CURSOR_RIGHT"] = "Direito do cursor" +L["CURSOR"] = true L["Announce Interrupts"] = "Anunciar Interrupções" L["Announce when you interrupt a spell to the specified chat channel."] = "Anunciar quando interromper um feitiço para o canal de bate-papo especificado." L["Any"] = "Qualquer" diff --git a/ElvUI_OptionsUI/Locales/ruRU.lua b/ElvUI_OptionsUI/Locales/ruRU.lua index 95781a8d86edb7d74d5263047ea9b7a2588da26f..82dc062d86526d4eb527c2f718f874a6e59dfb2f 100644 --- a/ElvUI_OptionsUI/Locales/ruRU.lua +++ b/ElvUI_OptionsUI/Locales/ruRU.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = "Всегда отображать сервер" L["An X offset (in pixels) to be used when anchoring new frames."] = "Отступ по оси X (в пикселях) при фиксации новой рамки." L["An Y offset (in pixels) to be used when anchoring new frames."] = "Отступ по оси Y (в пикселях) при фиксации новой рамки." L["Anchor Point"] = "Точка фиксации" -L["ANCHOR_CURSOR_LEFT"] = "Слева" -L["ANCHOR_CURSOR_RIGHT"] = "Справа" -L["ANCHOR_CURSOR"] = "По центру" +L["CURSOR_LEFT"] = "Слева" +L["CURSOR_RIGHT"] = "Справа" +L["CURSOR"] = "По центру" L["Announce Interrupts"] = "Объявлять о прерываниях" L["Announce when you interrupt a spell to the specified chat channel."] = "Объявлять о прерванных Вами заклинаниях в указанный канал чата." L["Any"] = "Любой" diff --git a/ElvUI_OptionsUI/Locales/zhCN.lua b/ElvUI_OptionsUI/Locales/zhCN.lua index 86f7a851cc91bfdb0beb53a9ce664ed95a9ff361..0fb70e2654ceb7031dc3c93feb00e16ba18de6c4 100644 --- a/ElvUI_OptionsUI/Locales/zhCN.lua +++ b/ElvUI_OptionsUI/Locales/zhCN.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = "总是显示服务器" L["An X offset (in pixels) to be used when anchoring new frames."] = "锚定新框架时的X偏移(像素)" L["An Y offset (in pixels) to be used when anchoring new frames."] = "锚定新框架时的Y偏移(像素)" L["Anchor Point"] = "定位方向" -L["ANCHOR_CURSOR_LEFT"] = "鼠标指针左侧" -L["ANCHOR_CURSOR_RIGHT"] = "鼠标指针右侧" -L["ANCHOR_CURSOR"] = "鼠标指针" +L["CURSOR_LEFT"] = "鼠标指针左侧" +L["CURSOR_RIGHT"] = "鼠标指针右侧" +L["CURSOR"] = "鼠标指针" L["Announce Interrupts"] = "打断通告" L["Announce when you interrupt a spell to the specified chat channel."] = "在指定聊天频道通知打断信息" L["Any"] = "任意" diff --git a/ElvUI_OptionsUI/Locales/zhTW.lua b/ElvUI_OptionsUI/Locales/zhTW.lua index 2543902791e1b17714ac7a3743ee44f5a001cf26..082c72fec4eaeff3c9d3bb22ad3f282866efb244 100644 --- a/ElvUI_OptionsUI/Locales/zhTW.lua +++ b/ElvUI_OptionsUI/Locales/zhTW.lua @@ -65,9 +65,9 @@ L["Always Show Realm"] = "總是顯示伺服器" L["An X offset (in pixels) to be used when anchoring new frames."] = "錨定新框架時的X軸偏移(單位:像素)" L["An Y offset (in pixels) to be used when anchoring new frames."] = "錨定新框架時的Y軸偏移(單位:像素)" L["Anchor Point"] = "定位方向" -L["ANCHOR_CURSOR_LEFT"] = "指針的左邊" -L["ANCHOR_CURSOR_RIGHT"] = "指針的右邊" -L["ANCHOR_CURSOR"] = "指針" +L["CURSOR_LEFT"] = "指針的左邊" +L["CURSOR_RIGHT"] = "指針的右邊" +L["CURSOR"] = "指針" L["Announce Interrupts"] = "斷法通告" L["Announce when you interrupt a spell to the specified chat channel."] = "在指定對話頻道通知斷法信息." L["Any"] = "任意" diff --git a/ElvUI_OptionsUI/Tooltip.lua b/ElvUI_OptionsUI/Tooltip.lua index b8dcc83c482b779580c54c70462737dcd4c76b5d..860e6f23619364cb054f800f1ab65e2ae1213456 100644 --- a/ElvUI_OptionsUI/Tooltip.lua +++ b/ElvUI_OptionsUI/Tooltip.lua @@ -30,7 +30,7 @@ E.Options.args.tooltip.args.showElvUIUsers = ACH:Toggle(L["Show ElvUI Users"], L E.Options.args.tooltip.args.itemCount = ACH:Select(L["Item Count"], L["Display how many of a certain item you have in your possession."], 11, { BAGS_ONLY = L["Bags Only"], BANK_ONLY = L["Bank Only"], BOTH = L["Both"], NONE = L["NONE"] }) E.Options.args.tooltip.args.colorAlpha = ACH:Range(L["OPACITY"], nil, 12, { isPercent = true, min = 0, max = 1, step = 0.01 }) E.Options.args.tooltip.args.cursorAnchor = ACH:Toggle(L["Cursor Anchor"], L["Should tooltip be anchored to mouse cursor"], 13) -E.Options.args.tooltip.args.cursorAnchorType = ACH:Select(L["Cursor Anchor Type"], nil, 14, { ANCHOR_CURSOR = L["ANCHOR_CURSOR"], ANCHOR_CURSOR_LEFT = L["ANCHOR_CURSOR_LEFT"], ANCHOR_CURSOR_RIGHT = L["ANCHOR_CURSOR_RIGHT"] }, nil, nil, nil, nil, nil, function() return (not E.db.tooltip.cursorAnchor) end) +E.Options.args.tooltip.args.cursorAnchorType = ACH:Select(L["Cursor Anchor Type"], nil, 14, { ANCHOR_CURSOR = L["CURSOR"], ANCHOR_CURSOR_LEFT = L["CURSOR_LEFT"], ANCHOR_CURSOR_RIGHT = L["CURSOR_RIGHT"] }, nil, nil, nil, nil, nil, function() return (not E.db.tooltip.cursorAnchor) end) E.Options.args.tooltip.args.cursorAnchorX = ACH:Range(L["Cursor Anchor Offset X"], nil, 15, { min = -128, max = 128, step = 1 }, nil, nil, nil, nil, function() return (not E.db.tooltip.cursorAnchor) or (E.db.tooltip.cursorAnchorType == 'ANCHOR_CURSOR') end) E.Options.args.tooltip.args.cursorAnchorY = ACH:Range(L["Cursor Anchor Offset Y"], nil, 16, { min = -128, max = 128, step = 1 }, nil, nil, nil, nil, function() return (not E.db.tooltip.cursorAnchor) or (E.db.tooltip.cursorAnchorType == 'ANCHOR_CURSOR') end) diff --git a/ElvUI_OptionsUI/UnitFrames.lua b/ElvUI_OptionsUI/UnitFrames.lua index 52139f48df0d9683b80044d678c1259188f13737..0cbc407d22c757faab7666e74d3427c41eedfb56 100644 --- a/ElvUI_OptionsUI/UnitFrames.lua +++ b/ElvUI_OptionsUI/UnitFrames.lua @@ -1372,7 +1372,6 @@ local function CreateCustomTextGroup(unit, objectName) order = 4, name = L["Font"], values = _G.AceGUIWidgetLSMlists.font, - width = 'double', }, size = { order = 5, @@ -2953,7 +2952,6 @@ local function GetOptionsTable_GeneralGroup(updateFunc, groupName, numUnits) name = L["Smart Aura Position"], desc = L["Will show Buffs in the Debuff position when there are no Debuffs active, or vice versa."], values = smartAuraPositionValues, - width = 'double', } end @@ -3024,7 +3022,6 @@ local function GetOptionsTable_GeneralGroup(updateFunc, groupName, numUnits) desc = L["Growth direction from the first unitframe."], type = 'select', values = growthDirectionValues, - width = 'double', }, numGroups = { order = 7, @@ -3120,7 +3117,6 @@ local function GetOptionsTable_GeneralGroup(updateFunc, groupName, numUnits) desc = L["Set the order that the group will sort."], customWidth = 250, type = 'select', - width = 'double', values = { CLASS = L["CLASS"], CLASSROLE = L["CLASS"]..' & '..L["ROLE"],