VoxelEngine/res/layouts/files_panel.xml.lua

52 lines
1.5 KiB
Lua

local registry
local filenames
function filter_files(text)
local pattern_safe = text:pattern_safe();
local filtered = {}
for _, filename in ipairs(filenames) do
if filename:find(pattern_safe) then
table.insert(filtered, filename)
end
end
build_files_list(filtered, pattern_safe)
end
function open_file_in_editor(filename, linenum)
events.emit("core:open_in_editor", filename, linenum)
end
function build_files_list(filenames, highlighted_part)
local files_list = document.filesList
files_list.scroll = 0
files_list:clear()
for _, actual_filename in ipairs(filenames) do
local filename = actual_filename
if highlighted_part then
filename = filename:gsub(highlighted_part, "**"..highlighted_part.."**")
end
local parent = file.parent(filename)
local info = registry.get_info(actual_filename)
local icon = "file"
if info then
icon = info.type == "component" and "entity" or info.type
end
files_list:add(gui.template("script_file", {
path = parent .. (parent[#parent] == ':' and '' or '/'),
name = file.name(filename),
icon = icon,
unit = info and info.unit or '',
filename = actual_filename,
open_func = "open_file_in_editor",
}))
end
end
function on_open()
registry = __vc_scripts_registry
filenames = registry.filenames
table.sort(filenames)
build_files_list(filenames)
end