# IUP::Tree example (attributes)
use strict;
use warnings;
use IUP ':all';
my $nodes = {
TITLE=>"root (0)", STATE=>"EXPANDED",
child=>[{
TITLE=>"1.1 (1)", STATE=>"EXPANDED",
child=>[{
TITLE=>"1.1.1 (2)", STATE=>"EXPANDED",
child=>[{
TITLE=>"1.1.1.1 (3)", STATE=>"EXPANDED",
child=>["1.1.1.1.1 (4)","1.1.1.1.2 (5)"],
},
{
TITLE=>"1.1.1.2 (6)", STATE=>"EXPANDED",
child=>["1.1.1.2.1 (7)","1.1.1.2.2 (8)"],
}], #xxx3
},
{
TITLE=>"1.1.2 (9)", STATE=>"EXPANDED",
child=>[{
TITLE=>"1.1.2.1 (10)", STATE=>"EXPANDED",
child=>["1.1.2.1.1 (11)","1.1.2.1.2 (12)"],
},
{
TITLE=>"1.1.2.2 (13)", STATE=>"EXPANDED",
child=>["1.1.2.2.1 (14)","1.1.2.2.2 (15)"],
}],
}],
},
{
TITLE=>"1.2 (16)", STATE=>"EXPANDED",
child=>[{
TITLE=>"1.2.1 (17)", STATE=>"EXPANDED",
child=>[{
TITLE=>"1.2.1.1 (18)", STATE=>"EXPANDED",
child=>["1.2.1.1.1 (19)","1.2.1.1.2 (20)"],
},
{
TITLE=>"1.2.1.2 (21)", STATE=>"EXPANDED",
child=>["1.2.1.2.1 (22)","1.2.1.2.2 (23)"],
}],
},
{
TITLE=>"1.2.2 (24)", STATE=>"EXPANDED",
child=>[{
TITLE=>"1.2.2.1 (25)", STATE=>"EXPANDED",
child=>["1.2.2.1.1 (26)","1.2.2.1.2 (27)"],
},
{
TITLE=>"1.2.2.2 (28)", STATE=>"EXPANDED",
child=>["1.2.2.2.1 (29)","1.2.2.2.2 (30)"],
}],
}],
}],
};
my $tree = IUP::Tree->new( MAP_CB=>sub { my $self=shift; $self->TreeAddNodes($nodes) } );
my $no = IUP::Text->new();
my $attrs = IUP::Text->new( VALUE=>"{ COLOR => '255 0 0' }", SIZE=>"200x" );
my $dlg = IUP::Dialog->new( SIZE=>"QUARTERxHALF", TITLE=>"IUP::Tree Example",
child=>IUP::Vbox->new( child=>[
$tree,
IUP::Hbox->new( child=>[
IUP::Fill->new(),
IUP::Label->new( TITLE=>"Node:" ),
$no,
IUP::Fill->new(),
IUP::Label->new( TITLE=>"Attributes:" ),
$attrs,
IUP::Fill->new()
]),
IUP::Hbox->new( child=>[
IUP::Fill->new(),
IUP::Button->new(
TITLE=>"Ancestors",
ACTION=>sub { $tree->TreeSetAncestorsAttributes($no->VALUE, eval $attrs->VALUE) },
),
IUP::Fill->new(),
IUP::Button->new(
TITLE=>"Descendents",
ACTION=>sub { $tree->TreeSetDescentsAttributes($no->VALUE, eval $attrs->VALUE) },
),
IUP::Fill->new(),
IUP::Button->new(
TITLE=>"All",
ACTION=>sub {
for my $node (0..$tree->COUNT-1) {
$tree->TreeSetNodeAttributes($node, eval $attrs->VALUE);
}
},
),
IUP::Fill->new(),
]),
]),
);
$dlg->Show();
$tree->VALUE(15);
$no->VALUE(15);
IUP->MainLoop();