This commit is contained in:
NoryiE
2025-10-30 07:40:56 +00:00
parent 79514db6a5
commit 84c1b01584
3 changed files with 134 additions and 13 deletions

View File

@@ -1,6 +1,109 @@
# Tree
_This is the tree class. It provides a hierarchical view of nodes that can be expanded and collapsed,_
_with support for selection and scrolling._
_This is the tree class. It provides a hierarchical view of nodes that can be expanded and collapsed, with support for selection and scrolling._
_run [[_
_local basaltg = require("basalt")_
_local main = basalt.getMainFrame()_
_local fileTree = main:addTree()_
_:setPosition(2, 2)_
_:setSize(15, 15)_
_:setBackground(colors.black)_
_:setForeground(colors.white)_
_:setSelectedBackgroundColor(colors.blue)_
_:setSelectedForegroundColor(colors.white)_
_:setScrollBarColor(colors.lightGray)_
_:setScrollBarBackgroundColor(colors.gray)_
_-- Build a file system-like tree structure_
_local treeData = {_
_{_
_text = "Root",_
_children = {_
_{_
_text = "Documents",_
_children = {_
_{text = "report.txt"},_
_{text = "notes.txt"},_
_{text = "todo.txt"}_
_}_
_},_
_{_
_text = "Pictures",_
_children = {_
_{text = "vacation.png"},_
_{text = "family.jpg"},_
_{_
_text = "Archive",_
_children = {_
_{text = "old_photo1.jpg"},_
_{text = "old_photo2.jpg"},_
_{text = "old_photo3.jpg"}_
_}_
_}_
_}_
_},_
_{_
_text = "Music",_
_children = {_
_{text = "song1.mp3"},_
_{text = "song2.mp3"},_
_{text = "song3.mp3"},_
_{text = "song4.mp3"}_
_}_
_},_
_{_
_text = "Videos",_
_children = {_
_{text = "movie1.mp4"},_
_{text = "movie2.mp4"}_
_}_
_},_
_{_
_text = "Projects",_
_children = {_
_{_
_text = "ProjectA",_
_children = {_
_{text = "src"},_
_{text = "tests"},_
_{text = "README.md"}_
_}_
_},_
_{_
_text = "ProjectB",_
_children = {_
_{text = "main.lua"},_
_{text = "config.lua"}_
_}_
_}_
_}_
_}_
_}_
_}_
_}_
_fileTree:setNodes(treeData)_
_local textLabel = main:addLabel()_
_:setPosition(2, 18)_
_:setForeground(colors.yellow)_
_:setText("Selected: None")_
_-- Handle node selection_
_fileTree:onSelect(function(self, node)_
_textLabel_
_:setText("Selected: " .. node.text)_
_:setPosition(2, 18)_
_:setForeground(colors.yellow)_
_end)_
_-- Info label_
_main:addLabel()_
_:setText("Click nodes to expand/collapse | Scroll to navigate")_
_:setPosition(2, 1)_
_:setForeground(colors.lightGray)_
_basalt.run()_
_]]_
Extends: `VisualElement`