Win32-GUI-XMLBuilder
view release on metacpan or search on metacpan
lib/Win32/GUI/XMLBuilder.pm view on Meta::CPAN
${$self->{_show_}}{$name} = $show eq '' ? 1 : $show;
foreach ($e->children()) {
if (exists &{$_->gi}) {
&{\&{$_->gi}}($self, $t, $_);
} else {
$self->_Generic($t, $_);
}
}
}
=item <TreeView>
Creates a TreeView. These can be nested deeply using the sub element <Item>. Please look at the
treeview.pl example in the samples/ directory.
<TreeView ..>
<Item .. />
<Item ..>
<Item .. />
<Item .. />
etc...
</item>
...
</TreeView>
=cut
sub TreeView {
my ($self, $t, $e) = @_;
my $name = $self->genname($e);
my $parent = $self->getParent($e);
$self->debug("\nTreeView: $name; Parent: $parent");
$self->{$name} = $self->{$parent}->AddTreeView($self->evalhash($e)) || $self->error;
if($e->children_count()) {
$self->TreeView_Item($e, $name);
}
}
sub TreeView_Item {
my ($self, $e, $parent) = @_;
my $name = $e->{'att'}->{'name'};
foreach my $item ($e->children()) {
next if $item->gi ne 'Item';
my $iname = $item->{'att'}->{'name'};
$self->debug("Item: $iname; Parent: $name");
$item->{'att'}->{'parent'} = "\$self->{$name}" if $name ne $parent;
$self->{$iname} = $self->{$parent}->InsertItem($self->evalhash($item));
if($item->children_count()) {
$self->TreeView_Item($item, $parent);
}
}
}
=item <Combobox>
Generate a combobox with drop down items specified with the <Items> elements. In addition
to standard attributes for Win32::GUI::Combobox there is also a 'dropdown' attribute that
automatically sets the 'pushstyle' to 'WS_VISIBLE()|0x3|WS_VSCROLL()|WS_TABSTOP()'. In 'dropdown'
mode an <Item> element has the additional attribute 'default'.
=cut
sub Combobox {
my ($self, $t, $e) = @_;
my $name = $self->genname($e);
my $parent = $self->getParent($e);
$self->debug("\nCombobox: $name; Parent: $parent");
$e->{'att'}->{'pushstyle'} = WS_VISIBLE()|0x3|WS_VSCROLL()|WS_TABSTOP() if $e->{'att'}->{'dropdown'};
$self->{$name} = $self->{$parent}->AddCombobox($self->evalhash($e)) || $self->error;
my $default;
if($e->children_count()) {
foreach my $item ($e->children()) {
next if $item->gi ne 'Item';
my $text = $item->{'att'}->{'text'};
$default = $text if $item->{'att'}->{'default'};
$self->debug("Item: $text");
$self->{$name}->InsertItem($text);
}
}
$self->{$name}->Select($self->{$name}->FindStringExact($default)) if $default;
}
=item <Listbox>
Generate a listbox with drop down items specified with the <Items> elements. In addition
to standard attributes for Win32::GUI::Listbox there is also a 'dropdown' attribute that
automatically sets the 'pushstyle' to 'WS_CHILD()|WS_VISIBLE()|1'. In 'dropdown' mode an <Item> element has
the additional attribute 'default'.
=cut
sub Listbox {
my ($self, $t, $e) = @_;
my $name = $self->genname($e);
my $parent = $self->getParent($e);
$self->debug("\nListbox: $name; Parent: $parent");
$e->{'att'}->{'pushstyle'} = $e->{'att'}->{'dropdown'} ? WS_VSCROLL()|WS_CHILD()|WS_VISIBLE()|1 : WS_VSCROLL()|WS_VISIBLE()|WS_CHILD();
$self->{$name} = $self->{$parent}->AddListbox($self->evalhash($e)) || $self->error;
# $self->{$name}->SendMessage(0x0195, 201, 0);
my $default;
if($e->children_count()) {
foreach my $item ($e->children()) {
next if $item->gi ne 'Item';
my $text = $item->{'att'}->{'text'};
$default = $text if $item->{'att'}->{'default'};
$self->debug("Item: $text");
$self->{$name}->AddString($text);
}
( run in 1.532 second using v1.01-cache-2.11-cpan-2398b32b56e )