GenGen.decimalLength=ACH:Range(L["Decimal Length"],L["Controls the amount of decimals used in values displayed on elements like NamePlates and UnitFrames."],2,{min=0,max=4,step=1},nil,nil,function(info,value)E.db.general[info[#info]]=valueE:BuildPrefixValues()E:StaggeredUpdateAll()end)
GenGen.tagUpdateRate=ACH:Range(L["Tag Update Rate"],L["Maximum tick rate allowed for tag updates per second."],3,{min=0.05,max=0.5,step=0.01},nil,nil,function(info,value)E.db.general[info[#info]]=value;E:TagUpdateRate(value)end)
GenGen.smoothingAmount=ACH:Range(L["Smoothing Amount"],L["Controls the speed at which smoothed bars will be updated."],4,{isPercent=true,min=0.2,max=0.8,softMax=0.75,softMin=0.25,step=0.01},nil,nil,function(info,value)E.db.general[info[#info]]=valueE:SetSmoothingAmount(value)end)
GenGen.taintLog=ACH:Toggle(L["Log Taints"],L["Send ADDON_ACTION_BLOCKED errors to the Lua Error frame. These errors are less important in most cases and will not effect your game performance. Also a lot of these errors cannot be fixed. Please only report these errors if you notice a Defect in gameplay."],5)
GenGen.messageRedirect=ACH:Select(L["Chat Output"],L["This selects the Chat Frame to use as the output of ElvUI messages."],7,function()returnGetChatWindowInfo()end)
GenGen.numberPrefixStyle=ACH:Select(L["Unit Prefix Style"],L["The unit prefixes you want to use when values are shortened in ElvUI. This is mostly used on UnitFrames."],8,{TCHINESE='萬, 億',CHINESE='万, 亿',ENGLISH='K, M, B',GERMAN='Tsd, Mio, Mrd',KOREAN='천, 만, 억',METRIC='k, M, G'},nil,nil,nil,function(info,value)E.db.general[info[#info]]=valueE:BuildPrefixValues()E:StaggeredUpdateAll()end)
GenGen.textureGroup.args.normTex=ACH:SharedMediaStatusbar(L["Primary Texture"],L["The texture that will be used mainly for statusbars."],1,nil,nil,function(info,value)E.private.general[info[#info]]=valueE:UpdateMedia()E:UpdateStatusBars()end)
GenGen.textureGroup.args.glossTex=ACH:SharedMediaStatusbar(L["Secondary Texture"],L["This texture will get used on objects like chat windows and dropdown menus."],2,nil,nil,function(info,value)E.private.general[info[#info]]=valueE:UpdateMedia()E:UpdateFrameTemplates()end)
GenGen.textureGroup.args.applyTextureToAll=ACH:Execute(L["Copy Primary Texture"],L["Replaces the StatusBar texture setting on Unitframes and Nameplates with the primary texture."],3,function()E.db.unitframe.statusbar,E.db.nameplates.statusbar=E.private.general.normTex,E.private.general.normTexUF:Update_StatusBars()NP:ConfigureAll()end)
GenGen.automation.args.interruptAnnounce=ACH:Select(L["Announce Interrupts"],L["Announce when you interrupt a spell to the specified chat channel."],1,{NONE=L["None"],SAY=L["Say"],YELL=L["Yell"],PARTY=L["Party Only"],RAID=L["Party / Raid"],RAID_ONLY=L["Raid Only"],EMOTE=L["CHAT_MSG_EMOTE"]},nil,nil,nil,function(info,value)E.db.general[info[#info]]=valueifvalue=='NONE'thenM:UnregisterEvent('COMBAT_LOG_EVENT_UNFILTERED')elseM:RegisterEvent('COMBAT_LOG_EVENT_UNFILTERED')endend)
GenGen.automation.args.autoRepair=ACH:Select(L["Auto Repair"],L["Automatically repair using the following method when visiting a merchant."],5,{NONE=L["None"],GUILD=notE.ClassicandL["Guild"]ornil,PLAYER=L["Player"]})
Fonts.general.args.font=ACH:SharedMediaFont(L["Default Font"],L["The font that the core of the UI will use."],1)
Fonts.general.args.fontSize=ACH:Range(L["Font Size"],L["Set the font size for everything in UI. Note: This doesn't effect somethings that have their own separate options (UnitFrame Font, Datatext Font, ect..)"],2,C.Values.FontSize)
Fonts.general.args.applyFontToAll=ACH:Execute(L["Apply Font To All"],L["Applies the font and font size settings throughout the entire user interface. Note: Some font size settings will be skipped due to them having a smaller font size by default."],4,function()E:StaticPopup_Show('APPLY_FONT_WARNING')end)
Fonts.blizzard.args.replaceBlizzFonts=ACH:Toggle(L["Replace Blizzard Fonts"],L["Replaces the default Blizzard fonts on various panels and frames with the fonts chosen in the Media section of the ElvUI Options. NOTE: Any font that inherits from the fonts ElvUI usually replaces will be affected as well if you disable this. Enabled by default."],1)
Fonts.blizzard.args.blizzardFontSize=ACH:Toggle(L["Blizzard Font Size"],L["Font Size as defined by Blizzard."],2,nil,nil,nil,nil,function(info,value)E.private.general[info[#info]]=valueE:UpdateBlizzardFonts()end,function()returnnotE.private.general.replaceBlizzFontsend)
Fonts.blizzard.args.noFontScale=ACH:Toggle(L["No Font Scale"],L["Dont scale by Font Size as base."],3,nil,nil,nil,nil,function(info,value)E.private.general[info[#info]]=valueE:UpdateBlizzardFonts()end,function()returnnotE.private.general.replaceBlizzFontsend)
Fonts.combat.args.dmgfont=ACH:SharedMediaFont(L["Combat Font"],L["The font that combat text will use. |cffFF3333WARNING: This requires a game restart or re-log for this change to take effect.|r"],1,nil,nil,nil,function()returnE.eyefinityorE.ultrawideornotE.private.general.replaceCombatFontend)
Fonts.combat.args.replaceCombatText=ACH:Toggle(L["Replace Text on Me"],nil,3,nil,nil,nil,nil,nil,function()returnnotE.private.general.replaceCombatFontend)
Fonts.names.args.namefont=ACH:SharedMediaFont(L["Name Font"],L["The font that appears on the text above players heads. |cffFF3333WARNING: This requires a game restart or re-log for this change to take effect.|r"],1,nil,nil,nil,function()returnnotE.private.general.replaceNameFontend)
Cosmetic.bordersGroup.args.uiThinBorders=ACH:Toggle(L["Thin Borders"],L["The Thin Border Theme option will change the overall apperance of your UI. Using Thin Border Theme is a slight performance increase over the traditional layout."],1,nil,nil,nil,function()returnE.private.general.pixelPerfectend,function(_,value)E.private.general.pixelPerfect=valueE.ShowPopup=trueend)
Cosmetic.bordersGroup.args.ufThinBorders=ACH:Toggle(L["Unitframe Thin Borders"],L["Use thin borders on certain unitframe elements."],2,nil,nil,nil,function()returnE.db.unitframe.thinBordersend,function(_,value)E.db.unitframe.thinBorders=valueE.ShowPopup=trueend)
Cosmetic.bordersGroup.args.npThinBorders=ACH:Toggle(L["Nameplate Thin Borders"],L["Use thin borders on certain nameplate elements."],3,nil,nil,nil,function()returnE.db.nameplates.thinBordersend,function(_,value)E.db.nameplates.thinBorders=valueE.ShowPopup=trueend)
Cosmetic.bordersGroup.args.cropIcon=ACH:Toggle(L["Crop Icons"],L["This is for Customized Icons in your Interface/Icons folder."],4,true,nil,nil,function(info)localvalue=E.db.general[info[#info]]ifvalue==2thenreturntrueelseifvalue==1thenreturnnilelsereturnfalseendend,function(info,value)E.db.general[info[#info]]=(valueand2)or(value==niland1)or0E.ShowPopup=trueend)
Cosmetic.cosmeticBottomPanel.args.bottomPanel=ACH:Toggle(L["Enable"],L["Display a panel across the bottom of the screen. This is for cosmetic only."],1,nil,nil,nil,nil,function(info,value)E.db.general[info[#info]]=valueLO:UpdateBottomPanel()end)
Cosmetic.cosmeticTopPanel.args.topPanel=ACH:Toggle(L["Enable"],L["Display a panel across the top of the screen. This is for cosmetic only."],1,nil,nil,nil,nil,function(info,value)E.db.general[info[#info]]=valueLO:UpdateTopPanel()end)
Cosmetic.afkGroup.args.afk=ACH:Toggle(L["Enable"],L["When you go AFK display the AFK screen."],1,nil,nil,nil,nil,function(info,value)E.db.general[info[#info]]=valueAFK:Toggle()end)
Cosmetic.afkGroup.args.afkSpin=ACH:Toggle(L["Camera Spin"],L["Toggle the camera spin on the AFK screen."],2,nil,nil,nil,nil,function(info,value)E.db.general[info[#info]]=valueend)
Cosmetic.afkGroup.args.afkChat=ACH:Toggle(L["Chat"],L["Display messages from Guild and Whisper on AFK screen.\nThis chat can be dragged around (position will be saved)."],3,nil,nil,nil,nil,function(info,value)E.db.general[info[#info]]=valueAFK:Toggle()end)
Cosmetic.chatBubblesGroup.args.warning=ACH:Description(L["|cffFF3333This does not work in Instances or Garrisons!|r"],11,'medium')
Cosmetic.chatBubblesGroup.args.chatBubbles=ACH:Select(L["Chat Bubbles Style"],L["Skin the blizzard chat bubbles."],12,{backdrop=L["Skin Backdrop"],nobackdrop=L["Remove Backdrop"],backdrop_noborder=L["Skin Backdrop (No Borders)"],disabled=L["Disable"]})
Cosmetic.chatBubblesGroup.args.chatBubbleName=ACH:Toggle(L["Chat Bubble Names"],L["Display the name of the unit on the chat bubble. This will not work if backdrop is disabled or when you are in an instance."],13)
blizz.general.args.hideErrorFrame=ACH:Toggle(L["Hide Error Text"],L["Hides the red error text at the top of the screen while in combat."],1)
blizz.general.args.enhancedPvpMessages=ACH:Toggle(L["Enhanced PVP Messages"],L["Display battleground messages in the middle of the screen."],2)
blizz.general.args.disableTutorialButtons=ACH:Toggle(L["Disable Tutorial Buttons"],L["Disables the tutorial button found on some frames."],3,nil,nil,nil,function(info)returnE.global.general[info[#info]]end,function(info,value)E.global.general[info[#info]]=valueE.ShowPopup=trueend)
blizz.general.args.raidUtility=ACH:Toggle(L["RAID_CONTROL"],L["Enables the ElvUI Raid Control panel."],4,nil,nil,nil,function(info)returnE.private.general[info[#info]]end,function(info,value)E.private.general[info[#info]]=valueE.ShowPopup=trueend)
blizz.general.args.resurrectSound=ACH:Toggle(L["Resurrect Sound"],L["Enable to hear sound if you receive a resurrect."],6)
blizz.general.args.loot=ACH:Toggle(L["Loot Frame"],L["Enable/Disable the loot frame."],7,nil,nil,nil,function(info)returnE.private.general[info[#info]]end,function(info,value)E.private.general[info[#info]]=valueE.ShowPopup=trueend)
blizz.general.args.hideZoneText=ACH:Toggle(L["Hide Zone Text"],L["Enable/Disable the on-screen zone text when you change zones."],8,nil,nil,nil,function(info)returnE.db.general[info[#info]]end,function(info,value)E.db.general[info[#info]]=value;M:ZoneTextToggle()end)
blizz.lootRollGroup.args.lootRoll=ACH:Toggle(L["Enable"],L["Enable/Disable the loot roll frame."],0,nil,nil,nil,function(info)returnE.private.general[info[#info]]end,function(info,value)E.private.general[info[#info]]=value;E.ShowPopup=trueend)
blizz.itemLevelInfo.args.displayInspectInfo=ACH:Toggle(L["Display Inspect Info"],L["Shows item level of each item, enchants, and gems when inspecting another player."],1)
blizz.itemLevelInfo.args.displayCharacterInfo=ACH:Toggle(L["Display Character Info"],L["Shows item level of each item, enchants, and gems on the character page."],2,nil,nil,nil,nil,nil,function()returnE:IsAddOnEnabled('DejaCharacterStats')end)
blizz.objectiveFrameGroup.args.objectiveFrameAutoHide=ACH:Toggle(L["Auto Hide"],L["Automatically hide the objective frame during boss or arena fights."],1,nil,nil,nil,nil,function(info,value)E.db.general[info[#info]]=valueBL:ObjectiveTracker_AutoHide()end,nil,not(E.RetailorE.Cata))
blizz.objectiveFrameGroup.args.objectiveFrameAutoHideInKeystone=ACH:Toggle(L["Hide In Keystone"],L["Automatically hide the objective frame during boss fights while you are running a key."],2,nil,nil,nil,nil,nil,nil,function()returnnotE.RetailornotE.db.general.objectiveFrameAutoHideend)
blizz.objectiveFrameGroup.args.objectiveFrameHeight=ACH:Range(L["Objective Frame Height"],L["Height of the objective tracker. Increase size to be able to see more objectives."],3,{min=400,max=ceil(E.screenHeight),step=1},nil,nil,function(info,value)E.db.general[info[#info]]=valueBL:ObjectiveTracker_SetHeight()end,nil,notE.Cata)
blizz.objectiveFrameGroup.args.bonusObjectivePosition=ACH:Select(L["Bonus Reward Position"],L["Position of bonus quest reward frame relative to the objective tracker."],4,{RIGHT=L["Right"],LEFT=L["Left"],AUTO=L["Automatic"]},nil,nil,nil,nil,nil,notE.Retail)
blizz.guildBank.args.ilvlGroup.args.itemLevelThreshold=ACH:Range(L["Item Level Threshold"],L["The minimum item level required for it to be shown."],4,{min=1,max=500,step=1},nil,nil,function(info,value)E.db.general.guildBank[info[#info]]=valueBL:GuildBank_Update()end,nil,function()returnnotE.db.general.guildBank.itemLevelend)
General.totems.args.size.desc=function()returnE.db.general.totems.keepSizeRatioandL["The size of the Totem buttons."]orL["The width of the totem buttons."]end
General.alternativePowerGroup.args.enable=ACH:Toggle(L["Enable"],L["Replace Blizzard's Alternative Power Bar"],1,nil,nil,nil,nil,function(info,value)E.db.general.altPowerBar[info[#info]]=valueE.ShowPopup=trueend)
General.alternativePowerGroup.args.textGroup.args.textFormat=ACH:Select(L["Text Format"],nil,4,{NONE=L["None"],NAME=L["Name"],NAMEPERC=L["Name: Percent"],NAMECURMAX=L["Name: Current / Max"],NAMECURMAXPERC=L["Name: Current / Max - Percent"],PERCENT=L["Percent"],CURMAX=L["Current / Max"],CURMAXPERC=L["Current / Max - Percent"]})