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.
171 lines
5.8 KiB
171 lines
5.8 KiB
|
3 years ago
|
MoveIt.GUI.Options = {}
|
||
|
|
|
||
|
|
function MoveIt.GUI.Options:Create(container)
|
||
|
|
|
||
|
|
self.editboxFrameName = AceGUI:Create("EditBox")
|
||
|
|
self.editboxFrameName:SetLabel("Add Frame:")
|
||
|
|
self.editboxFrameName:SetRelativeWidth(0.5)
|
||
|
|
--[[self.editboxFrameName:SetCallback("OnTextChanged", function()
|
||
|
|
local text = self.editboxFrameName:GetText()
|
||
|
|
if text ~= "" then
|
||
|
|
local searchResults = MoveIt:FrameSearch(text)
|
||
|
|
if string.len(searchResults) > 100 then text = string.sub(searchResults, 1, 97) .. "..." end
|
||
|
|
self.labelSearchResults:SetText(searchResults)
|
||
|
|
end
|
||
|
|
end)]]
|
||
|
|
self.editboxFrameName:SetCallback("OnEnterPressed", function(_, _, value)
|
||
|
|
self.buttonAddFrame:SetDisabled(true)
|
||
|
|
if value == "" then return end
|
||
|
|
if MoveIt.db.profile.frames[value] ~= nil then
|
||
|
|
MoveIt.GUI:StatusMessage("Frame '" .. value .. "' is already in the list!")
|
||
|
|
return
|
||
|
|
end
|
||
|
|
if not MoveIt:IsValidFrame(value) then
|
||
|
|
MoveIt.GUI:StatusMessage("No valid frame found named '" .. value .. "'")
|
||
|
|
return
|
||
|
|
end
|
||
|
|
self.buttonAddFrame:SetDisabled(false)
|
||
|
|
end)
|
||
|
|
container:AddChild(self.editboxFrameName)
|
||
|
|
|
||
|
|
self.buttonAddFrame = AceGUI:Create("Button")
|
||
|
|
self.buttonAddFrame:SetText("Add Frame")
|
||
|
|
self.buttonAddFrame:SetRelativeWidth(0.2)
|
||
|
|
self.buttonAddFrame:SetDisabled(true)
|
||
|
|
self.buttonAddFrame:SetCallback("OnClick", function() self:OnAddFrame() end)
|
||
|
|
container:AddChild(self.buttonAddFrame)
|
||
|
|
|
||
|
|
self.buttonFramestack = AceGUI:Create("Button")
|
||
|
|
self.buttonFramestack:SetText("Toggle Frame Stack")
|
||
|
|
self.buttonFramestack:SetRelativeWidth(0.3)
|
||
|
|
self.buttonFramestack:SetCallback("OnClick", function()
|
||
|
|
UIParentLoadAddOn("Blizzard_DebugTools")
|
||
|
|
FrameStackTooltip_Toggle(true, true, false)
|
||
|
|
end)
|
||
|
|
container:AddChild(self.buttonFramestack)
|
||
|
|
|
||
|
|
self.labelSearchResults = AceGUI:Create("Label")
|
||
|
|
self.labelSearchResults:SetRelativeWidth(0.5)
|
||
|
|
container:AddChild(self.labelSearchResults)
|
||
|
|
|
||
|
|
self.checkboxOverlay = AceGUI:Create("CheckBox")
|
||
|
|
self.checkboxOverlay:SetType("checkbox")
|
||
|
|
self.checkboxOverlay:SetLabel("Show Overlay")
|
||
|
|
self.checkboxOverlay:SetValue(true)
|
||
|
|
self.checkboxOverlay:SetRelativeWidth(0.2)
|
||
|
|
self.checkboxOverlay:SetCallback("OnValueChanged",
|
||
|
|
function(_, _, value)
|
||
|
|
if value == false then MoveIt.Overlay:UpdateOverlay(nil) else MoveIt.Overlay:UpdateOverlay(self.selectedFrame) end
|
||
|
|
end)
|
||
|
|
container:AddChild(self.checkboxOverlay)
|
||
|
|
|
||
|
|
self.buttonReloadUI = AceGUI:Create("Button")
|
||
|
|
self.buttonReloadUI:SetText("Reload UI")
|
||
|
|
self.buttonReloadUI:SetRelativeWidth(0.3)
|
||
|
|
self.buttonReloadUI:SetCallback("OnClick", function() ReloadUI() end)
|
||
|
|
container:AddChild(self.buttonReloadUI)
|
||
|
|
|
||
|
|
MoveIt.GUI:CreateDivider(container)
|
||
|
|
|
||
|
|
self.treegroupFrameList = AceGUI:Create("TreeGroup")
|
||
|
|
self.treegroupFrameList:SetRelativeWidth(1)
|
||
|
|
self.treegroupFrameList:SetLayout("Flow")
|
||
|
|
self.treegroupFrameList:SetFullHeight(true)
|
||
|
|
self.treegroupFrameList:SetCallback("OnGroupSelected", function (_, _, value) self:OnFrameSelected(value) end)
|
||
|
|
|
||
|
|
MoveIt.GUI.FrameSettings:Create(self.treegroupFrameList)
|
||
|
|
|
||
|
|
self.treegroupFrameList:SetTree(self:GetFrameTree())
|
||
|
|
container:AddChild(self.treegroupFrameList)
|
||
|
|
|
||
|
|
self.selectedFrame = nil
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function MoveIt.GUI.Options:OnFrameSelected(value)
|
||
|
|
|
||
|
|
self.selectedFrame = value
|
||
|
|
|
||
|
|
local handle = MoveIt:GetFrameHandle(value)
|
||
|
|
if handle == nil then
|
||
|
|
MoveIt.GUI:StatusMessage("WARNING: Frame no longer exists, editing disabled")
|
||
|
|
MoveIt.GUI.FrameSettings.buttonRemoveFrame:SetDisabled(false)
|
||
|
|
MoveIt.Overlay:UpdateOverlay()
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
MoveIt.Overlay:UpdateOverlay(value)
|
||
|
|
MoveIt.GUI.FrameSettings:Update(self.selectedFrame)
|
||
|
|
self:ShowProtectedWarning(handle)
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function MoveIt.GUI.Options:GetFrameTree()
|
||
|
|
|
||
|
|
if MoveIt.db.profile.frames == nil then return nil end
|
||
|
|
|
||
|
|
local tree = {}
|
||
|
|
for i, _ in pairs(MoveIt.db.profile.frames) do
|
||
|
|
table.insert(tree, { value = i, text = i })
|
||
|
|
end
|
||
|
|
table.sort(tree, function(a, b) return a.value < b.value end)
|
||
|
|
return tree
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function MoveIt.GUI.Options:OnAddFrame()
|
||
|
|
|
||
|
|
local frameName = self.editboxFrameName:GetText()
|
||
|
|
local handle = MoveIt:GetFrameHandle(frameName)
|
||
|
|
frameName = MoveIt:GetFrameName(handle)
|
||
|
|
|
||
|
|
if MoveIt.db.profile.frames == nil then MoveIt.db.profile.frames = {} end
|
||
|
|
if MoveIt.db.profile.frames[frameName] == nil then
|
||
|
|
MoveIt.db.profile.frames[frameName] = {}
|
||
|
|
MoveIt.originalSettings[frameName] = {}
|
||
|
|
for k, v in pairs(MoveIt.Modules) do
|
||
|
|
MoveIt.originalSettings[frameName][k] = v:GetOriginalSettings(frameName)
|
||
|
|
MoveIt:SetFrameSettings(frameName, k, v:GetOriginalSettings(frameName))
|
||
|
|
end
|
||
|
|
|
||
|
|
self.treegroupFrameList:SetTree(self:GetFrameTree())
|
||
|
|
self.treegroupFrameList:SelectByValue(frameName)
|
||
|
|
self:OnFrameSelected(frameName)
|
||
|
|
self.editboxFrameName:SetText("")
|
||
|
|
MoveIt:UpdateHooks()
|
||
|
|
else
|
||
|
|
self.windowMain:SetStatusText("Frame '" .. frameName .. "' is already in the list!")
|
||
|
|
end
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function MoveIt.GUI.Options:OnRemoveFrame()
|
||
|
|
|
||
|
|
if MoveIt:GetFrameHandle(self.selectedFrame) == nil then
|
||
|
|
MoveIt:DeleteSettings(self.selectedFrame)
|
||
|
|
MoveIt.GUI.FrameSettings:Update()
|
||
|
|
self.selectedFrame = nil
|
||
|
|
self.treegroupFrameList:SetTree(self:GetFrameTree())
|
||
|
|
return
|
||
|
|
end
|
||
|
|
|
||
|
|
for k, _ in pairs(MoveIt.Modules) do
|
||
|
|
pcall(function() MoveIt.Modules[k]:Revert(self.selectedFrame) end)
|
||
|
|
end
|
||
|
|
|
||
|
|
MoveIt:DeleteSettings(self.selectedFrame)
|
||
|
|
self.selectedFrame = nil
|
||
|
|
self.treegroupFrameList:SetTree(self:GetFrameTree())
|
||
|
|
MoveIt.GUI.FrameSettings:Update()
|
||
|
|
MoveIt:UpdateHooks()
|
||
|
|
MoveIt.Overlay:UpdateOverlay(nil)
|
||
|
|
|
||
|
|
end
|
||
|
|
|
||
|
|
function MoveIt.GUI.Options:ShowProtectedWarning(handle)
|
||
|
|
|
||
|
|
local isProtected, isProtectedExplicitly = handle:IsProtected()
|
||
|
|
if isProtectedExplicitly then MoveIt.GUI.windowMain:SetStatusText("WARNING: Frame is protected and can't be modified during combat") else MoveIt.GUI.windowMain:SetStatusText("") end
|
||
|
|
|
||
|
|
end
|