/usr/local/CPAN/Devel-ebug-Wx/Devel/ebug/Wx/View/Multi.pm
package Devel::ebug::Wx::View::Multi;
use strict;
use base qw(Devel::ebug::Wx::View::Base);
__PACKAGE__->mk_accessors( qw(_tag _index) );
sub is_multiview { 1 }
sub description {
my( $self ) = @_;
my $description_base = $self->description_base;
return $description_base unless ref $self;
$self->tag; # hack to set _index...
return sprintf "%s %d", $description_base, $self->_index;
}
sub tag {
my( $self ) = @_;
my $tag_base = $self->tag_base;
return $tag_base unless ref $self;
return $self->_tag if $self->_tag;
# generate an unused tag
my $vm = $self->wxebug->view_manager_service;
for( my $index = 1; $index < 1000; ++$index ) {
my $tag = $tag_base . $index;
next if $vm->has_view( $tag );
$self->_index( $index );
return $self->_tag( $tag );
}
}
sub set_layout_state {
my( $self, $state ) = @_;
$self->SUPER::set_layout_state( $state );
$self->_tag( $state->{multi}{tag} );
$self->_index( $state->{multi}{index} );
# must do it _AFTER_ setting the tag
$self->register_view;
}
sub get_layout_state {
my( $self ) = @_;
my $state = $self->SUPER::get_layout_state;
$state->{multi}{tag} = $self->tag;
$state->{multi}{index} = $self->_index;
return $state;
}
1;