Quantcast

Options

Darthpred [07-11-14 - 16:53]
Options
Filename
ElvUI_SLE/options/autorelease_c.lua
ElvUI_SLE/options/backgrounds_c.lua
ElvUI_SLE/options/characterframe_c.lua
ElvUI_SLE/options/chat_c.lua
ElvUI_SLE/options/core_c.lua
ElvUI_SLE/options/datatexts_c.lua
ElvUI_SLE/options/dev_c.lua
ElvUI_SLE/options/equipmanager_c.lua
ElvUI_SLE/options/exprepbar_c.lua
ElvUI_SLE/options/farm_c.lua
ElvUI_SLE/options/help_c.lua
ElvUI_SLE/options/load_options.xml
ElvUI_SLE/options/loot_c.lua
ElvUI_SLE/options/marks_c.lua
ElvUI_SLE/options/minimap_c.lua
ElvUI_SLE/options/nameplates_c.lua
ElvUI_SLE/options/tooltip_c.lua
ElvUI_SLE/options/uibuttons_c.lua
ElvUI_SLE/options/unitframes_c.lua
ElvUI_SLE/options/vehicle_c.lua
diff --git a/ElvUI_SLE/options/autorelease_c.lua b/ElvUI_SLE/options/autorelease_c.lua
new file mode 100644
index 0000000..2c0bbd6
--- /dev/null
+++ b/ElvUI_SLE/options/autorelease_c.lua
@@ -0,0 +1,30 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local function configTable()
+--Main options group
+E.Options.args.sle.args.options.args.general.args.pvpautorelease = {
+	type = "group",
+    name = L["PvP Auto Release"],
+    order = 5,
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["PvP Auto Release"],
+		},
+		intro = {
+			order = 2,
+			type = "description",
+			name = L["Automatically release body when killed inside a battleground."],
+		},
+		enable = {
+			order = 3,
+			type = "toggle",
+			name = L["Enable"],
+			get = function(info) return E.db.sle.pvpautorelease end,
+			set = function(info, value) E.db.sle.pvpautorelease = value; end
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/backgrounds_c.lua b/ElvUI_SLE/options/backgrounds_c.lua
new file mode 100644
index 0000000..421bf9b
--- /dev/null
+++ b/ElvUI_SLE/options/backgrounds_c.lua
@@ -0,0 +1,160 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local BG = E:GetModule('SLE_BackGrounds')
+local function configTable()
+local drop = {
+	--Group name = {short name, order}
+	["Bottom BG"] = {"bottom", 1},
+	["Left BG"] = {"left", 2},
+	["Right BG"] = {"right", 3},
+	["Actionbar BG"] = {"action", 4},
+}
+
+--Options for additional background frames. Main group
+E.Options.args.sle.args.datatext.args.backgrounds = {
+	type = "group",
+	name = L["Backgrounds"],
+	order = 3,
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["Additional Background Panels"],
+		},
+		intro = {
+			order = 2,
+			type = "description",
+			name = L["BG_DESC"]
+		},
+		enabled = {
+			order = 3,
+			type = "toggle",
+			name = L["Enable"],
+			desc = L["Show/Hide this frame."],
+			get = function(info) return E.private.sle.backgrounds end,
+			set = function(info, value) E.private.sle.backgrounds = value; E:StaticPopup_Show("PRIVATE_RL") end
+		},
+		Reset = {
+			order = 4,
+			type = 'execute',
+			name = L['Restore Defaults'],
+			desc = L["Reset these options to defaults"],
+			disabled = function() return not E.private.sle.backgrounds end,
+			func = function() E:GetModule('SLE'):Reset(nil, nil, nil, true) end,
+		},
+		spacerreset = {
+			order = 5,
+			type = 'description',
+			name = "",
+		},
+		bottom_enabled = {
+			order = 6,
+			type = "toggle",
+			name = L["Bottom BG"],
+			desc = L["Show/Hide this frame."],
+			disabled = function() return not E.private.sle.backgrounds end,
+			get = function(info) return E.db.sle.backgrounds.bottom.enabled end,
+			set = function(info, value) E.db.sle.backgrounds.bottom.enabled = value; BG:FramesVisibility() end
+		},
+		left_enabled = {
+			order = 7,
+			type = "toggle",
+			name = L["Left BG"],
+			desc = L["Show/Hide this frame."],
+			disabled = function() return not E.private.sle.backgrounds end,
+			get = function(info) return E.db.sle.backgrounds.left.enabled end,
+			set = function(info, value) E.db.sle.backgrounds.left.enabled = value; BG:FramesVisibility() end
+		},
+		spacer = {
+			order = 8,
+			type = "description",
+			name = "",
+		},
+		right_enabled = {
+			order = 9,
+			type = "toggle",
+			name = L["Right BG"],
+			desc = L["Show/Hide this frame."],
+			disabled = function() return not E.private.sle.backgrounds end,
+			get = function(info) return E.db.sle.backgrounds.right.enabled end,
+			set = function(info, value) E.db.sle.backgrounds.right.enabled = value; BG:FramesVisibility() end
+		},
+		action_enabled = {
+			order = 10,
+			type = "toggle",
+			name = L["Actionbar BG"],
+			desc = L["Show/Hide this frame."],
+			disabled = function() return not E.private.sle.backgrounds end,
+			get = function(info) return E.db.sle.backgrounds.action.enabled end,
+			set = function(info, value) E.db.sle.backgrounds.action.enabled = value; BG:FramesVisibility() end
+		},
+	}
+}
+
+--Subgroups
+for k,v in pairs(drop) do
+	E.Options.args.sle.args.datatext.args.backgrounds.args[v[1]] = {
+		type = "group",
+		name = L[k],
+		order = v[2],
+		get = function(info) return E.db.sle.backgrounds[v[1]][ info[#info] ] end,
+		disabled = function() return not E.db.sle.backgrounds[v[1]].enabled or not E.private.sle.backgrounds end,
+		args = {
+			width = { --setting width (obviously)
+				order = 1,
+				type = "range",
+				name = L['Width'],
+				desc = L["Sets width of the frame"],
+				min = 50, max = E.screenwidth, step = 1,
+				set = function(info, value) E.db.sle.backgrounds[v[1]].width = value; BG:FramesSize() end,
+			},
+			height = {
+				order = 2,
+				type = "range",
+				name = L['Height'],
+				desc = L["Sets height of the frame"],
+				min = 30, max = E.screenheight/2, step = 1,
+				set = function(info, value) E.db.sle.backgrounds[v[1]].height = value; BG:FramesSize() end,
+			},
+			spacer = { --Empty slot for making sliders move to next line
+				order = 3,
+				type = "description",
+				name = "",
+			},
+			--Setting custom texture for those who like it
+			texture = {
+				order = 6,
+				type = 'input',
+				width = 'full',
+				name = L["Texture"],
+				desc = L["Set the texture to use in this frame.  Requirements are the same as the chat textures."],
+				set = function(info, value)
+					E.db.sle.backgrounds[v[1]].texture = value
+					E:UpdateMedia()
+					BG:UpdateTex()
+				end,
+			},
+			template = {
+				order = 7,
+				type = "select",
+				name = L["Backdrop Template"],
+				desc = L["Change the template used for this backdrop."],
+				get = function(info) return E.db.sle.backgrounds[v[1]].template end,
+				set = function(info, value) E.db.sle.backgrounds[v[1]].template = value; BG:UpdateFrames() end,
+				values = {
+					['Default'] = L["Default"],
+					['Transparent'] = L["Transparent"],
+				},
+			},
+			pethide = {
+				order = 8,
+				type = "toggle",
+				name = L["Hide in Pet Batlle"],
+				desc = L["Show/Hide this frame during Pet Battles."],
+				set = function(info, value) E.db.sle.backgrounds[v[1]].pethide = value; BG:RegisterHide() end
+			},
+		},
+	}
+end
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/characterframe_c.lua b/ElvUI_SLE/options/characterframe_c.lua
new file mode 100644
index 0000000..223b7d6
--- /dev/null
+++ b/ElvUI_SLE/options/characterframe_c.lua
@@ -0,0 +1,370 @@
+local E, L, V, P, G, _ = unpack(ElvUI);
+local CFO = E:GetModule('CharacterFrameOptions')
+
+local function configTable()
+	E.Options.args.sle.args.characterframeoptions = {
+		type = 'group',
+		name = L["Armory Mode"],
+		order = 6,
+		childGroups = 'tab',
+		args = {
+			intro = {
+				order = -1,
+				type = 'description',
+				name = L['Test Description'],
+			},
+			characterframe = {
+				order = 2,
+				type = 'group',
+				name = L['Character Frame'],
+				args = {
+					header = {
+						order = 1,
+						type = "header",
+						name = L["Character Frame Options"],
+					},
+					intro = {
+						order = 2,
+						type = 'description',
+						name = L['CFO_DESC'],
+					},
+					enable = {
+						order = 3,
+						type = "toggle",
+						name = L["Enable"],
+						desc = L["Enable/Disable Character Frame Options"],
+						get = function(info) return E.private.sle.characterframeoptions.enable end,
+						set = function(info, value) E.private.sle.characterframeoptions.enable = value; E:StaticPopup_Show("PRIVATE_RL") end
+					},
+					decoration = {
+						type = "group",
+						name = L["Decoration"],
+						order = 55,
+						disabled = function() return not E.private.sle.characterframeoptions.enable end,
+						args = {
+							normalgradient = {
+								order = 1,
+								type = 'toggle',
+								name = L["Show Equipment Gradients"],
+								desc = L["Shows gradient effect for all equipment slots."],
+								get = function(info) return E.db.sle.characterframeoptions.shownormalgradient end,
+								set = function(info, value) E.db.sle.characterframeoptions.shownormalgradient = value; CFO:ChangeGradiantVisibility(); end,
+							},
+							errorgradient = {
+								order = 2,
+								type = 'toggle',
+								name = L["Show Error Gradients"],
+								desc = L["Highlights equipment slot if an error has been found."],
+								disabled = function() return not E.private.sle.characterframeoptions.enable or not E.db.sle.characterframeoptions.shownormalgradient end,
+								get = function(info) return E.db.sle.characterframeoptions.showerrorgradient end,
+								set = function(info, value) E.db.sle.characterframeoptions.showerrorgradient = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							bgimage = {
+								order = 3,
+								type = 'toggle',
+								name = L["Show Background Image"],
+								get = function(info) return E.db.sle.characterframeoptions.showimage end,
+								set = function(info, value) E.db.sle.characterframeoptions.showimage = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							dropdown = {
+								type = 'select',
+								name = L['Background picture'],
+								order = 4,
+								disabled = function() return not E.db.sle.characterframeoptions.showimage end,
+								values = {
+									['SPACE'] = 'Space',
+									['ALLIANCE'] = FACTION_ALLIANCE,
+									['HORDE'] = FACTION_HORDE,
+									['CUSTOM'] = L["Custom"],
+									["EMPIRE"] = "The Empire",
+									["CASTLE"] = "Castle",
+								},
+								get = function() return E.db.sle.characterframeoptions.image.dropdown end,
+								set = function(_, value)
+									E.db.sle.characterframeoptions.image.dropdown = value; CFO:ArmoryFrame_DataSetting();
+								end,
+
+							},
+							custom = {
+								order = 5,
+								type = 'input',
+								width = 'full',
+								name = L["Texture"],
+								desc = L["Set the texture to use in this frame. Requirements are the same as the chat textures."],
+								disabled = function() return E.db.sle.characterframeoptions.image.dropdown ~= "CUSTOM" or not E.db.sle.characterframeoptions.showimage end,
+								get = function() return E.db.sle.characterframeoptions.image.custom end,
+								set = function(info, value)
+									E.db.sle.characterframeoptions.image.custom = value;
+									CFO:ArmoryFrame_DataSetting();
+								end,
+							},
+						},
+					},
+					itemlevel = {
+						type = "group",
+						name = STAT_AVERAGE_ITEM_LEVEL,
+						order = 66,
+						disabled = function() return not E.private.sle.characterframeoptions.enable end,
+						args = {
+							show = {
+								order = 3,
+								type = "toggle",
+								name = L["Show Item Level"],
+								get = function(info) return E.db.sle.characterframeoptions.itemlevel.show end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemlevel.show = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							fontGroup = {
+								order = 5,
+								type = 'group',
+								guiInline = true,
+								name = L['Font'],
+								args = {
+									font = {
+										type = "select", dialogControl = 'LSM30_Font',
+										order = 1,
+										--name = L["Fonts"],
+										name = L["Font"],
+										desc = L["The font that the item level will use."],
+										values = AceGUIWidgetLSMlists.font,
+										get = function(info) return E.db.sle.characterframeoptions.itemlevel.font end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemlevel.font = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+									fontSize = {
+										order = 2,
+										name = L["Font Size"],
+										desc = L["Set the font size that the item level will use."],
+										type = "range",
+										min = 6, max = 22, step = 1,
+										get = function(info) return E.db.sle.characterframeoptions.itemlevel.fontSize end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemlevel.fontSize = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+									fontOutline = {
+										order = 3,
+										name = L["Font Outline"],
+										desc = L["Set the font outline that the item level will use."],
+										type = "select",
+										values = {
+											['NONE'] = L['None'],
+											['OUTLINE'] = 'OUTLINE',
+											['MONOCHROME'] = 'MONOCHROME',
+											['MONOCHROMEOUTLINE'] = 'MONOCROMEOUTLINE',
+											['THICKOUTLINE'] = 'THICKOUTLINE',
+										},
+										get = function(info) return E.db.sle.characterframeoptions.itemlevel.fontOutline end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemlevel.fontOutline = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+								},
+							},
+						},
+					},
+					itemdurabilty = {
+						type = "group",
+						name = DURABILITY,
+						order = 77,
+						disabled = function() return not E.private.sle.characterframeoptions.enable end,
+						args = {
+							show = {
+								order = 3,
+								type = "toggle",
+								name = L["Show Durability"],
+								get = function(info) return E.db.sle.characterframeoptions.itemdurability.show end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemdurability.show = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							fontGroup = {
+								order = 5,
+								type = 'group',
+								guiInline = true,
+								name = L['Font'],
+								args = {
+									font = {
+										type = "select", dialogControl = 'LSM30_Font',
+										order = 1,
+										name = L["Font"],
+										desc = L["The font that the item durability will use."],
+										values = AceGUIWidgetLSMlists.font,
+										get = function(info) return E.db.sle.characterframeoptions.itemdurability.font end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemdurability.font = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+									fontSize = {
+										order = 2,
+										name = L["Font Size"],
+										desc = L["Set the font size that the item durability will use."],
+										type = "range",
+										min = 6, max = 22, step = 1,
+										get = function(info) return E.db.sle.characterframeoptions.itemdurability.fontSize end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemdurability.fontSize = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+									fontOutline = {
+										order = 3,
+										name = L["Font Outline"],
+										desc = L["Set the font outline that the item durability will use."],
+										type = "select",
+										values = {
+											['NONE'] = L['None'],
+											['OUTLINE'] = 'OUTLINE',
+											['MONOCHROME'] = 'MONOCHROME',
+											['MONOCHROMEOUTLINE'] = 'MONOCROMEOUTLINE',
+											['THICKOUTLINE'] = 'THICKOUTLINE',
+										},
+										get = function(info) return E.db.sle.characterframeoptions.itemdurability.fontOutline end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemdurability.fontOutline = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+								},
+							},
+						},
+					},
+					itemenchant = {
+						type = "group",
+						name = L["Enchanting"],
+						order = 88,
+						disabled = function() return not E.private.sle.characterframeoptions.enable end,
+						args = {
+							show = {
+								order = 1,
+								type = "toggle",
+								name = L["Show Enchants"],
+								desc = L["Show the enchantment effect near the enchanted item"],
+								get = function(info) return E.db.sle.characterframeoptions.itemenchant.show end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemenchant.show = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							mouseover = {
+								order = 2,
+								type = "toggle",
+								name = L['Mouse Over'],
+								desc = L["Show the enchantment effect near the enchanted item (not the item itself) when mousing over."],
+								disabled = function() return not E.db.sle.characterframeoptions.itemenchant.show or not E.private.sle.characterframeoptions.enable end,
+								get = function(info) return E.db.sle.characterframeoptions.itemenchant.mouseover end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemenchant.mouseover = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							showwarning = {
+								order = 3,
+								type = "toggle",
+								name = L["Show Warning"],
+								get = function(info) return E.db.sle.characterframeoptions.itemenchant.showwarning end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemenchant.showwarning = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							warningsize = {
+								order = 4,
+								name = L["Warning Size"],
+								desc = L["Set the icon size that the warning notification will use."],
+								type = "range",
+								min = 8, max = 18, step = 1,
+								get = function(info) return E.db.sle.characterframeoptions.itemenchant.warningSize end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemenchant.warningSize = value; CFO:ResizeErrorIcon(); end,
+							},
+							fontGroup = {
+								order = 5,
+								type = 'group',
+								guiInline = true,
+								name = L['Font'],
+								args = {
+									font = {
+										type = "select", dialogControl = 'LSM30_Font',
+										order = 1,
+										name = L["Font"],
+										desc = L["The font that the enchant notification will use."],
+										values = AceGUIWidgetLSMlists.font,
+										get = function(info) return E.db.sle.characterframeoptions.itemenchant.font end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemenchant.font = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+									fontSize = {
+										order = 2,
+										name = L["Font Size"],
+										desc = L["Set the font size that the enchant notification will use."],
+										type = "range",
+										min = 6, max = 22, step = 1,
+										get = function(info) return E.db.sle.characterframeoptions.itemenchant.fontSize end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemenchant.fontSize = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+									fontOutline = {
+										order = 3,
+										name = L["Font Outline"],
+										desc = L["Set the font outline that the enchant notification will use."],
+										type = "select",
+										values = {
+											['NONE'] = L['None'],
+											['OUTLINE'] = 'OUTLINE',
+											['MONOCHROME'] = 'MONOCHROME',
+											['MONOCHROMEOUTLINE'] = 'MONOCROMEOUTLINE',
+											['THICKOUTLINE'] = 'THICKOUTLINE',
+										},
+										get = function(info) return E.db.sle.characterframeoptions.itemenchant.fontOutline end,
+										set = function(info, value) E.db.sle.characterframeoptions.itemenchant.fontOutline = value; CFO:ArmoryFrame_DataSetting(); end,
+									},
+								},
+							},
+						},
+					},
+					itemgem = {
+						type = "group",
+						name = L["Gem Sockets"],
+						order = 99,
+						disabled = function() return not E.private.sle.characterframeoptions.enable end,
+						args = {
+							show = {
+								order = 1,
+								type = "toggle",
+								name = L["Show Gems"],
+								desc = L["Show gem slots near the item"],
+								get = function(info) return E.db.sle.characterframeoptions.itemgem.show end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemgem.show = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							showwarning = {
+								order = 2,
+								type = "toggle",
+								name = L["Show Warning"],
+								get = function(info) return E.db.sle.characterframeoptions.itemgem.showwarning end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemgem.showwarning = value; CFO:ArmoryFrame_DataSetting(); end,
+							},
+							warningsize = {
+								order = 3,
+								name = L["Warning Size"],
+								desc = L["Set the icon size that the warning notification will use."],
+								type = "range",
+								min = 8, max = 18, step = 1,
+								get = function(info) return E.db.sle.characterframeoptions.itemgem.warningSize end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemgem.warningSize = value; CFO:ResizeErrorIcon(); end,
+							},
+							socketsize = {
+								order = 4,
+								name = L["Socket Size"],
+								desc = L["Set the size of sockets to show."],
+								type = "range",
+								min = 10, max = 18, step = 1,
+								get = function(info) return E.db.sle.characterframeoptions.itemgem.socketSize end,
+								set = function(info, value) E.db.sle.characterframeoptions.itemgem.socketSize = value; CFO:ResizeErrorIcon(); end,
+							},
+						},
+					},
+				},
+			},
+			inspectframe = {
+				order = 2,
+				type = 'group',
+				name = L['Inspect Frame'],
+				args = {
+					header = {
+						order = 1,
+						type = "header",
+						name = L["Inspect Frame Options"],
+					},
+					intro = {
+						order = 2,
+						type = 'description',
+						name = L['IFO_DESC'],
+					},
+					enable = {
+						order = 3,
+						type = "toggle",
+						name = L["Enable"],
+						desc = L["Enable/Disable Inspect Frame Options"],
+						get = function(info) return E.private.sle.inspectframeoptions.enable end,
+						set = function(info, value) E.private.sle.inspectframeoptions.enable = value; E:StaticPopup_Show("PRIVATE_RL") end
+					},
+				},
+			},
+		},
+	}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/chat_c.lua b/ElvUI_SLE/options/chat_c.lua
new file mode 100644
index 0000000..4175d30
--- /dev/null
+++ b/ElvUI_SLE/options/chat_c.lua
@@ -0,0 +1,53 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local CH = E:GetModule("Chat")
+local function configTable()
+
+E.Options.args.sle.args.options.args.general.args.chat = {
+	order = 7,
+	type = "group",
+	name = L["Chat"],
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["Chat"],
+		},
+		editboxhistory = {
+			order = 2,
+			type = "range",
+			name = L["Chat Editbox History"],
+			desc = L["Amount of messages to save. Set to 0 to disable."],
+			min = 0, max = 20, step = 1,
+			get = function(info) return E.db.chat.editboxhistory end,
+			set = function(info, value)	E.db.chat.editboxhistory = value; end,
+		},
+		guildmaster = {
+			order = 3,
+			type = "toggle",
+			name = "Guild Master Icon",
+			desc = [[Show an icon near your Guild Master's messages in chat.
+Will not affect messages in chat history and possibly some messages right after your loading screen disappears on login.]],
+			get = function(info) return E.private.sle.guildmaster end,
+			set = function(info, value)	E.private.sle.guildmaster = value; CH:GMIconUpdate() end,
+		},
+		historyreset = {
+			order = 4,
+			type = 'execute',
+			name = "Reset Chat History",
+			desc = "Will delete all messages from chat history added prior clicking the button.",
+			disabled = function() return not E.db.chat.chatHistory end,
+			func = function() E:StaticPopup_Show("SLE_CHAT_HISTORY") end,
+		},
+		editreset = {
+			order = 5,
+			type = 'execute',
+			name = "Reset Editbox History",
+			desc = "Will delete all messages from editbox history. Will immidiatly reload your UI.",
+			disabled = function() return not E.db.chat.chatHistory end,
+			func = function() E:StaticPopup_Show("SLE_EDIT_HISTORY") end,
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/core_c.lua b/ElvUI_SLE/options/core_c.lua
new file mode 100644
index 0000000..3307d69
--- /dev/null
+++ b/ElvUI_SLE/options/core_c.lua
@@ -0,0 +1,185 @@
+local E, L, V, P, G =  unpack(ElvUI); --Inport: Engine, Locales, ProfileDB, GlobalDB
+local SLE = E:GetModule('SLE')
+local function configTable()
+
+E.Options.args.ElvUI_Header = {
+		order = 1,
+		type = "header",
+		name = "ElvUI"..format(": |cff99ff33%s|r",E.version).."  "..L["Shadow & Light"]..format(": |cff99ff33%s|r",SLE.version),
+		width = "full",
+}
+
+local size = E.db.general.fontSize
+
+--Main options group
+E.Options.args.sle = {
+	type = "group",
+	name = L["Shadow & Light"],
+	desc = [[The |cff1784d1ElvUI|r modification by
+Darth Predator and Repooc.]],
+	order = 50,
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["Shadow & Light"]..format(": |cff99ff33%s|r", SLE.version),
+		},
+		logo = {
+			type = 'description',
+			name = '',
+			order = 2,
+			image = function() return 'Interface\\AddOns\\ElvUI_SLE\\media\\textures\\SLE_Title', 650, 410 end,
+		},
+		info = {
+			order = 3,
+			type = "description",
+			name = L["SLE_DESC"],
+		},
+		Install = {
+			order = 4,
+			type = 'execute',
+			name = L['Install'],
+			desc = L['Run the installation process.'],
+			func = function() SLE:Install(); E:ToggleConfig() end,
+		},
+		options = {
+			order = 1,
+			type = "group",
+			childGroups = 'tab',
+			name = SETTINGS,
+			args = {
+				intro = {
+					order = 1,
+					type = "description",
+					name = L["Below you can see option groups presented by |cff1784d1Shadow & Light|r."],
+				},
+				general = {
+					order = 2,
+					type = "group",
+					name = L["General"],
+					args = {
+						intro = {
+							order = 1,
+							type = "description",
+							name = L["General options of |cff1784d1Shadow & Light|r."],
+						},
+						Reset = {
+							order = 2,
+							type = 'execute',
+							name = L["Reset All"],
+							desc = L["Reset all Shadow & Light options and movers to their defaults"],
+							func = function() SLE:Reset(true) end,
+						},
+						space1 = {
+							order = 3,
+							type = 'description',
+							name = "",
+						},
+						space2 = {
+							order = 4,
+							type = 'description',
+							name = "",
+						},
+						lootwindow = {
+							order = 6,
+							type = "group",
+							name = L["Loot History"],
+							args = {
+								header = {
+									order = 1,
+									type = "header",
+									name = L["Loot History"],
+								},
+								info = {
+									order = 2,
+									type = "description",
+									name = L["Options to tweak Loot History window behaviour."],
+								},
+								window = {
+									order = 3,
+									type = "toggle",
+									name = L["Auto hide"],
+									desc = L["Automaticaly hide Blizzard loot histroy frame when leaving the instance."],
+									get = function(info) return E.db.sle.lootwin end,
+									set = function(info, value) E.db.sle.lootwin = value; SLE:LootShow() end
+								},
+								alpha = {
+									order = 4,
+									type = "range",
+									name = L['Alpha'],
+									desc = L["Sets alpha of loot histroy frame."],
+									min = 0.2, max = 1, step = 0.1,
+									get = function(info) return E.db.sle.lootalpha end,
+									set = function(info, value) E.db.sle.lootalpha = value; SLE:LootShow() end,
+								},
+							},
+						},
+					},
+				},
+			},
+		},
+		links = {
+			type = 'group',
+			name = 'About/Help',
+			order = -2,
+			args = {
+				desc = {
+					order = 1,
+					type = 'description',
+					fontSize = 'medium',
+					name = 'Da LinkZ!!!!',
+				},
+				tukuilink = {
+					type = 'input',
+					width = 'full',
+					name = 'On TukUI.org',
+					get = function(info) return 'http://www.tukui.org/addons/index.php?act=view&id=42' end,
+					order = 2,
+				},
+				wowilink = {
+					type = 'input',
+					width = 'full',
+					name = 'On WoWI',
+					get = function(info) return 'http://www.wowinterface.com/downloads/info20927-ElvUIShadowLight.html' end,
+					order = 3,
+				},
+				curselink= {
+					type = 'input',
+					width = 'full',
+					name = 'On Curse',
+					get = function(info) return 'http://www.curse.com/addons/wow/shadow-and-light-edit' end,
+					order = 4,
+				},
+				gitlablink = {
+					type = 'input',
+					width = 'full',
+					name = 'GitLab Link / Report Errors',
+					get = function(info) return 'http://git.tukui.org/repooc/elvui-shadowandlight' end,
+					order = 5,
+				},
+			},
+		},
+	},
+}
+
+--Credits
+E.Options.args.sle.args.credits = {
+	order = 400,
+	type = 'group',
+	name = L["Credits"],
+	args = {
+		creditheader = {
+			order = 1,
+			type = "header",
+			name = L["Credits"],
+		},
+		credits = {
+			order = 2,
+			type = "description",
+			name = L["ELVUI_SLE_CREDITS"]..'\n\n\n'..L["Submodules and Coding:"]..'\n\n'..L["ELVUI_SLE_CODERS"]..'\n\n\n'..L["Other Support:"]..'\n\n'..L["ELVUI_SLE_MISC"],
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/datatexts_c.lua b/ElvUI_SLE/options/datatexts_c.lua
new file mode 100644
index 0000000..2b21e83
--- /dev/null
+++ b/ElvUI_SLE/options/datatexts_c.lua
@@ -0,0 +1,504 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local DTP = E:GetModule('SLE_DTPanels')
+local DT = E:GetModule('DataTexts')
+
+local datatexts = {}
+local function configTable()
+local drop = {
+	--Group name = {short name, order, slot}
+	["DP_1"] = {"dp1", 1, 3},
+	["DP_2"] = {"dp2", 2, 3},
+	["DP_3"] = {"dp3", 3, 3},
+	["DP_4"] = {"dp4", 4, 3},
+	["DP_5"] = {"dp5", 5, 3},
+	["DP_6"] = {"dp6", 6, 3},
+	["Top_Center"] = {"top", 7, 1},
+	["Bottom_Panel"] = {"bottom", 8, 1},
+}
+local chatT = {
+	--Group name = {short name, order, elv's varible, chat panel(used to call functions)}
+	["Left Chat"] = {"chatleft", 9, "leftChatPanel", "LeftChat"},
+	["Right Chat"] = {"chatright", 10, "rightChatPanel", "RightChat"},
+}
+
+--Datatext panels
+E.Options.args.sle.args.datatext = {
+	type = "group",
+	name = L["Panels & Dashboard"],
+	order = 10,
+	childGroups = "tab",
+	args = {
+		panels = {
+			type = "group",
+			name = L["Panels & Dashboard"],
+			order = 1,
+			args = {
+				header = {
+					order = 1,
+					type = "header",
+					name = L["Additional Datatext Panels"],
+				},
+				intro = {
+					order = 2,
+					type = "description",
+					name = L["DP_DESC"]
+				},
+				Reset = {
+					order = 3,
+					type = 'execute',
+					name = L['Restore Defaults'],
+					desc = L["Reset these options to defaults"],
+					func = function() E:GetModule('SLE'):Reset(nil, nil, true) end,
+				},
+				spacer = {
+					order = 4,
+					type = 'description',
+					name = "",
+				},
+				dashboard = {
+					order = 5,
+					type = "toggle",
+					name = L["Dashboard"],
+					desc = L["Show/Hide dashboard."],
+					get = function(info) return E.db.sle.datatext.dashboard.enable end,
+					set = function(info, value) E.db.sle.datatext.dashboard.enable = value; DTP:DashboardShow() end
+				},
+				width = {
+					order = 6,
+					type = "range",
+					name = L["Dashboard Panels Width"],
+					desc = L["Sets size of dashboard panels."],
+					disabled = function() return not E.db.sle.datatext.dashboard.enable end,
+					min = 75, max = 200, step = 1,
+					get = function(info) return E.db.sle.datatext.dashboard.width end,
+					set = function(info, value) E.db.sle.datatext.dashboard.width = value; DTP:DashWidth() end,
+				},
+				chathandle = {
+					order = 7,
+					type = "toggle",
+					name = "Chat handle",
+					desc = L["Show/Hide dashboard."],
+					get = function(info) return E.db.sle.datatext.chathandle end,
+					set = function(info, value) E.db.sle.datatext.chathandle = value; E:GetModule('Layout'):ToggleChatPanels() end
+				},
+			},
+		},
+	},
+}
+
+for k,v in pairs(drop) do
+E.Options.args.sle.args.datatext.args.panels.args[v[1]] = {
+	order = v[2],
+	type = "group",
+	name = L[k],
+	get = function(info) return E.db.sle.datatext[v[1]][ info[#info] ] end,
+	args = {
+		enabled = {
+			order = 1,
+			type = "toggle",
+			name = L["Enable"],
+			desc = L["Show/Hide this panel."],
+			set = function(info, value) E.db.sle.datatext[v[1]].enabled = value; DTP:ExtraDataBarSetup() end
+		},
+		width = {
+			order = 2,
+			type = "range",
+			name = L['Width'],
+			desc = L["Sets size of this panel"],
+			disabled = function() return not E.db.sle.datatext[v[1]].enabled end,
+			min = 100 * v[3], max = E.screenwidth/2, step = 1,
+			set = function(info, value) E.db.sle.datatext[v[1]].width = value; DTP:Resize() end,
+		},
+		hide = {
+			order = 3,
+			type = "toggle",
+			name = L['Hide panel background'],
+			desc = L["Don't show this panel, only datatexts assinged to it"],
+			disabled = function() return not E.db.sle.datatext[v[1]].enabled end,
+			get = function(info) return E.private.sle.datatext[v[1].."hide"] end,
+			set = function(info, value) E.private.sle.datatext[v[1].."hide"] = value; E:StaticPopup_Show("PRIVATE_RL") end,
+		},
+		transparent = {
+			order = 4,
+			name = L['Panel Transparency'],
+			type = 'toggle',
+			disabled = function() return not E.db.sle.datatext[v[1]].enabled or E.private.sle.datatext[v[1].."hide"] end,
+			--get = function(info) return E.db.sle.datatext[v[1]]."transparent"] end,
+			set = function(info, value) E.db.sle.datatext[v[1]].transparent = value; DTP:ExtraDataBarSetup() end,
+		},
+		pethide = {
+			order = 5,
+			name = L['Hide in Pet Battle'],
+			type = 'toggle',
+			desc = L['Show/Hide this frame during Pet Battles.'],
+			set = function(info, value) E.db.sle.datatext[v[1]].pethide = value; DTP:RegisterHide() end,
+		},
+	},
+}
+end
+
+for k,v in pairs(chatT) do
+E.Options.args.sle.args.datatext.args.panels.args[v[1]] = {
+	order = v[2],
+	type = "group",
+	name = L[k],
+	args = {
+		enabled = {
+			order = 1,
+			type = "toggle",
+			name = L["Enable"],
+			desc = L["Show/Hide this panel."],
+			get = function(info) return E.db.datatexts[v[3]] end,
+			set = function(info, value)
+				E.db.datatexts[v[3]] = value;
+				if E.db[v[4].."PanelFaded"] then
+					E.db[v[4].."PanelFaded"] = true;
+					Hide[v[4]]()
+				end
+				E:GetModule('Chat'):UpdateAnchors()
+				E:GetModule('Layout'):ToggleChatPanels()
+				E:GetModule('Bags'):PositionBagFrames()
+			end
+		},
+		width = {
+			order = 2,
+			type = "range",
+			name = L['Width'],
+			desc = L["Sets size of this panel"],
+			disabled = function() return not E.db.datatexts[v[3]] end,
+			min = 150, max = E.screenwidth/2, step = 1,
+			get = function(info) return E.db.sle.datatext[v[1]].width end,
+			set = function(info, value) E.db.sle.datatext[v[1]].width = value; DTP:ChatResize() end,
+		},
+	},
+
+}
+end
+
+E.Options.args.sle.args.datatext.args.sldatatext = {
+	type = "group",
+	name = L["S&L Datatexts"],
+	order = 2,
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["Datatext Options"],
+		},
+		intro = {
+			order = 2,
+			type = "description",
+			name = L["Some datatexts that Shadow & Light are supplied with, has settings that can be modified to alter the displayed information. Please use the dropdown box to select which datatext you would like to configure."]
+		},
+		spacer = {
+			order = 3,
+			type = 'description',
+			name = "",
+		},
+		timedt = {
+			type = "group",
+			name = RAID_FINDER,
+			order = 1,
+			args = {
+				lfrshow = {
+					order = 1,
+					type = "toggle",
+					name = L["LFR Lockout"],
+					desc = L["Show/Hide LFR lockout info in time datatext's tooltip."],
+					get = function(info) return E.db.sle.lfrshow.enabled end,
+					set = function(info, value) E.db.sle.lfrshow.enabled = value; end
+				},
+				instances = {
+					order = 2,
+					type = "group",
+					name = L["Loot History"],
+					guiInline = true,
+					get = function(info) return E.db.sle.lfrshow[ info[#info] ] end,
+					set = function(info, value) E.db.sle.lfrshow[ info[#info] ] = value; end,
+					args = {
+						ds = {
+							order = 1,
+							type = "toggle",
+							name = GetMapNameByID(824),
+						},
+						mv = {
+							order = 2,
+							type = "toggle",
+							name = GetMapNameByID(896),
+						},
+						hof = {
+							order = 3,
+							type = "toggle",
+							name = GetMapNameByID(897),
+						},
+						toes = {
+							order = 4,
+							type = "toggle",
+							name = GetMapNameByID(886),
+						},
+						tot = {
+							order = 5,
+							type = "toggle",
+							name = GetMapNameByID(930),
+						},
+						soo = {
+							order = 6,
+							type = "toggle",
+							name = GetMapNameByID(953),
+						},
+						soof = {
+							order = 7,
+							type = "toggle",
+							name = FLEX_RAID.." "..GetMapNameByID(953),
+						},
+					},
+				},
+				hubs = {
+					order = 3,
+					type = "group",
+					name = L["World Loot"],
+					guiInline = true,
+					get = function(info) return E.db.sle.lfrshow[ info[#info] ] end,
+					set = function(info, value) E.db.sle.lfrshow[ info[#info] ] = value; end,
+					args = {
+						leishen = {
+							order = 1,
+							type = "toggle",
+							name = GetMapNameByID(928),
+							desc = L["Show/Hide the status of Key to the Palace of Lei Shen and Trove of the Thunder King."],
+						},
+					},
+				},
+			},
+		},
+		slcurrency = {
+			type = "group",
+			name = "S&L Currency",
+			order = 2,
+			args = {
+				header = {
+					order = 1,
+					type = "description",
+					name = L['ElvUI Improved Currency Options'],
+				},
+				arch = {
+					order = 2,
+					type = "toggle",
+					name = L['Show Archaeology Fragments'],
+					get = function(info) return E.private['ElvUI_Currency']['Archaeology'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Archaeology'] = value; end,
+				},
+				jewel = {
+					order = 3,
+					type = "toggle",
+					name = L['Show Jewelcrafting Tokens'],
+					get = function(info) return E.private['ElvUI_Currency']['Jewelcrafting'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Jewelcrafting'] = value; end,
+				},
+				pvp = {
+					order = 4,
+					type = "toggle",
+					name = L['Show Player vs Player Currency'],
+					get = function(info) return E.private['ElvUI_Currency']['PvP'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['PvP'] = value; end,
+				},
+				dungeon = {
+					order = 5,
+					type = "toggle",
+					name = L['Show Dungeon and Raid Currency'],
+					get = function(info) return E.private['ElvUI_Currency']['Raid'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Raid'] = value; end,
+				},
+				cook = {
+					order = 6,
+					type = "toggle",
+					name = L['Show Cooking Awards'],
+					get = function(info) return E.private['ElvUI_Currency']['Cooking'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Cooking'] = value; end,
+				},
+				misc = {
+					order = 7,
+					type = "toggle",
+					name = L['Show Miscellaneous Currency'],
+					get = function(info) return E.private['ElvUI_Currency']['Miscellaneous'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Miscellaneous'] = value; end,
+				},
+				zero = {
+					order = 8,
+					type = "toggle",
+					name = L['Show Zero Currency'],
+					get = function(info) return E.private['ElvUI_Currency']['Zero'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Zero'] = value; end,
+				},
+				icons = {
+					order = 9,
+					type = "toggle",
+					name = L['Show Icons'],
+					get = function(info) return E.private['ElvUI_Currency']['Icons'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Icons'] = value; end,
+				},
+				faction = {
+					order = 10,
+					type = "toggle",
+					name = L['Show Faction Totals'],
+					get = function(info) return E.private['ElvUI_Currency']['Faction'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Faction'] = value; end,
+				},
+				unused = {
+					order = 11,
+					type = "toggle",
+					name = L['Show Unsed Currency'],
+					get = function(info) return E.private['ElvUI_Currency']['Unused'] end,
+					set = function(info, value) E.private['ElvUI_Currency']['Unused'] = value; end,
+				},
+			},
+		},
+		slfriends = {
+			type = "group",
+			name = L["S&L Friends"],
+			order = 3,
+			args = {
+				header = {
+					order = 1,
+					type = "description",
+					name = L["These options are for modifing the Shadow & Light Friends datatext."],
+				},
+				combat = {
+					order = 2,
+					type = "toggle",
+					name = L["Hide In Combat"],
+					desc = L["Will not show the tooltip while in combat."],
+					get = function(info) return E.db.sle.dt.friends.combat end,
+					set = function(info, value) E.db.sle.dt.friends.combat = value; end,
+				},
+				hidetotals = {
+					order = 3,
+					type = "toggle",
+					name = L["Show Totals"],
+					desc = L["Show total friends in the datatext."],
+					get = function(info) return E.db.sle.dt.friends.totals end,
+					set = function(info, value) E.db.sle.dt.friends.totals = value; DT:update_Friends() end,
+				},
+				hidehintline = {
+					order = 4,
+					type = "toggle",
+					name = L["Hide Hints"],
+					desc = L["Hide the hints in the tooltip."],
+					get = function(info) return E.db.sle.dt.friends.hide_hintline end,
+					set = function(info, value) E.db.sle.dt.friends.hide_hintline = value; end,
+				},
+				bnbroadcast = {
+					order = 5,
+					type = "toggle",
+					name = L["Expand RealID"],
+					desc = L["Display realid with two lines to view broadcasts."],
+					get = function(info) return E.db.sle.dt.friends.expandBNBroadcast end,
+					set = function(info, value) E.db.sle.dt.friends.expandBNBroadcast = value; end,
+				},
+				spacer = {
+					order = 6,
+					type = 'description',
+					name = "",
+				},
+				tooltipautohide = {
+					order = 7,
+					type = "range",
+					name = L["Autohide Delay:"],
+					desc = L["Adjust the tooltip autohide delay when mouse is no longer hovering of the datatext."],
+					min = 0.1, max = 1, step = 0.1,
+					get = function(info) return E.db.sle.dt.friends.tooltipAutohide end,
+					set = function(info, value) E.db.sle.dt.friends.tooltipAutohide = value; end,
+				},
+			},
+		},
+		slguild = {
+			type = "group",
+			name = L["S&L Guild"],
+			order = 4,
+			args = {
+				header = {
+					order = 1,
+					type = "description",
+					name = L["These options are for modifing the Shadow & Light Guild datatext."],
+				},
+				combat = {
+					order = 2,
+					type = "toggle",
+					name = L["Hide In Combat"],
+					desc = L["Will not show the tooltip while in combat."],
+					get = function(info) return E.db.sle.dt.guild.combat end,
+					set = function(info, value) E.db.sle.dt.guild.combat = value; end,
+				},
+				hidetotals = {
+					order = 3,
+					type = "toggle",
+					name = L["Show Totals"],
+					desc = L["Show total guild members in the datatext."],
+					get = function(info) return E.db.sle.dt.guild.totals end,
+					set = function(info, value) E.db.sle.dt.guild.totals = value; DT:update_Guild() end,
+				},
+				hidehintline = {
+					order = 4,
+					type = "toggle",
+					name = L["Hide Hints"],
+					desc = L["Display the hints in the tooltip."],
+					get = function(info) return E.db.sle.dt.guild.hide_hintline end,
+					set = function(info, value) E.db.sle.dt.guild.hide_hintline = value; end,
+				},
+				hidemotd = {
+					order = 5,
+					type = "toggle",
+					name = L["Hide MOTD"],
+					desc = L["Hide the guild's Message of the Day in the tooltip."],
+					get = function(info) return E.db.sle.dt.guild.hide_gmotd end,
+					set = function(info, value) E.db.sle.dt.guild.hide_gmotd = value; end,
+				},
+				hideguildname = {
+					order = 6,
+					type = "toggle",
+					name = L["Hide Guild Name"],
+					desc = L["Hide the guild's name in the tooltip."],
+					get = function(info) return E.db.sle.dt.guild.hide_guildname end,
+					set = function(info, value) E.db.sle.dt.guild.hide_guildname = value; end,
+				},
+				spacer = {
+					order = 7,
+					type = 'description',
+					name = "",
+				},
+				tooltipautohide = {
+					order = 8,
+					type = "range",
+					name = L["Autohide Delay:"],
+					desc = L["Adjust the tooltip autohide delay when mouse is no longer hovering of the datatext."],
+					min = 0.1, max = 1, step = 0.1,
+					get = function(info) return E.db.sle.dt.guild.tooltipAutohide end,
+					set = function(info, value) E.db.sle.dt.guild.tooltipAutohide = value; end,
+				},
+			},
+		},
+		slmail = {
+			type = "group",
+			name = L["S&L Mail"],
+			order = 5,
+			args = {
+				header = {
+					order = 1,
+					type = "description",
+					name = L["These options are for modifing the Shadow & Light Mail datatext."],
+				},
+				icon = {
+					order = 2,
+					type = "toggle",
+					name = L["Minimap icon"],
+					desc = L["If enabled will show new mail icon on minimap."],
+					get = function(info) return E.db.sle.dt.mail.icon end,
+					set = function(info, value) E.db.sle.dt.mail.icon = value; DT:SLEmailUp() end,
+				}
+			},
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/dev_c.lua b/ElvUI_SLE/options/dev_c.lua
new file mode 100644
index 0000000..8c90cf4
--- /dev/null
+++ b/ElvUI_SLE/options/dev_c.lua
@@ -0,0 +1,375 @@
+local E, L, V, P, G, _ = unpack(ElvUI);
+local SLE = E:GetModule('SLE');
+local ACD = LibStub("AceConfigDialog-3.0")
+
+local bnettesttbl = {}
+function SLE:GetBNetInfo()
+	local _, numBNetOnline = BNGetNumFriends()
+	for i = 1, numBNetOnline do
+		local presenceID, presenceName, _, _, _, _, client, isOnline = BNGetFriendInfo(i)
+		if isOnline and client == BNET_CLIENT_WOW then
+			BNSendGameData(presenceID, 'SLE_DEV_REQ', 'slesay#'..presenceID)
+		end
+	end
+end
+
+if SLE:Auth() then
+	local selectedChannel = ''
+	local UserListCache = {}
+	local highestVersion = tonumber(SLE.version)
+	local flag = 'SLE_DEV_SAYS'
+	local addonChannel = 'GUILD'
+	local addonTarget = ""
+	local output = 'SAY'
+	local text = ''
+	local wtarget = ""
+	local bnetP = ""
+
+	function SLE:delete(...)
+		local _, id = ...
+		id = tostring(id)
+		bnettesttbl[id] = nil
+	end
+	SLE:RegisterEvent('BN_FRIEND_ACCOUNT_OFFLINE', 'delete')
+
+	RegisterAddonMessagePrefix('SLE_DEV_INFO')
+
+	local f = CreateFrame('Frame')
+	f:RegisterEvent('CHAT_MSG_ADDON')
+	f:RegisterEvent('BN_CHAT_MSG_ADDON')
+	f:RegisterEvent('BN_FRIEND_ACCOUNT_ONLINE')
+	f:RegisterEvent('PLAYER_ENTERING_WORLD')
+	f:SetScript('OnEvent', function(self, event, prefix, message, channel, sender)
+		if event == 'BN_FRIEND_ACCOUNT_ONLINE' or event == 'BN_FRIEND_ACCOUNT_OFFLINE' then
+			SLE:GetBNetInfo()
+		end
+		if event == 'PLAYER_ENTERING_WORLD' then
+			SLE:GetBNetInfo()
+		end
+		if prefix == 'SLE_DEV_INFO' then
+			if event == 'CHAT_MSG_ADDON' or event == 'BN_CHAT_MSG_ADDON' then
+				if not message:find("SLEinfo") then
+					local userLevel, userClass, userName, userRealm, userVersion = strsplit('#', message)
+					if (userName == E.myname and userRealm == E.myrealm) then return end;
+
+					userVersion = tonumber(userVersion)
+
+					if userVersion > highestVersion then
+						highestVersion = userVersion
+					end
+
+					local id = #UserListCache + 1;
+
+					for i=1,#UserListCache do
+						if (UserListCache[i].userName == userName and UserListCache[i].userRealm == userRealm) then
+							id = i;
+							break;
+						end
+					end
+
+					UserListCache[id] = {
+						['userLevel'] = userLevel,
+						['userClass'] = userClass,
+						['userName'] = userName,
+						['userRealm'] = userRealm,
+						['userVersion'] = userVersion,
+					}
+
+					if (IsAddOnLoaded("ElvUI_Config")) then
+						ACD:SelectGroup('ElvUI', 'sle', 'developer', 'userList')
+					end
+				else
+					local _, numBNetOnline = BNGetNumFriends()
+					for i = 1, numBNetOnline do
+						local presenceID, presenceName, _, _, toon, _, _, _ = BNGetFriendInfo(i)
+						message = message:gsub("SLEinfo", '')
+						local pid = tonumber(message)
+						if pid == presenceID then
+							bnettesttbl[message] = presenceName;
+						end
+					end
+				end
+			end
+		end
+	end)
+
+	local function configTable()
+		E.Options.args.sle.args.developer = {
+			order = 999,
+			type = 'group',
+			name = "Developer",
+			childGroups = 'tab',
+			args = {
+				header = {
+					order = 1,
+					type = "header",
+					name = "Evil Overlord Control Panel",
+				},
+				testdesc = {
+					order = 2,
+					type = "description",
+					name = "WTF are you doing here, asshole?!",
+				},
+				userList = {
+					order = 3,
+					type = "group",
+					name = "User List",
+					args = {
+						listheader = {
+							order = 1,
+							type = "header",
+							name = "List of possible victims",
+						},
+						List = {
+							type = 'select',
+							name = 'Choose a channel',
+							order = 2,
+							get = function() return selectedChannel end,
+							set = function(_, value)
+								selectedChannel = value
+							end,
+							values = {
+								[''] = ' ',
+								['GUILD'] = 'Guild',
+								['INSTANCE_CHAT'] = 'Instance',
+								['PARTY'] = 'Party',
+								['RAID'] = 'Raid',
+								['BNET'] = 'BNet',
+							},
+						},
+						submitbutton = {
+							type = 'execute',
+							order = 3,
+							name = function()
+								return selectedChannel ~= '' and "Update List" or "Clear List"
+							end,
+							func = function(info, value)
+								UserListCache = {} -- Clear Cache
+
+								if selectedChannel == 'BNET' then
+									local _, numBNetOnline = BNGetNumFriends()
+									for i = 1, numBNetOnline do
+										local presenceID, _, _, _, _, _, client, isOnline = BNGetFriendInfo(i)
+										if isOnline and client == BNET_CLIENT_WOW then
+											BNSendGameData(presenceID, 'SLE_DEV_REQ', 'userlist')
+										end
+									end
+								elseif selectedChannel ~= '' then
+									SendAddonMessage('SLE_DEV_REQ', 'userlist', selectedChannel)
+								end
+							end,
+						},
+						Space = {
+							type = 'description',
+							name = ' ',
+							order = 4,
+						},
+						userList = {
+							type = 'group',
+							name = function()
+								return 'Userlist : '..selectedChannel
+							end,
+							order = 5,
+							guiInline = true,
+							args = {},
+							hidden = function() return selectedChannel == '' end,
+						},
+					},
+				},
+				devcommand = {
+					order = 4,
+					type = "group",
+					name = "Commands",
+					args = {
+						header = {
+							order = 1,
+							type = "header",
+							name = "Developer commands execution GUI",
+						},
+						desc = {
+							order = 2,
+							type = 'description',
+							name = "The GUI for executing old /slesays and /slecmd without typing all the shit mannually.",
+						},
+						flag = {
+							type = 'select',
+							name = 'Addon message type',
+							order = 3,
+							get = function() return flag end,
+							set = function(_, value)
+								flag = value
+							end,
+							values = {
+								['SLE_DEV_SAYS'] = 'S&L Says',
+								['SLE_DEV_CMD'] = 'S&L Command',
+							},
+						},
+						channel = {
+							type = 'select',
+							name = 'Addon message channel',
+							order = 4,
+							get = function() return addonChannel end,
+							set = function(_, value)
+								addonChannel = value
+							end,
+							values = {
+								['GUILD'] = 'Guild',
+								['INSTANCE_CHAT'] = 'Instance',
+								['PARTY'] = 'Party',
+								['RAID'] = 'Raid',
+								['WHISPER'] = 'Whisper',
+								['BNET'] = 'BNet',
+							},
+						},
+						bnetlist = {
+							type = 'select',
+							name = 'BNet List',
+							order = 5,
+							disabled = function() return addonChannel ~= 'BNET' end,
+							get = function() return bnetP end,
+							set = function(_, value)
+								bnetP = value
+							end,
+							values = function()
+								SLE:GetBNetInfo()
+								return bnettesttbl
+							end,
+						},
+						target = {
+							order = 6,
+							type = 'input',
+							width = 'full',
+							name = 'Unit to send message to',
+							disabled = function() return addonChannel == 'BNET' end,
+							get = function() return addonTarget end,
+							set = function(_, value)
+								addonTarget = value
+							end,
+						},
+						message = {
+							order = 7,
+							type = "group",
+							name = 'Message',
+							guiInline = true,
+							args = {
+								channel = {
+									type = 'select',
+									order = 1,
+									name = 'Output channel (S&L Says only)',
+									disabled = function() return flag ~= 'SLE_DEV_SAYS' end,
+									get = function() return output end,
+									set = function(_, value)
+										output = value
+									end,
+									values = {
+										['GUILD'] = 'Guild',
+										['INSTANCE_CHAT'] = 'Instance',
+										['PARTY'] = 'Party',
+										['RAID'] = 'Raid',
+										['SAY'] = "Say",
+										['YELL'] = "Yell",
+										['WHISPER'] = "Whisper",
+									},
+								},
+								message = {
+									type = 'input',
+									order = 2,
+									width = 'full',
+									name = 'Message to send/Script to execute',
+									get = function() return text end,
+									set = function(_, value)
+										text = value
+									end,
+								},
+								whispTarget = {
+									type = 'input',
+									order = 3,
+									width = 'full',
+									name = 'Whisper target (S&L Says with whisper only)',
+									disabled = function() return (flag ~= 'SLE_DEV_SAYS') or (flag == 'SLE_DEV_SAYS' and output ~= 'WHISPER') end,
+									get = function() return wtarget end,
+									set = function(_, value)
+										wtarget = value
+									end,
+								},
+							},
+						},
+						submitbutton = {
+							type = 'execute',
+							order = 8,
+							name = "Execute command",
+							desc = "Unleash the chaos!!!",
+							func = function ()
+								SLE:Print('Trying to execute this command...')
+								E:sleCommand(flag, addonChannel, addonTarget, output, text, wtarget, bnetP)
+							end,
+						},
+					},
+				},
+
+				devdiaggroup = {
+					order = 5,
+					type = "group",
+					name = "Tech and shit",
+					args = {
+						subgroup = {
+							order = 1,
+							type = "header",
+							name = "Some tech stuff",
+						},
+						cpuprofiling = {
+							order = 2,
+							type = 'execute',
+							name = "CPU Profiling",
+							func = function() SetCVar("scriptProfile", GetCVar("scriptProfile") == "1" and 0 or 1); ReloadUI() end,
+						},
+					},
+				},
+				devgroupone = {
+					order = 500,
+					type = "group",
+					name = "Test Group",
+					args = {
+						subgroup = {
+							order = 1,
+							type = "header",
+							name = "Dafuq we have this?",
+						},
+					},
+				},
+			},
+		}
+		for i = 1, 40 do
+			E.Options.args.sle.args.developer.args.userList.args.userList.args[tostring(i)] = {
+				type = 'description',
+				order = i,
+				name = function()
+					if UserListCache[i] then
+						local Level = GetQuestDifficultyColor(UserListCache[i]['userLevel'])
+						Level = format('|cff%02x%02x%02x%s|r', Level.r *255, Level.g *255, Level.b *255, UserListCache[i]['userLevel'])
+
+						local ClassColor = '|c'..RAID_CLASS_COLORS[(UserListCache[i]['userClass'])]['colorStr']
+						local UserName = ClassColor..UserListCache[i]['userName']..'|r'
+
+						local UserRealm = UserListCache[i]['userRealm']
+
+						local UserVersion = UserListCache[i]['userVersion']
+						UserVersion = (UserVersion == highestVersion and '|cffceff00' or '|cffff5678')..UserVersion
+
+						local Icon = '';
+						local realm = UserRealm:gsub(' ','');
+						if (SLE.SpecialChatIcons[realm] and SLE.SpecialChatIcons[realm][UserListCache[i]['userName']]) then
+							Icon = SLE.SpecialChatIcons[realm][UserListCache[i]['userName']];
+
+						end
+						return Level..'  '..UserName.. '|cffffffff - '..UserRealm..' : '..UserVersion..Icon
+					else
+						return ' '
+					end
+				end,
+				hidden = function() return not UserListCache[i] end,
+			}
+		end
+	end
+	table.insert(E.SLEConfigs, configTable)
+end
\ No newline at end of file
diff --git a/ElvUI_SLE/options/equipmanager_c.lua b/ElvUI_SLE/options/equipmanager_c.lua
new file mode 100644
index 0000000..0d95f19
--- /dev/null
+++ b/ElvUI_SLE/options/equipmanager_c.lua
@@ -0,0 +1,130 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local EM = E:GetModule('SLE_EquipManager')
+local BI = E:GetModule('SLE_BagInfo')
+
+local sets = {}
+
+local function FillTable()
+	sets = {}
+	sets["NONE"] = NONE
+	for i = 1, GetNumEquipmentSets() do
+		local name, icon, lessIndex = GetEquipmentSetInfo(i)
+		if name then
+			sets[name] = name
+		end
+	end
+	return sets
+end
+
+local function configTable()
+
+E.Options.args.sle.args.options.args.equipmanager = {
+	type = 'group',
+	order = 7,
+	name = L['Equipment Manager'],
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["Equipment Manager"],
+		},
+		intro = {
+			order = 2,
+			type = 'description',
+			name = L["EM_DESC"],
+		},
+		enable = {
+			type = "toggle",
+			order = 3,
+			name = L['Enable'],
+			get = function(info) return E.private.sle.equip.enable end,
+			set = function(info, value) E.private.sle.equip.enable = value; E:StaticPopup_Show("PRIVATE_RL") end
+		},
+		spam = {
+			type = "toggle",
+			order = 4,
+			name = L['Spam Throttling'],
+			desc = L["Removes the spam from chat stating what talents were learned or unlearned during spec change."],
+			get = function(info) return E.private.sle.equip.spam end,
+			set = function(info, value) E.private.sle.equip.spam = value; EM:SpamThrottle() end
+		},
+		setoverlay = {
+			type = "toggle",
+			order = 5,
+			name = L['Equipment Set Overlay'],
+			desc = L['Show the associated equipment sets for the items in your bags (or bank).'],
+			get = function(info) return E.private.sle.equip.setoverlay end,
+			set = function(info, value) E.private.sle.equip.setoverlay = value; BI:ToggleSettings(); end,
+		},
+		equipsets = {
+			type = "group",
+			name = PAPERDOLL_EQUIPMENTMANAGER,
+			order = 6,
+			disabled = function() return not E.private.sle.equip.enable end,
+			guiInline = true,
+			args = {
+				intro = {
+					order = 1,
+					type = 'description',
+					name = L["Here you can choose what equipment sets to use in different situations."],
+				},
+				primary = {
+					order = 2,
+					type = "select",
+					name = SPECIALIZATION_PRIMARY,
+					desc = L["Equip this set when switching to primary talents."],
+					get = function(info) return E.private.sle.equip.primary end,
+					set = function(info, value) E.private.sle.equip.primary = value; end,
+					values = function()
+						FillTable()
+						return sets
+					end,
+				},
+				secondary = {
+					order = 3,
+					type = "select",
+					name = SPECIALIZATION_SECONDARY,
+					desc = L["Equip this set when switching to secondary talents."],
+					get = function(info) return E.private.sle.equip.secondary end,
+					set = function(info, value) E.private.sle.equip.secondary = value end,
+					values = function()
+						FillTable()
+						return sets
+					end,
+				},
+				spacer = {
+					type = "description",
+					order = 4,
+					name = "",
+				},
+				instance = {
+					order = 5,
+					type = "select",
+					name = DUNGEONS,
+					desc = L["Equip this set after entering dungeons or raids."],
+					get = function(info) return E.private.sle.equip.instance end,
+					set = function(info, value) E.private.sle.equip.instance = value end,
+					values = function()
+						FillTable()
+						return sets
+					end,
+				},
+				pvp = {
+					order = 6,
+					type = "select",
+					name = PVP,
+					desc = L["Equip this set after entering battlegrounds or arens."],
+					get = function(info) return E.private.sle.equip.pvp end,
+					set = function(info, value) E.private.sle.equip.pvp = value end,
+					values = function()
+						FillTable()
+						return sets
+					end,
+				},
+			},
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/exprepbar_c.lua b/ElvUI_SLE/options/exprepbar_c.lua
new file mode 100644
index 0000000..c4181bb
--- /dev/null
+++ b/ElvUI_SLE/options/exprepbar_c.lua
@@ -0,0 +1,44 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local M = E:GetModule('Misc')
+local function configTable()
+
+--Options for Exp/Rep text
+E.Options.args.sle.args.options.args.general.args.exprep = {
+	type = "group",
+    name = L["Xp-Rep Text"],
+    order = 6,
+   	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["Xp-Rep Text"],
+		},
+		explong = {
+			order = 2,
+			type = "toggle",
+			name = L["Full value on Exp Bar"],
+			desc = L["Changes the way text is shown on exp bar."],
+			get = function(info) return E.db.sle.exprep.explong end,
+			set = function(info, value) E.db.sle.exprep.explong = value; M:UpdateExperience() end
+		},
+		replong = {
+			order = 3,
+			type = "toggle",
+			name = L["Full value on Rep Bar"],
+			desc = L["Changes the way text is shown on rep bar."],
+			get = function(info) return E.db.sle.exprep.replong end,
+			set = function(info, value) E.db.sle.exprep.replong = value; M:UpdateReputation() end
+		},
+		autotrackrep = {
+			order = 4,
+			type = "toggle",
+			name = L["Auto Track Reputation"],
+			desc = L["Automatically sets reputation tracking to the most recent reputation change."],
+			get = function(info) return E.private.sle.exprep.autotrack end,
+			set = function(info, value) E.private.sle.exprep.autotrack = value; end
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/farm_c.lua b/ElvUI_SLE/options/farm_c.lua
new file mode 100644
index 0000000..0db6317
--- /dev/null
+++ b/ElvUI_SLE/options/farm_c.lua
@@ -0,0 +1,97 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
+local F = E:GetModule('SLE_Farm')
+local function configTable()
+
+E.Options.args.sle.args.options.args.farm = {
+	type = 'group',
+	order = 8,
+	name = L['Farm'],
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["Farm Options"],
+		},
+		intro = {
+			order = 2,
+			type = 'description',
+			name = L["FARM_DESC"],
+		},
+		enable = {
+			type = "toggle",
+			order = 3,
+			name = L['Enable'],
+			get = function(info) return E.private.sle.farm.enable end,
+			set = function(info, value) E.private.sle.farm.enable = value; E:StaticPopup_Show("PRIVATE_RL") end
+		},
+		active = {
+			order = 4,
+			type = 'toggle',
+			name = L['Only active buttons'],
+			desc = L['Only show the buttons for the seeds, portals, tools you have in your bags.'],
+			disabled = function() return not E.private.sle.farm.enable end,
+			get = function(info) return E.db.sle.farm.active end,
+			set = function(info, value) E.db.sle.farm.active = value; if SeedAnchor then F:UpdateLayout() end end,
+		},
+		size = {
+			order = 5,
+			type = "range",
+			name = L["Button Size"],
+			disabled = function() return not E.private.sle.farm.enable end,
+			min = 15, max = 60, step = 1,
+			get = function(info) return E.db.sle.farm.size end,
+			set = function(info, value) E.db.sle.farm.size = value; F:UpdateLayout() end,
+		},
+		seedbar = {
+			type = "group",
+			order = 6,
+			name = L["Seed Bars"],
+			disabled = function() return not E.private.sle.farm.enable end,
+			guiInline = true,
+			args = {
+				autotarget = {
+					type = "toggle",
+					order = 1,
+					name = L["Auto Planting"],
+					desc = L["Automatically plant seeds to the nearest tilled soil if one is not already selected."],
+					get = function(info) return E.db.sle.farm.autotarget end,
+					set = function(info, value) E.db.sle.farm.autotarget = value; end
+				},
+				trash = {
+					type = "toggle",
+					order = 2,
+					name = L["Drop Seeds"],
+					desc = L["Allow seeds to be destroyed from seed bars."],
+					get = function(info) return E.private.sle.farm.seedtrash end,
+					set = function(info, value) E.private.sle.farm.seedtrash = value; E:StaticPopup_Show("PRIVATE_RL") end
+				},
+				quest = {
+					type = "toggle",
+					order = 3,
+					name = L["Quest Glow"],
+					desc = L["Show glowing border on seeds needed for any quest in your log."],
+					get = function(info) return E.db.sle.farm.quest end,
+					set = function(info, value) E.db.sle.farm.quest = value; if SeedAnchor then F:UpdateLayout() end end
+				},
+				growth = {
+					order = 8,
+					type = "select",
+					name = L["Dock Buttons To"],
+					desc = L["Change the position from where seed bars will grow."],
+					disabled = function() return not E.private.sle.farm end,
+					get = function(info) return E.db.sle.farm.seedor end,
+					set = function(info, value) E.db.sle.farm.seedor = value; if SeedAnchor then F:UpdateLayout() end end,
+					values = {
+						['RIGHT'] = L["Right"],
+						['LEFT'] = L["Left"],
+						['BOTTOM'] = L["Bottom"],
+						['TOP'] = L["Top"],
+					},
+				},
+			},
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/help_c.lua b/ElvUI_SLE/options/help_c.lua
new file mode 100644
index 0000000..003297d
--- /dev/null
+++ b/ElvUI_SLE/options/help_c.lua
@@ -0,0 +1,50 @@
+local E, L, V, P, G =  unpack(ElvUI); --Inport: Engine, Locales, ProfileDB, GlobalDB
+local SLE = E:GetModule('SLE')
+local function configTable()
+
+--Main options group
+E.Options.args.sle.args.links = {
+	type = 'group',
+	name = 'About/Help',
+	order = -2,
+	args = {
+		desc = {
+			order = 1,
+			type = 'description',
+			fontSize = 'medium',
+			name = 'Da LinkZ!!!!',
+		},
+		tukuilink = {
+			type = 'input',
+			width = 'full',
+			name = 'On TukUI.org',
+			get = function(info) return 'http://www.tukui.org/addons/index.php?act=view&id=42' end,
+			order = 2,
+		},
+		wowilink = {
+			type = 'input',
+			width = 'full',
+			name = 'On WoWI',
+			get = function(info) return 'http://www.wowinterface.com/downloads/info20927-ElvUIShadowLight.html' end,
+			order = 3,
+		},
+		curselink= {
+			type = 'input',
+			width = 'full',
+			name = 'On Curse',
+			get = function(info) return 'http://www.curse.com/addons/wow/shadow-and-light-edit' end,
+			order = 4,
+		},
+		gitlablink = {
+			type = 'input',
+			width = 'full',
+			name = 'GitLab Link / Report Errors',
+			get = function(info) return 'http://git.tukui.org/repooc/elvui-shadowandlight' end,
+			order = 5,
+		},
+	},
+}
+
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/load_options.xml b/ElvUI_SLE/options/load_options.xml
new file mode 100644
index 0000000..7817d03
--- /dev/null
+++ b/ElvUI_SLE/options/load_options.xml
@@ -0,0 +1,24 @@
+<Ui xmlns="http://www.blizzard.com/wow/ui/">
+	<Script file='core_c.lua'/>
+	<Script file='help_c.lua'/>
+	<Script file='autorelease_c.lua'/>
+	<Script file='datatexts_c.lua'/>
+	<Script file='backgrounds_c.lua'/>
+	<Script file='characterframe_c.lua'/>
+	<Script file='chat_c.lua'/>
+	<Script file='bags_c.lua'/>
+	<Script file='equipmanager_c.lua'/>
+	<Script file='exprepbar_c.lua'/>
+	<Script file='farm_c.lua'/>
+	<Script file='imports_c.lua'/>
+	<Script file='loot_c.lua'/>
+	<Script file='marks_c.lua'/>
+	<Script file='minimap_c.lua'/>
+	<Script file='nameplates_c.lua'/>
+	<Script file='raidutility_c.lua'/>
+	<Script file='tooltip_c.lua'/>
+	<Script file='uibuttons_c.lua'/>
+	<Script file='unitframes_c.lua'/>
+	<Script file='vehicle_c.lua'/>
+	<Script file='dev_c.lua'/>
+</Ui>
\ No newline at end of file
diff --git a/ElvUI_SLE/options/loot_c.lua b/ElvUI_SLE/options/loot_c.lua
new file mode 100644
index 0000000..bda2831
--- /dev/null
+++ b/ElvUI_SLE/options/loot_c.lua
@@ -0,0 +1,73 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local function configTable()
+
+--Main options group
+E.Options.args.sle.args.options.args.loot = {
+	order = 9,
+	type = "group",
+	name = L['Loot Announcer'],
+	args = {
+		marksheader = {
+			order = 1,
+			type = "header",
+			name = L['Loot Announcer'],
+		},
+		info = {
+			order = 2,
+			type = "description",
+			name = L["LOOT_DESC"],
+		},
+		enabled = {
+			order = 3,
+			type = "toggle",
+			name = L["Enable"],
+			get = function(info) return E.private.sle.loot.enable end,
+			set = function(info, value) E.private.sle.loot.enable = value; E:StaticPopup_Show("PRIVATE_RL") end
+		},
+		auto = {
+			order = 4,
+			type = "toggle",
+			name = L["Auto Announce"],
+			desc = L["Automatically announce when loot window opens (Master Looter Only)."],
+			disabled = function() return not E.private.sle.loot.enable end,
+			get = function(info) return E.db.sle.loot.auto end,
+			set = function(info, value) E.db.sle.loot.auto = value; end
+		},
+		spacer = {
+			order = 5,
+			type = "description",
+			name = "",
+		},
+		quality = {
+			order = 6,
+			type = "select",
+			name = L["Loot Quality"],
+			desc = L["Set the minimum quality of an item to announce."],
+			disabled = function() return not E.private.sle.loot.enable end,
+			get = function(info) return E.db.sle.loot.quality end,
+			set = function(info, value) E.db.sle.loot.quality = value;  end,
+			values = {
+				['EPIC'] = "|cffA335EE"..ITEM_QUALITY4_DESC.."|r",
+				['RARE'] = "|cff0070DD"..ITEM_QUALITY3_DESC.."|r",
+				['UNCOMMON'] = "|cff1EFF00"..ITEM_QUALITY2_DESC.."|r",
+			},
+		},
+		chat = {
+			order = 7,
+			type = "select",
+			name = L["Chat"],
+			desc = L["Announce loot to the selected channel."],
+			disabled = function() return not E.private.sle.loot.enable end,
+			get = function(info) return E.db.sle.loot.chat end,
+			set = function(info, value) E.db.sle.loot.chat = value;  end,
+			values = {
+				['RAID'] = "|cffFF7F00"..RAID.."|r",
+				['PARTY'] = "|cffAAAAFF"..PARTY.."|r",
+				['SAY'] = "|cffFFFFFF"..SAY.."|r",
+			},
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/marks_c.lua b/ElvUI_SLE/options/marks_c.lua
new file mode 100644
index 0000000..54adb62
--- /dev/null
+++ b/ElvUI_SLE/options/marks_c.lua
@@ -0,0 +1,198 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local RM = E:GetModule('SLE_RaidMarks')
+local RF = E:GetModule('SLE_RaidFlares')
+local function configTable()
+
+--Main options group
+E.Options.args.sle.args.options.args.marks = {
+	order = 4,
+	type = "group",
+	name = L["Raid Marks"],
+	args = {
+		intro = {
+			order = 1,
+			type = 'description',
+			name = L['Options for panels providing fast access to raid markers and flares.'],
+		},
+		marks = {
+			order = 2,
+			type = "group",
+			name = L["Raid Marks"],
+			args = {
+				marksheader = {
+					order = 1,
+					type = "header",
+					name = L["Raid Marks"],
+				},
+				enabled = {
+					order = 2,
+					type = "toggle",
+					name = L["Enable"],
+					desc = L["Show/Hide raid marks."],
+					get = function(info) return E.private.sle.marks.marks end,
+					set = function(info, value) E.private.sle.marks.marks = value; E:StaticPopup_Show("PRIVATE_RL") end
+				},
+				backdrop = {
+					order = 3,
+					type = "toggle",
+					name = L["Backdrop"],
+					disabled = function() return not E.private.sle.marks.marks end,
+					get = function(info) return E.db.sle.marks.backdrop end,
+					set = function(info, value) E.db.sle.marks.backdrop = value; RM:Backdrop() end
+				},
+				Reset = {
+					order = 4,
+					type = 'execute',
+					name = L['Restore Defaults'],
+					desc = L["Reset these options to defaults"],
+					disabled = function() return not E.private.sle.marks.marks end,
+					func = function() E:GetModule('SLE'):Reset(nil, nil, nil, nil, true) end,
+				},
+				spacer = {
+					order = 5,
+					type = 'description',
+					name = "",
+				},
+				showinside = {
+					order = 6,
+					type = "toggle",
+					name = L["Show only in instances"],
+					desc = L["Selecting this option will have the Raid Markers appear only while in a raid or dungeon."],
+					disabled = function() return not E.private.sle.marks.marks end,
+					get = function(info) return E.db.sle.marks.showinside end,
+					set = function(info, value) E.db.sle.marks.showinside = value; RM:UpdateVisibility() end
+				},
+				target = {
+					order = 7,
+					type = "toggle",
+					name = L["Target Exists"],
+					desc = L["Selecting this option will have the Raid Markers appear only when you have a target."],
+					disabled = function() return not E.private.sle.marks.marks end,
+					get = function(info) return E.db.sle.marks.target end,
+					set = function(info, value) E.db.sle.marks.target = value; RM:Target(); RM:UpdateVisibility() end
+				},
+				mouseover = {
+					order = 7,
+					type = "toggle",
+					name = L["Mouseover"],
+					desc = L["Show on mouse over."],
+					disabled = function() return not E.private.sle.marks.marks end,
+					get = function(info) return E.db.sle.marks.mouseover end,
+					set = function(info, value) E.db.sle.marks.mouseover = value; RM:UpdateVisibility() end --RM:Mouseover() end
+				},
+				size = {
+					order = 9,
+					type = "range",
+					name = L['Size'],
+					desc = L["Sets size of buttons"],
+					disabled = function() return not E.private.sle.marks.marks end,
+					min = 15, max = 30, step = 1,
+					get = function(info) return E.db.sle.marks.size end,
+					set = function(info, value) E.db.sle.marks.size = value; RM:FrameButtonsGrowth(); RM:FrameButtonsSize() end,
+				},
+				growth = {
+					order = 10,
+					type = "select",
+					name = L["Direction"],
+					desc = L["Change the direction of buttons growth from the skull marker"],
+					disabled = function() return not E.private.sle.marks.marks end,
+					get = function(info) return E.db.sle.marks.growth end,
+					set = function(info, value) E.db.sle.marks.growth = value; RM:FrameButtonsGrowth() end,
+					values = {
+						['RIGHT'] = L["Right"],
+						['LEFT'] = L["Left"],
+						['UP'] = L["Up"],
+						['DOWN'] = L["Down"],
+					},
+				},
+			},
+		},
+		flares = {
+			order = 3,
+			type = "group",
+			name = L["Raid Flares"],
+			args = {
+				header = {
+					order = 1,
+					type = "header",
+					name = L["Raid Flares"],
+				},
+				enabled = {
+					order = 2,
+					type = "toggle",
+					name = L["Enable"],
+					desc = L["Show/Hide Raid Flares."],
+					get = function(info) return E.private.sle.marks.flares end,
+					set = function(info, value) E.private.sle.marks.flares = value; E:StaticPopup_Show("PRIVATE_RL") end
+				},
+				backdrop = {
+					order = 3,
+					type = "toggle",
+					name = L["Backdrop"],
+					disabled = function() return not E.private.sle.marks.flares end,
+					get = function(info) return E.db.sle.flares.backdrop end,
+					set = function(info, value) E.db.sle.flares.backdrop = value; RF:Backdrop() end
+				},
+				spacer = {
+					order = 5,
+					type = 'description',
+					name = "",
+				},
+				showinside = {
+					order = 6,
+					type = "toggle",
+					name = L["Show only in instances"],
+					desc = L["Selecting this option will have the Raid Flares appear only while in a raid or dungeon."],
+					disabled = function() return not E.private.sle.marks.flares end,
+					get = function(info) return E.db.sle.flares.showinside end,
+					set = function(info, value) E.db.sle.flares.showinside = value; RF:UpdateVisibility() end
+				},
+				mouseover = {
+					order = 7,
+					type = "toggle",
+					name = L["Mouseover"],
+					desc = L["Show on mouse over."],
+					disabled = function() return not E.private.sle.marks.flares end,
+					get = function(info) return E.db.sle.flares.mouseover end,
+					set = function(info, value) E.db.sle.flares.mouseover = value; RF:UpdateVisibility() end
+				},
+				tooltips = {
+					order = 8,
+					type = "toggle",
+					name = L["Show Tooltip"],
+					disabled = function() return not E.private.sle.marks.flares end,
+					get = function(info) return E.db.sle.flares.tooltips end,
+					set = function(info, value) E.db.sle.flares.tooltips = value; end
+				},
+				size = {
+					order = 9,
+					type = "range",
+					name = L['Size'],
+					desc = L["Sets size of buttons"],
+					disabled = function() return not E.private.sle.marks.flares end,
+					min = 15, max = 30, step = 1,
+					get = function(info) return E.db.sle.flares.size end,
+					set = function(info, value) E.db.sle.flares.size = value; RF:FrameButtonsGrowth(); RF:FrameButtonsSize() end,
+				},
+				growth = {
+					order = 9,
+					type = "select",
+					name = L["Direction"],
+					desc = L["Change the direction of buttons growth from the square marker"],
+					disabled = function() return not E.private.sle.marks.flares end,
+					get = function(info) return E.db.sle.flares.growth end,
+					set = function(info, value) E.db.sle.flares.growth = value; RF:FrameButtonsGrowth() end,
+					values = {
+						['RIGHT'] = L["Right"],
+						['LEFT'] = L["Left"],
+						['UP'] = L["Up"],
+						['DOWN'] = L["Down"],
+					},
+				},
+			},
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/minimap_c.lua b/ElvUI_SLE/options/minimap_c.lua
new file mode 100644
index 0000000..f616649
--- /dev/null
+++ b/ElvUI_SLE/options/minimap_c.lua
@@ -0,0 +1,147 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+
+local function configTable()
+	E.Options.args.sle.args.options.args.minimap = {
+		type = "group",
+		name = MINIMAP_LABEL,
+		order = 3,
+		args = {
+			header = {
+				order = 1,
+				type = "header",
+				name = L["Minimap Options"],
+			},
+			intro = {
+				order = 2,
+				type = 'description',
+				name = L['MINIMAP_DESC'],
+			},
+
+			coords = {
+				type = "group",
+				name = L["Minimap Coordinates"],
+				order = 4,
+				guiInline = true,
+				disabled = function() return not E.private.general.minimap.enable or not E.db.sle.minimap.enable end,
+				args = {
+					coordsenable = {
+						type = "toggle",
+						name = L['Enable'],
+						order = 1,
+						desc = L['Enable/Disable Square Minimap Coords.'],
+						get = function(info) return E.db.sle.minimap.enable end,
+						set = function(info, value) E.db.sle.minimap.enable = value; E:GetModule('Minimap'):UpdateSettings() end,
+						disabled = function() return not E.private.general.minimap.enable end,
+					},
+					display = {
+						order = 2,
+						type = 'select',
+						name = L['Coords Display'],
+						desc = L['Change settings for the display of the coordinates that are on the minimap.'],
+						get = function(info) return E.db.sle.minimap.coords.display end,
+						set = function(info, value) E.db.sle.minimap.coords.display = value; E:GetModule('Minimap'):UpdateSettings() end,
+						values = {
+							['MOUSEOVER'] = L['Minimap Mouseover'],
+							['SHOW'] = L['Always Display'],
+						},
+					},
+					middle = {
+						order = 3,
+						type = "select",
+						name = L["Coords Location"],
+						desc = L['This will determine where the coords are shown on the minimap.'],
+						get = function(info) return E.db.sle.minimap.coords.middle end,
+						set = function(info, value) E.db.sle.minimap.coords.middle = value; E:GetModule('Minimap'):UpdateSettings() end,
+						values = {
+							['CORNERS'] = L['Bottom Corners'],
+							['CENTER'] = L['Bottom Center'],
+						},
+					},
+					--[[middle = {
+						order = 3,
+						type = "toggle",
+						name = L["Coords in the middle"],
+						desc = L['If enabled will show coordinates in the center of minimaps lower border. Otherwise in the lower corners.'],
+						disabled = function() return not E.db.sle.minimap.enable end,
+						get = function(info) return E.db.sle.minimap.middle end,
+						set = function(info, value) E.db.sle.minimap.middle = value; E:GetModule('Minimap'):UpdateSettings() end,
+					},]]
+				},
+			},
+			mapiconsenable = {
+				type = "toggle",
+				name = L['Enable'],
+				order = 5,
+				desc = L['Enable/Disable Square Minimap Buttons.'],
+				get = function(info) return E.private.sle.minimap.mapicons.enable end,
+				set = function(info, value) E.private.sle.minimap.mapicons.enable = value; E:StaticPopup_Show("PRIVATE_RL") end,
+			},
+			mapicons = {
+				type = "group",
+				name = L["Minimap Buttons"],
+				order = 6,
+				guiInline = true,
+				disabled = function() return not E.private.sle.minimap.mapicons.enable end,
+				args = {
+					barenable = {
+						order = 2,
+						type = "toggle",
+						name = L["Bar Enable"],
+						desc = L['Enable/Disable Square Minimap Bar.'],
+						get = function(info) return E.private.sle.minimap.mapicons.barenable end,
+						set = function(info, value) E.private.sle.minimap.mapicons.barenable = value; E:StaticPopup_Show("PRIVATE_RL") end,
+					},
+					skindungeon = {
+						order = 3,
+						type = 'toggle',
+						name = L['Skin Dungeon'],
+						desc = L['Skin dungeon icon.'],
+						get = function(info) return E.db.sle.minimap.mapicons.skindungeon end,
+						set = function(info, value) E.db.sle.minimap.mapicons.skindungeon = value; E:StaticPopup_Show("PRIVATE_RL") end,
+						disabled = function() return not E.private.sle.minimap.mapicons.enable end,
+					},
+					skinmail = {
+						order = 4,
+						type = 'toggle',
+						name = L['Skin Mail'],
+						desc = L['Skin mail icon.'],
+						get = function(info) return E.db.sle.minimap.mapicons.skinmail end,
+						set = function(info, value) E.db.sle.minimap.mapicons.skinmail = value; E:StaticPopup_Show("PRIVATE_RL") end,
+						disabled = function() return not E.private.sle.minimap.mapicons.enable end,
+					},
+					iconsize = {
+						order = 5,
+						type = 'range',
+						name = L['Button Size'],
+						desc = L['The size of the minimap buttons when not anchored to the minimap.'],
+						min = 16, max = 40, step = 1,
+						get = function(info) return E.db.sle.minimap.mapicons.iconsize end,
+						set = function(info, value) E.db.sle.minimap.mapicons.iconsize = value; E:GetModule('SLE_SquareMinimapButtons'):Update(SquareMinimapButtonBar) end,
+						disabled = function() return not E.private.sle.minimap.mapicons.enable end,
+					},
+					iconperrow = {
+						order = 6,
+						type = 'range',
+						name = L['Icons Per Row'],
+						desc = L['Anchor mode for displaying the minimap buttons are skinned.'],
+						min = 1, max = 12, step = 1,
+						get = function(info) return E.db.sle.minimap.mapicons.iconperrow end,
+						set = function(info, value) E.db.sle.minimap.mapicons.iconperrow = value; E:GetModule('SLE_SquareMinimapButtons'):Update(SquareMinimapButtonBar) end,
+						disabled = function() return not E.private.sle.minimap.mapicons.enable end,
+					},
+					iconmouseover = {
+						order = 7,
+						name = L['Mouse Over'],
+						desc = L['Show minimap buttons on mouseover.'],
+						type = "toggle",
+						get = function(info) return E.db.sle.minimap.mapicons.iconmouseover end,
+						set = function(info, value) E.db.sle.minimap.mapicons.iconmouseover = value; E:GetModule('SLE_SquareMinimapButtons'):ChangeMouseOverSetting() end,
+						disabled = function() return not E.private.sle.minimap.mapicons.enable end,
+					},
+				},
+			},
+		},
+	}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/nameplates_c.lua b/ElvUI_SLE/options/nameplates_c.lua
new file mode 100644
index 0000000..9274326
--- /dev/null
+++ b/ElvUI_SLE/options/nameplates_c.lua
@@ -0,0 +1,33 @@
+local E, L, V, P, G = unpack(ElvUI);
+local NP = E:GetModule('NamePlates')
+
+local function configTable()
+	E.Options.args.sle.args.options.args.general.args.nameplate = {
+		type = "group",
+		name = L["NamePlates"],
+		order = 82,
+		get = function(info) return E.db.sle.nameplate[ info[#info] ] end,
+		set = function(info, value) E.db.sle.nameplate[ info[#info] ] = value; NP:UpdateAllPlates() end,
+		args = {
+			header = {
+				order = 1,
+				type = "header",
+				name = L["NAMEPLATE_DESC"], --L["Nameplate Options"],
+			},
+			targetcount = {
+				type = "toggle",
+				order = 2,
+				name = L["Target Count"],
+				desc = L["Display the number of party / raid members targetting the nameplate unit."],
+			},
+			showthreat = {
+				type = "toggle",
+				order = 3,
+				name = L["Threat Text"],
+				desc = L["Display threat level as text on targeted, boss or mouseover nameplate."],
+			},
+		},
+	}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/tooltip_c.lua b/ElvUI_SLE/options/tooltip_c.lua
new file mode 100644
index 0000000..7c86230
--- /dev/null
+++ b/ElvUI_SLE/options/tooltip_c.lua
@@ -0,0 +1,67 @@
+local E, L, V, P, G = unpack(ElvUI);
+
+local function configTable()
+	--if not E.Options.args.sle.args.tooltip then E.Options.args.sle.args.tooltip = {} end
+	E.Options.args.sle.args.options.args.general.args.tooltip = {
+		order = 95,
+		type = "group",
+		get = function(info) return E.db.tooltip[ info[#info] ] end,
+		name = L["Tooltip"],
+		args = {
+			header = {
+				order = 1,
+				type = "header",
+				name = L["Tooltip"],
+			},
+			intro = {
+				order = 2,
+				type = 'description',
+				name = L["Tooltip enhancements"],
+			},
+			tooltipicon = {
+				order = 3,
+				type = 'toggle',
+				name = L["Faction Icon"],
+				desc = L["Show faction icon to the left of player's name on tooltip."],
+				get = function(info) return E.db.sle.tooltipicon end,
+				set = function(info, value) E.db.sle.tooltipicon = value end,
+			},
+			offset = {
+				type = "group",
+				name = L["Tooltip Cursor Offset"],
+				order = 4,
+				guiInline = true,
+				disabled = function() return not E.private.tooltip.enable or (not E.db.tooltip.cursorAnchor and E.private.tooltip.enable) end,
+				args = {
+					mouseOffsetX = {
+						order = 31,
+						type = 'range',
+						name = L["Tooltip X-offset"],
+						desc = L["Offset the tooltip on the X-axis."],
+						min = -200, max = 200, step = 1,
+						set = function(info, value) E.db.tooltip[ info[#info] ] = value end,
+					},
+					mouseOffsetY = {
+						order = 32,
+						type = 'range',
+						name = L["Tooltip Y-offset"],
+						desc = L["Offset the tooltip on the Y-axis."],
+						min = -200, max = 200, step = 1,
+						set = function(info, value) E.db.tooltip[ info[#info] ] = value end,
+					},
+					--overrideCombat = {
+						--order = 33,
+						--type = 'toggle',
+						--name = 'Override Combat Hide',
+						--desc = 'When enabled, Combat Hide will get overridden when Shift is pressed. Note: You have to mouseover the unit again for the tooltip to show.',
+						--set = function(info, value)
+						--E.db.tooltip[ info[#info] ] = value
+						--end,
+					--},
+				},
+			},
+		},
+	}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/uibuttons_c.lua b/ElvUI_SLE/options/uibuttons_c.lua
new file mode 100644
index 0000000..9a5fa33
--- /dev/null
+++ b/ElvUI_SLE/options/uibuttons_c.lua
@@ -0,0 +1,85 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local UB = E:GetModule('SLE_UIButtons')
+local function configTable()
+
+--UI Buttons
+E.Options.args.sle.args.options.args.general.args.uibuttons = {
+	type = "group",
+	name = L["UI Buttons"],
+	order = 99,
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["UI Buttons"],
+		},
+		intro = {
+			order = 2,
+			type = "description",
+			name = L["Additional menu with useful buttons"],
+		},
+		enabled = {
+			order = 3,
+			type = "toggle",
+			name = L["Enable"],
+			desc = L["Show/Hide UI buttons."],
+			get = function(info) return E.db.sle.uibuttons.enable end,
+			set = function(info, value) E.db.sle.uibuttons.enable = value; UB:Start() end
+		},
+		space1 = {
+			order = 4,
+			type = 'description',
+			name = "",
+		},
+		space2 = {
+			order = 5,
+			type = 'description',
+			name = "",
+		},
+		size = {
+			order = 6,
+			type = "range",
+			name = L['Size'],
+			desc = L["Sets size of buttons"],
+			min = 12, max = 25, step = 1,
+			disabled = function() return not E.db.sle.uibuttons.enable end,
+			get = function(info) return E.db.sle.uibuttons.size end,
+			set = function(info, value) E.db.sle.uibuttons.size = value; UB:FrameSize() end,
+		},
+		spacing = {
+			order = 7,
+			type = "range",
+			name = L['Button Spacing'],
+			desc = L['The spacing between buttons.'],
+			min = 1, max = 10, step = 1,
+			disabled = function() return not E.db.sle.uibuttons.enable end,
+			get = function(info) return E.db.sle.uibuttons.spacing end,
+			set = function(info, value) E.db.sle.uibuttons.spacing = value; UB:Positioning(); UB:FrameSize(); UB:MoverSize() end,
+		},
+		mouse = {
+			order = 8,
+			type = "toggle",
+			name = L["Mouse over"],
+			desc = L["Show on mouse over."],
+			disabled = function() return not E.db.sle.uibuttons.enable end,
+			get = function(info) return E.db.sle.uibuttons.mouse end,
+			set = function(info, value) E.db.sle.uibuttons.mouse = value; end
+		},
+		position = {
+			order = 10,
+			name = L["Buttons position"],
+			desc = L["Layout for UI buttons."],
+			type = "select",
+			values = {
+				["uib_hor"] = L['Horizontal'],
+				["uib_vert"] = L['Vertical'],
+			},
+			disabled = function() return not E.db.sle.uibuttons.enable end,
+			get = function(info) return E.db.sle.uibuttons.position end,
+			set = function(info, value) E.db.sle.uibuttons.position = value; UB:Positioning(); UB:MoverSize() end,
+		},
+	},
+}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/unitframes_c.lua b/ElvUI_SLE/options/unitframes_c.lua
new file mode 100644
index 0000000..57befb1
--- /dev/null
+++ b/ElvUI_SLE/options/unitframes_c.lua
@@ -0,0 +1,82 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+local UF = E:GetModule('UnitFrames')
+local CAN_HAVE_CLASSBAR = (E.myclass == "PALADIN" or E.myclass == "DRUID" or E.myclass == "DEATHKNIGHT" or E.myclass == "WARLOCK" or E.myclass == "PRIEST" or E.myclass == "MONK" or E.myclass == 'MAGE')
+local function configTable()
+
+local positionValues = {
+	TOPLEFT = 'TOPLEFT',
+	LEFT = 'LEFT',
+	BOTTOMLEFT = 'BOTTOMLEFT',
+	RIGHT = 'RIGHT',
+	TOPRIGHT = 'TOPRIGHT',
+	BOTTOMRIGHT = 'BOTTOMRIGHT',
+	CENTER = 'CENTER',
+	TOP = 'TOP',
+	BOTTOM = 'BOTTOM',
+	NONE = L['Hide']
+};
+
+E.Options.args.sle.args.options.args.general.args.unitframes = {
+	type = "group",
+	name = L["UnitFrames"],
+	order = 100,
+	args = {
+		header = {
+			order = 1,
+			type = "header",
+			name = L["Additional unit frames options"],
+		},
+		info = {
+			order = 2,
+			type = "description",
+			name = L["Options for customizing unit frames. Please don't change these setting when ElvUI's testing frames for bosses and arena teams are shown. That will make them invisible until retoggling."],
+		},
+		Reset = {
+			order = 3,
+			type = 'execute',
+			name = L['Restore Defaults'],
+			desc = L["Reset these options to defaults"],
+			func = function() E:GetModule('SLE'):Reset(nil, true) end,
+		},
+		indicators = {
+			order = 5,
+			type = "group",
+			name = L["Player Frame Indicators"],
+			guiInline = true,
+			args = {
+				combaticopos = {
+					order = 6,
+					type = "select",
+					name = L["Combat Position"],
+					desc = L["Set the point to show combat icon"],
+					get = function(info) return E.db.sle.combatico.pos end,
+					set = function(info, value) E.db.sle.combatico.pos = value; UF:Update_CombatIndicator() end,
+					values = positionValues
+				},
+			},
+		},
+	},
+}
+
+if E.myclass == "DRUID" or E.myclass == "WARLOCK" then
+E.Options.args.sle.args.options.args.general.args.unitframes.args.druid = {
+	order = 7,
+	type = 'group',
+	name = L["Classbar Energy"],
+	guiInline = true,
+	args = {
+		powtext = {
+			order = 1,
+			type = "toggle",
+			name = L["Enable"],
+			desc = L["Show/hide the text with exact number of energy (Solar/Lunar or Demonic Fury) on your Classbar."],
+			get = function(info) return E.db.sle.powtext end,
+			set = function(info, value) E.db.sle.powtext = value; UF:ClassbarTextSLE() end,
+		},
+	},
+}
+end
+
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file
diff --git a/ElvUI_SLE/options/vehicle_c.lua b/ElvUI_SLE/options/vehicle_c.lua
new file mode 100644
index 0000000..20e61a4
--- /dev/null
+++ b/ElvUI_SLE/options/vehicle_c.lua
@@ -0,0 +1,30 @@
+local E, L, V, P, G, _ = unpack(ElvUI); --Inport: Engine, Locales, PrivateDB, ProfileDB, GlobalDB, Localize Underscore
+
+local function configTable()
+	E.Options.args.sle.args.options.args.general.args.vehicle = {
+		type = "group",
+		name = L["Enhanced Vehicle Bar"],
+		order = 84,
+		args = {
+			header = {
+				order = 1,
+				type = "header",
+				name = L["Enhanced Vehicle Bar"],
+			},
+			info = {
+				order = 2,
+				type = "description",
+				name = L["Use the enhanced vehicle bar based on work by Azilroka"],
+			},
+			enable = {
+				order = 3,
+				type = "toggle",
+				name = L["Enable"],
+				get = function(info) return E.private.sle.vehicle.enable end,
+				set = function(info, value) E.private.sle.vehicle.enable = value; E:StaticPopup_Show("PRIVATE_RL") end,
+			},
+		},
+	}
+end
+
+table.insert(E.SLEConfigs, configTable)
\ No newline at end of file