Quantcast

Moar exporting

Darthpred [10-01-14 - 21:17]
Moar exporting
Filename
ElvUI_SLE/core/core.lua
ElvUI_SLE/core/toolkit.lua
ElvUI_SLE/defaults/private.lua
ElvUI_SLE/options/imports_c.lua
diff --git a/ElvUI_SLE/core/core.lua b/ElvUI_SLE/core/core.lua
index 8bd5e37..ff5d988 100644
--- a/ElvUI_SLE/core/core.lua
+++ b/ElvUI_SLE/core/core.lua
@@ -64,6 +64,171 @@ local function CheckIncompatible()
 	end
 end

+function SLE:CreateExport()
+	local frame = CreateFrame("Frame", "SLEExImFrame", E.UIParent)
+	tinsert(UISpecialFrames, "SLEExImFrame")
+	frame:SetTemplate('Transparent')
+	frame:Size(800, 400)
+	frame:Point('CENTER', E.UIParent)
+	frame:Hide()
+	frame:EnableMouse(true)
+	frame:SetFrameStrata("DIALOG")
+	frame:SetMovable(true)
+	frame:RegisterForDrag("LeftButton")
+	frame:SetScript("OnDragStart", function(self)
+		if IsShiftKeyDown() then
+			self:StartMoving()
+		end
+	end)
+	frame:SetScript("OnDragStop", frame.StopMovingOrSizing)
+
+	local text = frame:CreateFontString(nil, "OVERLAY")
+	text:SetFont(E["media"].normFont, 14)
+	text:SetPoint("TOP", frame, "TOP", -10, -10)
+	text:SetText("<  "..L["Export / Import"].."  >")
+	text:SetJustifyH("left")
+
+	local ExScrollArea = CreateFrame("ScrollFrame", "SLEExportScrollFrame", frame, "UIPanelScrollFrameTemplate")
+	ExScrollArea:Point("TOPLEFT", frame, "TOPLEFT", 10, -30)
+	ExScrollArea:Point("BOTTOMRIGHT", frame, "BOTTOM", -25, 10)
+	ExScrollArea:CreateBackdrop()
+	Sk:HandleScrollBar(SLEExportScrollFrameScrollBar)
+
+	local ImScrollArea = CreateFrame("ScrollFrame", "SLEImportScrollFrame", frame, "UIPanelScrollFrameTemplate")
+	ImScrollArea:Point("TOPRIGHT", frame, "TOPRIGHT", -30, -30)
+	ImScrollArea:Point("BOTTOMLEFT", frame, "BOTTOM", 5, 10)
+	ImScrollArea:CreateBackdrop()
+	Sk:HandleScrollBar(SLEImportScrollFrameScrollBar)
+
+	local ExEditBox = CreateFrame("EditBox", "SLEExportEditBox", frame)
+	ExEditBox:SetMultiLine(true)
+	ExEditBox:SetMaxLetters(0)
+	ExEditBox:EnableMouse(true)
+	ExEditBox:SetAutoFocus(false)
+	ExEditBox:SetFontObject(ChatFontNormal)
+	ExEditBox:Width(ExScrollArea:GetWidth())
+	ExEditBox:SetScript("OnEscapePressed", function() SLEExImFrame:Hide() end)
+	ExScrollArea:SetScrollChild(ExEditBox)
+	SLEExportEditBox:SetScript("OnTextChanged", function(self, userInput)
+		if userInput then return end
+		local _, max = SLEExportScrollFrameScrollBar:GetMinMaxValues()
+		for i=1, max do
+			ScrollFrameTemplate_OnMouseWheel(SLEExportScrollFrame, -1)
+		end
+	end)
+
+	local ImEditBox = CreateFrame("EditBox", "SLEImportEditBox", frame)
+	ImEditBox:SetMultiLine(true)
+	ImEditBox:SetMaxLetters(0)
+	ImEditBox:EnableMouse(true)
+	ImEditBox:SetAutoFocus(false)
+	ImEditBox:SetFontObject(ChatFontNormal)
+	ImEditBox:Width(ExScrollArea:GetWidth())
+	ImEditBox:SetScript("OnEscapePressed", function() SLEExImFrame:Hide() end)
+	ImScrollArea:SetScrollChild(ImEditBox)
+	SLEImportEditBox:SetScript("OnTextChanged", function(self, userInput)
+		if userInput then return end
+		local _, max = SLEImportScrollFrameScrollBar:GetMinMaxValues()
+		for i=1, max do
+			ScrollFrameTemplate_OnMouseWheel(SLEImportScrollFrame, -1)
+		end
+	end)
+
+
+	local close = CreateFrame("Button", "SLEExImFrameCloseButton", frame, "UIPanelCloseButton")
+	close:SetPoint("TOPRIGHT")
+	close:SetFrameLevel(close:GetFrameLevel() + 1)
+	close:EnableMouse(true)
+	Sk:HandleCloseButton(close)
+
+	local exHelp = CreateFrame("Button", "SLEExportHelp", frame)
+	exHelp:Size(20, 20)
+	exHelp:Point("TOPLEFT", frame, "TOPLEFT", 9, -6)
+	local exHelp_t = exHelp:CreateFontString(nil, "OVERLAY")
+	exHelp_t:SetFont(E["media"].normFont, 14)
+	exHelp_t:SetPoint("CENTER", exHelp)
+	exHelp_t:SetText("?")
+	Sk:HandleButton(exHelp)
+	exHelp:HookScript("OnEnter", function(self)
+		GameTooltip:SetOwner(self, 'ANCHOR_TOPLEFT', 2, 4)
+		GameTooltip:ClearLines()
+		GameTooltip:AddLine([[|cffFFFFFFExporting:
+Click the Export button and the settings that are different from defaults in selected options tables' will be dumped to the export box.
+ - Profile will copy profile based settings;
+ - Private will copy character specific settings;
+ - Global will copy global settings.|r
+|cffFF0000Warning: exporting may cause your game to freeze for some time.|r
+
+|cffFFFFFFImporting:
+To import the settings you need to paste the setting table
+or line to the import editbox and click import button.
+You can use next formats for settings:
+1) E.db.chat.panelHeight = 185
+2) E.db['chat']['panelHeight'] = 185
+3) E.db['chat'] = {
+...
+}
+In case of the third format you should put at least 2 values.|r
+
+|cffFF0000Know issue: coloring options will be exported anyway no matter the values and exporting options set.|r]])
+		GameTooltip:Show()
+	end)
+	exHelp:HookScript("OnLeave", function() GameTooltip:Hide() end)
+	exHelp:SetScript("OnClick", function(self)
+		SLEExportEditBox:SetText(dropdown.selectedID)
+	end)
+
+	local exButton = CreateFrame("Button", "SLEExportButton", frame)
+	exButton:Size(100, 20)
+	exButton:Point("LEFT", exHelp, "RIGHT", 4, 0)
+	local exButton_t = exButton:CreateFontString(nil, "OVERLAY")
+	exButton_t:SetFont(E["media"].normFont, 14)
+	exButton_t:SetPoint("CENTER", exButton)
+	exButton_t:SetText(L["Export"])
+	Sk:HandleButton(exButton)
+	exButton:SetScript("OnClick", SLE.Exporting)
+
+	local imButton = CreateFrame("Button", "SLEImportButton", frame)
+	imButton:Size(100, 20)
+	imButton:Point("LEFT", exButton, "RIGHT", 4, 0)
+	local imButton_t = imButton:CreateFontString(nil, "OVERLAY")
+	imButton_t:SetFont(E["media"].normFont, 14)
+	imButton_t:SetPoint("CENTER", imButton)
+	imButton_t:SetText(L["Import"])
+	Sk:HandleButton(imButton)
+	imButton:SetScript("OnClick", function(self)
+ 		local msg = ImEditBox:GetText()
+		msg = SLE:ImportTableReplace(msg)
+		if msg then
+			local func, err = loadstring(msg)
+			if not err then
+				func()
+				E:UpdateAll(true)
+				ReloadUI()
+			else
+				SLE:Print(err)
+			end
+		else
+			SLE:Print("Entered text is not a valid settings table!")
+		end
+	end)
+
+
+
+	local returnB = CreateFrame("Button", "SLEReturnButton", frame)
+	returnB:Size(100, 20)
+	returnB:Point("RIGHT", close, "LEFT", 4, 0)
+	local returnB_t = returnB:CreateFontString(nil, "OVERLAY")
+	returnB_t:SetFont(E["media"].normFont, 14)
+	returnB_t:SetPoint("CENTER", returnB)
+	returnB_t:SetText(L["Back"])
+	Sk:HandleButton(returnB)
+	returnB:SetScript("OnClick", function(self)
+ 		E:ToggleConfig()
+		SLEExImFrame:Hide()
+	end)
+end
+
 function SLE:Initialize()
 	--ElvUI's version check
 	--[[if elvV < elvR then
diff --git a/ElvUI_SLE/core/toolkit.lua b/ElvUI_SLE/core/toolkit.lua
index 982402e..f4e181d 100644
--- a/ElvUI_SLE/core/toolkit.lua
+++ b/ElvUI_SLE/core/toolkit.lua
@@ -79,51 +79,51 @@ function SLE:OpenExport()
 	E:ToggleConfig()
 	if not SLEExImFrame then SLE:CreateExport() end
 	if not SLEExImFrame:IsShown() then
-		SLEExportEditBox:SetText("Press button - get ya settings!")
-		SLEImportEditBox:SetText("Put your settings here, NAO!")
+		SLEExportEditBox:SetText(L["SLE_Exp_Desc"])
+		SLEImportEditBox:SetText(L["SLE_Imp_Desc"])
 		SLEExImFrame:Show()
 	end
 end

-function SLE:DisplayToTableString(tab, set)
-    local ret = "";
-    local function recurse(table, level)
-        for i,v in pairs(table) do
-			ret = ret..strrep("    ", level)..(level == 0 and set or "").."[";
-            if(type(i) == "string") then
-                ret = ret.."\""..i.."\"";
-            else
-                ret = ret..i;
-            end
-            ret = ret.."] = ";
-
-            if(type(v) == "number") then
-                ret = ret..v..(level == 0 and "" or ",").."\n"
-            elseif(type(v) == "string") then
-                ret = ret.."\""..v:gsub("\\", "\\\\"):gsub("\n", "\\n"):gsub("\"", "\\\"")..(level == 0 and "\"\n" or "\",\n")
-            elseif(type(v) == "boolean") then
-                if(v) then
-                    ret = ret.."true"..(level == 0 and "" or ",").."\n"
-                else
-                    ret = ret.."false"..(level == 0 and "" or ",").."\n"
-                end
-            elseif(type(v) == "table") then
-                ret = ret.."{\n"
-                recurse(v, level + 1);
-					ret = ret..strrep("    ", level).."}"..(level == 0 and "" or ",").."\n"
-            else
-                ret = ret.."\""..tostring(v).."\",\n"
-            end
-        end
-    end
-
-    if(tab) then
-        recurse(tab, 0);
-    end
-    return ret;
+local datable = {}
+
+function SLE:ExportPrint()
+	local text = ''
+	for i = 1, #datable do
+		text = text..datable[i]
+	end
+
+	return text
+end
+
+function SLE:SettingTable(t, s, root)
+	if not root then root = "" end
+	for k, v in pairs(t) do
+		if type(v) == "string" then
+			if root[k] ~= v or E.global.sle.export.full then
+				tinsert(datable, #(datable)+1, s.."."..k.." = "..v.."\n")
+			end
+		elseif type(v) == "number" then
+			if root[k] ~= v or E.global.sle.export.full then
+				tinsert(datable, #(datable)+1, s.."."..k.." = "..v.."\n")
+			else
+			end
+		elseif type(v) == "boolean" then
+			if root[k] ~= v or E.global.sle.export.full then
+				local b = v == true and "true" or "false"
+				tinsert(datable, #(datable)+1, s.."."..k.." = "..b.."\n")
+			end
+		else
+			local new = "."..k
+			SLE:SettingTable(t[k], s..new, root[k])
+		end
+	end
 end

 function SLE:ImportTableReplace(msg)
+	if not string.find(msg, "E.db") and not string.find(msg, "E.private") and not string.find(msg, "E.global") then
+		return nil
+	end
 	if string.find(msg, "E.db") then
 		msg = gsub(msg, "E.db", "ElvUI[1].db")
 	end
@@ -133,238 +133,29 @@ function SLE:ImportTableReplace(msg)
 	if string.find(msg, "E.global") then
 		msg = gsub(msg, "E.global", "ElvUI[1].global")
 	end
-
+
 	return msg
 end

 function SLE:Exporting()
-	local msg
-	local dropdown = SLEExImDropDown
-	if dropdown.selectedID == 1 then
-		msg = "--Profile settings--\n"..SLE:DisplayToTableString(E.db, "E.db")
-	elseif dropdown.selectedID == 2 then
-		msg = "--Character settings--\n"..SLE:DisplayToTableString(E.private, "E.private")
-	elseif dropdown.selectedID == 3 then
-		msg = "--Global settings--\n"..SLE:DisplayToTableString(E.global, "E.global")
-	else
-		msg = "--Profile settings--\n"..SLE:DisplayToTableString(E.db, "E.db").."--Character settings--\n"..SLE:DisplayToTableString(E.private, "E.private").."--Global settings--\n"..SLE:DisplayToTableString(E.global, "E.global")
+	local msg = ''
+	datable = {}
+	if E.global.sle.export.profile then
+		tinsert(datable, #(datable)+1, "--Profile--\n")
+		SLE:SettingTable(E.db, "E.db", P)
+	end
+	if E.global.sle.export.private then
+		tinsert(datable, #(datable)+1, "--Character--\n")
+		SLE:SettingTable(E.private, "E.private", V)
 	end
+	if E.global.sle.export.global then
+		tinsert(datable, #(datable)+1, "--Global--\n")
+		SLE:SettingTable(E.global, "E.global", G)
+	end
+	msg = SLE:ExportPrint()
 	local editbox = SLEExportEditBox
 	editbox:SetText(msg)
 	editbox:SetFocus()
 	editbox:HighlightText()
 end
-
-function SLE:CreateExport()
-	local frame = CreateFrame("Frame", "SLEExImFrame", E.UIParent)
-	tinsert(UISpecialFrames, "SLEExImFrame")
-	frame:SetTemplate('Transparent')
-	frame:Size(800, 400)
-	frame:Point('BOTTOM', E.UIParent, 'BOTTOM', 0, 20)
-	frame:Hide()
-	frame:EnableMouse(true)
-	frame:SetFrameStrata("DIALOG")
-	frame:SetMovable(true)
-	frame:RegisterForDrag("LeftButton")
-	frame:SetScript("OnDragStart", function(self)
-		if IsShiftKeyDown() then
-			self:StartMoving()
-		end
-	end)
-	frame:SetScript("OnDragStop", frame.StopMovingOrSizing)
-
-	local text = frame:CreateFontString(nil, "OVERLAY")
-	text:SetFont(E["media"].normFont, 14)
-	text:SetPoint("TOP", frame, "TOP", -10, -10)
-	text:SetText("<  "..L["Export / Import"].."  >")
-	text:SetJustifyH("left")
-
-	local dropdown = CreateFrame("Button", "SLEExImDropDown", frame, "UIDropDownMenuTemplate")
-	dropdown:ClearAllPoints()
-	dropdown:SetPoint("TOPLEFT", frame, "TOPLEFT", 0, -3)
-	dropdown:Show()
-	Sk:HandleDropDownBox(dropdown)
-
-	local values = {
-		L["Profile"],
-		L["Private"],
-		L["Global"],
-		L["All"],
-	}
-
-	local function OnClick(self)
-	   UIDropDownMenu_SetSelectedID(dropdown, self:GetID())
-	end
-
-	local function initialize(self, level)
-	   local info = UIDropDownMenu_CreateInfo()
-	   for _,v in pairs(values) do
-		  info = UIDropDownMenu_CreateInfo()
-		  info.text = v
-		  info.value = v
-		  info.func = OnClick
-		  UIDropDownMenu_AddButton(info, level)
-	   end
-	end
-
-
-	UIDropDownMenu_Initialize(dropdown, initialize)
-	UIDropDownMenu_SetSelectedID(dropdown, 1)
-	UIDropDownMenu_JustifyText(dropdown, "LEFT")
-
-	local ExScrollArea = CreateFrame("ScrollFrame", "SLEExportScrollFrame", frame, "UIPanelScrollFrameTemplate")
-	ExScrollArea:Point("TOPLEFT", frame, "TOPLEFT", 10, -30)
-	ExScrollArea:Point("BOTTOMRIGHT", frame, "BOTTOM", -25, 30)
-	ExScrollArea:CreateBackdrop()
-	Sk:HandleScrollBar(SLEExportScrollFrameScrollBar)
-
-	local ImScrollArea = CreateFrame("ScrollFrame", "SLEImportScrollFrame", frame, "UIPanelScrollFrameTemplate")
-	ImScrollArea:Point("TOPRIGHT", frame, "TOPRIGHT", -30, -30)
-	ImScrollArea:Point("BOTTOMLEFT", frame, "BOTTOM", 5, 30)
-	ImScrollArea:CreateBackdrop()
-	Sk:HandleScrollBar(SLEImportScrollFrameScrollBar)
-
-	local ExEditBox = CreateFrame("EditBox", "SLEExportEditBox", frame)
-	ExEditBox:SetMultiLine(true)
-	ExEditBox:SetMaxLetters(0)
-	ExEditBox:EnableMouse(true)
-	ExEditBox:SetAutoFocus(false)
-	ExEditBox:SetFontObject(ChatFontNormal)
-	ExEditBox:Width(ExScrollArea:GetWidth())
-	ExEditBox:SetScript("OnEscapePressed", function() SLEExImFrame:Hide() end)
-	ExScrollArea:SetScrollChild(ExEditBox)
-	SLEExportEditBox:SetScript("OnTextChanged", function(self, userInput)
-		if userInput then return end
-		local _, max = SLEExportScrollFrameScrollBar:GetMinMaxValues()
-		for i=1, max do
-			ScrollFrameTemplate_OnMouseWheel(SLEExportScrollFrame, -1)
-		end
-	end)
-
-	local ImEditBox = CreateFrame("EditBox", "SLEImportEditBox", frame)
-	ImEditBox:SetMultiLine(true)
-	ImEditBox:SetMaxLetters(0)
-	ImEditBox:EnableMouse(true)
-	ImEditBox:SetAutoFocus(false)
-	ImEditBox:SetFontObject(ChatFontNormal)
-	ImEditBox:Width(ExScrollArea:GetWidth())
-	ImEditBox:SetScript("OnEscapePressed", function() SLEExImFrame:Hide() end)
-	ImScrollArea:SetScrollChild(ImEditBox)
-	SLEImportEditBox:SetScript("OnTextChanged", function(self, userInput)
-		if userInput then return end
-		local _, max = SLEImportScrollFrameScrollBar:GetMinMaxValues()
-		for i=1, max do
-			ScrollFrameTemplate_OnMouseWheel(SLEImportScrollFrame, -1)
-		end
-	end)
-
-
-	local close = CreateFrame("Button", "SLEExImFrameCloseButton", frame, "UIPanelCloseButton")
-	close:SetPoint("TOPRIGHT")
-	close:SetFrameLevel(close:GetFrameLevel() + 1)
-	close:EnableMouse(true)
-
-	Sk:HandleCloseButton(close)
-
-	local button1 = CreateFrame("Button", "SLEExportProfileTab", frame)
-	button1:Size(100, 20)
-	button1:Point("BOTTOMLEFT", frame, "BOTTOMLEFT", 9, 6)
-	local button1_t = button1:CreateFontString(nil, "OVERLAY")
-	button1_t:SetFont(E["media"].normFont, 14)
-	button1_t:SetPoint("CENTER", button1)
-	button1_t:SetText("Export Profile")
-	Sk:HandleButton(button1)
-	button1:SetScript("OnClick", SLE.Exporting)
-
-	-- local button2 = CreateFrame("Button", "SLEExportPrivateTab", frame)
-	-- button2:Size(100, 20)
-	-- button2:Point("LEFT", button1, "RIGHT", 4, 0)
-	-- local button2_t = button2:CreateFontString(nil, "OVERLAY")
-	-- button2_t:SetFont(E["media"].normFont, 14)
-	-- button2_t:SetPoint("CENTER", button2)
-	-- button2_t:SetText("Export Private")
-	-- Sk:HandleButton(button2)
-	-- button2:SetScript("OnClick", function(self)
-		-- local msg = SLE:DisplayToTableString(E.private, "E.private")
-		-- ExEditBox:SetText(msg)
-		-- ExEditBox:SetFocus()
-		-- ExEditBox:HighlightText()
-	-- end)
-
-	local exHelp = CreateFrame("Button", "SLEExportHelp", frame)
-	exHelp:Size(20, 20)
-	exHelp:Point("LEFT", button1, "RIGHT", 4, 0)
-	local exHelp_t = exHelp:CreateFontString(nil, "OVERLAY")
-	exHelp_t:SetFont(E["media"].normFont, 14)
-	exHelp_t:SetPoint("CENTER", exHelp)
-	exHelp_t:SetText("?")
-	Sk:HandleButton(exHelp)
-	exHelp:HookScript("OnEnter", function(self)
-		GameTooltip:SetOwner(self, 'ANCHOR_TOPLEFT', 2, 4)
-		GameTooltip:ClearLines()
-		GameTooltip:AddLine([[|cffFFFFFFExporting:
-Select the table you are willing to export in the dropdown.
- - Profile will copy profile based settings;
- - Private will copy character specific settings;
- - Global will copy global settings;
- - All will copy all above.|r
-|cffFF0000Warning: exporting may cause your game to freeze for some time.|r]])
-		GameTooltip:Show()
-	end)
-	exHelp:HookScript("OnLeave", function() GameTooltip:Hide() end)
-
-	local button3 = CreateFrame("Button", "SLEExportPrivateTab", frame)
-	button3:Size(100, 20)
-	button3:Point("BOTTOMLEFT", frame, "BOTTOM", 4, 6)
-	local button3_t = button3:CreateFontString(nil, "OVERLAY")
-	button3_t:SetFont(E["media"].normFont, 14)
-	button3_t:SetPoint("CENTER", button3)
-	button3_t:SetText("Import")
-	Sk:HandleButton(button3)
-	button3:SetScript("OnClick", function(self) --This shit doesn't work right now
- 		local msg = ImEditBox:GetText()
-		msg = SLE:ImportTableReplace(msg)
-		if msg then
-			local func, err = loadstring(msg)
-			if not err then
-				func()
-				E:UpdateAll(true)
-				ReloadUI()
-			else
-				SLE:Print(err)
-			end
-		else
-			SLE:Print("Entered text is not a valid settings table!")
-		end
-	end)
-
-	local imHelp = CreateFrame("Button", "SLEImportHelp", frame)
-	imHelp:Size(20, 20)
-	imHelp:Point("LEFT", button3, "RIGHT", 4, 0)
-	local imHelp_t = imHelp:CreateFontString(nil, "OVERLAY")
-	imHelp_t:SetFont(E["media"].normFont, 14)
-	imHelp_t:SetPoint("CENTER", imHelp)
-	imHelp_t:SetText("?")
-	Sk:HandleButton(imHelp)
-	imHelp:HookScript("OnEnter", function(self)
-		GameTooltip:SetOwner(self, 'ANCHOR_TOPLEFT', 2, 4)
-		GameTooltip:ClearLines()
-		GameTooltip:AddLine([[|cffFFFFFFImporting:
-To import the settings you need to paste the setting table
-or line to the import editbox and click import button.
-You can use next formats for settings:
-1) E.db.chat.panelHeight = 185
-2) E.db['chat']['panelHeight'] = 185
-3) E.db['chat'] = {
-...
-}
-In case of the third format you should put at least 2 values.|r]])
-			if self.allowDrop then
-				GameTooltip:AddLine(L['Right-click to drop the item.'])
-			end
-		GameTooltip:Show()
-	end)
-	imHelp:HookScript("OnLeave", function() GameTooltip:Hide() end)
-end
-
 hooksecurefunc(E, "UpdateAll", UpdateAll)
\ No newline at end of file
diff --git a/ElvUI_SLE/defaults/private.lua b/ElvUI_SLE/defaults/private.lua
index 9bfe93b..a343b45 100644
--- a/ElvUI_SLE/defaults/private.lua
+++ b/ElvUI_SLE/defaults/private.lua
@@ -70,4 +70,13 @@ V['sle'] = {
 	},

 	['backgrounds'] = false,
+}
+
+G['sle'] = {
+	['export'] = {
+		['full'] = false,
+		['profile'] = true,
+		['private'] = false,
+		['global'] = false,
+	},
 }
\ No newline at end of file
diff --git a/ElvUI_SLE/options/imports_c.lua b/ElvUI_SLE/options/imports_c.lua
index 9fa2cd8..0608d0e 100644
--- a/ElvUI_SLE/options/imports_c.lua
+++ b/ElvUI_SLE/options/imports_c.lua
@@ -523,9 +523,42 @@ local function configTable()
 						type = "description",
 						name = L["SLE_EXPORTS"],
 					},
+					profile = {
+						order = 2,
+						type = "toggle",
+						name = L["Profile"],
+						get = function(info) return E.global.sle.export.profile end,
+						set = function(info, value)	E.global.sle.export.profile = value end,
+					},
+					private = {
+						order = 3,
+						type = "toggle",
+						name = L["Private"],
+						get = function(info) return E.global.sle.export.private end,
+						set = function(info, value)	E.global.sle.export.private = value end,
+					},
+					global = {
+						order = 4,
+						type = "toggle",
+						name = L["Global"],
+						get = function(info) return E.global.sle.export.global end,
+						set = function(info, value)	E.global.sle.export.global = value end,
+					},
+					full = {
+						order = 5,
+						type = "toggle",
+						name = L["Full tables"],
+						get = function(info) return E.global.sle.export.full end,
+						set = function(info, value)	E.global.sle.export.full = value end,
+					},
+					space = {
+						order = 6,
+						type = 'description',
+						name = "",
+					},
 					export = {
 						type = 'execute',
-						order = 2,
+						order = 7,
 						name = L["Export"],
 						func = function(info, value) SLE:OpenExport() end,
 					},