95 lines
2.3 KiB
Lua
95 lines
2.3 KiB
Lua
-- IupTree Example in IupLua
|
|
-- Creates a tree with some branches and leaves.
|
|
-- Two callbacks are registered: one deletes marked nodes when the Del key
|
|
-- is pressed, and the other, called when the right mouse button is pressed,
|
|
-- opens a menu with options.
|
|
|
|
require( "iuplua" )
|
|
require( "iupluacontrols" )
|
|
|
|
tree = iup.tree{}
|
|
|
|
-- Creates rename dialog
|
|
ok = iup.button{title = "OK",size="EIGHTH"}
|
|
cancel = iup.button{title = "Cancel",size="EIGHTH"}
|
|
|
|
text = iup.text{border="YES",expand="YES"}
|
|
dlg_rename = iup.dialog{iup.vbox{text,iup.hbox{ok,cancel}};
|
|
defaultenter=ok,
|
|
defaultesc=cancel,
|
|
title="Enter node's name",
|
|
size="QUARTER",
|
|
startfocus=text}
|
|
|
|
-- Creates menu displayed when the right mouse button is pressed
|
|
addleaf = iup.item {title = "Add Leaf"}
|
|
addbranch = iup.item {title = "Add Branch"}
|
|
renamenode = iup.item {title = "Rename Node"}
|
|
menu = iup.menu{addleaf, addbranch, renamenode}
|
|
|
|
-- Callback of the right mouse button click
|
|
function tree:rightclick_cb(id)
|
|
tree.value = id
|
|
menu:popup(iup.MOUSEPOS,iup.MOUSEPOS)
|
|
end
|
|
|
|
-- Callback called when a node will be renamed
|
|
function tree:executeleaf_cb(id)
|
|
text.value = tree.name
|
|
|
|
dlg_rename:popup(iup.CENTER, iup.CENTER)
|
|
iup.SetFocus(tree)
|
|
end
|
|
|
|
-- Callback called when the rename operation is cancelled
|
|
function cancel:action()
|
|
return iup.CLOSE
|
|
end
|
|
|
|
-- Callback called when the rename operation is confirmed
|
|
function ok:action()
|
|
tree.name = text.value
|
|
|
|
return iup.CLOSE
|
|
end
|
|
|
|
function tree:k_any(c)
|
|
if c == iup.K_DEL then tree.delnode = "MARKED" end
|
|
end
|
|
|
|
-- Callback called when a leaf is added
|
|
function addleaf:action()
|
|
tree.addleaf = ""
|
|
end
|
|
|
|
-- Callback called when a branch is added
|
|
function addbranch:action()
|
|
tree.addbranch = ""
|
|
end
|
|
|
|
-- Callback called when a branch will be renamed
|
|
function renamenode:action()
|
|
tree:executeleaf_cb(tree.value)
|
|
end
|
|
|
|
function init_tree_nodes()
|
|
tree.name = "Figures"
|
|
tree.addbranch = "3D"
|
|
tree.addbranch = "2D"
|
|
tree.addbranch1 = "parallelogram"
|
|
tree.addleaf2 = "diamond"
|
|
tree.addleaf2 = "square"
|
|
tree.addbranch1 = "triangle"
|
|
tree.addleaf2 = "scalenus"
|
|
tree.addleaf2 = "isoceles"
|
|
tree.value = "6"
|
|
end
|
|
|
|
dlg = iup.dialog{tree; title = "IupTree", size = "QUARTERxTHIRD"}
|
|
dlg:showxy(iup.CENTER,iup.CENTER)
|
|
init_tree_nodes()
|
|
|
|
if (iup.MainLoopLevel()==0) then
|
|
iup.MainLoop()
|
|
end
|