/usr/local/CPAN/Devel-ebug-Wx/Devel/ebug/Wx/View/Base.pm
package Devel::ebug::Wx::View::Base;
use strict;
use base qw(Class::Accessor::Fast Devel::ebug::Wx::Plugin::Listener::Base);
__PACKAGE__->mk_accessors( qw(wxebug _has_destroy) );
# not yet in wxPerl
sub EVT_DESTROY($$$) { $_[0]->Connect( $_[1], -1, &Wx::wxEVT_DESTROY, $_[2] ) }
sub _setup_destroy {
my( $self ) = @_;
unless( $self->_has_destroy ) {
$self->_has_destroy( 1 );
EVT_DESTROY( $self, $self, \&_on_destroy );
}
}
# FIXME will likely need to be generalized
sub is_managed { !$_[0]->GetParent->isa( 'Wx::AuiNotebook' ) }
sub is_multiview { 0 }
sub default_size { ( 350, 250 ) }
# save/restore view layout
sub set_layout_state { }
sub get_layout_state {
my( $self ) = @_;
return { class => ref( $self ),
};
}
sub register_view {
my( $self ) = @_;
$self->_setup_destroy;
$self->wxebug->view_manager_service->register_view( $self );
}
sub subscribe_ebug {
my( $self, $event, $handler ) = @_;
$self->_setup_destroy;
$self->add_subscription( $self->ebug, $event, $handler );
}
sub _on_destroy {
my( $self ) = @_;
$self->delete_subscriptions;
$self->wxebug->view_manager_service->unregister_view( $self );
}
sub ebug { $_[0]->wxebug->ebug }
1;