# IUP::Tree example (animals) - using helper methods e.g. TreeAddNodes()
#
# Creates a tree with some branches and leaves. Uses a Lua Table to define the IUP::Tree structure.
use strict;
use warnings;
use IUP ':all';
my $t_singleroot = {
TITLE=>"Animals", child=>[
"0.Extra",
{ TITLE=>"1.Mammals", child=>["Horse", "Whale"] },
"2.Extra",
{ TITLE=>"3.Crustaceans", child=>["Shrimp", "Lobster"] },
"4.Extra",
],
};
my $t_rootless = [
"0.Extra",
{ TITLE=>"1.Mammals", child=>["Horse", "Whale"] },
{ TITLE=>"2.Crustaceans", child=>["Shrimp", "Lobster"] },
"3.Extra",
"4.Extra",
{ TITLE=>"5.Extra", child=>["Dog", "Cat"] },
];
my $t_folders = [
{ TITLE=>"A", child=>["A1", "A2"] },
{ TITLE=>"B", child=>["B1", "B2"] },
];
my $tree_tleft = IUP::Tree->new();
my $tree_tright = IUP::Tree->new();
my $tree_bleft = IUP::Tree->new( ADDROOT=>'NO' );
my $tree_bright = IUP::Tree->new( ADDROOT=>'NO' );
my $dlg = IUP::Dialog->new( child=>IUP::Vbox->new([
IUP::Hbox->new([$tree_tleft,$tree_tright]),
IUP::Hbox->new([$tree_bleft,$tree_bright]),
]), TITLE=>"IUP::Tree Animals", SIZE=>"600x300" );
$dlg->ShowXY(IUP_CENTER,IUP_CENTER);
#NOTE: all tree->SetAttribute(...) has to go after dialog->Show() or after dialog->Map()
warn "Creating [top-left] rootless tree\n";
$tree_tleft->TreeAddNodes($t_rootless,-1);
$tree_tleft->TreeAddNodes({ TITLE=>"5.1.Extra", child=>["51"] },9);
warn "Creating [top-right] singleroot tree\n";
$tree_tright->TreeAddNodes($t_singleroot,-1);
warn "Creating [bottom-left] rootless tree\n";
$tree_bleft->TreeAddNodes($t_rootless,-1);
$tree_bleft->TreeInsertNodes({ TITLE=>"6.Extra", child=>["6"] },9);
warn "Creating [bottom-right] singleroot tree\n";
$tree_bright->TreeAddNodes($t_singleroot,-1);
IUP->MainLoop();