---@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 print, type, select, tostring, tonumber = print, type, select, tostring, tonumber local sub, format, match, lower = string.sub, string.format, string.match, string.lower local table_sort = table.sort local abs = math.abs -- | WoW Upvalues |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- | TableExplorer |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ local Type = "DiesalQuickDoc" local Version = 1 -- | Stylesheets |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ local windowStylesheet = { ["content-background"] = { type = "texture", color = "131517", }, } -- | Local |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ local doc = { { type = "section", margin = { 0, 0, 0, 0 }, padding = { 0, 0, 0, 0 }, style = {}, { type = "single-line", text = "Editor", font = nil, fontSize = 14 }, { type = "columns", text = "Editor", font = nil, fontSize = 14 }, }, } -- | Methods |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ---@class Diesal.GUI.QuickDoc.Methods local methods = { ["OnAcquire"] = function(self) self.settings = DiesalTools.TableCopy(self.defaults) self:ApplySettings() self:Show() end, ["OnRelease"] = function(self) self.tree:ReleaseChildren() end, ["ApplySettings"] = function(self) end, ["BuildDoc"] = function(self, doc) -- if #doc == 0 then error('BuildDoc(doc) doc requires atleast one section') -- local settings = self.settings -- -- reset -- self:ReleaseChildren() -- -- setup -- settings.doc = doc -- -- if #doc == 0 then -- tree:UpdateHeight() -- self.statusText:SetText('|cffff0000Table is empty.') -- return end -- -- sort tree table -- local sortedTable = sortTable(settings.exploredTable) -- -- build Tree Branches -- for position, key in ipairs(sortedTable) do -- if self.settings.endtime <= time() then self:Timeout() return end -- self:BuildBranch(self.tree,key[2],settings.exploredTable[key[2]],position,1,position == #sortedTable) -- end end, ["BuildSection"] = function(self, parent, key, value, position, depth, last) -- local tree = self.tree -- local leaf = type(value) ~= 'table' or next(value) == nil or depth >= self.settings.maxDepth -- local branch = DiesalGUI:Create('Branch') -- -- | Reset Branch |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- branch:ReleaseChildren() -- -- | setup Branch |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- branch:SetParentObject(parent) -- parent:AddChild(branch) -- branch:SetSettings({ -- key = key, -- value = value, -- position = position, -- depth = depth, -- last = last, -- leaf = leaf, -- }) -- branch:SetEventListener('OnClick',function(this,event,button) -- if button =='RightButton' then -- if not next(this.settings.menuData) then return end -- DiesalMenu:Menu(this.settings.menuData,this.frame,10,-10) -- end -- end) -- -- self:SetBranchLabel(branch,key,value,leaf) -- self:SetBranchMenu(branch,key,value) -- self:SetBranchIcon(branch,type(value)) -- -- if value == tree or leaf then branch:ApplySettings() return end -- -- | sort Branch Table |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- local sortedTable = sortTable(value) -- -- | build Branch Branches |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- for position, key in ipairs(sortedTable) do -- if self.settings.endtime <= time() then self:Timeout() return end -- self:BuildBranch(branch,key[2],value[key[2]],position,depth+1,position == #sortedTable) -- end -- -- | Update Branch | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -- branch:ApplySettings() end, ["Show"] = function(self) self.window:Show() end, } ---@class DiesalQuickDoc : Diesal.GUI.Object.QuickDoc -- ~~| TableExplorer Constructor |~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ local function Constructor() ---@class Diesal.GUI.Object.QuickDoc : Diesal.GUI.ObjectBase, Diesal.GUI.QuickDoc.Methods local self = DiesalGUI:Create(Type, true) self.isContainer = true self.defaults = {} ---@type Diesal.GUI.Object.Window local window = DiesalGUI:Create("DiesalWindow") window:SetSettings({ header = false, footer = false, top = UIParent:GetHeight() - 100, left = 100, height = 300, width = 400, minWidth = 200, minHeight = 200, }, true) window:SetStylesheet(windowStylesheet) -- ~~ Frames ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ self.window = window self.content = window.content self.frame = window.frame -- ~~ Methods ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ self:SetMethods(methods) --[[ for method, func in pairs(methods) do self[method] = func end ]] -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ return self end DiesalGUI:RegisterObjectConstructor(Type, Constructor, Version)