102 lines
2.2 KiB
Lua
102 lines
2.2 KiB
Lua
-- Contribution by Guy Mc Donald
|
|
-- adds jpg files to a tree
|
|
-- dynamically fills subdirectories in the tree
|
|
|
|
require 'iuplua'
|
|
require 'iupluacontrols'
|
|
require 'lfs'
|
|
require "imlua"
|
|
require "cdlua"
|
|
require "cdluaim"
|
|
require "iupluacd"
|
|
|
|
function View(name)
|
|
local filename = name..".jpg"
|
|
local image = im.FileImageLoad(filename)
|
|
local height = 740
|
|
local width = 1020
|
|
local cnv = iup.canvas{rastersize =width.."x"..height, border = "NO"}
|
|
cnv.image = image
|
|
|
|
function cnv:map_cb()
|
|
self.canvas = cd.CreateCanvas(cd.IUP, self)
|
|
end
|
|
|
|
function cnv:action()
|
|
self.canvas:Activate()
|
|
self.canvas:Clear()
|
|
self.image:cdCanvasPutImageRect(self.canvas,0,0,width,height,0,0,0,0)
|
|
end
|
|
|
|
local dlg = iup.dialog{cnv, parentdialog="main"}
|
|
dlg:show()
|
|
end
|
|
|
|
function get_dir (dir_path)
|
|
local files = {}
|
|
local dirs = {}
|
|
for f in lfs.dir(dir_path) do
|
|
if f ~= '.' and f ~= '..' then
|
|
if lfs.attributes(dir_path..'/'..f,'mode') == 'file' then
|
|
if string.upper(string.sub(f,-3))=="JPG" then
|
|
table.insert(files,string.sub(f,1,string.len(f)-4))
|
|
end
|
|
else
|
|
table.insert(dirs,f.."/")
|
|
end
|
|
end
|
|
end
|
|
return files,dirs
|
|
end
|
|
|
|
tree = iup.tree {}
|
|
tree.addexpanded = "no"
|
|
|
|
function set (id,value,attrib)
|
|
iup.TreeSetUserId(tree,id,{value,attrib})
|
|
end
|
|
|
|
function get(id)
|
|
return iup.TreeGetUserId(tree,id)
|
|
end
|
|
|
|
function fill (dir_path,id)
|
|
local files,dirs = get_dir(dir_path)
|
|
id = id + 1
|
|
local state = "STATE"..id
|
|
for i = #files,1,-1 do
|
|
tree.addleaf = files[i]
|
|
set(id,dir_path..'/'..files[i])
|
|
end
|
|
for i = #dirs,1,-1 do
|
|
tree.addbranch = dirs[i]
|
|
set(id,dir_path..'/'..dirs[i],'dir')
|
|
tree['addleaf'..id] = "dummy" -- add a dummy node so branchopen_cb can be called
|
|
end
|
|
end
|
|
|
|
function tree:executeleaf_cb(id)
|
|
local t=get(id) --*** Selected Photo ***
|
|
if t[2]~='dir' then View(t[1]) end
|
|
end
|
|
|
|
function tree:branchopen_cb(id)
|
|
tree.value = id
|
|
local t = get(id)
|
|
if t[2] == 'dir' then
|
|
tree['delnode'..id+1] = 'selected' -- remove dummy
|
|
fill(t[1],id)
|
|
set(id,t[1],'xdir') -- mark branch as filled
|
|
end
|
|
end
|
|
|
|
--Let's get started!
|
|
dir_path="D:/scuri/Media/Outras"
|
|
|
|
local dlg = iup.dialog{tree; title = "Photo Options"}
|
|
iup.SetHandle("main", dlg)
|
|
dlg:map()
|
|
fill(dir_path,0)
|
|
dlg:show()
|
|
iup.MainLoop()
|