61 lines
1.2 KiB
Lua
Executable File

require 'iupx'
require 'iupluacontrols'
require 'lfs'
local append = table.insert
function get_dir (path)
local files = {}
local dirs = {}
for f in lfs.dir(path) do
if f ~= '.' and f ~= '..' then
if lfs.attributes(path..'/'..f,'mode') == 'file' then
append(files,f)
else
append(dirs,f)
end
end
end
return files,dirs
end
tree = iup.tree {}
function set (id,value,attrib)
iup.TreeSetTableId(tree,id,{value,attrib})
end
function get(id)
return iup.TreeGetTable(tree,id)
end
function fill (path,id)
local files,dirs = get_dir(path)
id = id + 1
local state = "STATE"..id
for i = #files,1,-1 do -- put the files in reverse order!
tree.addleaf = files[i]
set(id,path..'/'..files[i])
end
for i = #dirs,1,-1 do -- ditto for directories!
tree.addbranch = dirs[i]
set(id,path..'/'..dirs[i],'dir')
tree[state] = "COLLAPSED"
end
end
function tree:branchopen_cb(id)
tree.value = id
local t = get(id)
if t[2] == 'dir' then
fill(t[1],id)
set(id,t[1],'xdir')
end
end
fill("/stuff/lua/lib/scitex",0)
--~ fill('.',0)
iupx.show_dialog{tree; title = "Directory Listing"}