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.
324 lines
7.4 KiB
324 lines
7.4 KiB
local _G = _G
|
|
local pairs = pairs
|
|
local string = string
|
|
local table = table
|
|
local type = type
|
|
|
|
local MovAny = _G.MovAny
|
|
local MOVANY = _G.MOVANY
|
|
|
|
StaticPopupDialogs["MOVEANYTHING_PROFILE_RESET_CONFIRM"] = {
|
|
text = MOVANY.PROFILE_RESET_CONFIRM,
|
|
button1 = YES,
|
|
button2 = NO,
|
|
OnAccept = function()
|
|
MovAny:ResetProfile()
|
|
end,
|
|
timeout = 0,
|
|
exclusive = 0,
|
|
showAlert = 1,
|
|
whileDead = 1,
|
|
hideOnEscape = 1
|
|
}
|
|
|
|
StaticPopupDialogs["MOVEANYTHING_PROFILE_ADD"] = {
|
|
text = MOVANY.PROFILE_ADD_TEXT,
|
|
button1 = MOVANY.ADD,
|
|
button2 = CANCEL,
|
|
OnShow = function(self)
|
|
self.editBox:SetScript("OnEnterPressed", function()
|
|
if MovAny:AddProfile(self.editBox:GetText()) then
|
|
StaticPopup_Hide("MOVEANYTHING_PROFILE_ADD")
|
|
end
|
|
end)
|
|
self.editBox:SetScript("OnEscapePressed", function()
|
|
StaticPopup_Hide("MOVEANYTHING_PROFILE_ADD")
|
|
end)
|
|
end,
|
|
OnAccept = function(self)
|
|
if not MovAny:AddProfile(self.editBox:GetText()) then
|
|
StaticPopup_Show("MOVEANYTHING_PROFILE_ADD")
|
|
end
|
|
end,
|
|
hasEditBox = true,
|
|
timeout = 0,
|
|
exclusive = 0,
|
|
showAlert = 1,
|
|
whileDead = 1,
|
|
hideOnEscape = 1
|
|
}
|
|
|
|
StaticPopupDialogs["MOVEANYTHING_PROFILE_RENAME"] = {
|
|
text = MOVANY.PROFILE_RENAME_TEXT,
|
|
button1 = MOVANY.RENAME,
|
|
button2 = CANCEL,
|
|
OnShow = function(self)
|
|
self.pn = MovAny:GetProfileName()
|
|
self.editBox:SetScript("OnEnterPressed", function()
|
|
if self.pn == self.editBox:GetText() or MovAny:RenameProfile(self.pn, self.editBox:GetText()) then
|
|
StaticPopup_Hide("MOVEANYTHING_PROFILE_RENAME")
|
|
end
|
|
end)
|
|
self.editBox:SetScript("OnEscapePressed", function()
|
|
StaticPopup_Hide("MOVEANYTHING_PROFILE_RENAME")
|
|
end)
|
|
end,
|
|
OnAccept = function(self)
|
|
if self.pn ~= self.editBox:GetText() and not MovAny:RenameProfile(self.pn, self.editBox:GetText()) then
|
|
StaticPopup_Show("MOVEANYTHING_PROFILE_RENAME")
|
|
end
|
|
end,
|
|
hasEditBox = true,
|
|
timeout = 0,
|
|
exclusive = 0,
|
|
showAlert = 1,
|
|
whileDead = 1,
|
|
hideOnEscape = 1
|
|
}
|
|
|
|
StaticPopupDialogs["MOVEANYTHING_PROFILE_SAVE_AS"] = {
|
|
text = MOVANY.PROFILE_SAVE_AS_TEXT,
|
|
button1 = MOVANY.SAVE,
|
|
button2 = CANCEL,
|
|
OnShow = function(self)
|
|
self.pn = MovAny:GetProfileName()
|
|
self.editBox:SetScript("OnEnterPressed", function()
|
|
if MovAny:CopyProfile(self.pn, self.editBox:GetText()) then
|
|
StaticPopup_Hide("MOVEANYTHING_PROFILE_SAVE_AS")
|
|
end
|
|
end)
|
|
self.editBox:SetScript("OnEscapePressed", function()
|
|
StaticPopup_Hide("MOVEANYTHING_PROFILE_SAVE_AS")
|
|
end)
|
|
end,
|
|
OnAccept = function(self)
|
|
if not MovAny:CopyProfile(self.pn, self.editBox:GetText()) then
|
|
StaticPopup_Show("MOVEANYTHING_PROFILE_SAVE_AS")
|
|
end
|
|
end,
|
|
hasEditBox = true,
|
|
timeout = 0,
|
|
exclusive = 0,
|
|
showAlert = 1,
|
|
whileDead = 1,
|
|
hideOnEscape = 1
|
|
}
|
|
|
|
StaticPopupDialogs["MOVEANYTHING_PROFILE_DELETE"] = {
|
|
text = MOVANY.PROFILE_DELETE_TEXT,
|
|
button1 = MOVANY.DELETE,
|
|
button2 = CANCEL,
|
|
OnAccept = function(self)
|
|
MovAny:DeleteProfile(MovAny:GetProfileName())
|
|
end,
|
|
timeout = 0,
|
|
exclusive = 0,
|
|
showAlert = 1,
|
|
whileDead = 1,
|
|
hideOnEscape = 1
|
|
}
|
|
|
|
function MovAny:ResetProfile(readOnly)
|
|
local f
|
|
for i, v in pairs(self.userData) do
|
|
f = _G[i]
|
|
if f and f.MAHooked then
|
|
self:ResetFrame(i, true, true)
|
|
end
|
|
end
|
|
self.API:ClearElementsUserData()
|
|
self:ReanchorRelatives()
|
|
if not readOnly then
|
|
table.wipe(self.userData)
|
|
MADB.profiles[self:GetProfileName()].frames = self.userData
|
|
end
|
|
self:UpdateGUIIfShown(true)
|
|
end
|
|
|
|
function MovAny:GetProfileName()
|
|
local char = MADB.characters[self:GetCharacterIndex()]
|
|
if char and char.profile then
|
|
return char.profile
|
|
else
|
|
return "default"
|
|
end
|
|
end
|
|
|
|
function MovAny:CopyProfile(fromName, toName)
|
|
if fromName == toName then
|
|
return
|
|
end
|
|
if MADB.profiles[toName] == nil then
|
|
self:AddProfile(toName, true)
|
|
end
|
|
local l, vm, e
|
|
local curProfileName = self:GetProfileName()
|
|
for i, val in pairs(MADB.profiles[fromName].frames) do
|
|
l = MA_tcopy(val)
|
|
l.cat = nil
|
|
data = self.lVirtualMovers[i]
|
|
if data and data.excludes then
|
|
MADB.profiles[toName].frames[data.excludes] = nil
|
|
end
|
|
|
|
if toName == curProfileName then
|
|
e = self.API:GetElement(i)
|
|
if e then
|
|
e:SetUserData(l)
|
|
end
|
|
end
|
|
|
|
MADB.profiles[toName].frames[i] = l
|
|
end
|
|
return true
|
|
end
|
|
|
|
function MovAny:AddProfile(pn, silent, dontUpdate)
|
|
if MADB.profiles[pn] then
|
|
if not silent then
|
|
maPrint(string.format(MOVANY.PROFILE_ALREADY_EXISTS, pn))
|
|
end
|
|
return
|
|
end
|
|
MADB.profiles[pn] = {name = pn, frames = {}}
|
|
|
|
if not dontUpdate then
|
|
MovAny_OptionsOnShow()
|
|
end
|
|
return true
|
|
end
|
|
|
|
function MovAny:DeleteProfile(pn)
|
|
if pn == "default" then
|
|
maPrint(string.format(MOVANY.PROFILE_CANT_DELETE_DEFAULT, pn))
|
|
return
|
|
end
|
|
local current
|
|
if self:GetProfileName() == pn then
|
|
self:ResetProfile()
|
|
current = true
|
|
end
|
|
|
|
MADB.profiles[pn] = nil
|
|
for name, char in pairs(MADB.characters) do
|
|
if char and char.profile == pn then
|
|
char.profile = nil
|
|
end
|
|
end
|
|
if current then
|
|
self.userData = MADB.profiles[self:GetProfileName()].frames
|
|
|
|
local e
|
|
for i, v in pairs(self.userData) do
|
|
e = self.API:GetElement(i)
|
|
if e then
|
|
e:SetUserData(v)
|
|
end
|
|
end
|
|
|
|
self:SyncAllFrames(true)
|
|
self:UpdateGUIIfShown(true)
|
|
end
|
|
MovAny_OptionsOnShow()
|
|
return true
|
|
end
|
|
|
|
function MovAny:RenameProfile(pn, nn)
|
|
if pn == nn or nn == "default" or nn == "" then
|
|
return
|
|
end
|
|
local p = MADB.profiles[pn]
|
|
if type(p) ~= "table" then
|
|
return
|
|
end
|
|
p.name = nn
|
|
MADB.profiles[nn] = p
|
|
MADB.profiles[pn] = nil
|
|
for i, v in pairs(MADB.characters) do
|
|
if v.profile == pn then
|
|
v.profile = nn
|
|
end
|
|
end
|
|
MovAny_OptionsOnShow()
|
|
return true
|
|
end
|
|
|
|
function MovAny:UpdateProfile()
|
|
if self.userData then
|
|
self:ResetProfile(true)
|
|
self.API:ClearElementsUserData()
|
|
end
|
|
self.userData = MADB.profiles[self:GetProfileName()].frames
|
|
|
|
local e
|
|
for i, v in pairs(self.userData) do
|
|
e = self.API:GetElement(i)
|
|
if e then
|
|
e:SetUserData(v)
|
|
end
|
|
end
|
|
self:SyncAllFrames(true)
|
|
self:UpdateGUIIfShown(true)
|
|
end
|
|
|
|
function MovAny:ChangeProfile(profile)
|
|
self:ResetProfile(true)
|
|
local char = MADB.characters[self:GetCharacterIndex()]
|
|
if not char then
|
|
char = { }
|
|
MADB.characters[self:GetCharacterIndex()] = char
|
|
end
|
|
char.profile = profile ~= "default" and profile or nil
|
|
self.userData = MADB.profiles[self:GetProfileName()].frames
|
|
local e, f
|
|
for i, v in pairs(self.userData) do
|
|
e = self.API:GetElement(i)
|
|
if e then
|
|
e.SetUserData(v)
|
|
else
|
|
e = self.API:AddElementIfNew(i)
|
|
end
|
|
end
|
|
self:SyncAllFrames(true)
|
|
self:UpdateGUIIfShown(true)
|
|
end
|
|
|
|
function MovAny:CleanProfile(pn)
|
|
local p = MADB.profiles[pn]
|
|
if type(p) == "table" and type(p.frames) == "table" then
|
|
local f
|
|
for i, v in pairs(p.frames) do
|
|
f = _G[i]
|
|
if f and f.IsUserPlaced and f:IsUserPlaced() and (f:IsMovable() or f:IsResizable()) then
|
|
if f:IsUserPlaced() then
|
|
if not f.MAWasUserPlaced then
|
|
f:SetUserPlaced(nil)
|
|
else
|
|
f.MAWasUserPlaced = nil
|
|
end
|
|
end
|
|
if f:IsMovable() then
|
|
if not f.MAWasMovable then
|
|
f:SetMovable(nil)
|
|
else
|
|
f.MAWasMovable = nil
|
|
end
|
|
end
|
|
if f:IsResizable() then
|
|
if not f.MAWasResizable then
|
|
f:SetResizable(nil)
|
|
else
|
|
f.MAWasResizable = nil
|
|
end
|
|
end
|
|
end
|
|
v.ignoreFramePositionManager = nil
|
|
v.cat = nil
|
|
v.orgScale = nil
|
|
v.orgAlpha = nil
|
|
v.orgPos = nil
|
|
v.MANAGED_FRAME = nil
|
|
v.UIPanelWindows = nil
|
|
end
|
|
end
|
|
end
|
|
|