|
|
|
|
local _, S = ...
|
|
|
|
|
local pairs, ipairs, string, type, time = pairs, ipairs, string, type, time
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
local f = CreateFrame("FRAME", "SortedSettingsProfilesFrame", UIParent)
|
|
|
|
|
table.insert(UISpecialFrames, "SortedSettingsProfilesFrame")
|
|
|
|
|
S.settingsProfilesFrame = f
|
|
|
|
|
f:SetSize(500, 330)
|
|
|
|
|
f:SetPoint("CENTER")
|
|
|
|
|
f:SetClampedToScreen(true)
|
|
|
|
|
f:EnableMouse()
|
|
|
|
|
f:SetFrameStrata("HIGH")
|
|
|
|
|
f:SetFrameLevel(632)
|
|
|
|
|
S.FrameTools.AddOuterShadow(f, 100)
|
|
|
|
|
S.FrameTools.AddSortedBackdrop(f)
|
|
|
|
|
|
|
|
|
|
-- If a default profile is set, select that profile and hide this frame
|
|
|
|
|
f:SetScript("OnShow", function(self)
|
|
|
|
|
local profile = S.Settings.GetDefaultProfile()
|
|
|
|
|
if profile then
|
|
|
|
|
S.Settings.SetProfile(profile)
|
|
|
|
|
self:Hide()
|
|
|
|
|
if self.source == "bags" then
|
|
|
|
|
S.primaryFrame:Show()
|
|
|
|
|
elseif self.source == "settings" then
|
|
|
|
|
S.settingsFrame:Show()
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
f.closeButton = S.FrameTools.CreateCloseButton(f)
|
|
|
|
|
f.closeButton:SetSize(24, 24)
|
|
|
|
|
f.closeButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x-Clean")
|
|
|
|
|
f.closeButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x-Clean")
|
|
|
|
|
f.closeButton:GetHighlightTexture():SetTexCoord(0.1484375, 0.296875, 0, 0.3125)
|
|
|
|
|
f.closeButton:GetHighlightTexture():SetAlpha(0.6)
|
|
|
|
|
f.closeButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\redbutton2x-Clean")
|
|
|
|
|
f:SetScript("OnMouseDown", function(self) end) -- Prevent click-through
|
|
|
|
|
|
|
|
|
|
f.portrait = f:CreateTexture(nil, "OVERLAY")
|
|
|
|
|
f.portrait:SetTexture("Interface\\Addons\\Sorted\\Textures\\Title")
|
|
|
|
|
f.portrait:SetPoint("TOPLEFT", 16, -8)
|
|
|
|
|
f.portrait:SetSize(160, 40)
|
|
|
|
|
|
|
|
|
|
f.titleBar = f:CreateTexture(nil, "ARTWORK")
|
|
|
|
|
f.titleBar:SetColorTexture(0, 0, 0, 0.4)
|
|
|
|
|
f.titleBar:SetPoint("TOPLEFT")
|
|
|
|
|
f.titleBar:SetPoint("RIGHT")
|
|
|
|
|
f.titleBar:SetHeight(56)
|
|
|
|
|
|
|
|
|
|
f.separator = f:CreateTexture(nil, "ARTWORK")
|
|
|
|
|
f.separator:SetTexture("Interface\\Addons\\Sorted\\Textures\\Settings-Separator-Horiz")
|
|
|
|
|
f.separator:SetPoint("TOPLEFT", 0, -56)
|
|
|
|
|
f.separator:SetPoint("RIGHT")
|
|
|
|
|
f.separator:SetHeight(2)
|
|
|
|
|
|
|
|
|
|
f.text1 = f:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
f.text1:SetText(string.format(S.Localize("PROFILE_SELECTION_HEADER"), UnitName("player")))
|
|
|
|
|
f.text1:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
|
|
|
f.text1:SetTextScale(1.5)
|
|
|
|
|
f.text1:SetPoint("TOP", 0, -76)
|
|
|
|
|
|
|
|
|
|
local function OnExistingProfileEntryClick(self)
|
|
|
|
|
S.Settings.SetProfile(self.data1)
|
|
|
|
|
if f.makeDefault:GetChecked() then
|
|
|
|
|
S.Settings.SetDefaultProfile(self.data1)
|
|
|
|
|
end
|
|
|
|
|
S.settingsProfilesFrame:Hide()
|
|
|
|
|
if S.settingsProfilesFrame.source == "bags" then
|
|
|
|
|
S.primaryFrame:Show()
|
|
|
|
|
elseif S.settingsProfilesFrame.source == "settings" then
|
|
|
|
|
S.settingsFrame:Show()
|
|
|
|
|
end
|
|
|
|
|
S.settingsProfilesFrame.source = nil
|
|
|
|
|
end
|
|
|
|
|
local function BuildExistingProfilesDropdown()
|
|
|
|
|
S.Dropdown.Reset()
|
|
|
|
|
for key, profile in pairs(Sorted_SettingsProfiles) do
|
|
|
|
|
S.Dropdown.AddEntry(profile.profileName, OnExistingProfileEntryClick, key, profile)
|
|
|
|
|
end
|
|
|
|
|
S.Dropdown.Show(f.dropdownButton, "TOPRIGHT", "BOTTOM")
|
|
|
|
|
end
|
|
|
|
|
f.dropdown = S.FrameTools.CreateDropdown(f, S.Localize("PROFILE_SELECTION_EXISTING"), BuildExistingProfilesDropdown)
|
|
|
|
|
f.dropdown:SetPoint("TOPLEFT", 34, -125)
|
|
|
|
|
f.dropdown:SetScale(0.9)
|
|
|
|
|
f.dropdown.nameString:ClearAllPoints()
|
|
|
|
|
f.dropdown.nameString:SetPoint("TOPLEFT", 0, -6)
|
|
|
|
|
f.dropdown.button.text:SetText(S.Localize("PROFILE_SELECTION_CHOOSE"))
|
|
|
|
|
|
|
|
|
|
--[[f.text2 = f:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
f.text2:SetText(string.format(S.Localize("PROFILE_SELECTION_CHOOSE_EXISTING"), UnitName("player")))
|
|
|
|
|
f.text2:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
|
|
|
f.text2:SetTextScale(1.2)
|
|
|
|
|
f.text2:SetPoint("TOPLEFT", 32, -110)
|
|
|
|
|
|
|
|
|
|
f.dropdownButton = CreateFrame("BUTTON", nil, f)
|
|
|
|
|
f.dropdownButton:SetSize(20, 20)
|
|
|
|
|
f.dropdownButton:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
|
|
|
f.dropdownButton:GetNormalTexture():SetDesaturated(true)
|
|
|
|
|
f.dropdownButton:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button")
|
|
|
|
|
f.dropdownButton:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Dropdown-Button-Pushed")
|
|
|
|
|
f.dropdownButton:SetPoint("LEFT", f.text2, "RIGHT", 16, 1)
|
|
|
|
|
local function OnDropdownEntryClick(self)
|
|
|
|
|
S.Settings.SetProfile(self.data1)
|
|
|
|
|
S.settingsProfilesFrame:Hide()
|
|
|
|
|
if S.settingsProfilesFrame.source == "bags" then
|
|
|
|
|
S.primaryFrame:Show()
|
|
|
|
|
elseif S.settingsProfilesFrame.source == "settings" then
|
|
|
|
|
S.settingsFrame:Show()
|
|
|
|
|
end
|
|
|
|
|
S.settingsProfilesFrame.source = nil
|
|
|
|
|
end
|
|
|
|
|
f.dropdownButton:SetScript("OnClick", function(self)
|
|
|
|
|
S.Dropdown.Reset()
|
|
|
|
|
for key, profile in pairs(Sorted_SettingsProfiles) do
|
|
|
|
|
S.Dropdown.AddEntry(profile.profileName, OnDropdownEntryClick, key, profile)
|
|
|
|
|
end
|
|
|
|
|
S.Dropdown.Show(f.dropdownButton, "TOPRIGHT", "BOTTOM")
|
|
|
|
|
end)]]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
f.text3 = f:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
f.text3:SetText(string.format(S.Localize("PROFILE_SELECTION_NEW"), UnitName("player")))
|
|
|
|
|
f.text3:SetTextColor(S.Utils.GetButtonTextColor():GetRGB())
|
|
|
|
|
f.text3:SetTextScale(1.2)
|
|
|
|
|
f.text3:SetPoint("TOPLEFT", 32, -190)
|
|
|
|
|
|
|
|
|
|
f.editBox = CreateFrame("EditBox", nil, f)
|
|
|
|
|
f.editBox:SetFontObject("SortedFont")
|
|
|
|
|
f.editBox:SetPoint("TOPLEFT", 32, -216)
|
|
|
|
|
f.editBox:SetSize(256, 20)
|
|
|
|
|
f.editBox:SetAutoFocus(false)
|
|
|
|
|
f.editBox:SetFrameLevel(f:GetFrameLevel() + 2)
|
|
|
|
|
S.FrameTools.AddBorder(f.editBox, "border", "Interface\\Addons\\Sorted\\Textures\\Rounded-Border", 4, 4, true)
|
|
|
|
|
f.editBox.border:SetFrameLevel(f:GetFrameLevel() + 1)
|
|
|
|
|
for k,v in pairs(f.editBox.border.parts) do
|
|
|
|
|
v:SetVertexColor(0.8, 0.8, 0.8)
|
|
|
|
|
end
|
|
|
|
|
f.editBox:SetScript("OnShow", function(self)
|
|
|
|
|
self:SetText(UnitName("player").." ("..GetRealmName()..")")
|
|
|
|
|
end)
|
|
|
|
|
|
|
|
|
|
local function CreateButtonOnClick(self)
|
|
|
|
|
if #f.editBox:GetText() > 0 then
|
|
|
|
|
local profile = S.Settings.CreateNewProfile(f.editBox:GetText())
|
|
|
|
|
if f.makeDefault:GetChecked() then
|
|
|
|
|
S.Settings.SetDefaultProfile(profile)
|
|
|
|
|
end
|
|
|
|
|
S.settingsProfilesFrame:Hide()
|
|
|
|
|
if S.settingsProfilesFrame.source == "bags" then
|
|
|
|
|
S.primaryFrame:Show()
|
|
|
|
|
elseif S.settingsProfilesFrame.source == "settings" then
|
|
|
|
|
S.settingsFrame:Show()
|
|
|
|
|
end
|
|
|
|
|
S.settingsProfilesFrame.source = nil
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
f.button = S.FrameTools.CreateBasicTextButton(f, S.Localize("PROFILE_SELECTION_CREATE"), CreateButtonOnClick)
|
|
|
|
|
f.button:SetSize(64, 32)
|
|
|
|
|
f.button:SetPoint("LEFT", f.editBox, "RIGHT", 8, -2)
|
|
|
|
|
--f.button.text = f.button:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
--f.button:SetFontString(f.button.text)
|
|
|
|
|
--f.button.text:SetText(S.Localize("PROFILE_SELECTION_CREATE"))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- "Make this the default for all characters" checkbox
|
|
|
|
|
local cb = CreateFrame("CheckButton", nil, f)
|
|
|
|
|
cb:SetSize(24, 24)
|
|
|
|
|
cb:SetNormalTexture("Interface\\Addons\\Sorted\\Textures\\Checkbox")
|
|
|
|
|
cb:SetHighlightTexture("Interface\\Addons\\Sorted\\Textures\\Checkbox-Highlight")
|
|
|
|
|
cb:SetPushedTexture("Interface\\Addons\\Sorted\\Textures\\Checkbox")
|
|
|
|
|
cb:SetCheckedTexture("Interface\\Addons\\Sorted\\Textures\\Checkbox-Tick")
|
|
|
|
|
cb:SetPoint("BOTTOMLEFT", f, 32, 32)
|
|
|
|
|
cb.nameString = cb:CreateFontString(nil, "OVERLAY", "SortedFont")
|
|
|
|
|
cb.nameString:SetText(S.Localize("PROFILE_SELECTION_SET_DEFAULT"))
|
|
|
|
|
cb.nameString:SetPoint("LEFT", cb, "RIGHT", 8, 0)
|
|
|
|
|
cb.nameString:SetTextColor(1, 1, 1)
|
|
|
|
|
cb.nameString:SetTextScale(1.1)
|
|
|
|
|
f.makeDefault = cb
|