1+ local E , _ , V , P , G = unpack (ElvUI )
2+ local L = E .Libs .ACL :GetLocale (" ElvUI" , E .global .general .locale )
3+ local AS = E :GetModule (" AddOnSkins" )
4+ local Embed = E :GetModule (" EmbedSystem" )
5+
6+ local pairs , select = pairs , select
7+ local format = string.format
8+
9+ local GetAddOnInfo = GetAddOnInfo
10+
11+ local SUPPORTED_ADDONS_STRING = " "
12+
13+ AS .addonList = {
14+ [" _NPCScan" ] = " 5.4.8.6" ,
15+ [" AckisRecipeList" ] = " 3.0.5" ,
16+ [" ACP" ] = " 3.4.9" ,
17+ [" AtlasLoot" ] = " 7.07.03" ,
18+ [" BattlePetBreedID" ] = " 1.1.1b" ,
19+ [" Clique" ] = " 50400-1.0.0" ,
20+ [" DBM" ] = " 5.4.19-33" ,
21+ [" MacroToolkit" ] = " 5.4.0.4" ,
22+ [" Overachiever" ] = " 0.73" ,
23+ [" PetTracker" ] = " 5.4.26" ,
24+ [" PlateBuffs" ] = " r228" ,
25+ [" Postal" ] = " 3.5.2" ,
26+ [" Recount" ] = " r1269" ,
27+ [" Skada" ] = " 1.4-19" ,
28+ [" Spy" ] = " 3.1.6" ,
29+ [" WeakAuras" ] = " 2.0.8" ,
30+ }
31+
32+ function AS :RegisterAddonOption (AddonName , options )
33+ if select (6 , GetAddOnInfo (AddonName )) == " MISSING" then return end
34+
35+ options .args .skins .args .addOns .args [AddonName ] = {
36+ type = " toggle" ,
37+ name = AddonName ,
38+ desc = L [" TOGGLESKIN_DESC" ],
39+ hidden = function () return not AS :CheckAddOn (AddonName ) end
40+ }
41+ end
42+
43+ function AS :InsertOptions ()
44+ if not E .Options .args .elvuiPlugins then
45+ E .Options .args .elvuiPlugins = {
46+ order = 50 ,
47+ type = " group" ,
48+ name = " |cff00fcceE|r|cffe5e3e3lvUI |r|cff00fcceP|r|cffe5e3e3lugins|r" ,
49+ args = {}
50+ }
51+ end
52+
53+ for addonName , addonVersion in pairs (AS .addonList ) do
54+ local line = format (" %s |cffff7d0a%s|r" , addonName , addonVersion )
55+
56+ SUPPORTED_ADDONS_STRING = SUPPORTED_ADDONS_STRING .. " \n " .. line
57+ end
58+
59+ E .Options .args .elvuiPlugins .args .addOnSkins = {
60+ type = " group" ,
61+ name = " |cff00fcceA|r|cffe5e3e3ddOn |r|cff00fcceS|r|cffe5e3e3kins|r" ,
62+ childGroups = " tab" ,
63+ args = {
64+ skins = {
65+ order = 1 ,
66+ type = " group" ,
67+ name = L [" Skins" ],
68+ childGroups = " tab" ,
69+ args = {
70+ addOns = {
71+ order = 1 ,
72+ type = " group" ,
73+ name = L [" AddOn Skins" ],
74+ get = function (info ) return E .private .addOnSkins [info [# info ]] end ,
75+ set = function (info , value ) E .private .addOnSkins [info [# info ]] = value E :StaticPopup_Show (" PRIVATE_RL" ) end ,
76+ args = {}
77+ },
78+ blizzard = {
79+ order = 2 ,
80+ type = " group" ,
81+ name = L [" Blizzard Skins" ],
82+ get = function (info ) return E .private .addOnSkins [info [# info ]] end ,
83+ set = function (info , value ) E .private .addOnSkins [info [# info ]] = value E :StaticPopup_Show (" PRIVATE_RL" ) end ,
84+ args = {
85+ Blizzard_WorldStateFrame = {
86+ type = " toggle" ,
87+ name = L [" WorldState Frame" ],
88+ desc = L [" TOGGLESKIN_DESC" ]
89+ }
90+ }
91+ }
92+ }
93+ },
94+ misc = {
95+ order = 2 ,
96+ type = " group" ,
97+ name = L [" MISCELLANEOUS" ],
98+ childGroups = " tab" ,
99+ args = {
100+ skada = {
101+ order = 1 ,
102+ type = " group" ,
103+ name = " Skada" ,
104+ get = function (info ) return E .db .addOnSkins .skada [info [# info ]] end ,
105+ set = function (info , value ) E .db .addOnSkins .skada [info [# info ]] = value Skada :ApplySettings () end ,
106+ disabled = function () return not AS :CheckAddOn (" Skada" ) end ,
107+ args = {
108+ titleBackdrop = {
109+ order = 1 ,
110+ type = " toggle" ,
111+ name = L [" Title Backdrop" ]
112+ },
113+ titleTemplate = {
114+ order = 2 ,
115+ type = " select" ,
116+ name = L [" Title Template" ],
117+ values = {
118+ [" Default" ] = L [" DEFAULT" ],
119+ [" Transparent" ] = L [" Transparent" ]
120+ },
121+ disabled = function () return not E .db .addOnSkins .skada .titleBackdrop end
122+ },
123+ titleTemplateGloss = {
124+ order = 3 ,
125+ type = " toggle" ,
126+ name = L [" Title Gloss Template" ],
127+ disabled = function () return E .db .addOnSkins .skada .titleTemplate == " Transparent" or not E .db .addOnSkins .skada .titleBackdrop end
128+ },
129+ spacer = {
130+ order = 4 ,
131+ type = " description" ,
132+ name = " "
133+ },
134+ backdrop = {
135+ order = 5 ,
136+ type = " toggle" ,
137+ name = L [" Backdrop" ]
138+ },
139+ template = {
140+ order = 6 ,
141+ type = " select" ,
142+ name = L [" Template" ],
143+ values = {
144+ [" Default" ] = L [" DEFAULT" ],
145+ [" Transparent" ] = L [" Transparent" ]
146+ },
147+ disabled = function () return not E .db .addOnSkins .skada .backdrop end
148+ },
149+ templateGloss = {
150+ order = 7 ,
151+ type = " toggle" ,
152+ name = L [" Gloss Template" ],
153+ disabled = function () return E .db .addOnSkins .skada .template == " Transparent" or not E .db .addOnSkins .skada .backdrop end
154+ }
155+ }
156+ },
157+ dbm = {
158+ order = 2 ,
159+ type = " group" ,
160+ name = " DBM" ,
161+ get = function (info ) return E .db .addOnSkins .dbm [info [# info ]] end ,
162+ set = function (info , value ) E .db .addOnSkins .dbm [info [# info ]] = value DBM .Bars :ApplyStyle () DBM .BossHealth :UpdateSettings () end ,
163+ disabled = function () return not AS :CheckAddOn (" DBM-Core" ) end ,
164+ args = {
165+ barHeight = {
166+ order = 1 ,
167+ type = " range" ,
168+ name = L [" Bar Height" ],
169+ min = 6 , max = 60 ,
170+ step = 1
171+ },
172+ spacer = {
173+ order = 2 ,
174+ type = " description" ,
175+ name = " "
176+ },
177+ font = {
178+ order = 3 ,
179+ type = " select" ,
180+ dialogControl = " LSM30_Font" ,
181+ name = L [" Font" ],
182+ values = AceGUIWidgetLSMlists .font
183+ },
184+ fontSize = {
185+ order = 4 ,
186+ type = " range" ,
187+ name = L [" FONT_SIZE" ],
188+ min = 6 , max = 22 , step = 1
189+ },
190+ fontOutline = {
191+ order = 5 ,
192+ type = " select" ,
193+ name = L [" Font Outline" ],
194+ values = {
195+ [" NONE" ] = L [" NONE" ],
196+ [" OUTLINE" ] = " OUTLINE" ,
197+ [" MONOCHROMEOUTLINE" ] = " MONOCROMEOUTLINE" ,
198+ [" THICKOUTLINE" ] = " THICKOUTLINE"
199+ }
200+ }
201+ }
202+ },
203+ weakAura = {
204+ order = 3 ,
205+ type = " group" ,
206+ name = " WeakAuras" ,
207+ get = function (info ) return E .db .addOnSkins .weakAura [info [# info ]] end ,
208+ set = function (info , value ) E .db .addOnSkins .weakAura [info [# info ]] = value E :StaticPopup_Show (" PRIVATE_RL" ) end ,
209+ disabled = function () return not AS :CheckAddOn (" WeakAuras" ) end ,
210+ args = {
211+ auraBar = {
212+ order = 1 ,
213+ type = " toggle" ,
214+ name = L [" AuraBar Backdrop" ]
215+ },
216+ iconCooldown = {
217+ order = 2 ,
218+ type = " toggle" ,
219+ name = L [" WeakAura Cooldowns" ]
220+ }
221+ }
222+ }
223+ }
224+ },
225+ embed = {
226+ order = 3 ,
227+ type = " group" ,
228+ name = L [" Embed Settings" ],
229+ get = function (info ) return E .db .addOnSkins .embed [info [# info ]] end ,
230+ set = function (info , value ) E .db .addOnSkins .embed [info [# info ]] = value Embed :EmbedUpdate () end ,
231+ args = {
232+ desc = {
233+ order = 1 ,
234+ type = " description" ,
235+ name = L [" Settings to control Embedded AddOns\n\n Available Embeds: Omen | Skada | Recount" ]
236+ },
237+ embedType = {
238+ order = 2 ,
239+ type = " select" ,
240+ name = L [" Embed Type" ],
241+ values = {
242+ [" DISABLE" ] = L [" DISABLE" ],
243+ [" SINGLE" ] = L [" Single" ],
244+ [" DOUBLE" ] = L [" Double" ]
245+ }
246+ },
247+ rightChatPanel = {
248+ order = 3 ,
249+ type = " toggle" ,
250+ name = L [" Embed into Right Chat Panel" ],
251+ disabled = function () return E .db .addOnSkins .embed .embedType == " DISABLE" end
252+ },
253+ belowTopTab = {
254+ order = 4 ,
255+ type = " toggle" ,
256+ name = L [" Embed Below Top Tab" ],
257+ disabled = function () return E .db .addOnSkins .embed .embedType == " DISABLE" end
258+ },
259+ spacer = {
260+ order = 5 ,
261+ type = " description" ,
262+ name = " "
263+ },
264+ leftWindow = {
265+ order = 6 ,
266+ type = " select" ,
267+ name = L [" Left Panel" ],
268+ values = {
269+ [" Recount" ] = " Recount" ,
270+ [" Omen" ] = " Omen" ,
271+ [" Skada" ] = " Skada"
272+ },
273+ disabled = function () return E .db .addOnSkins .embed .embedType == " DISABLE" end
274+ },
275+ rightWindow = {
276+ order = 7 ,
277+ type = " select" ,
278+ name = L [" Right Panel" ],
279+ values = {
280+ [" Recount" ] = " Recount" ,
281+ [" Omen" ] = " Omen" ,
282+ [" Skada" ] = " Skada"
283+ },
284+ disabled = function () return E .db .addOnSkins .embed .embedType ~= " DOUBLE" end
285+ },
286+ hideChat = {
287+ order = 8 ,
288+ type = " select" ,
289+ name = L [" Hide Chat Frame" ],
290+ values = Embed :GetChatWindowInfo (),
291+ disabled = function () return E .db .addOnSkins .embed .embedType == " DISABLE" end
292+ },
293+ leftWindowWidth = {
294+ order = 9 ,
295+ type = " range" ,
296+ name = L [" Embed Left Window Width" ],
297+ min = 100 , max = 300 , step = 1 ,
298+ disabled = function () return E .db .addOnSkins .embed .embedType == " DISABLE" end
299+ }
300+ }
301+ },
302+ supportedAddOns = {
303+ order = 4 ,
304+ type = " group" ,
305+ name = L [" Supported AddOns" ],
306+ args = {
307+ text = {
308+ order = 1 ,
309+ type = " description" ,
310+ name = SUPPORTED_ADDONS_STRING
311+ }
312+ }
313+ }
314+ }
315+ }
316+
317+ for addonName in pairs (AS .addonList ) do
318+ AS :RegisterAddonOption (addonName , E .Options .args .elvuiPlugins .args .addOnSkins )
319+ end
320+ end
0 commit comments