<?xml version="1.0"?>
<!--
This example is from an old Win32::GUI 0.655 sample. It has been entirely converted to use NEM.
-->
<GUI
xmlns="http://www.numeninest.com/Perl/WGX"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.numeninest.com/Perl/WGX http://www.numeninest.com/Perl/WGX/win32-gui-xmlbuilder.xsd">
<Cursor name='Cursor' file='harrow.cur'/>
<Class name='C' icon='exec:$Win32::GUI::XMLBuilder::ICON' cursor='$self->{Cursor}'/>
<WGXPre>my $dblclick = 0;</WGXPre>
<WGXMenu name='M'>
<Button name='Options' text='&Options'>
<Item name='Indent' text='Set &indent...' onClick='sub {
$self->{Window}->Disable();
$self->{IndentVal}->Text($self->{TV}->Indent());
$self->{IndentWin}->Show();
$self->{IndentVal}->SetFocus();
$self->{IndentVal}->Select(0, length($self->{IndentVal}->Text()));
return 1;
}'/>
<Item name='Font' text='Choose &font...' onClick='sub {
$self->{Window}->Disable();
my @font = GUI::ChooseFont();
if($font[0] eq "-name") {
undef $TreeviewFont;
$TreeviewFont = new GUI::Font(@font);
$self->{TV}->SetFont($TreeviewFont);
}
$self->{Window}->Enable();
$self->{Window}->SetForegroundWindow();
}'/>
<Item name='HasLines' text='&Lines' checked='1' onClick='sub {
my $checked = !$self->{HasLines}->Checked;
printf "TV.Style is: %08X\n", $self->{TV}->GetWindowLong(-16);
$self->{TV}->Change(-lines => $checked);
printf "TV.Style after -lines => %d is: %08X\n", $checked, $self->{TV}->GetWindowLong(-16);
$self->{HasLines}->Checked($checked);
}'/>
<Item name='HasRootLines' text='&Root lines' checked='1' onClick='sub {
my $checked = !$self->{HasRootLines}->Checked;
printf "TV.Style is: %08X\n", $self->{TV}->GetWindowLong(-16);
$self->{TV}->Change(-rootlines => $checked);
printf "TV.Style after -rootlines => %d is: %08X\n", $checked, $self->{TV}->GetWindowLong(-16);
$self->{HasRootLines}->Checked($checked);
}'/>
<Item name='HasButtons' text='&Buttons' checked='1' onClick='sub {
my $checked = !$self->{HasButtons}->Checked;
printf "TV.Style is: %08X\n", $gui->{TV}->GetWindowLong(-16);
$self->{TV}->Change(-buttons => $checked);
printf "TV.Style after -buttons => %d is: %08X\n", $checked, $self->{TV}->GetWindowLong(-16);
$self->{HasButtons}->Checked($checked);
}'/>
<Item name='HasImages' text='I&mage' checked='1' onClick='sub {
if ($self->{HasImages}->Checked) {
$self->{HasImages}->Checked(0);
$self->{TV}->SetImageList(0);
} else {
$self->{HasImages}->Checked(1);
$self->{TV}->SetImageList($self->{IL});
}
}'/>
<Item seperator='1'/>
<Item name='Exit' text='E&xit' onClick='sub { $self->{Window}->PostQuitMessage(0); }'/>
</Button>
</WGXMenu>
<Window name='Window'
dim='100, 100, 300, 200'
text='Win32::GUI TEST - TreeView'
menu='$self->{M}'
class='$self->{C}'
onTerminate='sub { $_[0]->PostQuitMessage(0); }'
>
<ImageList name='IL' width='16' height='16'>
<Item bitmap='node.bmp'/>
<Item bitmap='node_sel.bmp'/>
</ImageList>
<TreeView name='TV'
text='hello world!'
lines='1'
rootlines='1'
buttons='1'
visible='1'
imagelist='$self->{IL}'
onNodeClick='sub {
my %N = $_[0]->GetItem($_[1]);
print "Clicked node $N{-text} (checkbox is ".($_[0]->ItemCheck($_[1]) ? "on" : "off").")\n";
return 1;
}'
onExpand='sub {
my %N = $_[0]->GetItem($_[1]);
print "Expanded node $N{-text}\n";
$dblclick = 1;
return 1;
}'
onCollapse='sub {
my %N = $_[0]->GetItem($_[1]);
print "Collapsed node $N{-text}\n";
$dblclick = 1;
return 1;
}'
onDblClick='sub {
if(!$dblclick) {
my($x, $y) = Win32::GUI::GetCursorPos();
print "Double click at $x, $y\n";
my $node = $_[0]->SelectedItem();
if($node) {
$_[0]->ItemCheck($node, !$_[0]->ItemCheck($node));
my %t = $_[0]->GetItem($node);
foreach my $k (keys %t) {
print "$k => $t{$k}\n";
}
}
} else {
print "got Collapse/Expand, ignoring DblClick\n";
$dblclick = 0;
}
return 1;
}'
>
<Item name='TV1' text='ROOT' image='0' selectedimage='1'>
<Item name='TV2' text='SUB 2' image='0' selectedimage='1' bold='1'/>
<Item name='TV3' text='SUB 1' image='0' selectedimage='1' selected='1'/>
</Item>
</TreeView>
</Window>
<Window name='IndentWin'
dim='110, 110, 200, 100'
text='Treeview Indent'
show='0'
onTerminate='sub {
$self->{IndentWin}->Hide();
$self->{Window}->Enable();
$self->{Window}->SetForegroundWindow();
}'
>
<Label
height='20' width='100' align='center' text='Indent Value: '
/>
<Textfield name='IndentVal'
height='20' left='100' width='exec:$self->{IndentWin}->ScaleWidth()-100'
/>
<Button
top='20' height='exec:$self->{IndentWin}->ScaleHeight()-20' text='Set'
onClick='sub {
$self->{TV}->Indent($self->{IndentVal}->Text());
$self->{IndentWin}->Hide();
$self->{Window}->Enable();
$self->{Window}->SetForegroundWindow();
}'
/>
</Window>
</GUI>