local SLE , T , E , L , V , P , G = unpack ( ElvUI_SLE )
local M = SLE.Media
local ACH = E.Libs . ACH
local C
local ApplyAllDefaults = {
font = ' PT Sans Narrow ' ,
fontSize = 12 ,
fontOutline = ' OUTLINE '
}
local function getFont ( info )
local db = info [ # info - 2 ] == ' scenarioStage ' and E.db . sle.media . fonts [ info [ # info - 2 ] ] [ info [ # info - 1 ] ] [ info [ # info ] ] or E.db . sle.media . fonts [ info [ # info - 1 ] ] [ info [ # info ] ]
return db
end
local function setFont ( info , value )
if info [ # info - 2 ] == ' scenarioStage ' then
E.db . sle.media . fonts [ info [ # info - 2 ] ] [ info [ # info - 1 ] ] [ info [ # info ] ] = value
else
E.db . sle.media . fonts [ info [ # info - 1 ] ] [ info [ # info ] ] = value
end
E : UpdateMedia ( )
end
local function GetFontOptions ( groupName , order , hideOutline )
local config = ACH : Group ( groupName , nil , order , nil , function ( info ) return getFont ( info ) end , function ( info , value ) setFont ( info , value ) end , function ( ) return not E.private . general.replaceBlizzFonts end )
config.guiInline = true
config.args . font = ACH : SharedMediaFont ( L [ " Font " ] , nil , 1 )
config.args . fontSize = ACH : Range ( L [ " Font Size " ] , nil , 2 , C.Values . FontSize )
config.args . fontOutline = ACH : FontFlags ( L [ " Font Outline " ] , L [ " Set the font outline. " ] , 3 , nil , nil , nil , nil , function ( ) return hideOutline and hideOutline or false end )
-- config.args.fontOutlineWarning = ACH:Description(L["|cffFF0000Warning: "], 4, nil, nil, nil, nil, nil, width, function() return not hideOutline and true or false end) --* Maybe add this again for gossip text but under advanced option selected?
return config
end
local function ApplyAll ( )
E.PopupDialogs [ " SLE_APPLY_FONT_WARNING " ] . font = ApplyAllDefaults.font
E.PopupDialogs [ " SLE_APPLY_FONT_WARNING " ] . fontSize = ApplyAllDefaults.fontSize
E.PopupDialogs [ " SLE_APPLY_FONT_WARNING " ] . fontOutline = ApplyAllDefaults.fontOutline
E : StaticPopup_Show ( " SLE_APPLY_FONT_WARNING " )
end
local function configTable ( )
if not SLE.initialized then return end
C = unpack ( E.Config )
E.Options . args.sle . args.media = ACH : Group ( L [ " Media " ] , nil , 20 , ' tab ' , nil , nil )
local Media = E.Options . args.sle . args.media . args
Media.enable = ACH : Toggle ( L [ " Enable " ] , nil , 1 , nil , nil , nil , function ( info ) return E.private . sle.media [ info [ # info ] ] end , function ( info , value ) E.private . sle.media [ info [ # info ] ] = value E : StaticPopup_Show ( ' PRIVATE_RL ' ) end )
--* Objective Tracker Tab
local ObjectiveTracker = ACH : Group ( L [ " Objective Tracker " ] , nil , 10 , nil , nil , nil , function ( ) return not E.private . sle.media . enable or not E.private . general.replaceBlizzFonts end )
Media.objectiveTracker = ObjectiveTracker
ObjectiveTracker.args . objectiveHeader = GetFontOptions ( L [ " Category Headers " ] , 1 )
ObjectiveTracker.args . objectiveHeader.args . description = ACH : Description ( format ( ' %s%s|r ' , E : RGBToHex ( 1 , 0.82 , 0 ) , L [ " The header text of each block/section of the objective tracker. For example, \" Campaign \" & \" Quests \" that break the tracker into a sections. " ] ) , 5 )
ObjectiveTracker.args . objective = GetFontOptions ( L [ " Tracker Entries " ] , 2 )
ObjectiveTracker.args . scenarioStage = ACH : Group ( L [ " Scenario Stage Block " ] , nil , 10 , nil )
ObjectiveTracker.args . scenarioStage.guiInline = true
ObjectiveTracker.args . scenarioStage.args . HeaderText = GetFontOptions ( L [ " Header " ] , 1 )
ObjectiveTracker.args . scenarioStage.args . TimerText = GetFontOptions ( L [ " Timer " ] , 2 )
ObjectiveTracker.args . example = ACH : Description ( nil , 20 , nilfontSize , [[Interface\AddOns\ElvUI_SLE\media\options\ObjectiveTracker]] , nil , 256 , 256 , 256 )
--* Misc Tab
local MiscTexts = ACH : Group ( L [ " Misc Texts " ] , nil , 15 , nil , nil , nil , function ( ) return not E.private . sle.media . enable or not E.private . general.replaceBlizzFonts end )
Media.misc = MiscTexts
MiscTexts.args . mail = GetFontOptions ( L [ " Mail Text " ] , 1 )
MiscTexts.args . questFontSuperHuge = GetFontOptions ( L [ " Banner Big Text " ] , 3 )
--* Apply To All
local ApplyToAll = ACH : Group ( L [ " Apply Font To All " ] , nil , 20 , nil , function ( info ) return ApplyAllDefaults [ info [ # info ] ] end , function ( info , value ) ApplyAllDefaults [ info [ # info ] ] = value end , function ( ) return not E.private . sle.media . enable or not E.private . general.replaceBlizzFonts end )
Media.applyAll = ApplyToAll
ApplyToAll.args . font = ACH : SharedMediaFont ( L [ " Font " ] , nil , 1 , nil , nil , nil )
ApplyToAll.args . fontSize = ACH : Range ( L [ " Font Size " ] , nil , 2 , C.Values . FontSize )
ApplyToAll.args . fontOutline = ACH : FontFlags ( L [ " Font Outline " ] , L [ " Set the font outline. " ] , 3 )
ApplyToAll.args . apply = ACH : Execute ( L [ " Apply Font To All " ] , nildesc , 4 , function ( ) ApplyAll ( ) end )
end
tinsert ( SLE.Configs , configTable )