# NOTE: Derived from ..\blib\lib\Tk\Listbox.pm. # Changes made here will be lost when autosplit is run again. # See AutoSplit.pm. package Tk::Listbox; #line 232 "..\blib\lib\Tk\Listbox.pm (autosplit into ..\blib\lib\auto\Tk\Listbox\STORE.al)" # STORE # ----- # If tied to an array we will modify the Listbox contents, while if tied # to a scalar we will select and clear elements. sub STORE { if ( scalar(@_) == 2 ) { # we have a tied scalar my ( $class, $selected ) = @_; my $self = ${$class->{OBJECT}}; my %options = %{$class->{OPTION}} if defined $class->{OPTION};; # clear currently selected elements $self->selectionClear(0,'end'); # set selected elements if ( defined $options{ReturnType} ) { # THREE-WAY SWITCH if ( $options{ReturnType} eq "index" ) { for ( my $i=0; $i < scalar(@$selected) ; $i++ ) { for ( my $j=0; $j < $self->size() ; $j++ ) { if( $j == $$selected[$i] ) { $self->selectionSet($j); last; } } } } elsif ( $options{ReturnType} eq "element" ) { for ( my $k=0; $k < scalar(@$selected) ; $k++ ) { for ( my $l=0; $l < $self->size() ; $l++ ) { if( $self->get($l) eq $$selected[$k] ) { $self->selectionSet($l); last; } } } } elsif ( $options{ReturnType} eq "both" ) { foreach my $key ( keys %$selected ) { $self->selectionSet($key) if $$selected{$key} eq $self->get($key); } } } else { # return elements (default) for ( my $k=0; $k < scalar(@$selected) ; $k++ ) { for ( my $l=0; $l < $self->size() ; $l++ ) { if( $self->get($l) eq $$selected[$k] ) { $self->selectionSet($l); last; } } } } } else { # we have a tied array my ( $class, $index, $value ) = @_; my $self = ${$class->{OBJECT}}; # check size of current contents list my $sizeof = $self->size(); if ( $index <= $sizeof ) { # Change a current listbox entry $self->delete($index); $self->insert($index, $value); } else { # Add a new value if ( defined $index ) { $self->insert($index, $value); } else { $self->insert("end", $value); } } } } # end of Tk::Listbox::STORE 1;