You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
175 lines
6.3 KiB
175 lines
6.3 KiB
local L = DBM_GUI_L
|
|
|
|
local DBM = DBM
|
|
local type, ipairs, tinsert = type, ipairs, table.insert
|
|
local LibStub = _G["LibStub"]
|
|
|
|
local Create, Refresh
|
|
local profileDropdown = {}
|
|
|
|
local profilePanel = DBM_GUI.Cat_General:CreateNewPanel(L.Panel_Profile, "option")
|
|
|
|
local createProfileArea = profilePanel:CreateArea(L.Area_CreateProfile)
|
|
local createTextbox = createProfileArea:CreateEditBox(L.EnterProfileName, "", 175)
|
|
createTextbox:SetMaxLetters(17)
|
|
createTextbox:SetPoint("TOPLEFT", 25, -25)
|
|
createTextbox:SetScript("OnEnterPressed", function()
|
|
Create()
|
|
end)
|
|
|
|
local createButton = createProfileArea:CreateButton(L.CreateProfile)
|
|
createButton:SetPoint("LEFT", createTextbox, "RIGHT", 10, 0)
|
|
createButton:SetScript("OnClick", function()
|
|
Create()
|
|
end)
|
|
|
|
local applyProfileArea = profilePanel:CreateArea(L.Area_ApplyProfile)
|
|
local applyProfile = applyProfileArea:CreateDropdown(L.SelectProfileToApply, profileDropdown, nil, nil, function(value)
|
|
DBM_UsedProfile = value
|
|
DBM:ApplyProfile(value)
|
|
Refresh()
|
|
end)
|
|
applyProfile:SetPoint("TOPLEFT", 0, -20)
|
|
applyProfile:SetScript("OnShow", function()
|
|
applyProfile:SetSelectedValue(DBM_UsedProfile)
|
|
end)
|
|
|
|
local copyProfileArea = profilePanel:CreateArea(L.Area_CopyProfile)
|
|
local copyProfile = copyProfileArea:CreateDropdown(L.SelectProfileToCopy, profileDropdown, nil, nil, function(value)
|
|
DBM:CopyProfile(value)
|
|
C_Timer.After(0.05, Refresh)
|
|
end)
|
|
copyProfile:SetPoint("TOPLEFT", 0, -20)
|
|
copyProfile:SetScript("OnShow", function()
|
|
copyProfile.value = nil
|
|
copyProfile.text = nil
|
|
_G[copyProfile:GetName() .. "Text"]:SetText("")
|
|
end)
|
|
|
|
local deleteProfileArea = profilePanel:CreateArea(L.Area_DeleteProfile)
|
|
local deleteProfile = deleteProfileArea:CreateDropdown(L.SelectProfileToDelete, profileDropdown, nil, nil, function(value)
|
|
DBM:DeleteProfile(value)
|
|
C_Timer.After(0.05, Refresh)
|
|
end)
|
|
deleteProfile:SetPoint("TOPLEFT", 0, -20)
|
|
deleteProfile:SetScript("OnShow", function()
|
|
deleteProfile.value = nil
|
|
deleteProfile.text = nil
|
|
_G[deleteProfile:GetName() .. "Text"]:SetText("")
|
|
end)
|
|
|
|
local dualProfileArea = profilePanel:CreateArea(L.Area_DualProfile)
|
|
local dualProfile = dualProfileArea:CreateCheckButton(L.DualProfile, true)
|
|
dualProfile:SetScript("OnClick", function()
|
|
DBM_UseDualProfile = not DBM_UseDualProfile
|
|
DBM:SpecChanged(true)
|
|
end)
|
|
dualProfile:SetChecked(DBM_UseDualProfile)
|
|
|
|
local function actuallyImport(importTable)
|
|
DBM.Options = importTable.DBM -- Cached options
|
|
DBM_AllSavedOptions[_G["DBM_UsedProfile"]] = importTable.DBM
|
|
DBT_AllPersistentOptions[_G["DBM_UsedProfile"]] = importTable.DBT
|
|
DBM_MinimapIcon = importTable.minimap
|
|
if importTable.minimap.hide then
|
|
LibStub("LibDBIcon-1.0"):Hide("DBM")
|
|
else
|
|
LibStub("LibDBIcon-1.0"):Show("DBM")
|
|
end
|
|
DBT:SetOption("Skin", DBT.Options.Skin) -- Forces a hard update on bars.
|
|
DBM:AddMsg("Profile imported.")
|
|
end
|
|
|
|
local importExportProfilesArea = profilePanel:CreateArea(L.Area_ImportExportProfile)
|
|
local importExportText = importExportProfilesArea:CreateText(L.ImportExportInfo, nil, true)
|
|
local exportProfile = importExportProfilesArea:CreateButton(L.ButtonExportProfile, 120, 20, function()
|
|
DBM_GUI:CreateExportProfile({
|
|
DBM = DBM.Options,
|
|
DBT = DBT_AllPersistentOptions[_G["DBM_UsedProfile"]],
|
|
minimap = DBM_MinimapIcon
|
|
})
|
|
end)
|
|
exportProfile:SetPoint("TOPLEFT", importExportText, "BOTTOMLEFT", 0, -12)
|
|
local localeTable = {
|
|
RaidWarningSound = "RaidWarnSound",
|
|
SpecialWarningSound = "SpecialWarnSoundOption",
|
|
SpecialWarningSound2 = "SpecialWarnSoundOption",
|
|
SpecialWarningSound3 = "SpecialWarnSoundOption",
|
|
SpecialWarningSound4 = "SpecialWarnSoundOption",
|
|
SpecialWarningSound5 = "SpecialWarnSoundOption",
|
|
EventSoundVictory2 = "EventVictorySound",
|
|
EventSoundWipe = "EventWipeSound",
|
|
EventSoundEngage2 = "EventEngageSound",
|
|
EventSoundMusic = "EventEngageMusic",
|
|
EventSoundDungeonBGM = "EventDungeonMusic"
|
|
}
|
|
---@class DBMImportProfileButton: DBMPanelButton
|
|
local importProfile = importExportProfilesArea:CreateButton(L.ButtonImportProfile, 120, 20, function()
|
|
DBM_GUI:CreateImportProfile(function(importTable)
|
|
local errors = {}
|
|
-- Check if voice pack missing
|
|
local activeVP = importTable.DBM.ChosenVoicePack2
|
|
if activeVP ~= "None" then
|
|
if not DBM.VoiceVersions[activeVP] or (DBM.VoiceVersions[activeVP] and DBM.VoiceVersions[activeVP] == 0) then
|
|
if activeVP ~= "VEM" then
|
|
DBM:AddMsg(L.ImportVoiceMissing:format(activeVP))
|
|
tinsert(errors, "ChosenVoicePack2")
|
|
end
|
|
end
|
|
end
|
|
-- Check if sound packs are missing
|
|
for _, soundSetting in ipairs({
|
|
"RaidWarningSound", "SpecialWarningSound", "SpecialWarningSound2", "SpecialWarningSound3", "SpecialWarningSound4", "SpecialWarningSound5", "EventSoundVictory2",
|
|
"EventSoundWipe", "EventSoundEngage2", "EventSoundMusic", "EventSoundDungeonBGM", "RangeFrameSound1", "RangeFrameSound2"
|
|
}) do
|
|
local activeSound = importTable.DBM[soundSetting]
|
|
if type(activeSound) == "string" and activeSound:lower() ~= "none" and not DBM:ValidateSound(activeSound, true, true) then
|
|
DBM:AddMsg(L.ImportErrorOn:format(L[localeTable[soundSetting]] or soundSetting))
|
|
tinsert(errors, soundSetting)
|
|
end
|
|
end
|
|
-- Create popup confirming if they wish to continue (and therefor resetting to default)
|
|
if #errors > 0 then
|
|
local popup = StaticPopup_Show("IMPORTPROFILE_ERROR")
|
|
if popup then
|
|
popup.importFunc = function()
|
|
for _, soundSetting in ipairs(errors) do
|
|
importTable.DBM[soundSetting] = DBM.DefaultOptions[soundSetting]
|
|
end
|
|
actuallyImport(importTable)
|
|
end
|
|
end
|
|
else
|
|
actuallyImport(importTable)
|
|
end
|
|
end)
|
|
end)
|
|
importProfile.myheight = 12
|
|
importProfile:SetPoint("LEFT", exportProfile, "RIGHT", 2, 0)
|
|
|
|
function Create()
|
|
if createTextbox:GetText() then
|
|
local text = createTextbox:GetText()
|
|
text = text:gsub(" ", "")
|
|
if text ~= "" then
|
|
DBM:CreateProfile(createTextbox:GetText())
|
|
createTextbox:SetText("")
|
|
createTextbox:ClearFocus()
|
|
Refresh()
|
|
end
|
|
end
|
|
end
|
|
|
|
function Refresh()
|
|
table.wipe(profileDropdown)
|
|
for name, _ in pairs(DBM_AllSavedOptions) do
|
|
table.insert(profileDropdown, {
|
|
text = name,
|
|
value = name
|
|
})
|
|
end
|
|
applyProfile:GetScript("OnShow")()
|
|
copyProfile:GetScript("OnShow")()
|
|
deleteProfile:GetScript("OnShow")()
|
|
end
|
|
Refresh()
|
|
|