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.
105 lines
4.0 KiB
105 lines
4.0 KiB
---@type Diesal.GUI
|
|
local DiesalGUI = LibStub("DiesalGUI-2.0")
|
|
---@type Diesal.Tools
|
|
local DiesalTools = LibStub("DiesalTools-2.0")
|
|
---@type Diesal.Style
|
|
local DiesalStyle = LibStub("DiesalStyle-2.0")
|
|
-- ~~| Lua Upvalues |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
local sub, format, match, lower = string.sub, string.format, string.match, string.lower
|
|
local tsort = table.sort
|
|
|
|
-- ~~| WoW Upvalues |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
-- ~~| Tree |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
local Type = "DiesalTree"
|
|
local Version = 4
|
|
|
|
---@class DTree : Diesal.GUI.Object.Tree
|
|
|
|
-- ~~| Tree Stylesheets |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
local Stylesheet = {
|
|
["content-background"] = {
|
|
type = "texture",
|
|
color = "ffffff",
|
|
alpha = 0.01,
|
|
},
|
|
}
|
|
-- ~~| Tree Locals |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
local function collapse(branch)
|
|
if branch.Collapse then
|
|
branch:Collapse()
|
|
end
|
|
if branch.children and next(branch.children) then
|
|
for i = 1, #branch.children do
|
|
collapse(branch.children[i])
|
|
end
|
|
end
|
|
end
|
|
-- ~~| Tree Methods |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
---@class Diesal.GUI.Tree.Methods
|
|
local methods = {
|
|
["OnAcquire"] = function(self)
|
|
-- self:SetStylesheet(Stylesheet)
|
|
-- self:SetStylesheet(wireFrameSheet)
|
|
self:ApplySettings()
|
|
self:Show()
|
|
end,
|
|
["OnRelease"] = function(self) end,
|
|
["ApplySettings"] = function(self) end,
|
|
["UpdateHeight"] = function(self)
|
|
local height = 0
|
|
|
|
for i = 1, #self.children do
|
|
height = height + self.children[i].frame:GetHeight()
|
|
end
|
|
height = DiesalTools.Round(height)
|
|
|
|
if self.settings.height ~= height then
|
|
self.settings.height = height
|
|
self:SetHeight(height)
|
|
self:FireEvent("OnHeightChange", height)
|
|
end
|
|
end,
|
|
["CollapseAll"] = function(self, subBranches)
|
|
if subBranches then
|
|
collapse(self)
|
|
else
|
|
for i = 1, #self.children do
|
|
self.children[i]:Collapse()
|
|
end
|
|
end
|
|
end,
|
|
["ExpandAll"] = function(self)
|
|
for i = 1, #self.children do
|
|
self.children[i]:Expand()
|
|
end
|
|
end,
|
|
}
|
|
|
|
---@class DiesalTree : Diesal.GUI.Object.Tree
|
|
|
|
-- ~~| Tree Constructor |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
local function Constructor()
|
|
---@class Diesal.GUI.Object.Tree : Diesal.GUI.ObjectBase, Diesal.GUI.Tree.Methods
|
|
local self = DiesalGUI:Create(Type, true)
|
|
self.isContainer = true
|
|
local frame = CreateFrame("Frame", nil, UIParent)
|
|
self.frame = frame
|
|
-- ~~ Default Settings ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
self.defaults = { depth = 0 }
|
|
-- ~~ Events ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
-- OnAcquire, OnRelease, OnHeightSet, OnWidthSet
|
|
-- OnHeightChange
|
|
-- ~~ Construct ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
local content = self:CreateRegion("Frame", "content", frame)
|
|
content:SetAllPoints()
|
|
-- ~~ Methods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
self:SetMethods(methods)
|
|
self:SetObj(self.frame)
|
|
--[[ for method, func in pairs(methods) do
|
|
self[method] = func
|
|
end ]]
|
|
-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
|
return self
|
|
end
|
|
DiesalGUI:RegisterObjectConstructor(Type, Constructor, Version)
|
|
|